next up previous contents
Nächste Seite: Knuth-Morris-Pratt-Algorithmus Aufwärts: String Matching Vorherige Seite: Rabin-Karp-Algorithmus   Inhalt

Endliche Automaten

Definition:
Ein Endlicher Automat enthält ein Alphabet, eine Menge von Zuständen mit Start- und Endzuständen sowie eine Überführungsfunktion (deterministisch: DEA, nicht-deterministisch: NEA), die den Automaten auf Grund eines gelesenen Eingabesymbols in einen neuen Zustand bringt. Wird ein Endzustand erreicht, so hat der Automat die Eingabe akzeptiert.

Algorithmus:
Für das String Matching wird aus dem Muster ein DEA erzeugt, der als Eingabe den Text erhält. Sobald er den Text akzeptiert, waren die letzten Eingabezeichen genau das Muster.

Komplexität:
DEA: $ O(n+m)$

Bemerkungen:
- Primitive Vergleichswörter als Muster ergeben immer einen DEA.
- Endliche Automaten erkennen natürlich beliebige reguläre Ausdrücke und sind somit wesentlich mächtiger, jedoch für einfaches String Matching in Textverarbeitungsprogrammen meist zu aufwendig.

Reguläre Ausdrücke:
- DEA schnell, aber exponentieller Speicheraufwand
- NEA mit Backtracking, aber linearer Speicheraufwand
- Compilerbau: Lazy transition evaluation, minimaler DEA aus Syntaxbaum



2003-10-08