Blitzkurs Theoretische Informatik/ reguläre Sprachen

Zusammenfassung

Reguläre Ausdrücke, deterministische und nichtdeterministische endliche Automaten und reguläre Grammatiken sind äquivalente Beschreibungsmöglichkeiten für reguläre Sprachen. Reguläre Sprachen sind unter allen bekannten Rechenoperationen abgeschlossen. Das Wortproblem ist effizient lösbar.

  Zusammenfassung

Reguläre Ausdrücke sind alle Kombinationen von Vereinigungen, Konkatenationen und Sternbildungen von Terminalen. Die regulären Ausdrücke beschreiben genau die regulären Sprachen. Das lässt sich über die Abschlusseigenschaften beweisen: Reguläre Sprachen sind unter Vereinigung, Konkatenation, Kleene-Stern und Potenzierung abgeschlossen.

In der ersten Wochenlektion, als dir Grammatiken noch nicht bekannt waren, wurden Sprachen nur als Mengen von Wörtern und deren Vereinigungen und Konkatenationen dargestellt. Auf diese Weise kann man nur einen geringen Teil der Sprachen überhaupt definieren. Die Sprache, die alle Wörter über dem Alphabet   enthält, deren letztes oder vorletztes Zeichen eine 1 ist, kann man zum Beispiel folgendermaßen darstellen:
 
Demgegenüber lässt sich die Sprache über dem gleichen Alphabet, deren Wörter gleich viele Nullen wie Einsen enthalten, nicht auf diese einfache Weise eindeutig definieren, sondern nur mithilfe einer Grammatik:

 

Es handelt sich um eine kontextfreie Grammatik. Über die  -Regel   die eigentlich die Bedingung   für kontextsensitive Grammatiken verletzt, kann man hier hinwegsehen, da diese Produktionsregel nur das leere Wort noch in die Sprache mit aufnimmt und   auf keiner rechten Seite vorkommt. Wäre man ganz pedantisch, könnte man diese Regel auch weglassen.

Die weiter oben genannte Sprache, deren Wörter auf „10“, „11“ oder „01“ enden, kann auch mittels der folgenden Grammatik beschrieben werden:

 

Es handelt sich hier offensichtlich um eine reguläre Grammatik. Man kann sogar verallgemeinern: Alle Sprachen, die aus endlichen Mengen von Terminalzeichen mittels der bekannten Rechenoperationen gebildet werden können, lassen sich mit regulären Grammatiken beschreiben und sind damit regulär. Diese zunächst vage erscheinende Aussage soll im Folgenden bewiesen werden. Keine Angst! Das tut nicht weh.

Endliche Mengen von Terminalzeichen sind ja nichts anderes als endliche Mengen von Wörtern der Länge 1. Mengen von Wörtern sind Sprachen und endliche Sprachen, also endliche Mengen von Wörtern, sind immer reguläre Sprachen. Das weißt du alles schon. Wenn man zwei endliche Sprachen vereinigt, ist das Ergebnis immer noch eine endliche Sprache. Man nimmt sich einfach die Wörter beider Sprachen, schreibt sie zwischen ein Paar geschweifter Klammern und hat bewiesen, dass die endlichen Sprachen unter Vereinigung abgeschlossen sind. Wenn Mathematiker sagen wollen, dass eine Operation, angewendet auf Elemente einer Menge, immer wieder nur Elemente dieser Menge zum Ergebnis hat, dann sprechen sie vom „Abschluss“ dieser Menge unter dieser Operation.

Endliche Sprachen sind also unter Vereinigung abgeschlossen. Eigentlich geht es hier aber um die viel größere Klasse der regulären Sprachen. Reguläre Sprachen können ja auch unendlich sein. Sind auch sie unter Vereinigung abgeschlossen? Das einfachste ist es wohl, es auszuprobieren. Man nehme sich zwei reguläre Grammatiken   und   wobei man allen Nichtterminalen in   eine tiefgestellte 1 und allen Nichtterminalen in   eine 2 verpasst. Etwa so:

 

Diese beiden regulären Grammatiken definieren zwei unendliche reguläre Sprachen, nämlich
  und
 
Es ist nun eine – bitteschön reguläre – Grammatik zu finden, die die Vereinigung beider Sprachen erzeugt. Dazu übernimmt man die Regelwerke der beiden gegebenen Grammatiken und legt noch ein neues Startsymbol   fest, das die   und  -Regeln vereint. Das Ergebnis ist in diesem Fall das folgende:

 

Man kann hier die   und  -Regeln sogar wegstreichen, da   und   jetzt keine Startsymbole mehr sind und auf keiner rechten Seite erwähnt werden. In jedem Fall gilt jetzt   In ähnlicher Weise kann man mit allen regulären Grammatiken verfahren. Die Klasse der regulären Sprachen ist unter Vereinigung abgeschlossen.

Wie sieht es mit der Konkatenation aus? Aus der Einschränkung für reguläre Grammatiken geht hervor, dass bei der Ableitung eines Wortes jede Satzform Element der Menge   ist. Es handelt sich also stets um eine Kette von Terminalen mit einem abschließenden Nichtterminal, da immer nur Regeln der Form   angewendet werden. Nur im letzten Ableitungsschritt kommt eine Regel der Form   zur Anwendung. Danach sind keine Nichtterminale mehr vorhanden, die noch abgeleitet werden könnten. Anhand dieses Wissens, dass solche Regeln für die letzten Zeichen aller Wörter zuständig sind, kann man aus zwei Grammatiken   und   die Grammatik   für die   gilt, erzeugen, indem man alle Produktionsregeln übernimmt und   in   abändert.   ist das Startsymbol der neuen Grammatik. Ein Beispiel sagt mehr als tausend Worte:

 

Wenn man anhand der regulären Grammatik   ein Wort ableitet, durchläuft man zuerst eine beliebige Folge von Nichtterminalen mit einer 1. Mit   beginnt dann eine Folge von 2-Nichtterminalen, die mit einer Regel der Form   endet. Das Ergebnis ist eine Konkatenation eines Wortes aus   mit einem aus   Die regulären Sprachen sind auch unter Konkatenation abgeschlossen.

Unter dem Kleene-Stern als Sonderfall der Konkatenation sind die regulären Sprachen demnach auch abgeschlossen. Man „konkateniert“ die Grammatik einfach mit sich selbst (In Wirklichkeit konkateniert man natürlich nicht die Grammatik, sondern man entwickelt eine Grammatik, die die Konkatenation der Sprache mit sich selbst erzeugt.), indem man für jede Regel   noch eine   dazu gibt. Es ist dann möglich, bei der Ableitung Endlosschleifen zu durchlaufen, die immer wieder über das Startsymbol führen. Allerdings hat die Sache einen Haken: Das leere Wort   ist immer auch Element der Sprache   Das heißt, es müsste eine Regel   geben. Aber da nun   in jedem Fall auch auf rechten Seiten auftaucht   wird es hier nötig, ein wenig zu tricksen: Man benennt   in   um und führt ein neues Startsymbol   ein, das alle  Regeln übernimmt. Darüber hinaus kann es jetzt eine Regel   geben, denn   steht auf keiner rechten Seite, sondern nur   Es folgt wieder ein anschauliches Beispiel:

 

  ist eine reguläre Grammatik –   lässt man, wie gesagt, durchgehen – und es gilt   Die Klasse der regulären Sprachen ist unter Sternbildung abgeschlossen.

Ein weiterer Sonderfall der Konkatenation ist die Potenzierung. Möchte man eine reguläre Sprache   beispielsweise mit 2 potenzieren, dupliziert man   und nennt das eine Exemplar   wobei alle Nichtterminale den Index 1 tragen, und das andere   Dort haben alle Nichtterminale eine tiefgestellte 2.   und   sind immer noch reguläre Grammatiken und wie oben bereits gezeigt, ist auch   eine reguläre Sprache. Entsprechend kann man auf höhere Exponenten als 2 erweitern. Auch die Potenzierung regulärer Sprachen bringt also immer wieder reguläre Sprachen hervor.

Damit ist bewiesen, dass die regulären Sprachen unter Vereinigung, Konkatenation, Kleene-Stern und Potenzierung abgeschlossen sind. Das heißt, jeder Ausdruck wie dieser:
 
beschreibt eine reguläre Sprache; und umgekehrt kann jede reguläre Sprache mit solch einem Ausdruck beschrieben werden. Man nennt diese Ausdrücke deshalb auch „reguläre Ausdrücke“. Reguläre Ausdrücke sind wegen ihrer Prägnanz eine echte Alternative zu ellenlangen Grammatiken. Normalerweise schreibt man sie sogar noch kürzer auf. Der obige reguläre Ausdruck ist äquivalent zu diesem hier:
 
Die Konkatenationspunkte lässt man weg und die Vereinigungen werden mit senkrechten Strichen dargestellt. Wegen der dann wegfallenden geschweiften Klammern muss man eventuell zusätzliche Klammern einfügen.

  Übung


  Zusammenfassung

Reguläre Sprachen können mit endlichen Automaten beschrieben werden, die das Wortproblem in linearer Zeit lösen. Ein deterministischer endlicher Automat besteht aus mehreren Zuständen, von denen einer ein Startzustand ist und beliebig viele Endzustände sind. Die Zustände sind über die möglichen Eingabezeichen miteinander verbunden. Ein DEA wird mit einem 5-Tupel   charakterisiert.

Von den gestern besprochenen regulären Ausdrücken hast du vielleicht im Zusammenhang mit Algorithmen gehört, die aus Texten Zeichenfolgen heraussuchen. Fortgeschrittene Suchprogramme wie zum Beispiel   grep basieren auf regulären Ausdrücken. Der Benutzer gibt außer dem zu durchsuchenden Text einen regulären Ausdruck ein, der eine reguläre Sprache beschreibt. Die Wörter dieser Sprache sind die Zeichenfolgen, auf die der Algorithmus beim Durchsuchen des Textes anspringen soll. Wenn der Ausdruck zum Beispiel
 
lautet, dann findet der Algorithmus aus dem Eingabetext die Folgen von Nullen und Einsen heraus, die vorne und hinten von „00101“ und „0110“, „111“ und „10011“ oder „000“ und „10011“ begrenzt werden. Der Algorithmus löst also das am Tag 3 in der 2. Woche (Grammatiken) angesprochene Wortproblem für alle Teilwörter des eingegebenen Textes.

Dass sich auf dem Gebiet der Suchalgorithmen die regulären Ausdrücke so hoher Beliebtheit erfreuen, hat natürlich seine Gründe: Das Wortproblem ist für reguläre Sprachen sehr effizient lösbar. Man kann für jede reguläre Sprache speicherschonende und schnell arbeitende Automaten entwickeln, die eine Zeichenkette einlesen und daraufhin ausgeben, ob das Wort zur Sprache gehört oder nicht. Diese Automaten sind zunächst theoretischer Natur, aber in ihrem Aufbau nicht allzu realitätsfern, so dass man sie auch in der Praxis einsetzen kann.

Ein Automat befindet sich zu jedem Zeitpunkt in einem bestimmten Zustand. Am Anfang ist das ein definierter Startzustand. Er liest dann ein Wort zeichenweise ein. Nach jedem gelesenen Zeichen wechselt er seinen Zustand in Abhängigkeit von diesem Zeichen. Einige der Zustände, die der Automat annehmen kann, werden als Endzustände bezeichnet. Wenn er sich, nachdem er alle Zeichen des Eingabewortes gelesen hat, in einem Endzustand befindet, ist das Wort Element der Sprache, die der Automat definiert; andernfalls nicht.

Es gibt eine verbreitete graphische Darstellungsform für solche Automaten:
 
Die Zustände werden als Kreise dargestellt. Wenn der Automat, unter der Voraussetzung, dass er sich im Zustand   befindet, beim Lesen des Zeichens „0“ in den Zustand   übergeht, dann zeichnet man vom Kreis mit dem   zum Kreis mit dem   einen Pfeil, der mit „0“ beschriftet ist. Außerdem wird der Startzustand mit einem unbeschrifteten Pfeil, der von keinem Zustand ausgeht, gekennzeichnet. In diesem Fall ist das der Zustand   Die Endzustände charakterisiert ein doppelter Kreis. Der Startzustand kann auch ein Endzustand sein. Dann gehört   auch zur Sprache. In diesem Fall trifft das aber nicht zu. Der oben dargestellte Automat erkennt die schon mehrfach beispielhaft verwendete Sprache über dem binären Alphabet, deren Wörter als letztes oder vorletztes Zeichen eine „1“ haben. Probiere es aus! Nimm dir ein Beispielwort, beginne bei   und lasse dich von den Pfeilen leiten. Endet dein Weg bei einem Endzustand?

Wenn das zu überprüfende Wort „01101001“ lautet, dann sieht der Weg durch die Zustände so aus:
 
Da   ein Endzustand ist, akzeptiert der Automat das Wort „01101001“ – es ist Element der Sprache.

Der hier beschriebene Typ von einem Automaten hat zwei Eigenschaften: Zum einen ist er endlich. Das heißt, er kann nur eine bestimmte Anzahl von Zuständen einnehmen. Zum Anderen ist er deterministisch. Dazu später mehr. Es reicht jetzt erstmal, zu wissen, dass es heute und morgen um deterministische endliche Automaten geht. Dieses Ungetüm von einem Begriff wird im Folgenden mit DEA abgekürzt.

Ein DEA wird ähnlich wie eine Grammatik mit einem 5-Tupel der folgenden Struktur definiert:
 
Dabei ist   die Menge der Zustände,   das Eingabealphabet,   die Überführungsfunktion,   der Startzustand und   die Menge der Endzustände. Zur Erinnerung: Eine Grammatik ist ein 4-Tupel   Das sieht nicht nur ähnlich aus, das ist auch ähnlich. Sowohl eine Grammatik als auch ein Automat definiert eine Sprache.

Zu den einzelnen Gliedern des 5-Tupels Automat:   als endliche Menge der möglichen Zustände ist in diesem Beispiel   Das Eingabealphabet ist     ist eine Teilmenge von     Die Überführungsfunktion legt die Verdrahtung der Zustände untereinander fest. Sie erwartet zwei Parameter: Den aktuellen Zustand und das gerade anstehende Eingabezeichen. Der Rückgabewert der Funktion ist der Zustand, in den der Automat wechselt. Also es gilt   wenn beim Lesen des Zeichens „x“ ein Übergang vom Zustand   zum Zustand   stattfindet. Man kann auch mathematisch korrekt   schreiben. (sprich: „  ist definiert als   Kreuz Sigma abgebildet auf  “)

Den oben zeichnerisch dargestellten DEA kann man also auch in Textform eindeutig spezifizieren:

 
 

Du kennst jetzt schon drei äquivalente Beschreibungsmöglichkeiten für reguläre Sprachen: reguläre Grammatiken, reguläre Ausdrücke und deterministische endliche Automaten. Es erwartet dich in dieser Woche noch eine weitere.

  Übung


  Zusammenfassung

Da DEAs genau die reguläre Sprachen beschreiben, kann man zu jedem DEA eine äquivalente reguläre Grammatik finden.

Wer sagt eigentlich, dass die Sprachen, für die man DEAs entwickeln kann, genau die regulären Sprachen sind; nicht mehr und nicht weniger? Man kann es beweisen, indem man sich die Parallelen zwischen regulären Grammatiken und DEAs vor Augen führt.

Ein DEA, der gerade dabei ist, ein Wort abzuarbeiten, hat bereits eine gewisse Zeichenkette hinter sich gelassen und befindet sich in einem bestimmten Zustand. Diese Momentaufnahme kann man als Zwischenergebnis des DEA auffassen. Angenommen, dem Automaten wird der Saft abgedreht und er muss seine Arbeit abbrechen. Wenn er sich das Zwischenergebnis gemerkt hat, kann er später an dieser Stelle einsetzen und muss nicht ganz vorne anfangen. Aber das ist rein hypothetisch.

 
Setzt man den gestrigen Beispielautomaten auf das Wort „110100“ an, sieht die Folge der Zwischenergebnisse so aus:
 
Das gleiche in vereinfachter Schreibweise ohne Klammern, Kommata und das Symbol  
 
Die Kleinbuchstaben der Zustände wurden klammheimlich durch Großbuchstaben, wie sie für Nichtterminale üblich sind, ersetzt, denn es handelt sich augenscheinlich um eine Folge von schrittweise abgeleiteten Satzformen auf der Grundlage der folgenden regulären Grammatik:

 

Wenn ein DEA ein Wort auf Gültigkeit überprüft, tut er also nichts anderes als dieses Wort anhand der regulären Grammatik abzuleiten, zu der er äquivalent ist. Wenn das Wort nicht Element der Sprache ist, dann bleibt in der letzten Satzform am Ende ein Nichtterminal stehen. Das Wort kann nicht abgeleitet werden. Abgeleitet werden kann ein Wort nur, wenn ganz zum Schluss eine Ableitungsregel der Form   angewendet und damit das letzte Nichtterminal   eliminiert wird. Wenn man weiß, wie es geht, kann man also tatsächlich ohne größere geistige Anstrengung mit Zettel und Stift aus jedem DEA eine gleichwertige Grammatik erzeugen. Dazu geht man folgendermaßen vor:

  • Das Alphabet   der Grammatik ist das Alphabet   des Automaten.
  • Die Nichtterminalmenge   der Grammatik ist die Zustandsmenge   des Automaten. Es bietet sich an, die Variablen in Großbuchstaben zu benennen.
  • Das Startsymbol   der Grammatik ist der Startzustand   des Automaten.
  • Die Regelmenge   der Grammatik enthält für alle möglichen Parameterkonstellationen der Überführungsfunktion   des Automaten eine Produktionsregel. Dabei wird   zu  
  • Wenn   gilt und   ein Endzustand ist, dann gehört zu   außerdem die Regel   denn es muss die Möglichkeit offengehalten werden, an dieser Regel die Ableitung zu beenden.

Wenn der Startzustand   ein Endzustand ist und es die Möglichkeit gibt, nach dem Verlassen des Startzustandes wieder dorthin zurückzukehren, dann enthält   sowohl die Regel   als auch Regeln der Form   Es ist dann möglich, dass die Satzformen im Verlauf der Ableitung wieder kürzer werden, was ja der Voraussetzung für kontextsensitive Grammatiken widerspricht. Ein Nichtterminal, das zu   abgeleitet werden kann, darf auf keiner rechten Seite stehen. Deshalb muss in diesem Fall das Regelwerk der Grammatik noch folgendermaßen abgeändert werden:

  • Das Startsymbol   wird in   umbenannt. Alle Regeln der Form   werden in   abgeändert.
  • Die Regel   wird entfernt.
  • Es wird ein neues Symbol   eingeführt, das alle Regeln von   übernimmt.
  • Die Regel   wird eingeführt.

Nach dieser Bearbeitung der Grammatik beschreibt sie immer noch die gleiche reguläre Sprache, aber es kommen keine Nichtterminale, die zu   abgeleitet werden können, auf rechten Seiten vor.

Wenn man einen DEA hat, kann man also in jedem Fall eine entsprechende reguläre Grammatik finden. Natürlich funktioniert auch der umgekehrte Weg, der morgen thematisiert wird.

  Übung


  Zusammenfassung

Man kann zu jeder regulären Grammatik einen NEA und zu jedem NEA einen DEA entwickeln. Damit ist jetzt hinreichend bewiesen, dass endliche Automaten und reguläre Grammatiken äquivalent sind. NEAs können mehrere Startzustände, beliebig viele Zustandsübergänge für jedes Eingabezeichen und Sackgassen haben.

Wenn man beweisen will, dass DEAs und reguläre Grammatiken die gleiche Sprachklasse abdecken (nämlich die der regulären Sprachen), muss man jetzt nur noch zeigen, dass man zu jeder regulären Grammatik auch einen DEA finden kann. Zunächst braucht man für den zu entwerfenden Automaten so viele Zustände (also Kreise) wie die Grammatik Nichtterminale hat, und noch einen zusätzlich, der hier   genannt werden soll. Man sollte wieder die Großbuchstaben durch Kleinbuchstaben ersetzen. Der Startzustand, der dem Startsymbol der Grammatik entspricht, erhält einen Pfeil, um ihn als Startzustand zu markieren. Wenn es die Produktionsregel   gibt, ist der Startzustand auch ein Endzustand. Er bekommt einen doppelten Kreis. Der Zustand   ist außerdem in jedem Fall Endzustand; daher das   Dann wird für jede Regel nach dem Muster   ein Pfeil von   nach   gezeichnet, der mit „c“ beschriftet ist. Und für jede Regel   wird ein mit „b“ beschrifteter Pfeil von   nach   gezeichnet. Damit ist sichergestellt, dass man nach diesem Zeichen die Ableitung bzw. den Weg durch den Automaten beenden kann, denn   ist ein Endzustand.

Probieren wir das an dieser Grammatik aus:

 

Die Sprache, die diese Grammatik beschreibt, umfasst alle Folgen von Nullen und Einsen, die nicht das Teilwort „01“ enthalten (außer „0“ und „1“). Wendet man die oben genannten Richtlinien an, ergibt das den folgenden Automaten:
 
Das ist, zugegebenermaßen, ein ziemlich seltsamer Automat. Wenn das erste Zeichen eine „1“ ist, soll man dann von   auf   oder auf   übergehen? Und wenn der Automat sich im Zustand   befindet und es kommt eine „0“ als Eingabezeichen, bleibt er dann auf   oder wechselt er auf   Und wenn statt einer „0“ eine „1“ kommt, dann gibt es gar keinen Ausweg mehr.

Es handelt sich um einen nichtdeterministischen endlichen Automaten, einen NEA. Es kann für ein Eingabezeichen mehrere mögliche Zustandsübergänge geben. Es kann auch sein, dass gar kein Pfeil existiert, der mit einem bestimmten Zeichen beschriftet ist. Wenn solch ein NEA nun eine Eingabe erhält, sucht er sich nicht nach Gutdünken einen Pfad durch seine Zustände aus, sondern eigentlich muss er alle Möglichkeiten ausprobieren. Wenn die Eingabe zum Beispiel „1100“ lautet, gibt es folgende sechs Wege durch die Zustände:

 

Vier Wege enden in einer Sackgasse. Einer endet in einem Zustand, der kein Endzustand ist. Aber es ist auch ein Weg darunter, der in einem Endzustand endet. Deshalb akzeptiert der Automat das Wort „1100“. Es reicht aus, wenn es nur eine Möglichkeit gibt, die Zustandsübergänge so anzuordnen, dass am Ende ein Endzustand steht.

Leider lassen sich NEAs nicht so effizient algorithmisch umsetzen wie DEAs, denn Algorithmen, in denen Floskeln wie „alle Varianten durchprobieren“ vorkommen, sind meistens nicht besonders vorteilhaft. Und eigentlich sollte es heute ja darum gehen, zu zeigen, dass jede reguläre Grammatik auch als DEA und nicht als NEA dargestellt werden kann. Glücklicherweise lassen sich beide Probleme recht schnell lösen, denn zu jedem NEA kann man einen entsprechenden DEA finden.

Dazu zuerst ein paar Formalien: Sowohl ein DEA als auch ein NEA ist ein 5-Tupel   mit der Zustandsmenge, dem Alphabet, der Überführungsfunktion, dem Startzustand und der Endzustandsmenge in dieser Reihenfolge. Der einzige Unterschied zwischen den beiden Konzepten liegt in der Überführungsfunktion: Das Ergebnis der Überführungsfunktion   ist beim NEA nicht ein Zustand, sondern eine Menge von Zuständen, in die der Automat übergehen kann. Diese Menge kann natürlich eventuell auch nur ein Element haben. Sie kann auch leer sein.

Der oben aufgezeichnete NEA sieht als mathematische Definition so aus:

 
 

Dieser NEA soll nun als DEA dargestellt werden. Nimmt man an, dass der NEA, der auf ein Eingabewort angesetzt wird, die möglichen Abfolgen von Zuständen nicht nacheinander, sondern gleichzeitig durchprobiert, dann befindet er sich zu jedem Zeitpunkt in einer gewissen Menge von Zuständen. Diese Vorstellung ist jetzt ziemlich wirklichkeitsfern, wie auch das ganze Konzept NEA unrealistisch ist. Aber es naht Rettung: Wenn man diese Menge von Zuständen, in denen sich der Automat in einem gewissen Moment gleichzeitig befindet, als Einheit betrachtet, kann man sie auch als einzelnen Zustand auffassen. Ein NEA mit den drei Zuständen   und   der sich gerade in den Zuständen   und   befindet, ist also nichts weiter als ein DEA mit den acht Zuständen   und   der sich gerade im Zustand   befindet.

Hat der NEA das gesamte Wort abgearbeitet, befindet er sich wieder in einer Anzahl von Zuständen. Ist unter diesen Zuständen wenigstens ein Endzustand, dann gilt das Wort als akzeptiert. Sei also zum Beispiel   ein Endzustand des NEA. Dann hat der entsprechende DEA die Endzustände   und   Auf diese Weise kann man jedem x-beliebigen NEA einen DEA zuordnen, der die gleiche reguläre Sprache beschreibt. Reguläre Grammatiken, DEAs und NEAs sind äquivalent. Man sagt deshalb auch ganz allgemein, dass reguläre Sprachen genau die Sprachen sind, die von endlichen Automaten erkannt werden.

Wandelt man den Beispiel-NEA für die Sprache, deren Wörter „01“ nicht enthalten, nach der beschriebenen Vorgehensweise in einen DEA um, ergibt sich das folgende Bild:
 
Die Zustände, die vom Startzustand aus nicht erreichbar sind, wurden hier gleich weggelassen.

Wenn der NEA sich im Zustand   befindet und eine „1“ eingegeben wird, ist ein Übergang nach   oder   möglich. Aus diesem Grunde geht der DEA hier in jedem Fall in den Zustand   über, welcher wegen   ein Endzustand ist. Nach der Eingabe „0“ lautet der nächste Zustand   denn im NEA gibt es von   aus einen Übergang nach   und   von   aus ebenfalls nach   und   und von   aus gibt es keinen Übergang. Alle Zielzustände zusammengenommen ergeben   Da der NEA weder für   noch für   einen Übergang definiert, der mit „1“ beschriftet ist, geht der DEA, der sich in   befindet, bei der Eingabe einer „1“ in den Zustand über, der mit dem Zeichen für die leere Menge beschriftet ist. Ein DEA darf keine Sackgassen haben. Deshalb zeigt   für alle Eingaben auf sich selbst.

  Übung


  Zusammenfassung

Äquivalenzklassen sind Mengen von Wörtern, die einen Automaten in den gleichen Zustand überführen. Anhand einer Überlegung über Äquivalenzklassen kann man Minimalautomaten erzeugen. Es gibt einen Algorithmus, um einen DEA darauf zu testen, ob er mehr Zustände hat, als er eigentlich bräuchte, um die jeweilige Sprache zu beschreiben.

Gestern wurde eine reguläre Grammatik über dem Umweg eines NEA in einen DEA umgewandelt. Jetzt stellt sich doch die Frage, ob dieser Automat minimal ist; also ob er bereits die kleinstmögliche Anzahl an Zuständen hat. Vielleicht ist es ja möglich, einen DEA mit weniger als vier Zuständen zu finden, der trotzdem die gleiche Sprache akzeptiert.
 
Dazu folgende Überlegung: Wenn der abgebildete Automat die Eingabe „11000“ erhält, befindet er sich im Zustand   Gibt man stattdessen „0“ ein, befindet er sich ebenfalls im Zustand   Da der Automat über keinen Speicher verfügt, hat er keine Möglichkeit, zurückzublicken. Er weiß nicht, welche Zeichenkette er bereits verarbeitet hat. Er sieht nur seinen aktuellen Zustand. Aus diesem Grunde kann man jetzt ohne weiteres Nachdenken feststellen, dass die Eingaben „110001010“ und „01010“ den Automaten letztendlich in den selben Zustand überführen; denn „11000“ und „0“ sind äquivalent und alles, was danach kommt, ist bei beiden Eingaben gleich. Man sagt, „11000“ und „0“ sind Elemente der Äquivalenzklasse   Diese Äquivalenzklasse ist die Menge von Wörtern, die auf den Zustand   führen.
 
Man kann für jeden Zustand genau eine Äquivalenzklasse finden. Es gibt also insgesamt vier Äquivalenzklassen:   und  

Es ist nun zu entscheiden, ob man zwei Äquivalenzklassen zusammenfassen kann; also ob alle Wörter aus der Äquivalenzklasse   auch äquivalent zu allen Wörtern aus   sind. Die Frage, ob man zwei Äquivalenzklassen zusammenfassen kann, ist schwer zu greifen. Gehen wir stattdessen andersherum vor: Welche je zwei Äquivalenzklassen kann man in jedem Fall nicht zusammenfassen? Man braucht also eine Tabelle:

     
 
 
 

Die Paare, von denen eine Äquivalenzklasse einem Endzustand entspricht, also Wörter enthält, die Elemente der Sprache sind, und die andere nicht, sind schon mal unvereinbar. Von den vier Wörtern   „0“, „1“ und „01“ ist „01“ das einzige, das der Definition der Sprache widerspricht. Also markiert man in der Tabelle     und   – das sind alles paarweise verschiedene Äquivalenzklassen.

     
 
 
       

Kann man vielleicht   und   zusammenfassen? Wenn ja, dann müssten nicht nur „0“ und „1“, sondern auch „01“ und „11“ äquivalent sein, also   und   die selbe Äquivalenzklasse sein. Aber laut Automat gilt   und   ist nicht vereinbar mit   da   in der Tabelle markiert ist. Also ist   auch nicht vereinbar und wird markiert.

     
   
   
       

Verlängert man ein Wort aus   um „0“, erhält man ein Wort aus   Verlängert man ein Wort aus   um „0“, erhält man ebenfalls ein Wort aus   Möglicherweise kann man   und   verschmelzen? Aber   um „1“ verlängert ergibt   und   um „1“ verlängert ergibt   Das Paar   ist markiert, also muss auch   markiert werden.

     
     
   
       

Jetzt fehlt nur noch   Hängt man „0“ an beide hinten ran, ergibt sich das logischerweise unmarkierte   Bei „1“ erhält man das ebenfalls unmarkierte     darf also nicht markiert werden. Es ist das einzige Paar Äquivalenzklassen, das zu einer verschmolzen werden kann. Man erhält also den folgenden Äquivalenzklassenautomaten, der zugleich der minimale DEA ist:
 

Zusammenfassend: Will man von einem DEA feststellen, ob er minimal ist, muss man fragen, welche Zustände äquivalent sind; und zwar über den Umweg der Frage nach den Zuständen oder Äquivalenzklassen, die nicht äquivalent sind.

  Übung


Rückblick

Bearbeiten

Lies dir heute die Zusammenfassungen noch einmal durch. Wenn du sehr viel Zeit und Lust hast, kannst du natürlich auch alles lesen. Gehe kurz die Übungen der vergangenen Tage durch und versuche dich dann an diesen:

  Übung