Lektion 1.1

Deterministische endliche Automaten (DEA)

30 min Lesezeit

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.

Definition

Alphabet, Wort und Sprache

Ein Alphabet Σ\Sigma ist eine endliche, nichtleere Menge von Zeichen, zum Beispiel Σ={0,1}\Sigma = \{0, 1\}. Ein Wort über Σ\Sigma ist eine endliche Folge von Zeichen aus Σ\Sigma. Das leere Wort ε\varepsilon enthält kein Zeichen. Die Menge aller Wörter über Σ\Sigma schreibt man Σ∗\Sigma^*.

Eine Sprache ist eine Teilmenge L⊆Σ∗L \subseteq \Sigma^*, also einfach eine Menge von Wörtern. Beispiel: Die Sprache aller Wörter über {0,1}\{0,1\} mit einer geraden Anzahl von Einsen. Die zentrale Frage lautet: Für welche Sprachen gibt es einen Automaten, der genau ihre Wörter akzeptiert?

L⊆Σ∗,Σ∗={ε,0,1,00,01,10,11,000,… }L \subseteq \Sigma^*, \qquad \Sigma^* = \{\varepsilon, 0, 1, 00, 01, 10, 11, 000, \dots\}
Definition

Deterministischer endlicher Automat (DEA)

Ein DEA ist ein Tupel A=(Q,Σ,δ,q0,F)A = (Q, \Sigma, \delta, q_0, F) aus fünf Bestandteilen:

  • QQ: endliche Menge von Zuständen
  • Σ\Sigma: Eingabealphabet
  • δ:Q×Σ→Q\delta: Q \times \Sigma \to Q: Ü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.
  • q0∈Qq_0 \in Q: Startzustand
  • F⊆QF \subseteq Q: Menge der Endzustände (akzeptierende Zustände)

Der Automat startet in q0q_0, liest das Wort von links nach rechts und wendet bei jedem Zeichen δ\delta an. Er akzeptiert das Wort, wenn er nach dem letzten Zeichen in einem Zustand aus FF steht. Die Menge aller akzeptierten Wörter ist die vom Automaten erkannte Sprache L(A)L(A).

A=(Q,Σ,δ,q0,F),L(A)={w∈Σ∗:δ^(q0,w)∈F}A = (Q, \Sigma, \delta, q_0, F), \qquad L(A) = \{ w \in \Sigma^* : \hat{\delta}(q_0, w) \in F \}
Beispiel

Gerade Anzahl von Einsen

Sprache: alle Wörter über {0,1}\{0, 1\} 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: gg (gerade, Start und Endzustand) und uu (ungerade).

Eine 00 ändert nichts: δ(g,0)=g\delta(g, 0) = g und δ(u,0)=u\delta(u, 0) = u. Eine 11 kippt die Parität: δ(g,1)=u\delta(g, 1) = u und δ(u,1)=g\delta(u, 1) = g.

δ(g,0)=g,δ(g,1)=u,δ(u,0)=u,δ(u,1)=g\delta(g,0)=g,\quad \delta(g,1)=u,\quad \delta(u,0)=u,\quad \delta(u,1)=g

Das Wort 11011101 führt zu g→u→g→g→ug \to u \to g \to g \to u, endet in uu und wird nicht akzeptiert (drei Einsen). Das Wort 10011001 führt zu g→u→u→u→gg \to u \to u \to u \to g und wird akzeptiert. Das leere Wort ε\varepsilon endet im Startzustand gg und wird ebenfalls akzeptiert.

Beispiel

Wörter, die auf 0101 enden

Der Automat soll alle Wörter über {0,1}\{0, 1\} akzeptieren, die mit 0101 enden. Er merkt sich, wie viel vom Suffix 0101 gerade erreicht ist: q0q_0 (nichts), q1q_1 (letztes Zeichen war 00), q2q_2 (die letzten zwei Zeichen sind 0101, Endzustand).

δ01q0q1q0q1q1q2q2q1q0\begin{array}{c|cc} \delta & 0 & 1 \\ \hline q_0 & q_1 & q_0 \\ q_1 & q_1 & q_2 \\ q_2 & q_1 & q_0 \end{array}

Das Wort 11011101 läuft q0→q0→q0→q1→q2q_0 \to q_0 \to q_0 \to q_1 \to q_2 und wird akzeptiert. Das Wort 01100110 läuft q0→q1→q2→q0→q1q_0 \to q_1 \to q_2 \to q_0 \to q_1 und wird nicht akzeptiert, weil es auf 1010 endet. Beachte, dass jeder Zustand für jedes Zeichen genau einen Übergang hat: Die Tabelle ist vollständig.

Zusammenfassung

  • Ein DEA ist ein Tupel (Q,Σ,δ,q0,F)(Q, \Sigma, \delta, q_0, F) 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 L(A)L(A).

  • 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 {0n1n}\{0^n 1^n\} nicht erkennen.

Übungen

Aufgabe 1Multiple Choice

Welches Wort wird vom DEA für „endet auf 0101" akzeptiert?

Aufgabe 2Numerisch

Wie viele Zustände braucht ein DEA für die Sprache „gerade Anzahl von Einsen" mindestens?

Aufgabe 3Numerisch

Der DEA für „gerade Anzahl von Einsen" liest das Wort 01101010110101. Wie oft wechselt er dabei zwischen den Zuständen gg und uu?

Aufgabe 4Freitext

Entwirf einen DEA über {0,1}\{0, 1\}, der genau die Wörter akzeptiert, deren Länge durch 33 teilbar ist. Gib Zustände, Startzustand, Endzustände und die Übergänge an.