Lektion 6.1

Automaten und zustandsorientierte Modellierung

15 min Lesezeit

Eine Medientaste „Play/Pause“ tut je nach Lage etwas anderes: Steht die Wiedergabe, startet sie, läuft sie, hält sie an. Das Gerät muss sich also merken, in welcher Lage es ist. Es braucht dafür aber kein Gedächtnis für alles, was je geschah, sondern nur für wenige Lagen.

Ebenso ein Programm, das einen Text auf das Teilwort „ab“ prüft: Es liest Zeichen für Zeichen und muss sich nur merken, wie weit es im Muster ist. Solche Aufgaben beschreibt man mit endlichen Automaten. Aus der Mittelstufe kennst du Zustandsgraph und Automatentafel. Hier wird das Modell genau, und du erfährst, was es kann und was nicht.

Definition

Zustand, Zustandsübergang, Zustandsdiagramm und Übergangstabelle

Ein Zustand fasst zusammen, was sich das System über die Vergangenheit merken muss. Ein Zustandsübergang ist der Wechsel in einen anderen (oder denselben) Zustand, ausgelöst durch ein Eingabezeichen. Im Zustandsdiagramm sind Zustände Kreise und Übergänge Pfeile, die mit dem auslösenden Zeichen beschriftet sind. Ein Pfeil von außen markiert den Startzustand, ein Doppelkreis einen Endzustand. Die Zustandsübergangstabelle enthält dieselbe Information: eine Zeile je Zustand, eine Spalte je Zeichen, im Feld der Folgezustand.

Definition

Deterministischer endlicher Automat und Akzeptor

Ein deterministischer endlicher Automat (DFA) ist ein Tupel A=(Q,Σ,δ,q0,F)A = (Q, \Sigma, \delta, q_0, F). Dabei ist Q die endliche Menge der Zustände, Σ\Sigma das Eingabealphabet, δ:Q×Σ→Q\delta: Q \times \Sigma \to Q die Übergangsfunktion, q0∈Qq_0 \in Q der Startzustand und F⊆QF \subseteq Q die Menge der Endzustände. „Deterministisch“ heißt: Zu jedem Zustand und jedem Zeichen gibt es genau einen Folgezustand.

Als Akzeptor liest der Automat ein Wort von links nach rechts, beginnend in q0q_0. Steht er nach dem letzten Zeichen in einem Endzustand, akzeptiert er das Wort, sonst lehnt er es ab. Die Menge aller akzeptierten Wörter ist die erkannte Sprache L(A)L(A).

Beispiel

Keine zwei Einsen hintereinander

Ein Akzeptor über Σ={0,1}\Sigma = \{0, 1\} soll genau die Wörter akzeptieren, in denen nie zwei Einsen direkt aufeinander folgen. Zustände: q0 (das letzte Zeichen war keine 1, oder es gab noch keines), q1 (das letzte Zeichen war eine 1) und q_tot (zwei Einsen kamen vor, ein Fangzustand, der nie verlassen wird). Endzustände sind q0 und q1.

Zustandliest 0liest 1
q0q0q1
q1q0q_tot
q_totq_totq_tot

Prüfe die Wörter 10101 und 0110.

10101: Start in q0. Die 1 führt nach q1, die 0 nach q0, die 1 nach q1, die 0 nach q0, die 1 nach q1. Der Automat steht in q1, einem Endzustand: akzeptiert.

0110: q0, dann 0 nach q0, 1 nach q1, 1 nach q_tot, 0 bleibt in q_tot. q_tot ist kein Endzustand: abgelehnt.

Den Akzeptor laufen lassen

Das Wort 0110 ist fest vorgegeben. Drücke „Schritt“ und sage vor jedem Klick voraus, in welchem Zustand der Automat danach steht. Bei welchem Zeichen erreicht er q_tot, und wie lautet am Ende das Urteil? Mit „Zurück“ gehst du einen Schritt zurück, mit „Von vorn“ beginnst du neu.

Definition

Mealy-Automat

Ein Mealy-Automat hat keine Endzustände, sondern gibt bei jedem Übergang ein Zeichen aus. Er ist ein Tupel (Q,Σ,Γ,δ,λ,q0)(Q, \Sigma, \Gamma, \delta, \lambda, q_0) mit dem Ausgabealphabet Γ\Gamma und der Ausgabefunktion λ:Q×Σ→Γ\lambda: Q \times \Sigma \to \Gamma. Im Diagramm steht an jedem Pfeil „Eingabe/Ausgabe“. Er übersetzt ein Eingabewort in ein Ausgabewort gleicher Länge. Der Akzeptor beantwortet also eine Ja-Nein-Frage, der Mealy-Automat berechnet eine Ausgabe.

Beispiel

Änderungen erkennen

Ein Mealy-Automat gibt 1 aus, wenn das gelesene Bit vom vorigen abweicht, sonst 0. Am Anfang gilt das vorige Bit als 0. Zustände: s0 (voriges Bit 0, Startzustand) und s1 (voriges Bit 1).

ZustandEingabe 0Eingabe 1
s0nach s0, Ausgabe 0nach s1, Ausgabe 1
s1nach s0, Ausgabe 1nach s1, Ausgabe 0

Welche Ausgabe entsteht bei der Eingabe 10110?

Start in s0. Die 1 führt nach s1 (Ausgabe 1), die 0 nach s0 (Ausgabe 1), die 1 nach s1 (Ausgabe 1), die nächste 1 bleibt in s1 (Ausgabe 0), die 0 führt nach s0 (Ausgabe 1). Die Ausgabe ist 11101. Probe: Mit dem Anfangsbit 0 weicht jedes Zeichen von 1, 0, 1, 1, 0 vom vorigen ab, nur das vierte nicht (1 nach 1).

Definition

Zusammenhang mit regulären Ausdrücken und Grammatiken

Die Sprachen, die ein DFA erkennt, heißen regulär. Nach dem Satz von Kleene sind das genau die Sprachen, die ein regulärer Ausdruck beschreibt: Zu jedem regulären Ausdruck gibt es einen DFA und umgekehrt. Der Ausdruck (a|b)*ab(a|b)*\texttt{(a|b)*ab(a|b)*} beschreibt zum Beispiel alle Wörter über {a,b}\{a, b\} mit dem Teilwort ab. Der DFA dazu steht unten bei den Einsatzbereichen. Auch die regulären Grammatiken der nächsten Lektion erzeugen genau diese Sprachen. Ein regulärer Ausdruck beschreibt eine Sprache, ein Automat erkennt sie.

Satz

Grenze endlicher Automaten

Kein DFA erkennt die Sprache L={anbn∣n≥0}L = \{a^n b^n \mid n \ge 0\}: erst n-mal a, dann n-mal b. Ein DFA hat nur endlich viele Zustände, also nur endlich viel Gedächtnis. Zählen ohne Obergrenze kann er nicht. Aus demselben Grund kann er nicht prüfen, ob beliebig tief geschachtelte Klammern passen.

Definition

Einsatzbereiche: Oberflächen, Protokolle, Substringproblem

Benutzeroberflächen: Die Wirkung einer Eingabe hängt vom Zustand ab. Das Zustandsdiagramm dient als Entwurf: Im Zustand „angehalten“ startet Play die Wiedergabe, im Zustand „läuft“ hält es sie an.

Protokolle: Der Ablauf einer Kommunikation hat Zustände wie „wartet auf Bestätigung“. Nachrichten, die in einem Zustand nicht vorgesehen sind, führen zum Fehler. So lässt sich zum Beispiel der Verbindungsaufbau von TCP beschreiben.

Substringproblem: Kommt ein Muster p als Teilwort in einem Text vor? Der Automat für p hat ∣p∣+1|p| + 1 Zustände. Zustand i bedeutet: Die zuletzt gelesenen Zeichen enden mit den ersten i Zeichen von p, und kein längerer Musteranfang passt. Zustand ∣p∣|p| ist ein Endzustand und wird nicht verlassen. Für p=abp = ab über {a,b}\{a, b\}:

Zustandliest aliest b
010
112
2 (Endzustand)22

Der Text wird einmal von links nach rechts gelesen, ohne zurückzuspringen.

Häufige Fehler

Berühren eines Endzustands genügt

„Der Automat war zwischendurch in einem Endzustand, also wird das Wort akzeptiert.“

Richtig ist

Es zählt nur der Zustand nach dem letzten Zeichen. Im Beispiel ohne zwei Einsen ist q0 schon am Anfang ein Endzustand, trotzdem wird 11 abgelehnt, denn der Automat endet in q_tot.

Häufige Fehler

Ein DFA merkt sich alles, was er gelesen hat

„Der Automat kann sich merken, wie viele a er gelesen hat.“

Richtig ist

Ein DFA kennt nur seinen aktuellen Zustand, und davon gibt es endlich viele. Er kann sich nur eine begrenzte Zusammenfassung des Gelesenen merken, zum Beispiel „das letzte Zeichen war eine 1“, aber keine beliebig große Zahl.

Zusammenfassung

  • Zustände speichern, was sich ein System merken muss. Das Zustandsdiagramm zeigt Übergänge als beschriftete Pfeile, die Übergangstabelle enthält dieselbe Information.

  • Ein DFA ist ein Tupel (Q,Σ,δ,q0,F)(Q, \Sigma, \delta, q_0, F). Als Akzeptor akzeptiert er ein Wort, wenn er nach dem letzten Zeichen in einem Endzustand steht.

  • Ein Mealy-Automat gibt bei jedem Übergang ein Zeichen aus und übersetzt so Eingabewörter in Ausgabewörter.

  • DFAs erkennen genau die regulären Sprachen, die auch reguläre Ausdrücke beschreiben (Satz von Kleene).

  • Ein DFA hat endlich viel Gedächtnis. Deshalb erkennt er {anbn}\{a^n b^n\} und beliebig tief geschachtelte Klammern nicht.

  • Einsatz: Zustandsabhängige Oberflächen, Protokolle und die Textsuche (Substringproblem mit ∣p∣+1|p| + 1 Zuständen).

Übungen

Aufgabe 1Multiple Choice

Der Akzeptor „keine zwei Einsen hintereinander“ liest das Wort 1001. In welchem Zustand steht er danach, und wie lautet das Urteil?

Aufgabe 2Numerisch

Der Mealy-Automat „Änderungen erkennen“ (Anfangsbit 0) liest das Wort 011010. Wie viele Einsen enthält seine Ausgabe?

Aufgabe 3Numerisch

Ein Automat soll in einem Text das Muster abcab suchen. Er hat Zustand i für „die letzten gelesenen Zeichen enden mit den ersten i Zeichen des Musters“. Wie viele Zustände braucht er?

Aufgabe 4Multiple Choice

Welche Sprache über {a, b} kann kein endlicher Automat erkennen?

Aufgabe 5Freitext

Erkläre, warum ein DFA nicht prüfen kann, ob in einem Ausdruck beliebig tief geschachtelte Klammern richtig gesetzt sind.