Theoretische Informatik Endliche Automaten und formale Sprachen Rainer Schrader Institut für Informatik 30. Juni 2009 2 / 53 1 / 53 endliche Automaten endliche Automaten Was bisher geschah: • wir haben uns gefragt, ob wir mit Rechnern jedes Problem lösen können • dazu haben wir Maschinenmodelle entworfen • den Berechenbarkeitsbegriff entwickelt Gliederung • endliche Automaten • die Minimierung endlicher Automaten • und Spracherkennungsprobleme untersucht • für die lösbaren Problemen wollten wir abschätzen, welchen Aufwand • reguläre Sprachen • das Pumping-Lemma wir treiben müssen • dazu haben wir • nichtdeterministische endliche Automaten • die Klassen P, NP und NP-vollständig untersucht • probabilistische Ansätze analysiert • den Speicherplatzbedarf analysiert • die Kraft interaktiver Nachweise untersucht 3 / 53 4 / 53 endliche Automaten endliche Automaten • wir haben die Probleme dabei als Spracherkennungsprobleme formuliert • Sprachen erlauben die Kommunikation mit einem Rechner • es ging aber fast immer darum, ob gewisse Eigenschaften bei • dabei werden üblicherweise höhere Programmiersprachen in konkreten Objekten vorlagen: Maschinensprache übertragen • ist ein Graph zusammenhängend? • hat ein Graph eine stabile Menge der Größe k ? • die Übersetzung gliedert sich typischerweise in mehrere Schritte • ist eine Boolesche Formel erfüllbar? • der lexikalischen Analyse • ist eine Zahl prim? .. • . • der Syntaxanalyse • der semantischen Analyse • dem Erzeugen von Zwischencode • der Codeoptimierung • die Sprachen waren lediglich einfach strukturierte binäre Kodierungen • der Codegenerierung der Objekte • wir wollen uns im letzten Teil der Vorlesung mit komplexeren Sprachen in der Informatik befassen 6 / 53 5 / 53 endliche Automaten endliche Automaten • die Übersetzung von Programmiersprachen in Maschinensprache werden von Compilern durchgeführt • einzelne Schritte der Interpretation von Texten finden sich aber auch in anderen Zusammenhängen: 7 / 53 8 / 53 endliche Automaten endliche Automaten • die Übersetzung von Programmiersprachen in Maschinensprache werden von Compilern durchgeführt • einzeln Schritte der Interpretation von Texten finden sich aber auch in anderen Zusammenhängen: • Texteditoren, die strukturieren und prüfen • Graphikeditoren • Programm-Interpretierer • Kommandozeilen-Interpretierer • Datenbankabfragen .. • . 9 / 53 10 / 53 endliche Automaten endliche Automaten • diese Turing-Maschinen sind uns als integrierte PLA’s begegnet • ein Compiler hat u.a. folgende Aufgaben: • ein Quellprogramm ist ein Wort aus einem Alphabet x • eine lexikalische Analyse zerlegt das Wort in eine Folgen von Symbolen (Namen, Zahlen, Schlüsselwörter, usw.) integriertes y PLA • eine Syntaxanalyse untersucht den strukturellen Aufbau dieser Symbolfolge s' s Delay • etwas abstrakter: • gegeben die Regeln einer Programmiersprache, welche Sprache kann • die Bearbeitung verläuft in n Schritten • sie wird gesteuert durch die Steuersignale s damit erzeugt werden? • gegeben ein Wort, liegt es in dieser Sprache? • in jedem Schritt • wird ein Input x gelesen • wir werden sehen, dass diese Fragestellungen eng mit speziellen • wird ein Output y erzeugt Turing-Maschinen verwandt sind • wird die Steuerung s modifiziert 11 / 53 12 / 53 endliche Automaten endliche Automaten etwas abstrakter: seien deterministische endliche Automaten (DFA) • k die Breite des Inputs x • m die Breite des Outputs y • das Inputalphabet Σ = {0, 1}k x integriertes • ein DFA ist eine Turingmaschine ohne Bänder y PLA • der Input x ∈ Σn wird einmal von links nach rechts gelesen s' s • das Outputphabet Σ = {0, 1}m • er wird akzeptiert, wenn die Maschine danach in einem akzeptierenden Delay Zustand ist • wir können s als den Zustand der Maschine auffassen • und ansonsten verworfen. • der Input wird einmal von links nach rechts durchlaufen • in jedem Schritt ein Buchstabe des Inputs gelesen • die Menge der akzeptierenden Zustände bezeichnen wir mit F • und ein Buchstabe des Outputs erzeugt • die von einem DFA akzeptierten Sprachen heißen regulär • dies führt zu dem folgenden Automaten 13 / 53 14 / 53 endliche Automaten endliche Automaten Beispiel: • L bestehe aus allen Wörtern mit einer geraden Anzahl von Nullen und • die Übergangsfunktion vereinfacht sich zu δ : Q × Σ → Q: Einsen • der folgende Automat akzeptiert genau diese Sprache: • im Zustand q • und nach Lesen des Zeichens a • nimmt der Automat den Zustand δ(q, a) an • wir merken uns die Parität der bisher gelesenen Nullen und Einsen • dazu verwenden wir vier Zustände: • wir setzen die Übergangsfunktion auf Q × Σ fort: • den Anfangszustand q0 = g/g • sei x = (x1 , . . . , xn ) ∈ Σ • setze • den akzeptierenden Zustand ∗ ∗ δ(q, x ) = δ(q, x1 , . . . , xn ) = (in diesem Fall ebenfalls q0 ) • die Zustände q1 = g/u, q2 = u/g, q3 = u/u. δ(δ(q, x1 , . . . , xn−1 ), xn ), q, • daraus ergibt sich die Übergangsfunktion für x = 6 ε für x = ε. δ 0 1 15 / 53 q0 q2 q1 q1 q3 q0 q2 q0 q3 q3 q1 q2 16 / 53 endliche Automaten endliche Automaten Das folgende Beispiel wird uns später bei der Syntaxanalyse wiederbegegnen Beispiel: • Sei L die Sprache aller Wörter mit gleich vielen Nullen wie Einsen Beobachtung • angenommen M ist ein DFA, der diese Sprache entscheidet • seien x , y ∈ Σ zwei Wörter • betrachte die Wörter 0i für i = 1, . . . • für einen Automaten gelte δ(q, x ) = δ(q, y ) • da M nur endlich viele Zustände hat, muss es zwei verschiedene ∗ Wörter 0i und 0j geben mit δ(q0 , 0i ) = δ(q0 , 0j ) • dann gilt für alle Wörter z ∈ Σ∗ : δ(q, xz ) = δ(q, yz ) • nach der letzten Beobachtung müsste M dann auch für 0i 1i bzw. 0j 1i der gleiche Zustand erreicht werden • damit würde M entweder das erste Wort nicht akzeptieren oder das zweite Wort auch akzeptieren • d.h. L ist nicht regulär. 18 / 53 17 / 53 endliche Automaten endliche Automaten • endliche Automaten können als gerichteter Graph G(M ) dargestellt werden, wobei akzeptierende Zustände gekennzeichnet werden q Automaten M 0 1 0 q 0 3 1 1 1 • umgekehrt entspricht jeder solche Graph G(M ) einem endlichen q1 0 δ 0 1 q0 q2 q1 q1 q3 q0 q2 q0 q3 • ein Wort w wird von M akzeptiert ⇐⇒: q3 q1 q2 • w entspricht einer Kantenfolge, die in q0 startet • und in einem Knoten aus F endet 0 q 2 • die Übergangsrelation δ(p, w ) = q entspricht damit dem Knoten q = w (p), den wir erreichen, wenn wir in p startend die Kantenfolge w durchlaufen • jeder Knoten in G(M ) hat |Σ| ausgehende Kanten, die mit den Elementen aus Σ markiert sind • allgemeiner: gegeben eine Kantenfolge w (w für Wort oder Weg) • G(M ) kann Schleifen und doppelte Kanten enthalten (aber dann mit unterschiedlichen Markierungen) • dann können wir jeder Knotenmenge Q 0 ⊆ Q • es gibt einen ausgezeichneten Knoten q0 und ausgezeichnete Knoten • die Menge ihrer Endknoten w (Q 0 ) mit |w (Q 0 )| ≤ |Q 0 | zuordnen in F 19 / 53 20 / 53 endliche Automaten endliche Automaten • wir wollen im folgenden versuchen, • die Sprachen zu charakterisieren, die von endlichen Automaten akzeptiert werden Gliederung • endliche Automaten • die Minimierung endlicher Automaten • möglichst effiziente Automaten zu bestimmen • reguläre Sprachen • das Pumping-Lemma • im allgemeinen versuchen wir, Algorithmen oder Schaltwerke zu • nichtdeterministische endliche Automaten • bei Automaten ist der Zeitbedarf durch die Inputlänge determiniert, konstruieren, die möglichst wenig Zeit oder Platz benötigen • wir versuchen daher, möglichst geringen Platzverbrauch zu erzielen, • d.h. einen Automaten zu konstruieren, der eine gegebene Sprache mit möglichst wenigen Zustände entscheidet 21 / 53 22 / 53 endliche Automaten endliche Automaten (ii) eine zweite Möglichkeit zur Reduktion der Anzahl der Zustände: (i) G(M ) kann Zustände enthalten, die vom Startzustand aus nicht erreichbar sind • seien p und q zwei Knoten eines DFA G(M ) • unerreichbare Zustände sind im gerichteten Graphen durch • p und q heißen äquivalent (p ≡ q), wenn für alle Wörter Suchverfahren einfach zu ermitteln: w ∈ Σ∗ gilt: • in G(M ) hat jeder der |Q| Knoten |Σ| ausgehende Kanten w (p) ∈ F ⇐⇒ w (q) ∈ F • anschaulich: von p aus w folgend wird ein akzeptierender Zustand • Suchverfahren laufen linear in der Anzahl der Kanten genau dann erreicht, wenn dies auch für q gilt • wir können in O(|Q||Σ|) Schritten unerreichbare Knoten entfernen • offensichtlich ist ≡ eine Äquivalenzrelation • sei [p] die Äquivalenzklasse von p • wir nehmen daher an, dass aus den Automaten bereits alle unerreichbaren Zustände entfernt worden sind. • es gilt folgende Beziehung: 23 / 53 24 / 53 endliche Automaten endliche Automaten Lemma Ist p ≡ q , so auch w (p) ≡ w (q) für alle w ∈ Σ∗ . • wir können uns somit auf jeweils einen Repräsentanten einer Beweis: Äquivalenzklasse beschränken • sei p 0 = w (p) und q 0 = w (q) • wir bilden dazu einen neuen Graphen G(M 0 ) wie folgt: • wir müssen zeigen, dass für alle w ∈ Σ gilt: 0 ∗ • identifiziere äquivalente Knoten von G(M ) w 0 (p 0 ) ∈ F ⇐⇒ w 0 (q 0 ) ∈ F • von den Kanten mit gleicher Markierung lösche alle bis auf eine Lemma • dies ist äquivalent zu: für alle w 0 ∈ Σ∗ gilt (i) G(M 0 ) ist Graph eines endlichen Automaten M 0 , ww 0 (p) = w 0 (w (p)) ∈ F ⇐⇒ w 0 (w (q)) = ww 0 (q) ∈ F (ii) M 0 akzeptiert die gleiche Sprache wie M . • dies folgt aber aus der Äquivalenz von p und q. 25 / 53 26 / 53 endliche Automaten endliche Automaten Beweis: • M 0 ist der Äquivalenzklassenautomat von M (i) seien p und q zwei äquivalente Knoten • wenn wir die Äquivalenzklassen kennen, können wir schnell (in • der identifizierte Knoten hat zu jedem a ∈ Σ zwei ausgehende Kanten O(|Q||Σ|) Schritten) den Äquivalenzklassenautomaten konstruieren • nach dem letzten Lemma sind die Endknoten dieser Kanten ebenfalls • um die Äquivalenzklassen zu berechnen, testen wir für jedes Paar äquivalent p, q ∈ Q, ob p 6≡ q: • nach Entfernen doppelter Kanten mit gleicher Markierung hat jeder • sei w ∈ Σ∗ und p, q ∈ Q Knoten wieder Außengrad |Σ| • mit w = ε folgt aus der Definition der Äquivalenz, dass ein Knoten in • w ist Zeuge für p 6≡ q, wenn w (p) ∈ F und w (q) ∈ /F F nur zu anderen Knoten in F äquivalent sein kann • damit besteht F aus den Äquivalenzklassen von F und 0 q00 • allgemein heißt w ∈ Σ∗ Zeuge, wenn es die Nichtäquivalenz von zwei = [q0 ] Zuständen bezeugt • somit ist G(M ) der Graph eines Automaten M . 0 0 • wie lang können Zeugen sein ? • w heißt kürzester Zeuge, wenn kein kürzeres Wort Zeuge für (ii) Per Konstruktion endet ein Weg w (q00 ) in M 0 genau dann in einem Knoten von F 0 , wenn w (q0 ) in M in F endet. p 6≡ q ist 27 / 53 28 / 53 endliche Automaten endliche Automaten Lemma (i) Suffixe von Zeugen sind Zeugen, (ii) Suffixe von kürzesten Zeugen sind kürzeste Zeugen. • d.h. wenn es keinen kürzesten Zeugen einer Länge k gibt, Beweis: • dann existiert auch kein kürzester Zeuge der Länge größer als k • sei w ein Zeuge für p 6≡ q • sei o.B.d.A. w (p) ∈ F und w (q) ∈ /F 0 • sei w = aw • umgekehrt: kürzeste Zeugen „wachsen“ • auf dieser Beobachtung beruht der folgende Algorithmus, • da w (p) = w (a((p)) und w (q) = w (a(q)), • folgt auch a(p) 6≡ a(q) • d.h. w 0 ist Zeuge für a(p) 6≡ a(q) (i) 0 0 • er testet alle Paare p, q ∈ Q auf Nichtäquivalenz: • angenommen es gibt einen Zeugen w 00 für a(p) 6≡ a(q) mit |w 00 | < |w 0 |, • dann wäre aw 00 ein kürzerer Zeuge für p 6≡ q (ii) 29 / 53 30 / 53 endliche Automaten endliche Automaten setze i = 0 markiere alle Paare (p, q) mit p ∈ F und q ∈ / F bzw. p ∈ / F und q ∈ F mit Label i while Paare mit label i existieren für alle Paare (p, q) mit Label i do für alle a ∈ Σ do sei (p 0 , q 0 ) mit a(p 0 ) = p, a(q 0 ) = q ist (p 0 , q 0 ) unmarkiert, so markiere (p, q) mit i + 1 end do end do i =i +1 w w end while p Der obige Algorithmus markiert genau die nicht äquivalenten Paare in O(|Q|2 |Σ|) Schritten. Beweis: • im ersten Schritt werden alle Paare markiert, für deren Nichtäquivalenz ein kürzester Zeuge der Länge 0 existiert • per Induktion seien alle Paare mit k − 1 markiert, für deren Nichtäquivalenz ein kürzester Zeuge der Länge k − 1 existiert • sei (p 0 , q 0 ) ein Paar, für das ein kürzester Zeuge der Länge k existiert • dann gibt es dem vorigen Lemma ein a, so dass a(p 0 ) und a(q 0 ) nicht äquivalent sind und einen kürzesten Zeugen der Länge k − 1 haben q a p' Lemma • damit wird (p 0 , q 0 ) mit k markiert. a q' 31 / 53 32 / 53 endliche Automaten endliche Automaten • wird umgekehrt (p 0 , q 0 ) markiert, • so existiert ein a, so dass a(p) und a(q) markiert sind Gliederung • per Induktion sind a(p) und a(q) nicht äquivalent • endliche Automaten • die Minimierung endlicher Automaten • und haben einen kürzesten Zeugen der Länge höchstens k − 1 • dann haben auch p 0 und q 0 einen Zeugen der Länge höchstens k . • reguläre Sprachen • das Pumping-Lemma • die Laufzeit beträgt O(|Q|2 ) im ersten Schritt. • nichtdeterministische endliche Automaten • in der while-Schleife wird zu jedem Paar jede Kante a ∈ Σ höchstens einmal angefasst, • daraus ergibt sich eine Laufzeit von O(|Σ||Q|2 ) 33 / 53 34 / 53 endliche Automaten endliche Automaten • mit den Verfahren des letzten Abschnitts können wir die Anzahl der • wir haben bisher eine Äquivalenzrelation auf den Knoten von Zustände eines Automaten reduzieren G(M ) definiert • wir wollen jetzt zeigen, dass wir damit auch die minimale Anzahl • wir definieren jetzt eine Äquivalenzrelation auf Σ∗ erreicht haben • wir werden zeigen: • dieses Ergebnis folgt als Korollar aus einer Charakterisierung der regulären Sprachen, x , y ∈ Σ∗ sind äquivalent ⇐⇒ δ(q0 , x ) ≡ δ(q0 , y ) • d.h. derjenigen, die von endlichen Automaten erkannt werden. 35 / 53 36 / 53 endliche Automaten endliche Automaten Lemma • seien L ⊆ Σ∗ eine Sprache und x , y ∈ Σ∗ Sei L eine Sprache und RL die induzierte Relation. Dann gilt: • wir definieren eine Relation RL auf Σ∗ × Σ∗ wie folgt: • (x , y ) ∈ RL ⇐⇒ (i) (x , y ) ∈ RL =⇒ (xa, ya) ∈ RL für alle a ∈ Σ, (ii) für jedes x ∈ Σ∗ gilt [x ] ∈ L oder [x ] ∩ L = ∅. für alle z ∈ Σ∗ gilt xz ∈ L ⇐⇒ yz ∈ L Beweis: • RL ist eine Äquivalenzrelation (i) seien x , y ∈ Σ∗ mit (x , y ) ∈ RL • ist (x , y ) ∈ RL , so folgt für z = ε : (x , y ) ∈ RL =⇒ x ∈ L ⇐⇒ y ∈ L =⇒ • sei [x ] wiederum die Äquivalenzklasse von x (xaw ∈ L ⇐⇒ yaw ∈ L) für alle a ∈ Σ, w ∈ Σ∗ (xa, ya) ∈ RL für alle a ∈ Σ. (ii) wie bereits gesehen: für (x , y ) ∈ RL gilt entweder x , y ∈ L oder x, y ∈ / L. 37 / 53 38 / 53 endliche Automaten endliche Automaten Lemma Sei L regulär und q0 der Startzustand eines Automaten M , der L akzeptiert. Dann gilt: • sei R eine Äquivalenzrelation • der Index ind(R) ist die Anzahl der Äquivalenzklassen von R (i) (x , y ) ∈ RL ⇐⇒ x (q0 ) ≡ y (q0 ), • für reguläre Sprachen gilt: (ii) ind(RL ) ≤ |Q|. Beweis: Lemma (ii) folgt unmittelbar aus (i) Sei L regulär und q0 der Startzustand eines Automaten M , der L akzeptiert. Dann gilt: (i) für x , y ∈ Σ∗ gilt: (i) (x , y ) ∈ RL ⇐⇒ x (q0 ) ≡ y (q0 ), (x , y ) ∈ RL ⇐⇒ (xz ∈ L ⇐⇒ yz ∈ L) für alle z ∈ Σ∗ (ii) ind(RL ) ≤ |Q|. ⇐⇒ (xz (q0 ) ∈ F ⇐⇒ yz (q0 ) ∈ F ) für alle z ∈ Σ∗ ⇐⇒ x (q0 ) ≡ y (q0 ). 39 / 53 40 / 53 endliche Automaten endliche Automaten Mit der Relation RL können wir reguläre Sprachen charakterisieren: • sei F = {[x ] : [x ] ⊆ L} • nach früherem Lemma gilt [x ] ⊆ L oder [x ] ∩ L = ∅ Satz • damit ist F wohldefiniert L ist regulär ⇐⇒ ind(RL ) < ∞. • weiter sei die Übergangsrelation δ gegeben durch Beweis: δ([x ], a) = [xa] • sei M ein DFA mit Zustandsmenge Q, der die Sprache L akzeptiert • aus dem vorigen Lemma folgt ind(RL ) ≤ |Q| < ∞ • dadurch ist auch δ wohldefiniert, denn: • umgekehrt konstruieren wir einen DFA M , der L akzeptiert • sei x , y ∈ Σ∗ mit (x , y ) ∈ RL • Q besteht aus den endlich vielen Äquivalenzklassen von RL • aus früherem Lemma folgt (xa, ya) ∈ RL und somit [xa] = [ya] • dabei sei q0 = [ε] die Äquivalenzklasse, die das leere Wort enthält • schließlich gilt δ(q0 , x ) = δ([ε], x ) = [εx ] = [x ], • sei F = {[x ] : [x ] ⊆ L} • d.h. M akzeptiert x genau dann, wenn [x ] ∈ F und damit x ∈ L. 42 / 53 41 / 53 endliche Automaten endliche Automaten Korollar Korollar Der so konstruierte endliche Automat M hat eine minimale Anzahl von Zuständen. Nach Entfernung aller unerreichbaren Zustände aus einem Automaten M ist der Äquivalenzklassenautomat M 0 ein minimaler zu M äquivalenter Automat. Beweis: • sei Q die Zustandsmenge von M Beweis: • sei M 0 ein endlicher Automat mit Zustandsmenge Q 0 für L • der Äquivalenzklassenautomaten hat ind(RL ) Zustände (früheres Lemma) • nach früherem Lemma gilt: • nach dem letzten Korollar ist dies auch die minimal mögliche Anzahl • ind(RL ) ≤ |Q 0 | von Zuständen. • per Konstruktion ist |Q| = ind(RL ) 43 / 53 44 / 53 endliche Automaten endliche Automaten • der letzte Satz liefert eine Charakterisierung regulärer Sprachen • sie beruht auf einer Abschätzung der Zahl der Äquivalenzklassen von RL Gliederung • dies ist im Allgemeinen nicht einfach • endliche Automaten • die Minimierung endlicher Automaten • wir geben daher im folgenden eine hinreichende Bedingung für die Regularität an • reguläre Sprachen • das Pumping-Lemma Lemma (Pumping-Lemma) • nichtdeterministische endliche Automaten Zu jeder regulären Sprache L gibt es eine Konstante n, so dass für jedes Wort x ∈ L mit |x | ≥ n gilt: • x lässt sich schreiben als x = uvw mit |uv | ≤ n und |v | ≥ 1 • weiter ist uv i w ∈ L für alle i ≥ 0. 46 / 53 45 / 53 endliche Automaten endliche Automaten Beweis: • sei n die Anzahl der Zustände eines DFA M , der L akzeptiert • beim Lesen eines n-elementigen Inputs x durchläuft M die Zustände • zur Illustration betrachten wir die Sprache L aller Palindrome q0 , qi1 , . . . , qin , • ein Wort x = x1 x2 . . . xn heißt Palindrom, wenn x = xn xn−1 . . . x1 • d.h. mehr als n Zustände • wir zeigen, dass L nicht regulär ist: • damit muss ein Zustand q doppelt aufgetreten und in G(M ) ein Kreis durchlaufen worden sein • angenommen L wäre regulär • seien u das Präfix von x , so dass q = u(q0 ) zum ersten Mal erreicht • nach dem Pumping-Lemma gibt es dann ein n, so dass sich alle langen wird, und v die Kanten im Kreis. Wörter aus L in drei Teile zerlegen lassen • dann ist |uv | ≤ n und |v | ≥ 1. • schließlich sei w so, dass x = uvw • da x ∈ L, ist offensichtlich auch uv i w ∈ L für i ≥ 0. 47 / 53 48 / 53 endliche Automaten endliche Automaten • sei x = (01)n (10)n und x = uvw die Zerlegung mit |uv | ≤ n und |v | ≥ 1 und uv i w ∈ L für alle i ≥ 0 Gliederung • sei v = v1 . . . vk . Insbesondere ist v Teilwort von (01)n . • endliche Automaten • die Minimierung endlicher Automaten • ist k ungerade, so ist v1 = vk • dann folgen in uv 2 w = uv1 . . . vk v1 . . . vk w zwei gleiche Buchstaben • reguläre Sprachen • das Pumping-Lemma • d.h. uv 2 w ∈ /L • nichtdeterministische endliche Automaten vk v1 aufeinander, nicht jedoch im unveränderten Teil w • ist k = 2` gerade, so ist v = (01)` oder v = (10)` • in beiden Fällen ist uv 2 w = (01)n+` (10)n ∈ / L. 49 / 53 50 / 53 endliche Automaten endliche Automaten • bei Turingmaschinen hat sich Nichtdeterminismus als erfolgreich • ein NFA akzeptiert einen Input w ∈ Σ∗ , falls einer der erreichbaren erwiesen Zustände akzeptiert (d.h. δ(q0 , w ) ∩ F 6= ∅) • daher stellt sich die Frage, ob durch Nichtdeterminismus mehr als • da wir nicht an Laufzeiten interessiert sind, ist es nicht überraschend, reguläre Sprachen erkannt werden können dass wir einen NFA durch eine DFA simulieren können: • analog zu den Turingmaschinen ersetzen wir die Übergangsfunktion δ : Q × Σ → Q durch eine Relation δ ⊆ Q × Σ × Q. Satz • wir fassen die Relation auch als Abbildung δ : Q × Σ → 2Q auf Zu jedem NFA M mit n Zuständen gibt es einen äquivalenten DFA M 0 mit 2n Zuständen. • dabei ist δ(q, a) die Menge der Zustände, die mit (q, a) in Relation stehen Beweis: • wie vorher setzen wir δ auf Q × Σ∗ fort, indem wir induktiv für w = w 0 a setzen: δ(q, w ) = [ • setze Σ0 = Σ • die Zustandsmenge Q 0 entspricht der Potenzmenge von Q δ(q 0 , a) q 0 ∈δ(q,w 0 ) • M 0 soll sich nach Lesen des Inputs x in dem Zustand q 0 ∈ Q 0 • dies definiert einen nichtdeterministischen endlichen Automaten befinden, der den in M bei Input x erreichbaren Zuständen entspricht. (NFA) 51 / 53 52 / 53 endliche Automaten • wir setzen q00 = {q0 } und F 0 = {q 0 ∈ Q 0 : q 0 ∩ F 6= ∅} und δ 0 (q 0 , a) = [ δ(q, a). q∈q 0 • wir zeigen per Induktion über |x |, dass δ 0 (q00 , x ) = δ(q0 , x ) für alle x ∈ Σ∗ ist: • für |x | = 0 ist x = ε und δ 0 (q00 , ε) = q00 = {q0 } = δ(q0 , ε) • für x = x 0 a gilt dann per Induktion δ 0 (q00 , x ) = δ 0 (δ 0 (q00 , x 0 ), a) = δ 0 (δ(q0 , x 0 ), a) [ = δ(q, a) q∈δ(q0 ,x 0 ) = δ(q0 , x ). • daraus folgt, dass M 0 ebenfalls die Sprache L akzeptiert. 53 / 53