Deterministische endliche Automaten (DEA)
Ein Getränkeautomat muss sich merken, wie viel Geld schon eingeworfen wurde. Eine Ampelsteuerung merkt sich, in welcher Phase sie sich gerade befindet. Ein Texteditor, der Zahlen im Quelltext erkennen soll, muss wissen, ob er sich gerade mitten in einer Zahl befindet. In all diesen Fällen braucht das System einen Speicher, der aber nur eine feste, kleine Menge an Information trägt: den aktuellen Zustand.
Der endliche Automat ist das einfachste Rechnermodell mit genau dieser Eigenschaft. Er liest ein Wort Zeichen für Zeichen, wechselt dabei nach festen Regeln den Zustand und entscheidet am Ende, ob er das Wort akzeptiert. Trotz seiner Einfachheit steckt er in jedem Compiler (lexikalische Analyse) und in den regulären Ausdrücken. Du kannst Automaten im Werkzeug Automaten-Simulator zeichnen und Wörter schrittweise durchlaufen lassen.
Alphabet, Wort und Sprache
Ein Alphabet ist eine endliche, nichtleere Menge von Zeichen, zum Beispiel . Ein Wort über ist eine endliche Folge von Zeichen aus . Das leere Wort enthält kein Zeichen. Die Menge aller Wörter über schreibt man .
Eine Sprache ist eine Teilmenge , also einfach eine Menge von Wörtern. Beispiel: Die Sprache aller Wörter über mit einer geraden Anzahl von Einsen. Die zentrale Frage lautet: Für welche Sprachen gibt es einen Automaten, der genau ihre Wörter akzeptiert?
Deterministischer endlicher Automat (DEA)
Ein DEA ist ein Tupel aus fünf Bestandteilen:
- : endliche Menge von Zuständen
- : Eingabealphabet
- : Übergangsfunktion. Sie sagt für jeden Zustand und jedes Zeichen genau, in welchen Zustand gewechselt wird. Das ist das „deterministisch": Es gibt nie eine Wahl.
- : Startzustand
- : Menge der Endzustände (akzeptierende Zustände)
Der Automat startet in , liest das Wort von links nach rechts und wendet bei jedem Zeichen an. Er akzeptiert das Wort, wenn er nach dem letzten Zeichen in einem Zustand aus steht. Die Menge aller akzeptierten Wörter ist die vom Automaten erkannte Sprache .
Gerade Anzahl von Einsen
Gerade Anzahl von Einsen
Sprache: alle Wörter über mit einer geraden Anzahl von Einsen (null zählt als gerade). Der Automat muss sich nur merken, ob bisher eine gerade oder ungerade Zahl von Einsen gelesen wurde. Zwei Zustände genügen: (gerade, Start und Endzustand) und (ungerade).
Eine ändert nichts: und . Eine kippt die Parität: und .
Das Wort führt zu , endet in und wird nicht akzeptiert (drei Einsen). Das Wort führt zu und wird akzeptiert. Das leere Wort endet im Startzustand und wird ebenfalls akzeptiert.
Wörter, die auf enden
Wörter, die auf enden
Der Automat soll alle Wörter über akzeptieren, die mit enden. Er merkt sich, wie viel vom Suffix gerade erreicht ist: (nichts), (letztes Zeichen war ), (die letzten zwei Zeichen sind , Endzustand).
Das Wort läuft und wird akzeptiert. Das Wort läuft und wird nicht akzeptiert, weil es auf endet. Beachte, dass jeder Zustand für jedes Zeichen genau einen Übergang hat: Die Tabelle ist vollständig.
Zusammenfassung
Ein DEA ist ein Tupel mit endlich vielen Zuständen und einer Übergangsfunktion, die jedem Paar aus Zustand und Zeichen genau einen Folgezustand zuordnet.
Er akzeptiert ein Wort, wenn er danach in einem Endzustand steht.
Die Menge der akzeptierten Wörter ist die erkannte Sprache .
Zustände sind das Gedächtnis des Automaten: Beim Entwurf überlegst du, was er sich merken muss.
Endliche Automaten können nicht beliebig zählen, etwa nicht erkennen.
Übungen
Welches Wort wird vom DEA für „endet auf " akzeptiert?
Wie viele Zustände braucht ein DEA für die Sprache „gerade Anzahl von Einsen" mindestens?
Der DEA für „gerade Anzahl von Einsen" liest das Wort . Wie oft wechselt er dabei zwischen den Zuständen und ?
Entwirf einen DEA über , der genau die Wörter akzeptiert, deren Länge durch teilbar ist. Gib Zustände, Startzustand, Endzustände und die Übergänge an.