Theoretische Informatik
Endliche Automaten und reguläre Sprachen
Der Zusammenhang zwischen Automaten und Grammatiken, und wo die Grenze des Modells beweisbar verläuft.
Benötigte Grundlagen
Dieses Vorwissen brauchst du für das Kapitel. Schau kurz nach, wenn dir etwas davon nicht mehr präsent ist, sonst leg direkt los.
Einführung
Zwei Werkzeuge, die zunächst nichts miteinander zu tun haben: Ein liest eine Zeichenfolge und entscheidet, ob sie zulässig ist. Eine erzeugt Zeichenfolgen aus Regeln.
Das eine prüft, das andere produziert. Und trotzdem beschreiben sie in einem wichtigen Fall exakt dieselben Sprachen.
Dieser Zusammenhang ist eines der schönsten Ergebnisse der theoretischen Informatik. Er erlaubt, zwischen beiden Sichten zu wechseln, je nachdem, welche gerade die einfachere ist. Und er zeigt genau, wo die Grenze des Automatenmodells liegt.
Das kannst du nach diesem Kapitel
die Arbeitsweise eines endlichen an einer regulären Sprache erläutern.
einen Automaten zu einer gegebenen Sprache entwerfen und prüfen.
den Zusammenhang zwischen Automat und beschreiben.
deterministische und nichtdeterministische Automaten unterscheiden (Vertiefung).
beweisen, dass eine bestimmte Sprache nicht regulär ist.
Kurz aufgefrischt
Vorausgesetzt werden , Startzustand, Übergänge, Endzustände und die aus Automaten und Zustandsdiagramme, dazu Alphabet, Wort und Sprache aus dem vorigen Kapitel.
Neu ist hier die Sprachsicht: Ein Automat wird nicht mehr als Beschreibung eines Geräts benutzt, sondern als Entscheider über eine Menge von Wörtern.
Ein Automat erkennt eine Sprache
Man lässt den ein Wort Zeichen für Zeichen lesen und schaut, wo er endet:
Ein Wort wird akzeptiert, wenn der Automat nach dem letzten Zeichen in einem Endzustand steht. Die von ihm erkannte Sprache ist die Menge aller akzeptierten Wörter.
Sprachen, für die es einen endlichen Automaten gibt, heißen regulär.
Beispiel: alle Wörter über , die auf enden.
b a b
→(S0) ──→ S0 (S0) ──→ (S1) (S1) ──→ ((S2))
Vollständige Übergangstabelle:
| Eingabe | Eingabe | |
|---|---|---|
| (Start) | ||
| (zuletzt ) | ||
| (zuletzt , Endzustand) |
Beachte die Zeile : Nach einem gefundenen geht es normal weiter, denn es können noch Zeichen folgen. Entscheidend ist allein, wo der Automat am Ende steht.
Alle Wörter, die auf ab enden
Drei , und jeder merkt sich genau eine Sache: wie das Wort bisher aufhört. heißt „nichts Brauchbares am Ende“, heißt „zuletzt ein “, heißt „zuletzt “, und nur ist Endzustand. Die interessante Kante ist die von zurück: Nach einem gefundenen geht es normal weiter, denn es können noch Zeichen folgen. Entscheidend ist allein, wo der am Ende steht. Probiere durch: : Endzustand, also akzeptiert. Und : , kein Endzustand, also nicht.
Der Zusammenhang mit Grammatiken
Jetzt der überraschende Teil. Aus einem lässt sich eine ablesen, und zwar mechanisch:
- Jeder wird ein Nichtterminal.
- Jeder Übergang wird eine Regel .
- Jeder Endzustand bekommt zusätzlich die Regel .
Für den Automaten oben:
S0 → a S1 | b S0
S1 → a S1 | b S2
S2 → a S1 | b S0 | ε
Diese Grammatik erzeugt genau die Wörter, die der Automat akzeptiert. Umgekehrt lässt sich aus jeder Grammatik dieser Form ein Automat bauen.
🔴 Solche Grammatiken heißen regulär: Auf der rechten Seite jeder Regel steht höchstens ein Nichtterminal, und es steht ganz rechts. Damit gilt:
Eine Sprache ist genau dann regulär, wenn es einen endlichen Automaten für sie gibt, und genau dann, wenn es eine reguläre Grammatik für sie gibt.
Der praktische Nutzen liegt im Wechseln der Sicht. Ein Automat ist leichter zu prüfen, weil man Wörter einfach durchlaufen lassen kann. Eine Grammatik ist leichter zu erweitern, weil man Regeln ergänzt. Man wählt, was gerade passt.
Dieselbe Sprache, zwei Schreibweisen
Diese Tafel ist eine Übersetzungsvorschrift, keine Aufzählung von Ähnlichkeiten: Zu jedem Bestandteil links gehört genau einer rechts, und die Umwandlung läuft rein mechanisch in beide Richtungen. Aus dem von oben wird so , , . Der Nutzen steckt in der letzten Zeile: Man wechselt die Sicht je nachdem, was man vorhat. Prüfen ist im Automaten leichter, Erweitern in der und weil beide dieselbe Sprache beschreiben, darf man jederzeit wechseln.
Vertiefung: deterministisch und nichtdeterministisch
Dieser Abschnitt gehört zum erhöhten Anforderungsniveau.
Ein heißt deterministisch, wenn zu jedem Paar aus und Eingabezeichen genau ein Folgezustand festgelegt ist. Genau das leistet eine vollständig ausgefüllte Übergangstabelle.
Erlaubt man mehrere mögliche Folgezustände, spricht man von einem nichtdeterministischen Automaten. Er akzeptiert ein Wort, wenn es mindestens einen Weg gibt, der in einem Endzustand endet.
Nichtdeterministische Automaten sind oft viel kleiner und leichter zu entwerfen. Für „enthält irgendwo die Folge " genügt ein Automat, der einfach an einer beliebigen Stelle „rät", dass hier das gesuchte beginnt.
Der wichtige Satz dazu lautet: Beide Bauarten erkennen genau dieselben Sprachen. Zu jedem nichtdeterministischen Automaten lässt sich ein deterministischer bauen, dessen Zustände die Mengen der jeweils möglichen Zustände des ursprünglichen sind. Der Preis ist die Größe: Aus Zuständen können im ungünstigsten Fall werden.
Praktisch heißt das: Man entwirft bequem nichtdeterministisch und lässt umwandeln. Die Ausdruckskraft gewinnt man dadurch nicht, nur Bequemlichkeit.
Enthält irgendwo ab, nichtdeterministisch
Sieh dir genau an: Bei einem gibt es zwei Möglichkeiten, in bleiben oder nach gehen. Genau das ist Nichtdeterminismus, und die Tabelle wäre an dieser Stelle nicht mehr eindeutig ausfüllbar. Anschaulich rät der an einer beliebigen Stelle, dass hier das gesuchte beginnt; akzeptiert wird, wenn es mindestens einen Weg in den Endzustand gibt. Der Gewinn ist die Größe: Deterministisch bräuchte man mehr und müsste jede Zeile vollständig ausfüllen. Der wichtige Satz dazu lautet aber: Beide Bauarten erkennen genau dieselben Sprachen. Man gewinnt Bequemlichkeit, keine Ausdruckskraft.
Die Grenze: nicht jede Sprache ist regulär
In Klasse 10 stand die Behauptung, dass kein endlicher gleich viele öffnende wie schließende Klammern zählen kann. Jetzt lässt sich das beweisen, und der Beweis ist kurz.
Betrachte , also die Sprache aus dem vorigen Kapitel.
Annahme: Es gäbe einen endlichen Automaten für . Er hat eine feste Zahl von .
Schritt 1: Wir lassen die Wörter lesen und notieren, in welchem Zustand er jeweils steht. Das sind Zustände bei nur verfügbaren.
Schritt 2: Nach dem Schubfachprinzip müssen zwei davon gleich sein. Es gibt also mit: Nach und nach befindet sich im selben Zustand.
Schritt 3: Ab diesem Punkt kann die beiden Fälle nicht mehr unterscheiden, denn sein Zustand ist alles, was er sich merkt. Was auch immer nun folgt, er behandelt beide gleich.
Schritt 4: Nun folge . Das Wort gehört zu und muss akzeptiert werden. Also endet in einem Endzustand. Da denselben Zustand erreicht hatte, akzeptiert auch . Wegen gehört dieses Wort aber nicht zu .
Widerspruch. Also gibt es keinen solchen Automaten, und ist nicht regulär.
🔴 Halte fest, was hier bewiesen wurde: nicht „man hat keinen gefunden", sondern „es kann keinen geben". Die Ursache ist ausschließlich die Endlichkeit der Zustandsmenge. Ein Automat kann nur endlich viel unterscheiden, und unbegrenztes Zählen verlangt unendlich viele Unterscheidungen.
Das Schubfachprinzip in einer Tabelle
Hier steckt der ganze Beweis. Ein mit liest die Wörter , bei Wörtern und nur Zuständen müssen zwei im selben Zustand landen; das ist das Schubfachprinzip. In der Tabelle sind es und . Und jetzt der entscheidende Schritt: Der Zustand ist alles, was der Automat sich merkt. Ab hier kann er die beiden Fälle nicht mehr unterscheiden, was auch immer folgt. Lässt man folgen, so muss er akzeptieren (es gehört zu ) und akzeptiert damit zwangsläufig auch , das nicht dazugehört. Widerspruch. Nicht „man hat keinen gefunden“, sondern es kann keinen geben, und die Ursache ist allein die Endlichkeit der Zustandsmenge.
Wozu reguläre Sprachen taugen
Trotz dieser Grenze sind sie außerordentlich nützlich, weil sehr viele praktische Prüfungen regulär sind:
- Ist das eine gültige Postleitzahl, Uhrzeit, IBAN?
- Beginnt der Bezeichner mit einem Buchstaben?
- Findet sich dieses Muster im Text?
Genau dafür gibt es reguläre Ausdrücke, eine kompakte Schreibweise für reguläre Sprachen. Sie stecken in jeder Suchfunktion und jeder Eingabeprüfung, und intern arbeitet dort ein endlicher .
Die Kehrseite folgt aus dem Beweis oben: Verschachtelte Strukturen wie Klammerungen, HTML oder Programmquelltext sind nicht regulär. Wer sie mit regulären Ausdrücken prüfen will, scheitert nicht an mangelndem Geschick, sondern an einer beweisbaren Grenze des Modells.
Einen Automaten entwerfen und prüfen
Entwirf einen über , der genau die Wörter mit einer geraden Anzahl von Einsen akzeptiert. Prüfe ihn an und .
- 1
Was muss sich der Automat merken? Nicht die Anzahl der Einsen, sondern nur, ob sie gerade oder ungerade ist. Das sind zwei Fälle, also genügen zwei .
- 2
Zustände: (bisher gerade viele Einsen, Start und Endzustand) und (ungerade viele).
- 3
Übergänge: Eine Null ändert nichts, eine Eins wechselt den Zustand.
Zustand Eingabe 0 Eingabe 1 (Start, Ende) - 4
Warum ist auch Startzustand? Vor dem ersten Zeichen wurden null Einsen gelesen, und null ist gerade. Das leere Wort gehört damit zur Sprache, was richtig ist.
- 5
Prüfung : . Ende in , also abgelehnt. Stimmt, denn enthält drei Einsen.
- 6
Prüfung : . Ende in , also akzeptiert. Stimmt, zwei Einsen.
Zwei Zustände genügen, weil nur die Unterscheidung gerade oder ungerade gebraucht wird und nicht die Anzahl selbst.
Vom Automaten zur Grammatik
Wandle den aus dem vorigen Beispiel in eine reguläre um und leite ab.
- 1
werden Nichtterminale: und . Startsymbol ist der Startzustand .
- 2
Jeder Übergang wird eine Regel, jeder Endzustand bekommt zusätzlich :
G → 0 G | 1 U | ε U → 0 U | 1 G - 3
Ableitung von : .
- 4
Der letzte Schritt benutzt , und das ist genau die Regel, die als Endzustand ausdrückt.
- 5
Gegenprobe mit : . Jetzt steht da, und hat keine -Regel. Die Ableitung lässt sich nicht abschließen, das Wort gehört nicht zur Sprache. Dasselbe Ergebnis wie beim Automaten.
Die Umwandlung ist rein mechanisch, und beide Beschreibungen liefern für jedes Wort dieselbe Antwort.
Typischer Fehler
„Wenn der unterwegs einmal in einem Endzustand war, wird das Wort akzeptiert."
Entscheidend ist ausschließlich, wo der Automat nach dem letzten Zeichen steht. Was dazwischen passiert, spielt keine Rolle.
Nimm den Automaten für „endet auf " und das Wort . Nach steht er im Endzustand ; das nächste führt ihn nach . Am Ende steht er also nicht in einem Endzustand, und wird zu Recht abgelehnt, denn es endet auf .
Der Denkfehler kommt daher, dass man „Endzustand" als „fertig" liest. Der Automat ist aber nicht fertig, solange noch Zeichen kommen. Ein Endzustand bedeutet nur: Wenn das Wort hier zu Ende wäre, gehörte es zur Sprache.
Daraus folgt auch die Regel für Übergangstabellen: Ein Endzustand braucht vollständige Zeilen wie jeder andere . Wer sie leer lässt, weil „dort ist doch Schluss", baut einen unvollständigen Automaten, der für längere Wörter keine Antwort hat.
Übung 1
leichtEin über hat die (Start) und (Endzustand) mit den Übergängen: , , , .
a) Welche Wörter akzeptiert er? b) Prüfe , und .
Tipp anzeigen
Sieh dir an, welches Zeichen jeweils in den Endzustand führt.
Lösung anzeigen
a) In den Endzustand führt ausschließlich ein , und ein führt immer nach . Akzeptiert werden also genau die Wörter, die mit enden.
b) : → akzeptiert. : → abgelehnt. : Der Automat bleibt im Startzustand , der kein Endzustand ist → abgelehnt.
Detaillierte Schritterklärung anzeigen
Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.
✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.
- 1
a) Die akzeptierte Sprache aus den Übergängen ablesen
Man schaut, welches Zeichen in den Endzustand führt: In führt ausschließlich ein , und ein führt immer nach zurück. Akzeptiert werden also genau die Wörter, die mit enden.
- 2
b) Drei Eingaben verfolgen, jede prüft etwas anderes
: , Ende in → akzeptiert. : , Ende in → abgelehnt. : Der Automat bleibt im Startzustand , der kein Endzustand ist → abgelehnt.
- 3
Die allgemeine Leseregel sichern
Entscheidend ist immer nur, wo der Automat nach dem letzten Zeichen steht, nicht, ob er unterwegs einmal im Endzustand war. Ein Endzustand ist eine Markierung, kein Halt.
Übung 2
mittela) Entwirf einen über für alle Wörter, die die Teilfolge irgendwo enthalten. b) Gib die Übergangstabelle vollständig an. c) Wandle den Automaten in eine reguläre um. d) Begründe, warum ein einmal erreichter Endzustand hier nie wieder verlassen wird.
Tipp anzeigen
Zu a): Was muss sich der Automat merken, solange er das Muster noch nicht gefunden hat?
Lösung anzeigen
a) Drei genügen: (Start, noch nichts Passendes gesehen), (zuletzt eine 0 gelesen), (Muster gefunden, Endzustand).
b) Übergangstabelle:
| Zustand | Eingabe 0 | Eingabe 1 |
|---|---|---|
| (Start) | ||
| (Ende) |
Die Zeile bei Eingabe 0 führt wieder nach : Eine weitere Null ändert nichts daran, dass zuletzt eine Null kam.
c) Grammatik:
A → 0 B | 1 A
B → 0 B | 1 C
C → 0 C | 1 C | ε
d) Weil beide Übergänge aus wieder nach führen. Das ist inhaltlich richtig: Die Sprache verlangt, dass irgendwo vorkommt. Ist es einmal aufgetreten, kann keine weitere Eingabe das rückgängig machen. Solche Zustände nennt man Fangzustände; sie treten immer dann auf, wenn eine Bedingung einmal erfüllt für immer erfüllt bleibt. Vergleiche das mit dem Automaten für „endet auf ": Dort kann der Endzustand verlassen werden, weil sich die Eigenschaft „endet auf" mit jedem weiteren Zeichen ändert.
Detaillierte Schritterklärung anzeigen
Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.
✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.
- 1
Teil a): Die richtige Frage stellen
Nicht „welche Situationen gibt es", sondern: Was muss ich mir merken, um bei der nächsten Eingabe richtig zu reagieren? Hier genügt: Habe ich das Muster schon gefunden, und falls nicht, war das letzte Zeichen eine Null?
Zwischenergebnis
Drei Fälle, also drei Zustände.
Die Position im Wort und die Anzahl gelesener Zeichen gehören ausdrücklich nicht dazu. Sie ändern das künftige Verhalten nicht.
- 2
Teil b): Die Tabelle vollständig füllen
Bei 3 Zuständen und 2 Eingaben sind es sechs Zellen. Jede braucht einen Eintrag, auch die im Endzustand.
3 \times 2 = 6\ \text{Zellen}
Zwischenergebnis
Sechs Einträge, keine Lücke.
- 3
Teil c): Mechanisch umwandeln
Jeder Übergang wird zur Regel , jeder Endzustand bekommt zusätzlich die Regel mit dem leeren Wort. Man liest die Tabelle einfach zeilenweise ab.
A \xrightarrow{0} B ;\Rightarrow; A \to 0B
Zwischenergebnis
Sechs Regeln plus .
- 4
Teil d): Fangzustand erkennen und begründen
Man liest die Zeile und stellt fest, dass beide Übergänge wieder nach führen. Der inhaltliche Grund liegt in der Formulierung der Sprache: „enthält irgendwo" ist eine Eigenschaft, die einmal erfüllt für immer erfüllt bleibt.
Zwischenergebnis
ist ein Fangzustand, und das ist hier richtig.
Vergleiche mit „endet auf ": Diese Eigenschaft kann verloren gehen, deshalb hat der dortige Endzustand Übergänge, die ihn verlassen. Woran man es erkennt: an den Wörtern irgendwo gegen endet auf.
Übung 3
schwera) Beweise, dass die Sprache nicht regulär ist. b) Erkläre, welche Rolle das Schubfachprinzip dabei spielt. c) Ein Mitschüler will HTML mit einem regulären Ausdruck prüfen. Was sagst du ihm, und warum? d) (Vertiefung) Warum erkennen nichtdeterministische keine zusätzlichen Sprachen, obwohl sie mehr dürfen?
Tipp anzeigen
Zu a): Wie viele verschiedene Präfixe kann ein Automat mit unterscheiden?
Lösung anzeigen
a) Annahme: Es gäbe einen endlichen Automaten für mit Zuständen.
Betrachte die Wörter . Nach dem Lesen jedes dieser Wörter befindet sich in einem Zustand. Da es Wörter, aber nur Zustände gibt, müssen zwei davon denselben Zustand erreichen: Es gibt mit im selben Zustand nach und nach .
Ein Automat merkt sich nichts außer seinem Zustand. Also verhält er sich ab jetzt für beide Präfixe identisch. Lässt man nun folgen, so gilt: , also wird es akzeptiert und endet im Endzustand. Da im selben Zustand war, endet auch im Endzustand und wird akzeptiert. Wegen ist .
Widerspruch. Also existiert kein solcher Automat, und ist nicht regulär.
b) Das Schubfachprinzip liefert den entscheidenden Schritt: Verteilt man Dinge auf Fächer, liegen in einem Fach mindestens zwei. Hier sind die Fächer die Zustände und die Dinge die Präfixe . Ohne dieses Prinzip müsste man zeigen, dass zwei Präfixe zusammenfallen; mit ihm folgt es allein aus dem Abzählen, ohne dass man den Automaten kennen muss. Genau deshalb gilt der Beweis für jeden denkbaren Automaten und nicht nur für einen bestimmten.
c) Er wird scheitern, und zwar aus einem grundsätzlichen Grund. HTML ist beliebig tief verschachtelt: Ein Element kann Elemente enthalten, die wieder Elemente enthalten. Um zu prüfen, ob jedes öffnende Tag ein passendes schließendes hat, müsste man die Verschachtelungstiefe mitzählen, und die ist unbegrenzt. Das ist genau die Struktur von , und nach a) ist sie nicht regulär. Reguläre Ausdrücke entsprechen aber genau den regulären Sprachen. Für einzelne, flache Muster wie „finde alle Zeichenfolgen der Form " sind sie geeignet; zum Prüfen der Struktur braucht es einen richtigen Parser.
d) Weil sich jeder nichtdeterministische Automat in einen deterministischen umwandeln lässt. Die Idee: Man führt als Zustände des neuen Automaten die Mengen von Zuständen des alten, in denen er sich gleichzeitig befinden könnte. Da es zu Zuständen nur endlich viele, nämlich , Teilmengen gibt, bleibt der neue Automat endlich. Der Nichtdeterminismus bringt also Bequemlichkeit und Kompaktheit, aber keine zusätzliche Ausdruckskraft. Der Preis ist die mögliche Größe: Aus 20 Zuständen können über eine Million werden.
Detaillierte Schritterklärung anzeigen
Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.
✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.
- 1
a) Der Widerspruchsbeweis: annehmen, es gäbe einen Automaten
Man nimmt an, es gäbe einen endlichen Automaten für mit Zuständen, und betrachtet die Wörter . Nach dem Lesen jedes dieser Wörter befindet sich in einem Zustand. Da es Wörter, aber nur Zustände gibt, müssen zwei davon denselben Zustand erreichen.
- 2
a) Den Widerspruch herbeiführen: derselbe Zustand, verschiedene Fortsetzungen
Es gibt also mit im selben Zustand nach und nach . Ein Automat merkt sich nichts außer seinem Zustand, verhält sich ab jetzt für beide Präfixe identisch. Lässt man folgen: wird akzeptiert, also endet im Endzustand, dann aber auch für . Wegen ist . Widerspruch.
- 3
b) Die Rolle des Schubfachprinzips
Das Schubfachprinzip liefert den entscheidenden Schritt: Verteilt man Dinge auf Fächer, liegen in einem Fach mindestens zwei. Hier sind die Fächer die Zustände und die Dinge die Präfixe . Ohne dieses Prinzip müsste man zeigen, dass zwei Präfixe zusammenfallen; mit ihm folgt es allein aus dem Abzählen.
- 4
c) HTML mit regulären Ausdrücken prüfen: derselbe Grund
Er wird scheitern, und zwar grundsätzlich. HTML ist beliebig tief verschachtelt; um zu prüfen, ob jedes öffnende Tag ein passendes schließendes hat, müsste man die Verschachtelungstiefe mitzählen, und die ist unbegrenzt. Das ist genau die Struktur von , und reguläre Ausdrücke entsprechen genau den regulären Sprachen.
- 5
d) (Vertiefung) Warum Nichtdeterminismus keine neuen Sprachen bringt
Weil sich jeder nichtdeterministische Automat in einen deterministischen umwandeln lässt: Man führt als Zustände des neuen Automaten die Mengen von Zuständen des alten, in denen er sich gleichzeitig befinden könnte. Da es zu Zuständen nur endlich viele, nämlich , Teilmengen gibt, bleibt der neue Automat endlich.
Zusammenfassung
Ein endlicher akzeptiert ein Wort, wenn er nach dem letzten Zeichen in einem Endzustand steht; die Menge aller akzeptierten Wörter ist die von ihm erkannte Sprache, und solche Sprachen heißen regulär. Automat und sind dabei zwei Sichten auf dieselbe Sache: Jeder wird ein Nichtterminal, jeder Übergang eine Regel der Form , jeder Endzustand bekommt zusätzlich das leere Wort. Eine Sprache ist genau dann regulär, wenn es einen endlichen Automaten für sie gibt, und genau dann, wenn es eine reguläre Grammatik gibt. Nichtdeterministische Automaten sind oft kleiner und leichter zu entwerfen, erkennen aber dieselben Sprachen, weil sie sich in deterministische umwandeln lassen. Die Grenze des Modells ist beweisbar: Über das Schubfachprinzip zeigt man, dass zwei Präfixe im selben Zustand landen und danach ununterscheidbar sind, weshalb nicht regulär ist. Deshalb prüfen reguläre Ausdrücke zwar zuverlässig flache Muster, aber niemals verschachtelte Strukturen wie Klammern oder HTML.


