Endliche Automaten und reguläre Sprachen Endliche Automaten 1 / 151 Endliche Automaten Endliche Automaten erlauben eine Beschreibung von Handlungsabläufen: Wie ändert sich ein Systemzustand in Abhängigkeit von veränderten Umgebungsbedingungen? Vielfältiges Einsatzgebiet, nämlich: - in der Definition der regulären Sprachen also der Menge aller Folgen von Ereignissen, die von einem Startzustand in einen gewünschten Zustand führen, - in der Entwicklung digitaler Schaltungen - in der Softwaretechnik (z. B. in der Modellierung des Applikationsverhaltens) - in der Compilierung: Lexikalische Analyse - im Algorithmenentwurf für String Probleme - in der Abstraktion tatsächlicher Automaten (wie Bank- und Getränkeautomaten, Fahrstühle etc.) Endliche Automaten 2 / 151 Das Problem der Flußüberquerung: Transitionssysteme "Startzustand" MWZ K MZ MZ W K M Z M M MW K Z MW K MZ MZ K MK MK MW MW Z W MZ MZ W M WZ MZ K MW MK MK MW Z MW K M M M Z W K MZ "akzeptierender Zustand" M K Z MZ MWKZ Dieser endliche Automat „akzeptiert“ genau diejenigen Folgen von einzelnen Flussüberquerungen, die vom Startzustand in den akzeptierenden Zustand führen. Endliche Automaten Beispiele 3 / 151 Lexikalische Analyse Zu Beginn liest der Compiler Anweisung nach Anweisung und bricht Anweisungen in Tokenklassen auf. Betrachte zum Beispiel die Anweisung if distance >= rate * (end - start) then distance = maxdistance; mit den Tokenklassen: - Keywords (für if und then), - Variablen (für distance, rate, end, start, maxdistance), - Operatoren (für *, -, =) und Vergleichsoperatoren (für >=), - Klammern (für ( und )) und Semikolon (für ;). Die lexikalische Analyse benutzt reguläre Grammatiken, bzw nichtdeterminische endliche Automaten. Endliche Automaten Beispiele 4 / 151 Freischaltung eines Fernsehers (1/2) Um die Kindersicherung des Fernsehers über die Fernbedienung freizuschalten, muss ein dreistelliger Code korrekt eingegeben werden. Dabei sind die folgenden Tasten relevant: - Die Tasten 0, . . . , 9, - die Taste CODE sowie - die Taste BACK. Die Taste CODE muss vor Eingabe des Codes gedrückt werden. Wird CODE während der Codeeingabe nochmals gedrückt, so wird die Eingabe neu begonnen. Wird BACK gedrückt, so wird die zuletzt eingegebene Zahl zurückgenommen. Der Code zum Entsperren ist 999. Endliche Automaten Beispiele 5 / 151 Freischaltung eines Fernsehers BACK (2/2) CODE CODE 9 ready 9 BACK CODE CODE 0,...,8 9 BACK 0,...,8 BACK CODE CODE 99 9 ON BACK 0,...,8 x CODE 9x 0,...,9 0,...,9 BACK xx 0,...,9 OFF 0,...,9 BACK Der Automat „akzeptiert“ alle Folgen von Bedienoperationen, die vom Zustand „ready“ in den Zustand „ON“ führen. Endliche Automaten Beispiele 6 / 151 Was ist ein endlicher Automat? Ein deterministischer endlicher Automat (engl. deterministic finite automaton, kurz DFA) A = (Σ, Q, δ, q0 , F ) besteht aus: einer endlichen Menge Σ, dem Eingabealphabet, einer endlichen Menge Q, der Zustandsmenge (die Elemente aus Q werden Zustände genannt), einer Funktion δ von Q × Σ nach Q, der Übergangsfunktion (oder Überführungsfunktion), einem Zustand q0 ∈ Q, dem Startzustand, sowie einer Menge F ⊆ Q von Endzuständen bzw. akzeptierenden Zuständen. (Der Buchstabe F steht für „final states“, also „Endzustände“). Endliche Automaten DFAs: Die formale Definition 7 / 151 Das Zustandsdiagramm, bzw. der Automatengraph, die grafische Darstellung eines DFA Endliche Automaten Der Automatengraph 8 / 151 Das Zustandsdiagramm, bzw. der Automatengraph A = (Σ, Q, δ, q0 , F ) sei ein DFA. Für jeden Zustand q ∈ Q gibt es einen durch q dargestellten Knoten. Der Startzustand q0 wird durch einen in ihn hinein führenden Pfeil markiert, d.h.: q0 Jeder akzeptierende Zustand q ∈ F wird durch eine doppelte Umrandung markiert, d.h.: q Seien p, q ∈ Q Zustände und a ∈ Σ ein Symbol des Alphabets mit δ(q, a) = p. Dann füge einen mit dem Symbol a beschrifteten Pfeil von Knoten zu Knoten ein, d.h.: q p q Endliche Automaten a Der Automatengraph p 9 / 151 Wie arbeitet ein DFA? Die erweiterte Übergangsfunktion Endliche Automaten Die erweiterte Übergangsfunktion 10 / 151 Wie arbeitet ein DFA A = (Σ, Q, δ, q0 , F )? (1/2) Ein DFA A = (Σ, Q, δ, q0 , F ) erhält als Eingabe ein Wort w ∈ Σ∗ , das eine Folge von „Aktionen“ oder „Bedienoperationen“ repräsentiert. A wird im Startzustand q0 gestartet. Falls w das leere Wort ist, d.h. w = ε, dann verbleibt A im Zustand q0 . Also gelte w = a1 · · · an mit n ∈ N>0 und a1 , . . . , an ∈ Σ. 1. Der Automat liest den ersten Buchstaben a1 von w . I A wechselt in den Zustand q1 := δ(q0 , a1 ). In der grafischen Darstellung von A wird der Zustand q0 durch die mit a1 beschriftete Kante verlassen, und q1 ist der Endknoten dieser Kante, d.h. a1 q0 q1 Endliche Automaten Die erweiterte Übergangsfunktion 11 / 151 Wie arbeitet ein DFA A = (Σ, Q, δ, q0 , F )? (2/2) 2. Durch Lesen von a2 , dem zweiten Symbol von w , wechselt A in den Zustand q2 := δ(q1 , a2 ). In der grafischen Darstellung von A wird q1 durch die mit a2 beschriftete Kante verlassen (falls diese Kante existiert) a2 q1 q2 und der Automat landet in Zustand q2 = δ(q1 , a2 ). n. Auf diese Weise wird das gesamte Eingabewort w = a1 · · · an abgearbeitet. I I Ausgehend vom Startzustand q0 erreicht A nacheinander Zustände q1 , . . . , qn . In der grafischen Darstellung von A entspricht diese Zustandsfolge einem Weg der Länge n, der im Knoten q0 startet und dessen Kanten mit den Buchstaben a1 , . . . , an beschriftet sind. I Schreibe δ(q0 , w ) := qn . Endliche Automaten Die erweiterte Übergangsfunktion 12 / 151 Was genau ist δ(q, w )? Sei A := (Σ, Q, δ, q0 , F ) ein DFA. Die Funktion δ : Q × Σ∗ → Q ist rekursiv wie folgt definiert: Der Rekursionsanfang: Für alle q ∈ Q ist δ(q, ε) := q. Der Rekursionsschritt: Für alle q ∈ Q, w ∈ Σ∗ und a ∈ Σ gilt für q 0 := δ(q, w ): δ(q, wa) := δ(q 0 , a). Insgesamt gilt: δ(q0 , w ) ist der durch Verarbeiten des Worts w erreichte Zustand. Endliche Automaten Die erweiterte Übergangsfunktion 13 / 151 DFAs: Die Maschinensichtweise Verarbeitung eines Eingabeworts durch einen DFA A: w= a1 a2 a3 ··· Lesekopf q0 aktueller Zustand Wir können uns einen DFA als eine Maschine vorstellen, die ∗ ihre Eingabe w = a1 a2 a3 · · · an von links-nach-rechts mit Hilfe eines Lesekopfes durchläuft ∗ und dabei Zustandsübergänge durchführt. Können wir heutige Rechner durch DFAs modellieren? Endliche Automaten DFAs: Die Maschinensichtweise 14 / 151 Die Sprache eines DFA DFAs und ihre Sprachen 15 / 151 Wann akzeptiert A = (Σ, Q, δ, q0 , F ) ein Wort w ? Das Eingabewort w wird vom DFA A akzeptiert, falls δ(q0 , w ) ∈ F , d.h., der nach Verarbeiten von w erreichte Zustand gehört zur Menge F der akzeptierenden Zustände. Wie „übersetzt“ sich Akzeptanz von w = a1 · · · an in der grafischen Darstellung von A? Es gibt einen in q0 startenden Weg der Länge n, - dessen Kanten mit den Symbolen a1 , . . . , an beschriftet sind, - und der in einem akzeptierenden Zustand DFAs und ihre Sprachen endet. 16 / 151 Reguläre Sprachen DFAs und ihre Sprachen 17 / 151 Die Sprache L(A) und reguläre Sprachen Die von einem DFA A = (Σ, Q, δ, q0 , F ) akzeptierte Sprache L(A) ist L(A) := { w ∈ Σ∗ : δ(q0 , w ) ∈ F }. Ein Wort w ∈ Σ∗ gehört also genau dann zur Sprache L(A), wenn w vom DFA A akzeptiert wird. Eine Sprache L heißt regulär, wenn es einen DFA A gibt mit L(A) = L. Wir möchten die Klasse aller regulären Sprachen verstehen. DFAs und ihre Sprachen 18 / 151 Das Pattern Matching Problem Sei Σ ein Alphabet und w ∈ Σ∗ ein Wort über Σ. Lw = {u w v : u, v ∈ Σ∗ } ist das „Pattern Matching Problem“: Ist das Pattern v ein Teilwort des Textes T ? ? Ist die Sprache Lw regulär? ? Und wenn ja, was ist die kleinstmögliche Zustandszahl eines DFA Aw mit L(Aw ) = Lw ? DFAs und ihre Sprachen Beispiele 19 / 151 Modulo-Rechnen m und a seien natürliche Zahlen. Für das Alphabet Σ = { 0, 1, . . . , a − 1 } ist La,m = n w ∈ Σ∗ : |w | X o wi a|w |−i ≡ 0 (mod m) . i=1 eine „Modulo-Sprache“. ? Ist die Modulosprache La,m regulär? ? Und wenn ja, was ist die kleinstmögliche Zustandszahl eines DFA Aa,m mit L(Aa,m ) = La,m ? DFAs und ihre Sprachen Beispiele 20 / 151 Zählen Definiere die „Sprache L des Zählens“ durch n o L = an b n : n ∈ N . ? Ist L regulär? ? Und wenn ja, was ist die kleinstmögliche Zustandszahl eines DFA A mit L(A) = L? DFAs und ihre Sprachen Beispiele 21 / 151 Minimierung von DFAs Minimierung 22 / 151 Minimiere die Zustandszahl A = (Σ, Q A , δ A , q0A , F A ) und B = (Σ, Q B , δ B , q0B , F B ) seien DFAs. (a) Wir nennen A und B äquivalent, wenn gilt L(A) = L(B). (b) A heißt minimal, wenn kein mit A äquivalenter DFA eine kleinere Zustandszahl besitzt. DAS ZIEL: Gegeben ist ein DFA A. Bestimme einen minimalen, mit A äquivalenten DFA. Minimierung 23 / 151 Zustandsminimierung: Die Idee Der DFA A = (Σ, Q, δ, q0 , F ) sei gegeben. Die Idee: Wir sollten doch zwei Zustände p, q ∈ Q zu einem einzigen Zustand verschmelzen dürfen, wenn p und q „äquivalent“ sind, also dasselbe Ausgabeverhalten besitzen. Was bedeutet das? Die Verschmelzungsrelation ≡A ist eine 2-stellige Relation über der Zustandsmenge Q. Wir sagen, dass Zustände p, q ∈ Q äquivalent bzgl. A sind, (kurz p ≡A q), wenn für alle Worte w ∈ Σ∗ : δ(p, w ) ∈ F ⇔ δ(q, w ) ∈ F . Wir nennen ≡A Verschmelzungsrelation, da wir bzgl. ≡A äquivalente Zustände in einen Zustand verschmelzen möchten. Minimierung 24 / 151 Die Verschmelzungsrelation ist eine Äquivalenzrelation Der DFA A = (Σ, Q, δ, q0 , F ) sei gegeben. Zur Erinnerung: p ≡A q wenn f.a. Worte w ∈ Σ∗ gilt: δ(p, w ) ∈ F ⇔ δ(q, w ) ∈ F . (a) Die Verschmelzungsrelation ist I I I reflexiv, f.a. p ∈ Q: p ≡A p, symmetrisch, f.a. p, q ∈ Q: wenn p ≡A q, dann q ≡A p und transitiv, f.a. p, q, r ∈ Q: wenn p ≡A q und q ≡A r , dann p ≡A r . (b) Die Verschmelzungsrelation ist eine Äquivalenzrelation! Können wir die Zustände einer Äquivalenzklasse von ≡A zu einem einzigen Zustand verschmelzen?. Minimierung Die Verschmelzungsrelation 25 / 151 Was ist zu tun? Sei der DFA A = (Σ, Q, δ, q0 , F ) gegeben. Wir führen die folgenden Schritte durch: 1. Wir bestimmen die Äquivalenzklassen der Verschmelzungsrelation ≡A . 2. Für jede Äquivalenzklasse von ≡A verschmelzen wir alle Zustände der Klasse zu einem einzigen Zustand und fügen „entsprechende“ Übergänge ein. Den neuen Automaten nennen wir A0 und bezeichnen ihn als den Äquivalenzklassenautomaten von A. Minimierung Die Verschmelzungsrelation 26 / 151 Die wichtigen Fragen (a) Wie sollen wir die Zustandsübergänge von A0 definieren, so dass A und A0 dieselbe Sprache berechnen? (b) Können wir I I die Verschmelzungsrelation ≡A wie auch den Äquivalenzklassenautomaten A0 effizient berechnen? (c) Die Anzahl der Zustände von A0 stimmt mit dem Index von ≡A überein. I I Stimmt der Index mit der minimalen Zustandszahl überein? Wenn ja, dann ist A0 minimal! Minimierung Die Verschmelzungsrelation 27 / 151 Wir bestimmen die Verschmelzungsrelation ≡A Minimierung Die Verschmelzungsrelation 28 / 151 Zeugen (1/2) Sei (Σ, Q, δ, q0 , F ) ein DFA. (a) Das Wort w ∈ Σ∗ ist Zeuge für die Inäquivalenz von p und q, wenn δ(p, w ) ∈ F ∧ δ(q, w ) 6∈ F ∨ δ(p, w ) 6∈ F ∧ δ(q, w ) ∈ F . Wir sagen auch, dass w die Zustände p und q trennt. (b) Es ist p 6≡A q genau dann, wenn es einen Zeugen für die Inäquivalenz von p und q gibt, bzw wenn es ein Wort gibt, das p und q trennt. Minimierung Die Verschmelzungsrelation 29 / 151 Zeugen (2/2) a b a a1 b1 a b bb ε a, b b b a2 b2 b a a Finde einen Zeugen für die Inäquivalenz von b1 und bb. Welcher Zeuge trennt ε und a1 ? Gibt es Zeugen, die die Zustände a1 und a2 trennen? Minimierung Die Verschmelzungsrelation 30 / 151 Wir bestimmen alle Paare nicht-äquivalenter Zustände 1. Markiere alle Paarmengen {p, q} mit p ∈ F und q 6∈ F (als nicht-äquivalent). I I Es ist δ(p, ε) ∈ F und δ(q, ε) 6∈ F . w = ε ist Zeuge für die Nicht-Äquivalenz von p und q. 2. Wenn die Paarmenge {p, q} bereits markiert wurde und wenn δ(r , a) = p sowie δ(s, a) = q für ein a ∈ Σ, dann markiere {r , s}. I Da p 6≡A q, gibt es einen Zeugen w mit δ(p, w ) ∈ F und δ(q, w ) 6∈ F oder δ(p, w ) 6∈ F und δ(q, w ) ∈ F . I Das Wort aw trennt r und s. 3. Halte, wenn keine neuen Paarmengen {r , s} markiert werden können. I Unser Verfahren behauptet, dass p 6≡A q genau dann gilt, wenn die Paarmenge {p, q} markiert wurde. Stimmt die Behauptung: Finden wir alle Paare nicht-äquivalenter Zustände? Minimierung Die Verschmelzungsrelation 31 / 151 Unser Verfahren funktioniert! Sei P die Menge aller Paare {p, q} nicht-äquivalenter Zustände, die aber von unserem Verfahren nicht gefunden werden. Zeige, dass P leer ist! Angenommen, P ist nicht-leer. 0. {p, q} ∈ P habe unter allen Paaren in P einen kürzesten Zeugen w . 1. Wenn w = ε, dann ist I δ(p, ε) ∈ F und δ(q, ε) 6∈ F oder δ(p, ε) 6∈ F und δ(q, ε) ∈ F , I bzw. p ∈ F und q 6∈ F oder p 6∈ F und q ∈ F . Aber dann haben wir {p, q} im Schritt 1. markiert. 2. Wenn w = au für den Buchstaben a ∈ Σ, dann ist I δ(p, au) ∈ F und δ(q, au) 6∈ F oder δ(p, au) 6∈ F und δ(q, au) ∈ F , I bzw. δ(δ(p, a), u) ∈ F und δ(δ(q, a), u) 6∈ F oder δ(δ(p, a), u) 6∈ F und δ(δ(q, a), u) ∈ F . Aber dann ist δ(p, a) 6≡A δ(q, a) mit dem kürzeren Zeugen u: I I Nach Annahme haben wir {δ(p, a), δ(q, a)} z.B. in einer Menge Mi markiert und werden darauf folgend {p, q} in Mi+1 markieren. Minimierung Die Verschmelzungsrelation 32 / 151 Der Automat nach allen Verschmelzungen Wie sieht der Automat nach dem Verschmelzen aller äquivalenten Zustände aus? - Für Zustand p ∈ Q bezeichnet [p]A := q ∈ Q | p ≡A q die Äquivalenzklasse von p. - Der Äquivalenzklassenautomat A0 für A besitzt I die Zustandsmenge Q 0 := I I I [p]A | p ∈ Q , 0 den Anfangszustand q0 :=[q0 ]A , die Menge F 0 := [p]A | p ∈ F der akzeptierenden Zustände und das Programm δ 0 mit δ 0 ([p]A , a) := [ δ(p, a) ]A für alle q ∈ Q, a ∈ Σ. Minimierung Die Verschmelzungsrelation 33 / 151 Der Minimierungsalgorithmus Minimierung Die Verschmelzungsrelation 34 / 151 Berechnung von ≡A und A0 Eingabe: Ein DFA A = (Q, Σ, δ, q0 , F ). Schritt 1: Entferne aus A alle überflüssigen Zustände, d.h. alle Zustände, die nicht von q0 aus erreichbar sind. Schritt 2: Bestimme alle Paarmengen {p, q} mit p, q ∈ Q und p 6≡A q: 1. Markiere alle Paarmengen in M0 := {p, q} : p ∈ F , q ∈ Q \ F ; Setze i := 0 2. Wiederhole Für alle Paarmengen {p, q} mit p 6= q und für alle x ∈ Σ tue folgendes: 3. Markiere {p, q}, falls {δ(p, x ), δ(q, x )} ∈ Mi . 4. 5. Sei Mi+1 die Menge aller hierbei neu markierten Paarmengen. 6. i := i + 1 7. bis Mi = ∅ 8. Ausgabe: M := M0 ∪ · · · ∪ Mi−1 . Schritt 3: Konstruiere A0 := (Q 0 , Σ, δ 0 , q00 , F 0 ): Q 0 := [q]A : q ∈ Q , wobei [q]A = q00 := [q0 ]A , F 0 := [q]A : q ∈ F p ∈ Q : {p, q} 6∈ M δ 0 : Q 0 × Σ → Q 0 mit δ 0 [q]A , x := [δ(q, x )]A für alle q ∈ Q und x ∈ Σ. Minimierung Die Verschmelzungsrelation 35 / 151 Ist der Algorithmus korrekt und effizient? In jeder Iteration in Schritt 2 wird mindestens eine neue Paarmenge markiert: Es gibt also höchstens |Q|2 Iterationen und der Algorithmus ist effizient (?!). Die wichtigen Fragen: 1. Sind A und der Äquivalenzklassenautomat A0 äquivalent, d.h. berechnet A0 dieselbe Sprache wie A? I I Zeige, dass die Definition δ 0 ([p], a) := [δ(p, a)]A „wohldefiniert“ ist, also nicht vom Repräsentanten p abhängt: Wenn p ≡A q, dann ist δ(p, a) ≡A δ(q, a). X Zeige durch Induktion über die Länge von w , dass δ 0 ([p], w ) = [δ(p, w )]A I sowie p ≡A q und p ∈ F ⇒ q ∈ F .X 2. Ist A0 minimal? Aber zuerst entwerfen wir „wirklich-effiziente“ Minimierungsalgorithmen. Minimierung Die Verschmelzungsrelation 36 / 151 Die Algorithmen von Moore und Hopcroft Minimierung Die Algorithmen von Moore und Hopcroft 37 / 151 Berechnung der Verschmelzungsrelation: Der Ansatz (1/2) Der Verschmelzungsalgorithmus beginnt mit der Menge M0 aller Paare, die durch das leere Wort getrennt werden. Mit vollständiger Induktion: Mi ist die Menge aller Paare mit einem Zeugen der Länge i. Sei A = (Σ, Q, δ, q0 , F ) ein DFA. Für jede natürliche Zahl i definiere die Verschmelzungsrelation ≡iA der Ordnung i: Setze für alle Zustände p, q ∈ Q p ≡iA q :⇐⇒ für alle Worte w ∈ Σ∗ der Länge höchstens i gilt ( δ(p, w ) ∈ F ⇐⇒ δ(q, w ) ∈ F ). [ Also: p ≡iA q ⇐⇒ {p, q} 6∈ Mj , j, j6i denn Mj ist die Menge aller Paare mit einem Zeugen der Länge j. Minimierung Die Algorithmen von Moore und Hopcroft 38 / 151 Berechnung der Verschmelzungsrelation: Der Ansatz (2/2) Der Verschmelzungsalgorithmus berechnet nacheinander die Äquivalenzklassen ≡0A , ≡1A , . . . , ≡kA , wobei ≡kA die Verschmelzungsrelation ist. Die Äquivalenzrelation ≡0A besitzt die beiden Klassen Q \ F und F . Betrachte in der iten Iteration alle noch nicht getrennten Zustände p, q. I p, q noch nicht getrennt =⇒ Es gilt p ≡i−1 q. A I Gilt δ(p, c) 6≡i−1 δ(q, c) für irgendeinen Buchstaben c, folgt p 6≡iA q. A F Werden δ(p, c) und δ(q, c) von dem Zeugen w getrennt, dann werden p und q von dem Zeugen cw getrennt. Minimierung Die Algorithmen von Moore und Hopcroft 39 / 151 Der Algorithmus von Moore 1. Der DFA A = (Σ, Q, δ, q0 , F ) ist gegeben. I I Z0 = (F , Q \ F ) ist die Zerlegung der Verschmelzungsrelation der Ordnung 0. Setze i = 0. 2. Wiederhole bis Zi = Zi+1 : (a) Zi besteht aus den Äquivalenzklassen von ≡iA . (b) Für alle Buchstaben a ∈ Σ und alle Äquivalenzklassen P von Zi : Bestimme die Zerlegung Zi (a) der Äquivalenzrelation ≡i,a A mit i i r ≡i,a A s :⇐⇒ r ≡A s und δ(r , a) ≡A δ(s, a). (c) Bestimme die Zerlegung Zi+1 von ≡i+1 als Verfeinerung der Zerlegungen Zi (a). A (Beachte r ≡i+1 s ⇐⇒ r ≡i,a A A s für alle a ∈ Σ.) (d) Setze i = i + 1. Minimierung Der Algorithmus von Moore 40 / 151 Der Algorithmus von Moore: Die Laufzeit Sei A = (Σ, Q, δ, q0 , F ) ein DFA mit n = |Q|. Setze L := L(A). 1. Definiere die Tiefe t von A als die kleinste Zahl i, so dass ≡iA und ≡i+1 A übereinstimmen. 2. Übungsaufgabe: I I I I Die Tiefe stimmt für alle Automaten B mit L(B) = L(A) überein. Für jede natürliche Zahl n gibt es einen DFA A mit n Zuständen und Tiefe n − 2. Es gibt keinen DFA mit n Zuständen und Tiefe größer als n − 2. Die Zerlegung Zi (a) kann in Zeit O(n) bestimmt werden, wenn Zi bekannt ist. Die Zerlegung Zi+1 kann in Zeit O(|Σ| · n) bestimmt werden, wenn die Zerlegungen Zi (a) für alle Buchstaben a ∈ Σ bekannt sind. Moores Algorithmus bestimmt die Verschmelzungsrelation ≡A in Zeit O(t · |Σ| · n), wobei t die Tiefe von L = L(A) ist. Minimierung Der Algorithmus von Moore 41 / 151 Wie geht Moores Algorithmus vor? a b a a1 b1 a b bb ε a, b b b a2 b2 b a a Minimierung Der Algorithmus von Moore 42 / 151 Hopcrofts Algorithmus: Die Idee Sei A = (Σ, Q, δ, q0 , F ) ein DFA und seien X , Y ⊆ Q Teilmengen von Q, wobei keine zwei Zustände y1 ∈ Y und y2 6∈ Y äquivalent seien. (a) Wir sagen, dass Y die Menge X (für den Buchstaben c) zerlegt, falls es x1 , x2 ∈ X mit δ(x1 , c) ∈ Y und δ(x2 , c) 6∈ Y gibt. I I δ(x1 , c) und δ(x2 , c) sind nach Annahme nicht äquivalent. =⇒ x1 und x2 können nicht äquivalent sein. (b) Setze δc−1 (Y ) := { q ∈ Q : δ(q, c) ∈ Y }. (c) Zerlege X in die beiden Klassen X ∩ δc−1 (Y ) und X \ δc−1 (Y ). Minimierung Hopcrofts Algorithmus 43 / 151 Hopcrofts Algorithmus 1. Der DFA A = (Σ, Q, δ, q0 , F ) ist gegeben. Z = (F , Q \ F ) ist die Anfangszerlegung. Setze Check := {Y }, wobei Y die kleinere der Mengen F , Q \ F ist. /* Während der Berechnung werden die folgenden Invarianten gelten: (a) Die Äquivalenzklassen der Verschmelzungsrelation ≡A verfeinern Z , d.h. jede Klasse von Z ist die Vereinigung bestimmter Äquivalenzklassen von ≡A . (b) Die Klassen X in Z stimmen genau dann mit den Klassen der Verschmelzungsrelation überein, wenn X ∩ δc−1 (Y ) = X oder X ∩ δc−1 (Y ) = ∅ für alle Klassen X in Z und alle Klassen Y in Check gilt. F F Es gilt X ∩ δc−1 (Q \ F ) = X \ δc−1 (F ) sowie X \ δc−1 (Q \ F ) = X ∩ δc−1 (F ). Für jedes X ⊆ Q erzeugen Y = F bzw. Y = Q \ F dieselben Kinderklassen. */ 2. Solange Check nichtleer ist, wiederhole (a) Wähle irgendeine Klasse Y aus Check und entferne Y aus Check. (b) Für jeden Buchstaben c ∈ Σ: bestimme δc−1 (Y ) = { q ∈ Q : δ(q, c) ∈ Y } und alle Klassen X in Z , die von Y zerlegt werden: F F F Ersetze die „Mutterklasse“ X in Z durch die „Kinderklassen“ X ∩ δc−1 (Y ) und X \ δc−1 (Y ). Wenn X ∈ Check, dann ersetze X in Check durch X ∩ δc−1 (Y ) und X \ δc−1 (Y ). Ansonsten, wenn X 6∈ Check, dann füge die kleinere der beiden Mengen X ∩ δc−1 (Y ) und X \ δc−1 (Y ) zu Check hinzu. Minimierung Hopcrofts Algorithmus 44 / 151 Wie geht Hopcrofts Algorithmus vor? Der DFA A mit Zustandsdiagramm 1 0 0 0 1 0 1 2 3 1 4 0 5 1 1 0 akzeptiert die Binärdarstellungen aller durch 6 teilbaren Zahlen. D.h.: L(A) = n w ∈ {0, 1}∗ : |w | X o wi 2|w |−i ≡ 0 (mod 6) . i=1 Aufgabe: Ist der Automat minimal? Bestimme den Äquivalenzklassenautomaten A0 . Minimierung Hopcrofts Algorithmus 45 / 151 Hopcrofts Algorithmus: Korrektheit Ist die Aktualisierung von Z korrekt? I Wird eine Mutterklasse X der Zerlegung Z zerlegt, dann können Zustände in der einen Kinderklasse X ∩ δc−1 (Y ) nicht mit Zuständen in der anderen Kinderklasse X \ δc−1 (Y ) äquivalent sein. X Ist die Aktualisierung der Menge Check korrekt? I I Wird eine Menge Y aus Check entfernt, dann wird Y , nach seiner Verarbeitung in Schritt 2b), keine Klassen in Z mehr zerlegen. X Und wenn eine Klasse X durch Y zerlegt wird? F F Gehört X zu Check, dann wird die Mutterklasse X in Check durch beide Kinder X ∩ δc−1 (Y ), X \ δc−1 (Y ) ersetzt. Und wenn X nicht zu Check gehört? Warum darf X in Check durch die kleinere der beiden Kinderklassen ersetzt werden? Minimierung Hopcrofts Algorithmus 46 / 151 Hopcrofts Algorithmus: Die Invariante Wenn X ∈ Z die Klasse X 0 ∈ Z zerlegt, dann gibt es Klassen Y1 , . . . , Y ∈ Check, die die Zerlegung 0 0 −1 0 −1 X = X ∩ δc (X1 ) ∪ X \ δc (X )} verfeinern. X 0 wird also von Y1 , . . . , Yk sukzessive so zerlegt, dass beide Kinderklassen – mgl. trivial – von X 0 zerlegt werden. Die Reihenfolge, in der Y1 , . . . , Yk ausgewählt werden, ist beliebig. Die Invariante wird im zweiten Übungsblatt gezeigt. Minimierung Hopcrofts Algorithmus 47 / 151 Hopcrofts Algorithmus: Die Laufzeit (1/2) Ein Zustandsübergang δ(q, c) = r gehört genau dann zu einer Klasse Y (der aktuellen Zerlegung Z ), wenn r ∈ Y . 1. Sei tc (Y ) := |δc−1 (Y )| die Anzahl der Übergänge, die zu Y gehören. P 2. Übungsaufgabe: Y kann in Zeit O( c∈Σ |tc (Y )| ) verarbeitet werden. 3. Wenn die Menge Y mit r ∈ Y aus Check entfernt wird und eine andere Menge Y 0 mit r ∈ Y 0 irgendwann später zu Check hinzugefügt wird, dann ist |Y 0 | 6 |Y |/2, da eine zerlegte Klasse X durch die kleinere der beiden Kinderklassen ersetzt wird. I Zum Zeitpunkt des Hinzufügens von Y 0 gehört die Vorfahrenklasse Y nicht zu Check, denn r ∈ Y und Y wurde aus Check entfernt. Minimierung Hopcrofts Algorithmus 48 / 151 Hopcrofts Algorithmus: Die Laufzeit (2/2) (4) Sei C die Menge aller Klassen Y , die irgendwann zur Menge Check gehört haben. Dann gehört jeder Zustandsübergang zu höchstens log2 n verschiedenen Mengen Y in Check, und wir erhalten für die Gesamtlaufzeit X X X X X 1 tc (Y ) = c∈Σ Y ∈C c∈Σ Y ∈C = c∈Σ q∈Q = q∈Q : δ(q,c)∈Y X X X Y ∈C : δ(q,c)∈Y 1 = X log2 n (c,q)∈Σ×Q |Σ| · n · log2 n. Warum ist Hopcrofts Algorithmus schneller als Moores Algorithmus? Moore bestimmt nacheinander die vollständigen Zerlegungen ≡iA . Hopcrofts Algorithmus wird von den einzelnen Klassen Y ∈ Check getrieben und alle von Y zerlegten Klassen X werden in ihre Kinderklassen aufgeteilt. Wesentlich: Ein Zustandsübergang gehört zu logarithmisch vielen Klassen. I Diese Eigenschaft wird erreicht, weil eine zerlegte Mutterklasse, die nicht zu Check gehört, nur durch die kleinere Kinderklasse ersetzt werden muss! Minimierung Hopcrofts Algorithmus 49 / 151 Die Myhill-Nerode Relation Minimierung Die Myhill-Nerode Relation 50 / 151 Was ist Sache? 1. Der ursprüngliche Automat A = (Q, Σ, δ, q0 , F ) und sein Äquivalenzklassenautomat A0 sind äquivalent. 2. Wir können A0 effizient berechnen. ? Aber hat A0 unter allen mit A äquivalenten DFAs die kleinste Zustandszahl? Die Myhill-Nerode Relation für die Sprache L = L(A) hat die Antwort. Minimierung Die Myhill-Nerode Relation 51 / 151 Die Myhill-Nerode Relation Sei A = (Σ, Q, δ, q0 , F ) ein DFA. Wenn δ(q0 , u) = δ(q0 , v ), dann gilt für alle w ∈ Σ∗ : uw ∈ L(A) ⇔ vw ∈ L(A). L sei eine Sprache über der endlichen Menge Σ, d.h. es gilt L ⊆ Σ∗ . (a) Die Myhill-Nerode Relation ≡L für L ist eine 2-stellige Relation über Σ∗ . Für alle Worte u, v ∈ Σ∗ definiere u ≡L v :⇔ für alle w ∈ Σ∗ gilt: uw ∈ L ⇔ vw ∈ L . (b) Wir sagen, dass das Wort w ∈ Σ∗ die Worte u, v ∈ Σ∗ trennt, bzw. dass w ein Zeuge für die Inäquivalenz von u und v ist, wenn uw ∈ L ∧ vw 6∈ L ∨ uw 6∈ L ∧ vw ∈ L . (c) Index(L) ist die Anzahl der Äquivalenzklassen von ≡L . (Entsprechen Äquivalenzklassen von ≡L mgl. Zuständen eines minimalen DFA?) Minimierung Die Myhill-Nerode Relation 52 / 151 Die Myhill-Nerode Relation ist eine Äquivalenzrelation Warum? Die Myhill-Nerode Relation ≡L ist 1. reflexiv, denn u ≡L u gilt f.a. u ∈ Σ∗ , 2. symmetrisch, denn aus u ≡L v folgt v ≡L u f.a. u, v ∈ Σ∗ , 3. transitiv, denn aus u ≡L v , v ≡L w folgt u ≡L w f.a. u, v , w ∈ Σ∗ . Der absolute Hammer: Für eine reguläre Sprache L stimmt Index(L), die Anzahl der Äquivalenzklassen von ≡L , mit der minimalen Zustandszahl für DFAs A mit L(A) = L überein! Minimierung Die Myhill-Nerode Relation 53 / 151 Die minimale Zustandszahl > Index(L) Der DFA A = (Q, Σ, δ, q0 , F ) akzeptiere die Sprache L, es gelte also L(A) = L. Angenommen, es ist δ(q0 , u) = δ(q0 , v ). 1. Dann ist δ(q0 , uw ) = δ(q0 , vw ) für alle Worte w ∈ Σ∗ und A akzeptiert das Wort uw genau dann, wenn A das Wort vw akzeptiert. 2. Aber L(A) = L und uw ∈ L ⇐⇒ vw ∈ L folgt für alle Worte w ∈ Σ∗ . Also u ≡L v . (a) Alle Worte, die auf denselben Zustand von A führen, sind äquivalent bzgl. ≡L . (b) Jeder DFA A mit L = L(A) hat mindestens Index(L) Zustände. Minimierung Die Myhill-Nerode Relation 54 / 151 Ist der Äquivalenzklassenautomat minimal? Minimierung Die Myhill-Nerode Relation 55 / 151 Ja, weil: Der DFA A = (Q, Σ, δ, q0 , F ) akzeptiere die Sprache L, es gelte also L(A) = L. A0 = (Q 0 , Σ, δ 0 , q00 , F 0 ) sei sein Äquivalenzklassenautomat. Angenommen, Worte u, v ∈ Σ∗ führen in A0 zu verschiedenen Zuständen. 1. Für A sei p = δ(q0 , u) und q = δ(q0 , v ). 2. Es folgt p 6≡A q und es gibt einen Zeugen w ∈ Σ∗ für die Nicht-Äquivalenz. I Also: δ(p, w ) ∈ F ∧ δ(q, w ) 6∈ F ∨ δ(p, w ) 6∈ F ∧ δ(q, w ) ∈ F , bzw. I δ(q , uw ) ∈ F ∧ δ(q0 , vw ) 6∈ F ∨ δ(q0 , uw ) 6∈ F ∧ δ(q0 , vw ) ∈ F , bzw. 0 I uw ∈ L ∧ vw 6∈ L ∨ uw 6∈ L ∧ vw ∈ L . 3. Wenn u und v in A0 zu verschiedenen Zuständen führen, dann folgt u 6≡L v . Die Zustandszahl von A0 stimmt überein mit Index(L(A)): Der Äquivalenzklassenautomat A0 ist ein minimaler DFA für L(A). Minimierung Die Myhill-Nerode Relation 56 / 151 Einschub: Der Myhill-Nerode Automat Minimierung Der Myhill-Nerode Automat 57 / 151 Der Myhill-Nerode Automat NL für L Können wir einen (sogar minimalen) DFA direkt aus der Myhill-Nerode Relation bauen? Der Myhill-Nerode Automat NL = (QL , Σ, δL , q0 , FL ) hat die folgenden Komponenten: die Zustandsmenge QL := [u]L : u ∈ Σ∗ , besteht aus den Äquivalenzklassen der Myhill-Nerode Relation ≡L . Idee: Definiere den Automaten so, dass für alle u ∈ Σ∗ gilt: Der Zustand, in dem der Automat nach dem Lesen des Worts u ist, gibt die Äquivalenzklasse von u bzgl. der Myhill-Nerode Relation ≡L an. D.h.: δL (q0 , u) = [u]L Startzustand q0 := [ε]L akzeptierende Zustände FL := Programm δL mit Minimierung [u]L : u ∈ L δL [u]L , a := [ua]L für alle u ∈ Σ∗ und a ∈ Σ. Der Myhill-Nerode Automat 58 / 151 Der Myhill-Nerode Automat ist minimal (a) Für alle Worte u ∈ Σ∗ gilt δL ([], u) = [u]L und deshalb ist u ∈ L(NL ) ⇐⇒ [u] ∈ FL ⇐⇒ u ∈ L. (b) NL besitzt genau Index(L) viele Zustände. NL ist ein minimaler DFA für L. Minimierung Der Myhill-Nerode Automat 59 / 151 Der Myhill-Nerode Automat: Beispiele Bestimme jeweils Index(L) und den Myhill-Nerode Automaten für L. 1. L = {w ∈ {0, 1}∗ : w hat gerade viele Einsen}, 2. L die Menge aller Binärdarstellungen für durch 6 teilbare Zahlen, 3. L = {a, b}∗ {ab}{a, b}∗ , 4. Lu = {w ∈ Σ∗ : u ist ein Teilwort von w } für ein Wort u ∈ Σ∗ . Minimierung Der Myhill-Nerode Automat 60 / 151 Welche Sprachen sind nicht regulär? Der Satz von Myhill-Nerode Minimierung Der Myhill-Nerode Automat 61 / 151 Satz von Myhill-Nerode: Wann ist eine Sprache regulär? Sei Σ ein Alphabet und L ⊆ Σ∗ eine Sprache über Σ. (a) L ist regulär ⇐⇒ Index(L) ist endlich. (b) Der minimale DFA für L hat Index(L) Zustände. Wir haben Teil (b) schon gezeigt. Der Beweis von Teil (a): =⇒ L ⊆ Σ∗ sei regulär. Dann gibt es einen DFA A mit L = L(A). I I A hat mindestens Index(L) Zustände. Also ist Index(L) endlich. ⇐= Index(L) sei endlich. I I Der Myhill-Nerode Automat NL ist ein DFA für L, d.h.: L = L(NL ). L ist regulär. Minimierung Der Myhill-Nerode Automat 62 / 151 L = {an b n : n ∈ N} ist nicht regulär Bestimme unendlich viele Worte uk ∈ {a, b}∗ , so dass uk 6≡L u` für alle k 6= ` gilt. Setze ui := ai . Für k 6= ` gilt uk 6≡L u` , denn uk b k ∈ L, aber u` b k 6∈ L. Index(L) = ∞ und L ist nicht regulär. DFAs können nicht (unbeschränkt) zählen. Minimierung Der Myhill-Nerode Automat 63 / 151 L = {ww : w ∈ {a, b}∗ } ist nicht regulär Wir bestimmen unendlich viele Worte uk ∈ {a, b}∗ , so dass uk 6≡L u` für alle k 6= ` gilt. Setze ui := ai b. Für k 6= ` gilt uk 6≡L u` , denn uk ak b ∈ L, aber u` ak b 6∈ L. Index(L) = ∞ und L ist nicht regulär. DFAs können sich nur beschränkt viele Dinge merken. Minimierung Der Myhill-Nerode Automat 64 / 151 Weitere nicht-reguläre Sprachen Keine der folgenden Sprachen ist regulär. L1 = { an b m : n, m ∈ N, n 6 m }: I DFAs können nicht vergleichen, L2 = { an b m c n+m : n, m ∈ N }: I DFAs können nicht addieren, wenn man sich dazu an die Summanden erinnern muss, 2 L3 = { an : n ∈ N }: I DFAs können nicht quadrieren, L4 = { w ∈ {a, b}∗ : w ist ein Palindrom }: I Endliche Automaten haben ein nur beschränkt großes Gedächtnis. Minimierung Der Myhill-Nerode Automat 65 / 151 Das Pumping-Lemma Das Pumping-Lemma 66 / 151 Vorarbeiten zum Pumping Lemma (1/2) Wann ist eine Sprache nicht regulär? Angenommen, A ist ein Automat mit |Q| Zuständen. I Die Zustandsübergänge von A auf einer Eingabe x = x1 · · · xn : x x xn−1 x x 1 2 3 n q0 → q1 → q2 → · · · → qn−1 → qn . I I Wenn n > |Q|, dann werden dabei n+1 > |Q| Zustände durchlaufen. Es gibt (mind.) einen Zustand q, der (mind.) zweimal durchlaufen wird. Es gibt Zahlen 0 6 j < k 6 |Q|, so dass x1 ···xj q0 → q Das Pumping-Lemma xj+1 ···xk → q xk+1 ···xn → qn . 67 / 151 Vorarbeiten zum Pumping Lemma (2/2) Verarbeitung eines Worts z = z1 · · · zN durch DFA A: x1 ···xj Wenn N > |Q|, dann q0 → q xj+1 ···xk → q xk+1 ···xN → qN . Und wenn qN ∈ F , dann x ∈ L(A) und (x1 · · · xj ) · (xk+1 · · · xN ) ∈ L(A) und (x1 · · · xj ) · (xj+1 · · · xk ) · (xk+1 · · · xN ) ∈ L(A) und (x1 · · · xj ) · (xj+1 · · · xk )2 · (xk+1 · · · xN ) ∈ L(A) und 3 ... (x1 · · · xj ) · (xj+1 · · · xk ) · (xk+1 · · · xN ) ∈ L(A) Damit haben wir Folgendes bewiesen: Das Pumping-Lemma 68 / 151 Das Pumping Lemma Sei L eine reguläre Sprache. Dann gibt es eine Pumpingkonstante N > 1, so dass jedes Wort x ∈ L mit |x | > N eine Zerlegung mit den folgenden Eigenschaften besitzt: I I x = uvw , |uv | 6 N, |v | > 1, uv i w ∈ L für jedes i > 0. und Fazit: Wenn Worte der Sprache lang genug sind (also |x | > N), dann gibt es ein nicht-leeres Teilwort v , (also v = xj+1 · · · xk ) das - „aufgepumpt“ (i > 1) - und „abgepumpt“ (i = 0) werden kann. Kennen wir die Pumpingkonstante N? —NEIN! Kennen wir die Zerlegung von x in uvw ? —NEIN! Wir wissen nur, dass |uv | 6 N und |v | > 1 ist. Das Pumping-Lemma 69 / 151 Anwendung des Pumping Lemmas: Die Spielregeln Wie kann man das Pumping Lemma nutzen, um zu zeigen, dass eine Sprache L nicht regulär ist? (1) Für jede mögliche Pumpingkonstante N > 1 (2) müssen wir ein Wort x ∈ L mit |x | > N konstruieren, (3) so dass für jede mögliche Zerlegung x = uvw mit |uv | 6 N und |v | > 1 uv i w 6∈ L für mindestens ein i > 0 gilt. Der “Gegner” kontrolliert die Pumpingkonstante N vollständig und die Zerlegung x = uvw teilweise, denn er muss |uv | 6 N und |v | > 1 garantieren. Das Pumping-Lemma 70 / 151 Das Pumping Lemma: Ein Anwendungsbeispiel Die Sprache L= n w ∈ {0, 1}∗ | w = 0n 1m für n 6 m o ist nicht regulär. Beweis: Angenommen, L ist doch regulär. 1 Pumping Lemma: Es gibt eine Pumpingkonstante N > 1, so dass jedes Wort x ∈ L mit |x | > N eine Zerlegung in x = uvw besitzt, so dass gilt: (∗) : |uv | 6 N und |v | > 1 und uv i w ∈ L für alle i > 0. 2 Betrachte insbesondere das Wort x := 0N 1N mit der Zerlegung x = uvw . 3 Es gilt: x ∈ L und |x | > N. 4 Wegen uvw = x = 0N 1N und |uv | 6 N sowie |v | > 1 gibt es eine Zahl k > 1, so dass v = 0k . Aber dann ist uv 2 w = 0z+k 1z kein Wort in L, obwohl gemäß Pumping Lemma dieses Wort in L liegen müsste. Das Pumping-Lemma 71 / 151 Grenzen des Pumping Lemmas Es gibt Sprachen, die nicht regulär sind, deren Nicht-Regularität mit dem Pumping Lemma aber nicht nachgewiesen werden kann. Die Sprache L = {a, b}∗ ∪ {c k am b m : k, m > 0} ist nicht regulär, erfüllt aber die Aussage des Pumping Lemmas. D.h: Es gibt eine Pumpingkonstante N > 1 (nämlich N = 1), so dass jedes Wort x ∈ L mit |x | > N eine Zerlegung mit den folgenden Eigenschaften besitzt: I I x = uvw , |uv | 6 N, |v | > 1, uv i w ∈ L für jedes i > 0. und Beweis: Siehe Tafel! Das Pumping-Lemma 72 / 151 NFAs Nichtdeterministische endliche Automaten 73 / 151 NFAs: DFAs, die raten dürfen Ein „NFA“ akzeptiert ein Eingabewort w ∈ {a, b}∗ genau dann, wenn es im Automatengraphen mindestens einen Weg gibt, - der im Startzustand beginnt, - dessen Kanten mit w beschriftet sind, - und der in einem akzeptierenden Zustand endet. a a a b b Der „NFA“ akzeptiert L = {w ∈ {a, b}∗ : der vorletzte Buchstabe von w ist ein a }. Nichtdeterministische endliche Automaten 74 / 151 NFAs: Die formale Definition Ein nichtdeterministischer endlicher Automat (kurz: NFA) A = (Σ, Q, δ, q0 , F ) besteht aus: einer endlichen Menge Σ, dem Eingabealphabet, einer endlichen Menge Q, der Zustandsmenge, einer Funktion δ : Q × Σ → P(Q), der Übergangsfunktion, - die jedem Zustand q ∈ Q und jedem Symbol a ∈ Σ eine Menge δ(q, a) von möglichen Nachfolgezuständen zuordnet. - Möglicherweise ist δ(q, a) = ∅: Dann „stürzt“ der Automat ab, wenn er im Zustand q ist und das Symbol a liest. dem Startzustand q0 ∈ Q und einer Menge F ⊆ Q von Endzuständen bzw. akzeptierenden Zuständen. Nichtdeterministische endliche Automaten NFAs: Die formale Definition 75 / 151 Der Automatengraph von NFAs Es sei - q ∈ Q ein Zustand, - a ∈ Σ ein Eingabesymbol und - q 0 ∈ δ(q, a) ein „möglicher Nachfolgezustand“. Dann gibt es im Automatengraphen einen mit dem Symbol a beschrifteten Pfeil von Knoten q zu Knoten q 0 , d.h. q Nichtdeterministische endliche Automaten a q0 . NFAs: Die formale Definition 76 / 151 Die von einem NFA akzeptierte Sprache und die erweiterte Übergangsfunktion Nichtdeterministische endliche Automaten Die von einem NFA akzeptierte Sprache 77 / 151 Wann akzeptiert ein NFA? Sei A = (Σ, Q, δ, q0 , F ) ein NFA. (a) Sei n ∈ N und sei w = a1 · · · an ein Eingabewort der Länge n. Das Wort w wird ganau dann vom NFA A akzeptiert, wenn es im Automatengraphen von A einen im Startzustand q0 beginnenden Weg der Länge n gibt, dessen Kanten mit den Symbolen a1 . . . an beschriftet sind und der in einem akzeptierenden Zustand endet. (b) Die von A akzeptierte Sprache L(A) ist L(A) := {w ∈ Σ∗ : A akzeptiert w }. Das ist keine „wirklich“ präzise Definition, denn der Automatengraph soll doch nur unsere Intuition unterstützen. Nichtdeterministische endliche Automaten Die von einem NFA akzeptierte Sprache 78 / 151 δ(q, w ) := die MENGE aller möglichen Zustände nach Lesen von w im „Startzustand“ q Sei A := (Σ, Q, δ, q0 , F ) ein NFA. Die Funktion δ : Q × Σ∗ → P(Q) ist rekursiv wie folgt definiert: Rekursionsanfang: F.a. q ∈ Q ist δ(q, ε) := {q}. Rekursionsschritt: F.a. q ∈ Q, w ∈ Σ∗ und a ∈ Σ ist [ δ(q 0 , a). δ(q, wa) := q 0 ∈δ(q,w ) Ein möglicher Zustand q 00 wird nach Lesen von wa genau dann erreicht, wenn nach Lesen von w (im Zustand q) ein Zustand q 0 erreicht wird und q 00 ∈ δ(q 0 , a) gilt: w a q → q 0 → q 00 . Nichtdeterministische endliche Automaten Die von einem NFA akzeptierte Sprache 79 / 151 Wann genau akzeptiert denn nun ein NFA? Der NFA A = (Σ, Q, δ, q0 , F ) akzeptiert ein Wort w genau dann, wenn δ(q0 , w ) ∩ F 6= ∅. Somit ist L(A) = { w ∈ Σ∗ : δ(q0 , w ) ∩ F 6= ∅ }. Nichtdeterministische endliche Automaten Die von einem NFA akzeptierte Sprache 80 / 151 Äquivalenz von NFAs und DFAs Äquivalenz von NFAs und DFAs 81 / 151 Akzeptieren NFAs nicht-reguläre Sprachen? NEIN! Für jeden NFA A = (Σ, Q, δ, q0 , F ) gibt es einen DFA A0 = (Σ, Q 0 , δ 0 , q00 , F 0 ) mit L(A0 ) = L(A). D.h.: NFAs und DFAs akzeptieren genau dieselben Sprachen. Aber im Allgemeinen sind die DFAs doch bestimmt sehr viel größer?!? Äquivalenz von NFAs und DFAs 82 / 151 Die Potenzmengenkonstruktion (1/2) Sei A = (Σ, Q, δ, q0 , F ) der gegebene NFA. Idee: Wir konstruieren einen DFA A0 = (Σ, Q 0 , δ 0 , q00 , F 0 ), der in seinem aktuellen Zustand q 0 ∈ Q 0 die Menge aller Zustände abspeichert, in denen der Automat A in der aktuellen Situation sein könnte. Wir definieren die Komponenten von A0 daher wie folgt: Eingabealphabet Σ, Zustandsmenge Q 0 := P(Q), Startzustand q00 := {q0 }, Endzustandsmenge F 0 := {X ∈ Q 0 : X ∩ F 6= ∅ }, Übergangsfunktion δ 0 : Q 0 × Σ → Q 0 , wobei für alle X ∈ Q 0 = P(Q) und alle a ∈ Σ gilt: [ δ(q, a). δ 0 (X , a) := q∈X Äquivalenz von NFAs und DFAs 83 / 151 Die Potenzmengenkonstruktion (2/2) Und wie zeigt man, dass A und A0 dieselbe Sprache akzeptieren? Zeige, dass δ 0 ({q0 }, w ) = δ(q0 , w ) für jedes Wort w ∈ Σ∗ gilt. Und wie, bitte schön, sollen wir das zeigen? Wir haben die erweiterten Übergangsfunktionen δ und δ 0 rekursiv definiert. Dann sollten wir wohl eine vollständige Induktion nach n = |w | ausführen! Äquivalenz von NFAs und DFAs 84 / 151 Die Potenzmengenkonstruktion: Ein Beispiel (1/2) Wie führt man die Potenzmengenkonstruktion für den NFA a a a b b aus? Bezeichne die Zustände, von links nach rechts gelesen, mit q0 , q1 und q2 . Wichtig: 1. Beginne mit allen möglichen Nachfolgezuständen des Startzustands q00 := {q0 }. 2. Definiere die Übergangsfunktion von A0 nur für solche Zustände aus P({q0 , q1 , q2 }), die vom Startzustand q00 aus erreicht werden können. Äquivalenz von NFAs und DFAs 85 / 151 Die Potenzmengenkonstruktion: Ein Beispiel {q0 , q1 , q2 } (2/2) a b a {q0 } a {q0 , q1 } b b b a {q0 , q2 } Äquivalenz von NFAs und DFAs 86 / 151 NFAs vs. DFAs: Die Zustandszahl Äquivalenz von NFAs und DFAs Die Größe von NFAs 87 / 151 Nichtdeterminismus kann Zustände einsparen Für k ∈ N sei (1/2) Lk := {0, 1}∗ · {1} · {0, 1}k−1 Ein NFA, der Lk akzeptiert, kann die Position des k-letzten Buchstabens raten und dann verifizieren, dass er richtig geraten hat: 0, 1 q0 1 q1 0, 1 q2 0, 1 0, 1 qk Somit gilt: Es gibt einen NFA mit k+1 Zuständen, der die Sprache Lk akzeptiert. Frage: Wie viele Zustände benötigt ein DFA, der Lk akzeptiert? Antwort: Index(Lk ) — Wie groß ist Index(Lk )? Äquivalenz von NFAs und DFAs Die Größe von NFAs 88 / 151 Nichtdeterminismus kann Zustände einsparen (2/2) Berechnung von Index(Lk ) für Lk = {0, 1}∗ · {1} · {0, 1}k : u, v ∈ {0, 1}k seien beliebige, verschiedene Worte der Länge k. Dann gibt es eine Position i mit ui 6= vi . Ohne Beschränkung der Allgemeinheit gelte ui = 0 und vi = 1. Es ist v 0i−1 = v1 · · · vi−1 1 vi+1 · · · vk 0i−1 ∈ Lk , aber u 0i−1 = / Lk . u1 · · · ui−1 0 ui+1 · · · uk 0i−1 ∈ Die Worte u und v sind also nicht Myhill-Nerode äquivalent. Somit gibt es mindestens 2k paarweise nicht Myhill-Nerode äquivalente Worte und Index(Lk ) > 2k folgt. Folgerung: Jeder DFA für Lk hat mindestens 2k Zustände, aber es gibt NFAs für Lk mit nur k+1 Zuständen. Äquivalenz von NFAs und DFAs Die Größe von NFAs 89 / 151 Können auch NFAs effizient minimiert werden? Wir werden später sehen, dass die Frage ? L(N) = Σ∗ extrem schwer zu beantworten ist. Die Frage wäre einfach zu beantworten, wenn wir NFAs effizient minimieren könnten. Die Minimierung von NFAs ist knüppelhart. Äquivalenz von NFAs und DFAs Die Größe von NFAs 90 / 151 Untere Schranken für die Größe von NFAs Untere Schranken für NFAs 91 / 151 Vom Index auf untere Schranken für NFAs Frage: Wie kann man für eine gegebene Sprache L zeigen, dass jeder NFA, der L erkennt, mindestens k Zustände hat? Antwort: Wenn man Glück hat, gilt Index(L) > 2k , denn dann hat jeder DFA für L mind. 2k Zustände: Aus einem NFA für L mit k 0 < k Zuständen könnte man mit der 0 Potenzmengenkonstruktion einen DFA mit 2k < 2k Zuständen bauen. Wir brauchen bessere Methoden! Untere Schranken für NFAs 92 / 151 Die Fooling Set Methode Sei Σ ein endliches Alphabet und L ⊆ Σ∗ eine Sprache über Σ. Für Worte u1 , . . . , uk , v1 , . . . , vk ∈ Σ∗ heißt die Menge { (ui , vi ) : 1 6 i 6 k} ein Fooling Set für L, falls (1) für alle i ∈ {1, . . . , k} gilt: ui vi ∈ L, (2) für alle i, j ∈ {1, . . . , k} mit i 6= j gilt: und ui vj 6∈ L oder uj vi 6∈ L. Fooling(L) ist die maximale Größe eines Fooling-Sets für L. Übungsaufgabe: Jeder NFA für L muss mindestens Fooling(L) Zustände besitzen. Was ist der Zusammenhang zwischen Index(L) und Fooling(L)? Wie groß sind NFAs für L = { uv : u, v ∈ {0, 1}k , u 6= v }? Und für L = { uv : u, v ∈ {0, 1}k , u = v }? Untere Schranken für NFAs 93 / 151 NFAs mit Epsilon-Übergängen NFAs mit Epsilon-Übergängen 94 / 151 NFAs mit -Übergängen Ein NFA mit -Übergängen (kurz: -NFA) ist ein “verallgemeinerter NFA” (Q, Σ, δ, q0 , F ), dessen Programm eine Funktion der folgenden Form ist: δ : Q × Σ ∪ {} → P(Q) Der Automat darf also Zustandsübergänge ausführen, ohne Buchstaben zu lesen. Frage: Können -NFAs mehr Sprachen akzeptieren als NFAs und DFAs? Antwort: Nein! NFAs mit Epsilon-Übergängen 95 / 151 Das Entfernen von -Übergängen: Idee Entferne -Übergänge nach dem folgenden Schema 5 3 a a a 3 1 5 2 a 3 1 b b b 6 b 4 4 6 Die Zustandsmenge ist unverändert. Aber die Anzahl der neuen Übergänge kann quadratisch anwachsen. NFAs mit Epsilon-Übergängen 96 / 151 Abschlusseigenschaften regulärer Sprachen Abschlusseigenschaften 97 / 151 Abschlusseigenschaften regulärer Sprachen (1/6) L, L1 , L2 ⊆ Σ∗ seien reguläre Sprachen. Dann sind auch die folgenden Sprachen regulär: (a) L := Σ∗ \ L. (b) L1 ∪ L2 und L1 ∩ L2 . (c) L1 · L2 . (d) L∗ . Die Klasse aller regulären Sprachen ist also abgeschlossen unter Booleschen Operationen sowie unter Konkatenation und Stern-Bildung. Beweis: (a) Abschluss unter Komplementbildung: Vertausche akzeptierende und verwerfende Zustände. Wenn der DFA A = (Q, Σ, δ, q0 , F ) die Sprache L akzeptiert, dann akzeptiert der Automat B = (Q, Σ, δ, q0 , Q \ F ) die Komplementsprache L. Abschlusseigenschaften 98 / 151 Abschlusseigenschaften regulärer Sprachen (2/6) (b) Abschluss unter Vereinigung: Verwende -Übergänge. Wenn die DFAs A1 = (Q1 , Σ, δ1 , q1 , F1 ) und A2 = (Q2 , Σ, δ2 , q2 , F2 ) die Sprachen L1 und L2 akzeptieren, dann akzeptiert der -NFA A1 3 q0 A2 3 0 A = ({q0 } ∪˙ Q1 ∪˙ Q2 , Σ, δ, q0 , F ∪ F ) die Sprache L1 ∪ L2 . Abschluss unter Durchschnitt: folgt, da L1 ∩ L2 = L1 ∪ L2 . Alternative: Verwende den Produktautomaten A = (Q, Σ, δ, q0 , F ) mit I Q := Q × Q 1 2 I q := (q , q ) 0 1 2 I δ (p , p ), a := δ (p , a), δ (p , a) , für alle (p , p ) ∈ Q, a ∈ Σ 1 2 1 1 2 2 1 2 I für Durchschnitt: F := F1 × F2 für Vereinigung: F := (F1 × Q2 ) ∪ (Q1 × F2 ) Abschlusseigenschaften 99 / 151 Abschlusseigenschaften regulärer Sprachen (3/6) Beachte: Reguläre Sprachen sind natürlich nur unter endlicher Vereinigung und endlicher Durchschnittsbildung abgeschlossen. Beispiel: Für jedes n ∈ N besteht die Sprache Ln := {an b n } aus nur einem Wort und ist damit regulär. Aber [ Ln n∈N ist die Sprache {an b n : n ∈ N}, von der wir wissen, dass sie nicht regulär ist. Für jedes n ∈ N ist die Sprache L0n := {a, b}∗ \ Ln regulär (da Ln regulär ist und da die regulären Sprachen unter Komplementbildung abgeschlossen sind). Aber \ 0 Ln n∈N ist gerade die Sprache {a, b}∗ \ {an b n : n ∈ N}, also das Komplement der Sprache {an b n : n ∈ N} und daher nicht regulär. Abschlusseigenschaften 100 / 151 Abschlusseigenschaften regulärer Sprachen (4/6) (c) Abschluss unter Konkatenation: I I Verbinde jeden akzeptierenden Zustand von A1 durch einen -Übergang mit dem Startzustand von A2 . Die akzeptierenden Zustände von A2 sind die akzeptierenden Zustände des neuen Automaten. (d) Abschluss unter Stern-Bildung: I I I I Führe einen neuen, akzeptierenden Startzustand q00 ein. Verbinde alle akzeptierenden Zustände von A durch -Übergänge mit q00 und verbinde q00 durch einem -Übergang mit dem alten Startzustand q0 . q00 ist der einzige akzeptierende Zustand des neuen Automaten. Abschlusseigenschaften 101 / 151 Abschlusseigenschaften regulärer Sprachen (5/6) Der Quotient: Seien R, S ⊆ Σ∗ Sprachen. Wenn R regulär ist, dann auch R/S := { u ∈ Σ∗ : es gibt v ∈ S, so dass uv ∈ R }. Achtung: Es wird nicht gefordert, dass die Sprache S regulär ist! Ein Homomorphismus h : Σ∗ → ∆∗ weist jedem Buchstaben a ∈ Σ ein Wort h(a) ∈ ∆∗ zu. Für ein Wort x = a1 · · · an ∈ Σn ist h(x ) := h(a1 ) · · · h(an ). Wenn L eine reguläre Sprache ist, dann sind auch h(L) := { h(x ) : x ∈ L } und h−1 (L) := { x ∈ Σ∗ : h(x ) ∈ L } regulär. Eine Substitution ist eine Funktion s : Σ∗ → P(∆∗ ), die jedem Buchstaben a ∈ Σ eine Sprache s(a) ⊆ ∆∗ zuordnet. Es muss gelten s() = {} und s(x · y ) = s(x ) · s(y ) für alle x , y ∈ Σ∗ . Wenn L regulär ist, dann ist auch s(L) regulär. Abschlusseigenschaften 102 / 151 Abschlusseigenschaften regulärer Sprachen (6/6) Wenn L regulär ist, dann auch Präfix(L) = { u : es gibt v mit uv ∈ L }, 1 2L = { u : es gibt v mit uv ∈ L und |u| = |v |}, Suffix(L)= { v : es gibt u mit uv ∈ L }, Teilwort(L) = { w : es gibt u, v mit uwv ∈ L }, Reverse(L) = { an · · · a2 · a1 : a1 , . . . , an ∈ Σ, a1 · a2 · · · an ∈ L}. Frage: Und wie zeigt man das? Antwort: Arbeite mit NFAs. Abschlusseigenschaften 103 / 151 Entscheidungsprobleme Entscheidungsprobleme 104 / 151 Welche Fragen sind effizient beantwortbar? (1/2) A sei ein DFA oder NFA. Ist L(A) 6= ∅? Sei q0 der Anfangszustand von A und sei F die Menge der akzeptierenden Zustände. L(A) ist genau dann nicht-leer, wenn es einen Weg von q0 zu einem Zustand in F gibt. I I Wende Tiefensuche auf q0 an. L(A) ist nicht-leer, wenn Tiefensuche einen akzeptierenden Zustand findet. Die Laufzeit ist proportional zur Anzahl der Kanten im Zustandsdiagramm, also proportional zu O(|Σ| · |Q|) für DFAs, bzw. zu O(|Σ| · |Q|2 ) für NFAs. Entscheidungsprobleme 105 / 151 Welche Fragen sind effizient beantwortbar? (2/2) D, D1 , D2 seien deterministische Automaten Die folgenden Fragen lassen sich effizient beantworten (in Zeit O(|Σ| · |Q|) bzw. O(|Σ| · |Q1 | · |Q2 |)): (a) Ist L(D) = Σ∗ ? (Universalität) (b) Ist L(D1 ) = L(D2 )? (Äquivalenz) (c) Ist L(D1 ) ⊆ L(D2 )? (“Containment”) (d) Ist L(D) endlich? (Endlichkeit) Beweis: Übungsaufgabe! Idee: Nutze jeweils aus, dass die Frage Ist L(D) 6= ∅? effizient beantwortet werden kann. Die Fragen (a)–(c) sind für NFAs extrem schwierig: Später weisen wir PSPACE-Vollständigkeit nach: Diese Fragen sind also mindestens so schwierig wie NP-vollständige Probleme. Entscheidungsprobleme 106 / 151 Das Wortproblem für NFAs Für einen NFA A und ein Wort w entscheide, ob A die Eingabe w akzeptiert. Wie schwierig ist das Wortproblem? Nicht ganz so einfach wie für DFAs, aber die Menge δ(q0 , w ) der von q0 aus erreichbaren Zustände lässt sich effizient berechnen: Zeit O(|w | · |Q|2 ) reicht aus! Algorithmus: Übungsaufgabe! Akzeptiere genau dann, wenn δ(q0 , w ) ∩ F 6= ∅. Entscheidungsprobleme 107 / 151 Sehr schwierige Entscheidungsfragen für DFAs und NFAs (1) Das Interpolationsproblem für DFAs: Für Teilmengen P, N ⊆ Σ∗ und einen Schwellenwert k > 1, gibt es einen DFA mit höchstens k Zuständen, der alle Worte in P akzeptiert und alle Worte in N verwirft? Dieses Problem ist NP-vollständig. (Hier ohne Beweis) (2) Das Minimierungsproblem für NFAs: I Gegeben zwei NFAs A und B, entscheide, ob B ein zu A äquivalenter NFA mit minimaler Zustandszahl ist. Dieses Problem ist PSPACE-vollständig. (Beweis später) I Es ist sogar schwierig, die minimale Zustandszahl approximativ zu bestimmen. I Was ist da los? Bereits die Frage „L(N) 6= Σ∗ ?“ ist extrem schwer (nämlich PSPACE-vollständig) und gehört wahrscheinlich nicht einmal zur Klasse NP. Worte in Σ∗ \ L(N) sind unter Umständen sehr lang. Entscheidungsprobleme 108 / 151 Reguläre Ausdrücke Reguläre Ausdrücke 109 / 151 Reguläre „Muster“ Sei Σ ein Alphabet. 1 Die Menge aller Worte über Σ haben wir mit Σ∗ beschrieben. 2 Sei u ein Wort über Σ. Dann wird die Menge aller Worte über Σ, die u als Teilwort besitzen, beschrieben durch Σ∗ · u · Σ∗ . 3 Die Menge aller Worte über Σ, deren vorletzter Buchstabe ein a ist, wird beschrieben durch: Σ∗ · a · Σ Reguläre Ausdrücke 110 / 151 Reguläre Ausdrücke Die Menge der regulären Ausdrücke über einem endlichen Alphabet Σ wird rekursiv wie folgt definiert: Basisregel: Die Ausdrücke ∅, und a für a ∈ Σ sind regulär. Die Ausdrücke beschreiben die leere Sprache (L(∅) = ∅), die Sprache des leeren Wortes (L(ε) = {ε}) und die Sprache des einbuchstabigen Wortes a (L(a) = {a}). Rekursive Regeln: Sind R und S reguläre Ausdrücke, dann auch (R | S), (R · S) und R ∗ . | beschreibt die Vereinigung und wird manchmal auch mit + bezeichnet (L((R | S)) = L(R) ∪ L(S)), · die Konkatenation und wird manchmal auch mit ◦ bezeichnet (L((R · S)) = L(R) · L(S)), und ∗ beschreibt die Kleene-Hülle (L(R ∗ ) = L(R)∗ ). Reguläre Ausdrücke 111 / 151 Abkürzende Schreibweise Zur vereinfachten Schreibweise und besseren Lesbarkeit vereinbaren wir folgende Konventionen: Den Punkt bei der Konkatenation darf man weglassen. (Schreibe (RS) statt (R · S)) Bei Ketten gleichartiger Operationen darf man die Klammern weglassen. (Schreibe (R1 |R2 |R3 ) statt ((R1 |R2 )|R3 ), und (R1 R2 R3 ) statt ((R1 R2 )R3 )) Äußere Klammern, die einen regulären Ausdruck umschließen, dürfen weggelassen werden. Zur besseren Lesbarkeit dürfen zusätzliche Klammern eingefügt werden. Bei fehlenden Klammern gelten folgende “Präzedenzregeln”: “∗” bindet stärker als “·”; “·” bindet stärker als “|”. Beispiel: a | bbc ∗ ist eine verkürzte Schreibweise für den regulären Ausdruck (a | ((b·b)·c ∗ )). Die von ihm beschriebene Sprache ist L(a | bbc ∗ ) = {a} ∪ ({bb} · {c}∗ ). Reguläre Ausdrücke 112 / 151 Reguläre Ausdrücke definieren reguläre Sprachen Sei Σ ein endliches Alphabet und R ein regulärer Ausdruck über Σ. Dann ist die Sprache L(R) regulär. Beweis: Per Induktion über den Aufbau der regulären Ausdrücke. Induktionsanfang: Betrachte die gemäß Basisregeln gebildeten regulären Ausdrücke. ∅, , und a, für a ∈ Σ sind reguläre Ausdrücke, die die regulären Sprachen L(∅) = ∅, L() = {ε} und L(a) = {a} beschreiben. Induktionsschritt: Betrachte die gemäß den rekursiven Regeln gebildeten regulären Ausdrücke. Seien R und S reguläre Ausdrücke, die gemäß Induktionsannahme reguläre Sprachen L(R) und L(S) beschreiben. Wir wissen bereits, dass die Klasse der regulären Sprachen abgeschlossen ist unter Vereinigung, Konkatenation und Kleene-Stern. =⇒ Auch die folgenden Sprachen sind regulär: L(R) ∪ L(S) = L((R | S)), L(R) · L(S) = L((R · S)), L(R)∗ = L(R ∗ ). =⇒ (R | S), (R · S) und R ∗ beschreiben reguläre Sprachen. Reguläre Ausdrücke 113 / 151 Zwischenstand Jeder reguläre Ausdruck definiert also eine reguläre Sprache. Und umgekehrt, gibt es zu jeder regulären Sprache auch einen regulären Ausdruck? Reguläre Ausdrücke 114 / 151 Reguläre Sprachen haben reguläre Ausdrücke (1/3) Sei Σ ein endliches Alphabet. Zu jeder regulären Sprache L ⊆ Σ∗ gibt es einen regulären Ausdruck R über Σ mit L = L(R). Beweis: Sei A = (Q, Σ, δ, q0 , F ) ein DFA, der L akzeptiert. Es gelte Q = {1, . . . , n}. k Idee: Benutze dynamische Programmierung, um reguläre Ausdrücke Rp,q zu k konstruieren, die die Mengen Lp,q beschreiben, wobei Lkp,q := w ∈ Σ∗ : δ(p, w ) = q, und alle Zwischenzustände liegen in der Menge {1, . . . , k} , für alle p, q ∈ Q und alle k ∈ {0, 1, . . . , n} gilt. Es ist: L = [ Lnq0 ,q . Für F = {q1 , . . . , qs } wird L daher durch den regulären q∈F Ausdruck (Rqn0 ,q1 | · · · | Rqn0 ,qs ) beschrieben. Reguläre Ausdrücke 115 / 151 Reguläre Sprachen haben reguläre Ausdrücke (2/3) Rekursiv (für k ∈ {0, 1, 2, . . . , n}) konstruiere reguläre Ausdrücke Lkp,q für alle p, q ∈ Q. Reguläre Ausdrücke für L0p,q , für alle p, q ∈ Q: L0p,q ist die Menge aller Worte, die Zustand q von Zustand p aus ohne Zwischenzustände erreichen. Also: I Falls p 6= q, so ist L0p,q = {a ∈ Σ : δ(p, a) = q} I Falls p = q, so ist L0p,q = {ε} ∪ {a ∈ Σ : δ(p, a) = q} Also ist L0p,q eine endliche Menge von Buchstaben bzw. dem leeren Wort. 0 L0p,q wird von einem regulären Ausdruck Rp,q beschrieben (durch das Symbol ∅ oder durch Verknüpfen der Buchstaben bzw. des leeren Wortes mit dem “|”-Operator). Für alle p, q, r , s ∈ Q und für jedes k > 1 konstruiere reguläre Ausdrücke für die Mengen Lkp,q , wobei wir annehmen, dass reguläre Ausdrücke für Lk−1 r ,s schon bekannt sind. Reguläre Ausdrücke 116 / 151 Reguläre Sprachen haben reguläre Ausdrücke (3/3) Reguläre Ausdrücke für Lkp,q : Lkp,q ist die Menge aller Worte w , die Zustand q von Zustand p aus mit Zwischenzuständen aus der Menge {1, . . . , k} erreichen. I Entweder benötigt ein Wort w nur Zwischenzustände in der Menge {1, . . . , k−1}, d.h. es liegt in Lk−1 p,q , I oder Zustand k ist Zwischenzustand. F F F I Dann führt die Berechnung von p nach k, „pendelt“ zwischen k und k und erreicht dann q von Zustand k aus. Wie oft kann Zustand k angenommen werden? Keine Ahnung! Macht aber nichts, denn Lkp,q = Lk−1 ∪ Lk−1 Lk−1 p,q p,k k,k ∗ Lk−1 k,q . Daher wird Lkp,q durch den folgenden regulären Ausdruck beschrieben: k Rp,q Reguläre Ausdrücke k−1 | := Rp,q ∗ k−1 k−1 k−1 Rp,k · Rk,k · Rk,q . 117 / 151 Der Satz von Kleene Wir haben somit den Satz von Kleene bewiesen: Sei Σ ein endliches Alphabet. Dann gilt Eine Sprache L ⊆ Σ∗ ist regulär ⇐⇒ Es gibt einen regulären Ausdruck R mit L = L(R). Fragen: (a) Wie groß ist der zu einem regulären Ausdruck äquivalente NFA im schlimmsten Fall? Übung! (b) Wie groß ist der zu einem regulären Ausdruck äquivalente DFA im schlimmsten Fall? Übung! (c) Wie groß ist der zu einem DFA A äquivalente reguläre Ausdruck R im schlimmsten Fall, wenn wir das obige Verfahren anwenden? Übung! Reguläre Ausdrücke 118 / 151 Reguläre Ausdrücke für Komplement und Durchschnitt (1/2) Wir wissen: Die Klasse aller regulären Sprachen ist abgeschlossen unter Komplement- und Durchschnittbildung. Obwohl die regulären Ausdrücke keine expliziten Operatoren für Komplement- und Durchschnittbildung enthalten, gibt es daher für alle regulären Ausdrücke R und S einen regulären Ausdruck I R̃, der die Sprache L(R) beschreibt, und I T , der die Sprache L(R) ∩ L(S) beschreibt. Frage: Wie können wir bei gegebenen R und S solche regulären Ausdrücke R̃ und T konstruieren? Antwort: R, S NFAs AL(R) , AL(S) DFAs BL(R) , BL(S) DFAs BL(R) , BL(R)∩L(S) reguläre Ausdrücke Laufzeit unserer Verfahren: Für R̃: 22 O(|R|) R̃, T . . O(|R|+|S|) Für T : 22 . Frage: Geht das effizienter? Reguläre Ausdrücke 119 / 151 Reguläre Ausdrücke für Komplement und Durchschnitt (2/2) Wir kennen Verfahren, die bei gegebenen regulären Ausdrücken R und S in Zeit O(|R|) I 22 I 22 O(|R|+|S|) einen regulären Ausdruck R̃ für die Sprache L(R) einen regulären Ausdruck T für die Sprache L(R) ∩ L(S) liefern. Frage: Geht das effizienter? Antwort von Gelade und Neven (2008): I (hier ohne Beweis) Für R̃ ist unser Verfahren im Wesentlichen optimal: Es gibt reguläre Ausdrücke Rn der Länge O(n), so dass die kürzesten regulären n Ausdrücke, die die Sprache L(Rn ) beschreiben, mindestens die Länge 22 haben. I Für T gibt es ein (relativ naheliegendes) Verfahren, das mit Laufzeit 2O(|R|·|S|) auskommt. Dieses Verfahren ist im Wesentlichen optimal: Es gibt reguläre Ausdrücke Rn , Sn der Länge O(n2 ), so dass die kürzesten regulären Ausdrücke für die Sprache L(Rn ) ∩ L(Sn ) mindestens die Länge 2n haben. Reguläre Ausdrücke 120 / 151 Reguläre Grammatiken Reguläre Grammatiken 121 / 151 Grammatiken Programmiersprachen lassen sich am besten als die Sprache aller syntaktisch korrekten Programme auffassen. Definiere die Syntax durch eine Grammatik. Wie erzeugt man arithmetische Ausdrücke mit ganzzahligen Konstanten? Wir arbeiten mit den Variablen A: erzeuge einen arithmetischen Ausdruck, I: erzeuge eine natürliche Zahl und Z: erzeuge eine Ziffer. A → A + A | A − A | A ∗ A | (A) | I | + I | − I I → ZI |Z Z → 0|1|2|3|4|5|6|7|8|9 Wir haben Produktionen (oder Ersetzungsregeln) benutzt. Reguläre Grammatiken 122 / 151 Die Komponenten einer Grammatik Eine Grammatik G = (Σ, V , S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen (oder Nichtterminalen) mit Σ ∩ V = ∅, dem Startsymbol S ∈ V und einer endlichen Menge P von Produktionen der Form u → v mit u ∈ (Σ ∪ V )∗ V (Σ ∪ V )∗ und v ∈ (Σ ∪ V )∗ Beginne mit dem Startsymbol S und wende dann Produktionen an: Eine Produktion u → v ersetzt ein Vorkommen von u durch ein Vorkommen von v. Reguläre Grammatiken 123 / 151 Die von einer Grammatik erzeugte Sprache Für eine Produktion u → v und ein Wort w1 = xuy wird das Wort w2 = xvy abgeleitet. Wir schreiben x uy ⇒ x v y . Für Worte r , s ∈ (Σ ∪ V )∗ schreiben wir ∗ r ⇒s :⇐⇒ Es gibt Worte w1 = r , w2 , . . . , wk = s, für k > 1, so dass w1 ⇒ w2 ⇒ · · · ⇒ wk . s kann in null, einem oder mehreren Schritten aus r abgeleitet werden. ∗ L(G) = w ∈ Σ∗ : S ⇒ w Reguläre Grammatiken ist die von der Grammatik G erzeugte Sprache. 124 / 151 Reguläre Grammatiken Frage: Welcher Typ von Grammatik erzeugt reguläre Sprachen? Eine Grammatik G = (Σ, V , S, P), bei der alle Produktionen von der Form X → für X ∈ V X → aY für X , Y ∈ V und a ∈ Σ oder sind, heißt (rechts-)regulär. Die zentralen Fragen: Wird jede reguläre Sprache von einer regulären Grammatik erzeugt? Ist die von einer regulären Grammatik erzeugte Sprache regulär? Reguläre Grammatiken 125 / 151 Reguläre Grammatiken: Ein Beispiel Eine Grammatik für die Sprache aller Worte über Σ = {a, b}, die das Wort aba als Teilwort besitzen: Die Variablen: S: ist das Startsymbol; es soll ein beliebiges Präfix erzeugen, Va : bedeutet, dass wir gerade ein a erzeugt haben und dass als nächstes ein b erzeugt werden soll, Vab : bedeutet, dass wir gerade ab erzeugt haben und dass als nächstes ein a erzeugt werden soll, T : soll ein beliebiges Suffix erzeugen. Die Produktionen: Reguläre Grammatiken S → aS | bS | aVa Va → bVab Vab → aT T → aT | bT | 126 / 151 Reguläre Sprachen besitzen reguläre Grammatiken Sei A = (Q, Σ, δ, q0 , F ) ein NFA, der die Sprache L := L(A) akzeptiert. Auf Eingabe w = a1 · · · an führt A Zustandsübergänge a a a 1 2 n q0 → q1 → ··· → qn durch. Sei G = (Σ, V , S, P) die reguläre Grammatik mit Variablenmenge V := Q Startsymbol S := q0 Produktionen p → aq für alle p, q, a mit δ(p, a) 3 q p→ für alle p ∈ F . Behauptung: Diese Grammatik G erzeugt die Sprache L = L(A). Reguläre Grammatiken 127 / 151 Reguläre Grammatiken erzeugen reguläre Sprachen Sei G = (Σ, V , S, P) eine reguläre Grammatik, die die Sprache L := L(G) erzeugt. Eine Ableitung von G hat die Form S ⇒ a1 V1 ⇒ a1 a2 V2 ⇒ · · · ⇒ a1 · · · an Vn ⇒ a1 · · · an . Sei A = (Q, Σ, δ, q0 , F ) der NFA mit Zustandsmenge Q := V , Startzustand q0 := S, Überführungsfunktion δ : Q × A → P(Q), wobei für alle X ∈ Q und a ∈ Σ gilt: δ(X , a) := {Y : (X → aY ) ∈ P}. Endzustandsmenge F := {X ∈ V : (X → ) ∈ P} Behauptung: Dieser NFA A akzeptiert genau die Sprache L = L(G). Reguläre Grammatiken 128 / 151 Probabilistische Automaten Probabilistische Automaten 129 / 151 Würfelnde Automaten Ein probabilistische endlicher Automat (PFA) W = (Σ, Q, δ, q0 , F ) darf würfeln: Das Programm δ : Q × Σ × Q → [0, 1] weist allen Zuständen p, r ∈ Q und jedem Buchstaben a ∈ Σ die Wahrscheinlichkeit δ(p, a, r ) zu, dass r als Nachfolgezustand von p gewählt wird, wenn a gelesen wird. Probabilistische Automaten 130 / 151 Die Übergangsmatrix Für jeden Buchstaben a ∈ Σ ist Pa die Übergangsmatrix, wobei Pa [p, r ] := δ(p, a, r ) die Wahrscheinlichkeit ist, dass W von p in r wechselt, wenn a gelesen wird. Pa ist eine stochastische Matrix: Für alle Zustände p, r ∈ Q ist Pa [p, r ] > 0 und es ist Probabilistische Automaten P r ∈Q Pa [p, r ] = 1. 131 / 151 Die erweiterte Übergangsfunktion Sei W = (Σ, Q, δ, q0 , F ) ein probabilistischer endlicher Automat (PFA). (a) Für ein Wort u ∈ Σ∗ , einen Anfangszustand p und einen Zustande r ∈ Q ist δ(p, u, r ) die Wahrscheinlichkeit, dass sich W nach dem Lesen des Wortes u im Zustand r ∈ Q befindet. Wir geben die folgende rekursive Definition an: X δ(p, ua, r ) := δ(p, u, s) · δ(s, a, r ). s∈Q (b) Die Akzeptanzwahrscheinlichkeit pW (u) des Wortes w wird definiert durch X δ(q0 , u, r ). pW (u) := pr[ W akzeptiert u ] := r ∈F (c) Die reelle Zahl λ ∈ [0, 1] sei gegeben. Die Sprache Lλ (W ) besteht aus allen Worten u ∈ Σ∗ , die mit Wahrscheinlichkeit größer als λ akzeptiert werden: Lλ (W ) := { u ∈ Σ∗ : pW (u) > λ}. Probabilistische Automaten Die erweiterte Übergangsfunktion 132 / 151 Erweiterte Übergangsfunktion und Matrizenprodukte Wenn u = a1 · · · an , dann folgt mit vollständiger Induktion: δ(p, u, r ) = Pa1 · · · Pan [p, r ]. Frage: Ist die Sprache Lλ (W ) für jeden probabilistischen endlichen Automaten und für jedes λ eine reguläre Sprache? Probabilistische Automaten Die erweiterte Übergangsfunktion 133 / 151 Akzeptieren PFAs nur reguläre Sprachen? Der PFA W = (Σ, Q, δ, q0 , F ) mit 1. Σ = {0, 1}, 2. Zustandsmenge Q = {0, 1}, 3. Anfangszustand q0 = 0 4. dem akzeptierenden Zustand 1 und 5. dem Programm δ, definiert durch die beiden Übergangsmatrizen 1 1 1 0 P0 = 1 1 und P1 = 2 2 . 0 1 2 2 Für das Wort u = a1 · · · an gilt PW (u) = Pa1 · · · Pan [0, 1] = 0.an · · · a1 . Es gibt überabzählbar viele Sprachen Lλ (W ), aber nur abzählbar viele DFAs! Probabilistische Automaten Nicht-reguläre Sprachen 134 / 151 Schade?! Es gibt einen PFA W und einen Schwellenwert λ, so dass Lλ (W ) nicht regulär ist. Ist Mutter Natur zu tadeln? Wie sollen wir ? u ∈ Lλ (W ) experimentell entscheiden, wenn wir nur wenige Berechnungen von W auf u beobachten dürfen? Wir sollten für eine reelle Zahl δ > 0 fordern, dass alle Akzeptanzwahrscheinlichkeiten außerhalb eines Intervalls ( λ − δ, λ + δ ) liegen. Probabilistische Automaten Nicht-reguläre Sprachen 135 / 151 Akzeptanz mit Lücke δ sei eine positive reelle Zahl. Ein PFA W akzeptiert die Sprache L = Lλ (W ) mit (Schwellenwert λ und) Lücke δ, falls pW (u) 6∈ ( λ − δ, λ + δ ) für alle Worte u ∈ Σ∗ gilt. Jeder DFA A ist ein PFA, der die Sprache L = L1 (A) mit Schwellenwert 1/2 und der größtmöglichen Lücke 1/2 akzeptiert. Können PFAs mit großer Lücke Zustände gegenüber DFAs „einsparen“? I I Der Index von EQk = {ww : w ∈ {0, 1}k } beträgt mindestens 2k . In den Übungen: Es gibt einen PFA mit poly(k) Zuständen, der EQk mit und Lücke 1−1/k akzeptiert. Schwellenwert 1+1/k 2 2 Zeige den Satz von Rabin: Sei W ein PFA, der die Sprache L = Lλ (W ) mit Lücke δ > 0 akzeptiert. Dann ist die Sprache L regulär. Probabilistische Automaten PFAs mit positiver Lücke 136 / 151 Satz von Rabin (1/2) W = (Σ, Q, δ, q0 , F ) sei ein PFA. Angenommen, u1 , . . . , uN sind Vertreter verschiedener Myhill-Nerode Klassen: Für je zwei Worte ui 6= uj gibt es ein Wort x mit z. B. ui x ∈ L, aber uj x 6∈ L. Also: pW (ui x ) X = δ(q0 , ui , p) · δ(p, x , q) > λ + δ, p∈Q,q∈F pW (uj x ) X = δ(q0 , uj , p) · δ(p, x , q) 6 λ − δ p∈Q,q∈F und insbesondere 2 · δ = λ + δ − (λ − δ) 6 = pW (ui x ) − pW (uj x ) X δ(q0 , ui , p) − δ(q0 , uj , p) · δ(p, x , q) p∈Q,q∈F = X (δ(q0 , ui , p) − δ(q0 , uj , p) · p∈Q Probabilistische Automaten X δ(p, x , q) q∈F Der Satz von Rabin 137 / 151 Satz von Rabin Wir wissen: 2 · δ 6 (a) 0 6 P q∈F (2/2) P p∈Q (δ(q0 , ui , p) − δ(q0 , uj , p) · P q∈F δ(p, x , q) . δ(p, x , q) < |Q|, denn 0 6 δ(p, x , q) 6 1 für alle p, q ∈ Q. (b) Als Konsequenz folgt 2 · δ/|Q| 6 X |δ(q0 , ui , p) − δ(q0 , uj , p)|. p∈Q (c) Die Vektoren ξi := ( δ(q0 , ui , p) : p ∈ Q ) haben in der 1-Norm also einen Abstand von mindestens 2δ/|Q| voneinander. (d) Für jedes µ > 0 gibt es aber nur endlich viele Vektoren im |Q|-dimensionalen Würfel [0, 1]|Q| mit paarweisem Abstand von mindestens µ =⇒ I I Der Myhill-Nerode Index von L ist endlich und L ist regulär. Probabilistische Automaten Der Satz von Rabin 138 / 151 Zweiwege Automaten Zweiwege Automaten 139 / 151 Sprachen, die ohne Speicher akzeptiert werden können Deterministische Zweiwege Automaten (2DFAs) - können in jedem Schritt entscheiden, ob sie den vorangegangenen linken oder den folgenden rechten Buchstaben der Eingabe w ∈ Σ∗ besuchen möchten. - Das linke Ende der Eingabe ist mit dem Buchstaben α und das rechte Ende mit dem Buchstaben β beschriftet, wobei α, β 6∈ Σ gelte. Die formale Definition: Ein 2DFA (Σ, Q, δ, q0 , F ) hat die folgenden Komponenten: Das Eingabealphabet Σ mit {α, β} ∩ Σ = ∅, eine endliche Menge Q von Zuständen, das Programm δ, das wir als Funktion δ : Q × (Σ ∪ {α, β}) → Q × { links, rechts } auffassen: Die Eingabe w wird durch das Wort αw β repräsentiert. Den Anfangszustand q0 ∈ Q sowie eine Menge F ⊆ Q akzeptierender Zustände. Zweiwege Automaten 2DFAs 140 / 151 Die Sprache eines Zweiwege Automaten Sei A ein 2DFA. 1. A beginnt im Zustand q0 und liest den ersten Buchstabens α der Eingabe αw β. 2. δ schreibt Zustandsänderungen, aber auch die Leserichtung vor. I I A darf αw β nicht nach links verlassen. A akzeptiert das Wort w genau dann, wenn A die transformierte Eingabe αw β nach rechts in einem Zustand aus F verlässt. Die Sprache L(A) ist die Menge aller von A akzeptierten Worte w ∈ Σ∗ . Zweiwege Automaten 2DFAs 141 / 151 2DFAs versus DFAs (a) Können 2DFAs nicht-reguläre Sprachen akzeptieren? I Nein, das würde Mutter Natur nicht zulassen. (b) Gibt es reguläre Sprachen, die 2DFAs mit sehr viel weniger Zuständen akzeptieren als DFAs? Ja, hier sind einige Beispiele: I Lk = {0, 1}∗ · {1} · {0, 1}k−1 , I Mk = {w $w : w ∈ {0, 1}k }. (c) 2NFAs sind nichtdeterministisch rechnende Zweiwege Automaten. I Können 2NFAs nicht-reguläre Sprachen akzeptieren? Auch das lässt Mutter Natur nicht zu. Aber warum? I Gibt es reguläre Sprachen, die 2NFAs mit sehr viel weniger Zuständen akzeptieren als 2DFAs? Diese Frage ist seit über 50 Jahren offen. Zweiwege Automaten 2DFAs 142 / 151 2NFAs akzeptieren nur reguläre Sprachen (1/5) Wir simulieren den 2NFA N = (Σ, QN , δN , q0 , FN ) durch einen NFA N ∗ . 1. ⊥ ist das Symbol für „undefiniert“ und F ist die Menge aller Funktionen f : QN → (QN ∪ {⊥}). 2. Die Zustandsmenge von N ∗ ist QN ∗ = QN × F. Wenn N ∗ den Zustand (p, f ) annimmt, dann spekuliert N ∗ , dass N eine Berechnung besitzt, die (a) den bisher gelesene Präfix der Eingabe zum ersten Mal im Zustand p nach rechts hin verlässt und (b) den Präfix im Zustand f (r ) nach rechts verlässt, wenn es den Präfix im Zustand r von rechts aus betritt. (f (r ) =⊥, wenn N den Präfix nicht mehr verlässt.) Zweiwege Automaten 2NFAs 143 / 151 2NFAs akzeptieren nur reguläre Sprachen (2/5) Fazit: Der Zustand (p, f ) wettet darauf, dass N den bisher gelesenen Präfix (a) zum ersten Mal nach rechts im Zustand p verlässt wird und (b) dass f die Reaktion auf einen „Besuch von rechts“ festhält. 3. Zustand p 0 ist für den Buchstaben a konsistent mit (p, f ), p 0 ∈ K ((p, f ), a), wenn es eine „mit f konsistente Berechnung“ gibt, die I I im Zustand p „beginnt“ und zum ersten Mal im Zustand p 0 den „Buchstaben a nach rechts hin verlässt“. Formal: Es gibt eine Zustandsfolge (p1 , q1 , . . . , pk−1 , qk−1 , pk ) mit I I p1 = p, (qi , links) ∈ δN (pi , a) und pi+1 = f (qi ) für i = 1, . . . , k − 1 sowie (p 0 , rechts) ∈ δN (pk , a). Zweiwege Automaten 2NFAs 144 / 151 2NFAs akzeptieren nur reguläre Sprachen (3/5) Die Funktion f : QN → (QN ∪ {⊥}) sei beliebig. 4. Definition von N ∗ : I I N ∗ darf von seinen Startzustand q0∗ in den Zustand (p, f ) wechseln, falls (p, rechts) ∈ δN (q0 , α) und (f (r ), rechts) ∈ δN (r , α) für alle r . Wenn N ∗ den Zustand (p, f ) annimmt: N besitzt eine Berechnung, die α im Zustand p nach rechts verlässt und f ist die Reaktion dieser Berechnung auf einen Besuch von α, von rechts kommend. (f (r ) =⊥, wenn δN (α, r ) = ∅.) N ∗ besitzt einen Zustandsübergang (p 0 , f 0 ) ∈ δN ∗ (p, f ), a , (a) wenn p 0 ∈ K ((p, f ), a) und (b) für alle Zustände r ∈ QN gibt es eine Berechnung die a von rechts im Zustand r betritt und später, falls f 0 (r ) 6=⊥, im Zustand f 0 (r ) nach rechts wieder verlässt. Wie formalisiert man Teil (b)? Es ist (f 0 (r ), rechts ) ∈ δN (r , a) oder es gibt einen Zustand mit s ∈ QN , so dass (s, links ) ∈ δN (r , a) und f 0 (r ) ∈ K ((s, f ), a). Zweiwege Automaten 2NFAs 145 / 151 2NFAs akzeptieren nur reguläre Sprachen (4/5) Und wenn N eine Eingabeposition mehrmals in demselben Zustand r besucht? Dann reagiert die Berechnung doch möglicherweise auf „Rechts-Besuche“ im Zustand r mit verschiedenen Nachfolgezuständen? O.B.d.A.: Wir können uns auf Berechnungen von N beschränken, die jede Eingabeposition höchstens einmal im selben Zustand besuchen. Zweiwege Automaten 2NFAs 146 / 151 2NFAs akzeptieren nur reguläre Sprachen (5/5) 5. Erfinde einen neuen Zustand „ja“ für N ∗ und setze FN ∗ := { ja }. Wenn N ∗ das Endesymbol β im Zustand (p, f ) liest: Wann sollte N ∗ akzeptieren? I Wenn p 0 ∈ K ((p, f ), β) für einen Zustand p 0 ∈ FN gilt. Definiere in einem solchen Fall δN ∗ ((p, f ), β) := {( ja , rechts )}. I In allen anderen Fällen ist δN ∗ ((p, f ), β) := ∅. 6. Zeige durch vollständige Induktion über die Länge der Eingabe αu: N ∗ nimmt genau dann den Zustand (p, f ) nach Lesen von αu an, wenn N eine Berechnung hat, die F F αu zum ersten Mal im Zustand p verlässt und αu im Zustand f (r ) verlässt, falls αu im Zustand r von rechts betreten wird. N akzeptiert w ⇔ N ∗ akzeptiert αw β. Zweiwege Automaten 2NFAs 147 / 151 2DFAs vs 2NFAs: Die Zustandszahl (1/2) Die Sprache Lk := {0, 1}∗ · {1} · {0, 1}k−1 „trennt“ DFAs und NFAs: Es gibt einen NFA für Lk mit k + 1 Zuständen, jeder DFA benötigt mindestens 2k Zustände. Gibt es eine reguläre Sprache mit kleinen 2NFAs, aber „super-polynomiell“ großen 2DFAs? (a) Warum ist die Frage interessant? Dies ist die „einfachste“ Version der Frage, ob „Speicherplatz“ signifikant eingespart werden kann, wenn nichtdeterministisch gerechnet werden darf. (b) Warum ist die Frage schwierig? 2DFAs können Teile der Eingabe mehrfach besuchen: Der Myhill-Nerode Index ist nicht anwendbar. Zweiwege Automaten 2NFAs 148 / 151 2DFAs vs 2NFAs: Die Zustandszahl (2/2) Die Sprache Bk , die möglicherweise 2DFAs und 2NFAs trennt: (a) Σk sei die Menge aller gerichteten bipartiten Graphen mit den Knotenmengen L := {links} · {1, . . . , k} und R := {rechts} · {1, . . . , k} sowie der Kantenmenge E ⊆ L × R. (b) Für ein Wort w = w1 · · · wn ∈ Σnk identifiziere die Knotenmenge R von wi mit der Knotenmenge L von wi+1 . Wir erhalten einen n-partiten Graphen G(w ). I I Die Knoten von w1 , die zu L gehören, sind die Quellen von G(w ), die Knoten von wn , die zu R gehören, sind die Senken von G(w ). (c) Bk = {w ∈ Σ∗k : Es gibt einen Weg in G(w ) von einer Quelle zu einer Senke}. Bk wird von einem NFA mit k Zuständen akzeptiert, 2DFAs „scheinen“ 2Ω(k) Zustände zu benötigen. Zweiwege Automaten 2NFAs 149 / 151 Zusammenfassung: Reguläre Sprachen (1/2) (1) Wir haben deterministische Automaten effizient minimiert. I Dazu haben wir den Äquivalenzklassenautomat mit dem Algorithmus von Moore, bzw. dem Algorithmus von Hopcroft berechnet. I Um Minimalität nachzuweisen, haben wir die Myhill-Nerode Relation definiert =⇒ der Äquivalenzklassenautomat ist minimal. I Bis auf eine Umbenennung der Zustände stimmen alle minimalen Automaten mit dem Myhill-Nerode Automaten überein: F Der Index ist eine untere Schranke für die Anzahl benötigter Zustände. F Der Satz von Myhill-Nerode: Eine Sprache L ist genau dann regulär, wenn der Index von L endlich ist. (2) Mit dem Index oder dem Pumping-Lemma kann man Nicht-Regularität nachweisen. Zusammenfassung 150 / 151 Zusammenfassung: Reguläre Sprachen (2/2) (3) Nichtdeterministische Automaten erlauben eine kompaktere Beschreibung. I Die Potenzmengenkonstruktion haben wir für die Bestimmung äquivalenter deterministischer Automaten benutzt. I Mit der Fooling Set Methode haben wir ein Werkzeug zum Nachweis unterer Schranken für die Größe von NFAs kennengelernt. (4) DFAs und NFAs akzeptieren genau die Klasse der regulären Sprachen. I Reguläre Grammatiken und reguläre Ausdrücke defineren ebenfalls genau die Klasse der regulären Sprachen. I Vernünftige probabilistische endliche Automaten (PFAs mit positiver Lücke), alternierende Automaten und Zweiwege Automaten, also 2NFAs akzeptieren genau die Klasse der reguläre Sprachen. (5) Reguläre Sprachen sind abgeschlossen unter: I Komplement, Vereinigung, Durchschnitt, Konkatenation, Stern-Bildung, (inversen) Homorphismen, Substitution und Quotientenbildung. (6) Viele Entscheidungsfragen können effizient für DFAs beantworted werden. Für NFAs ist schon die Frage „L(N) 6= Σ∗ ?“ außerst schwierig. I Aber das Wortproblem „w ∈ L(N)?“ ist effizient lösbar. Zusammenfassung 151 / 151
© Copyright 2024 ExpyDoc