Kellerautomaten u. kontextfr. Spr. Ziel: Maschinenmodell für die kontextfreien Sprachen. Überblick Greibach-Normalform für kontextfreie Grammatiken Kellerautomaten Beziehung zwischen Kellerautomaten und kontextfreien Sprachen 558
Greibach-Normalform Definition T 7.1.1: Eine kontextfreie Grammatik ist in Greibach-Normalform, wenn alle Regeln von der Form A bα mit A V, b T, α V* sind. Beispiele: A abcde, A ab, A a Anmerkung: Erzeugung des leeren Worts nicht möglich (wie auch bei der Chomsky- Normalform) 559
Umformung in Greibach-NF Satz T7.1.2: Sei G eine kontextfreie Grammatik, so dass ε L(G). Es gibt einen Algorithmus, der eine kontextfreie Grammatik G in Greibach-Normalform mit L(G )=L(G) konstruiert. 560
Bemerkungen: Grammatiken können bei der Umformung in Greibach-Normalform viel größer werden. Linksableitungen haben bei Grammatiken in Greibach-Normalform eine besondere Form: In jedem Schritt wird ein Buchstabe abgeleitet und die Buchstaben werden von links nach rechts abgeleitet. 561
Beispiel für eine Ableitung Grammatik in Greibach-Normalform: S asa, S bsb, S aa, S bb A a, B b. Akzeptierte Sprache: L={ww R w {a,b} + }. S asa absba abaaba abaaba abaaba abaaba 562
Arbeitsw. des zug. Maschinenmodells S asa absba abaaba abaaba abaaba abaaba Eingabeband: a b a a b a Speicher: S asa, S bsb, S aa, S bb A a, B b 563
Maschinenmodell ergibt sich auf natürliche Weise als nichtdeterministisches Modell Name: NPDA nondeterministic pushdown automaton bzw. nichtdeterministischer Kellerautomat Ungewöhnlicher Akzeptanzmodus: Es muss gleichzeitig das Wortende erreicht werden und der Stack leer sein. Hilfreich: ε-übergänge. 564
NPDAs werden beschrieben durch Q endliche Zustandsmenge Σ endliches Eingabealphabet Γ endliches Stackalphabet q 0 Q Startzustand Z 0 Γ Initialisierung des Stacks δ: (Q (Σ {ε}) Γ) P(Q Γ*) Übergangsfkt. alter Zustand gelesenes Zeichen gelesenes Kellersymbol neuer Zustand geschriebene Kellersymbole 565
Konfigurationen von NPDAs bestehen aus Zustand q, dem noch zu lesenden Rest w der Eingabe und dem Stackinhalt Z. Schreibweise: (q,w,z). (q,w,z) (q,w,z ), falls der Konfig.übergang in einem Schritt möglich ist. (q,w,z) * (q,w,z ), falls der Konfig.übergang in endlich vielen Schritten möglich ist. 566
Akzeptanzmodi Variante 1 leerer Stack: Es wird akzeptiert, wenn nach dem Lesen der Eingabe der Stack leer ist. Formaler: Das Wort w wird akzeptiert, wenn es einen zulässigen Rechenweg mit (q 0,w,Z 0 ) * (q,ε,ε) gibt. 567
Variante 2 akzeptierende Zustände: Es gibt zusätzlich eine Menge F Q und es wird akzeptiert, wenn nach dem Lesen der Eingabe ein Zustand aus F erreicht werden kann. Formaler: Das Wort w wird akzeptiert, wenn es einen zulässigen Rechenweg mit (q 0,w,Z 0 ) * (q,ε,γ) und q F gibt. Nach dem Erreichen von q F darf noch in einen nichtakzeptierenden Zustand gewechselt werden und es wird trotzdem akzeptiert. 568
Beispiel: L={ww R w {a,b} + }. Q={q 0 }, Σ={a,b}, Γ={S,A,B}, Z 0 =S, δ(q 0,a,S)={(q 0,SA),(q 0,A)} δ(q 0,b,S)={(q 0,SB),(q 0,B)}, δ(q 0,a,A)={(q 0,ε)}, δ(q 0,b,B)={(q 0,ε)} ergibt sich direkt aus der kontextfreien Grammatik in Greibach-Normalform. ist nichtdeterministisch. ein Zustand reicht. S asa, S bsb, S aa, S bb, A a, B b 569
Beispiel: L={w#w R w {a,b}*}. Q={q 0,q 1 }, Σ={a,b,#}, Γ={S,A,B}, Z 0 =S, δ(q 0,a,S)=(q 0,SA), δ(q 0,b,S)=(q 0,SB), δ(q 0,#,S)=(q 1,ε), δ(q 1,a,A)=(q 1,ε), δ(q 1,b,B)=(q 1,ε) ergibt sich auch direkt aus der kontextfreien Grammatik in Greibach-Normalform. ist deterministisch. Naheliegende Vermutung: für L={ww R w {a,b} + } gibt es keinen DPDA. S asa, S bsb, S #, A a, B b 570
DPDAs Wir nennen einen NPDA deterministisch, wenn q Q, a Σ, Z Γ: δ(q,a,z) + δ(q,ε,z) 1. Bedeutung: Der Automat hat keine Wahlmöglichkeiten. Name: DPDA (deterministic pushdown automaton) 571
Fragen zu Kellerautomaten Zeige, dass die beiden Akzeptanzmodi für NPDAs äquivalent sind [T7.2]. Zeige, dass NPDAs genau die kontextfreien Sprachen akzeptieren [T7.3]. Benutze DPDAs, um Algorithmen für das Parsing zu entwerfen. 572
Akz. Zustände leerer Stack Satz T7.2.3: Sei A ein NPDA, der L mit Hilfe der Menge F von akzeptierenden Zuständen erkennt. Dann kann in lin. Zeit ein NPDA B für L konstruiert werden, der mit leerem Stack akzeptiert. Probleme: Stack von A kann leer werden, ohne dass akzeptiert wird neues unterstes Symbol Am Ende der Rechnung von A ist der Stack nicht leer Zustand, um d. Stack zu leeren. 573
Formalisierung Sei A=(Q A,Σ,Γ A,q A,Z A,δ A,F ). Erzeuge B: Q B = Q A {q B,q E } Γ B =Γ A {Z B } Startzustand von B Zustand, um Stack zu leeren Initialisierung des Stacks für B δ B : Übergangsrelation für B Erzeugt Stackinhalt Z A Z B am Anfang, entspricht während der Rechnung δ A, leert den Stack, wenn Zustand aus F erreicht wird. 574
Angabe von δ B δ B (q B,ε,Z B )={(q A,Z A Z B )} erzeugt Stackinhalt Z A Z B am Anfang δ B (q,a,z) δ A (q,a,z) für alle q Q A, a Σ {ε}, Z Γ A. δ B (q,ε,z) {(q E,ε)} für alle q F, Z Γ B δ B (q E,ε,Z)={(q E,ε)} für alle Z Γ B entspricht während der Rechnung δ A Entleeren des Stacks, falls Zustand aus F erreicht. 575
Leerer Stack akzept. Zustände Satz T7.2.3: Sei A ein NPDA (DPDA), der L mit leerem Stack akzeptiert. Dann kann in linearer Zeit ein NPDA (DPDA) B konstruiert werden, der L mit akzeptierenden Zuständen erkennt. Idee: Lege zu Beginn Symbol Z B unten auf den Stack. Wenn in A Stack leer, wird nun Z B gelesen PDA kann in akzept. Zustand gehen. 576
Formalisierung Sei A=(Q A,Σ,Γ A,q A,Z A,δ A ). Erzeuge B: Q B = Q A {q B,q F } Γ B =Γ A {Z B } F={q F } δ B : Übergangsrelation für B Startzustand von B akzeptierender Zustand Initialisierung des Stacks für B 577
Angabe von δ B δ B (q B,ε,Z B )={(q A,Z A Z B )} erzeugt Stackinhalt Z A Z B am Anfang δ B (q,a,z)=δ A (q,a,z) für alle q Q A, a Σ {ε}, Z Γ A. entspricht während der Rechnung δ A δ B (q,ε,z B )={(q F,ε)} für alle q Q A Bei Stackinhalt Z B in q F gehen Beobachtung: B ist deterministisch, falls A deterministisch ist. 578
Kontextfreie Grammatik NPDA Satz T7.3.1: Sei G eine kontextfreie Grammatik für L in Greibach-Normalform. Dann kann in linearer Zeit ein NPDA A konstruiert werden, der L mit leerem Stack akzeptiert. 579
Kontextfreie Grammatik NPDA Sei G=(V,Σ,P,S) in Greibach-Normalform. Konstruiere NPDA (Akz. mit leerem Stack): Q={q 0 }, q 0 : Startzustand, Γ=V (Variablenmenge) Z 0 =S (Startsymbol) δ(q 0,a,A)={(q 0,α) (A aα) P} Zwischenbehauptung: i S w 1 w i A 1 A m Der NPDA kann beim Lesen von w 1 w i den Stackinhalt A 1 A m erzeugen. 580
Korrektheit Induktion über i. i=0. Trivial i S w 1 w i A 1 A m Der NPDA kann beim Lesen von w 1 w i den Stackinhalt A 1 A m erzeugen. 581
i 1 S w 1 w i A 1 A m S w 1 w i 1 A A r A m w 1 w i A 1 A m NPDA kann beim Lesen von w 1 w i 1 den Stackinhalt A A r A m erzeugen und es gibt die Regel A w i A 1 A r 1. NPDA kann beim Lesen von w 1 w i den Stackinhalt A 1 A m erzeugen. I.V. i i 1 i S w 1 w i A 1 A m Der NPDA kann beim Lesen von w 1 w i den Stackinhalt A 1 A m erzeugen. 582
Also gilt: n S w 1 w n Der NPDA kann beim Lesen von w 1 w n den Stackinhalt ε erzeugen. Es gibt eine akzeptierende Rechnung des NPDAs auf w 1 w n. i S w 1 w i A 1 A m Der NPDA kann beim Lesen von w 1 w i den Stackinhalt A 1 A m erzeugen. 583
NPDA kontextfreie Grammatik Satz T7.3.2: Jede von einem NPDA akzept. Sprache ist kontextfrei. Beweis: O.B.d.A. sei ein NPDA A für L gegeben, der mit leerem Stack akzeptiert. Angabe der Grammatik: Startsymbol S, V = {S} { [q,x,p] p,q Q, X Γ}, T = Σ. Tripelkonstruktion [q,x,p] w * NPDA kann Zustand p mit leerem Stack nach Lesen von w erreichen, wenn er im Zustand q mit Stackinhalt X gestartet wird. 584
Ableitungsregeln S [q 0,Z 0,q] für alle q Q. Falls (q 1,Y 1 Y m ) δ(q,a,x) mit m>0: Erzeuge für alle q 2,,q m+1 Q die Regeln [q,x,q m+1 ] a[q 1,Y 1,q 2 ][q 2,Y 2,q 3 ] [q m,y m,q m+1 ]. Falls (q 1,ε) δ(q,a,x): Erzeuge Regel [q,x,q 1 ] a. a=ε möglich [q,x,p] w * NPDA kann Zustand p mit leerem Stack nach Lesen von w erreichen, wenn er im Zustand q mit Stackinhalt X gestartet wird. 585
Bsp. L={w#w R w {a,b}*} δ(q 0,a,Z)=(q 0,ZA) δ(q 0,b,Z)=(q 0,ZB) δ(q 0,#,Z)=(q 1,ε) δ(q 1,a,A)=(q 1,ε) δ(q 1,b,B)=(q 1,ε) S [q 0,Z,q 0 ], S [q 0,Z,q 1 ] [q 0,Z,q 0 ] a[q 0,Z,q 0 ][q 0,A,q 0 ] [q 0,Z,q 0 ] a[q 0,Z,q 1 ][q 1,A,q 0 ] [q 0,Z,q 1 ] a[q 0,Z,q 0 ][q 0,A,q 1 ] [q 0,Z,q 1 ] a[q 0,Z,q 1 ][q 1,A,q 1 ] [q 0,Z,q 0 ] b[q 0,Z,q 0 ][q 0,B,q 0 ] [q 0,Z,q 0 ] b[q 0,Z,q 1 ][q 1,B,q 0 ] [q 0,Z,q 1 ] b[q 0,Z,q 0 ][q 0,B,q 1 ] [q 0,Z,q 1 ] b[q 0,Z,q 1 ][q 1,B,q 1 ] [q 0,Z,q 1 ] # [q 1,A,q 1 ] a [q 1,B,q 1 ] b 586
Korrektheit Zwischenbehauptung: p,q Q, X Γ, w Σ*: [q,x,p] * w (q,w,x) * (p,ε,ε) [q,x,q m+1 ] a[q 1,Y 1,q 2 ][q 2,Y 2,q 3 ] [q m,y m,q m+1 ] für alle q 2,,q m+1 Q, falls δ(q,a,x) (q 1,Y 1 Y m ). 587
Schritt 2: Zw.Beh Gram. erz. L w L p Q: (q 0,w,Z 0 ) * (p,ε,ε) p Q: [q 0,Z 0,p] * w p Q: S [q 0,Z 0,p] * w w L(G) p,q Q, X Γ, w Σ*: * [q,x,p] w (q,w,x) (p,ε,ε) * 588
Schritt 1a: Bew. der Zw.beh. Induktion über Länge k der Ableitung [q,x,p] w. k=1. Dann gibt es die Regel [q,x,p] w. (p,ε) δ(q,w,x) und w 1. (q,w,x) (p,ε,ε). k p,q Q, X Γ, w Σ*: * [q,x,p] w (q,w,x) (p,ε,ε) * 589
Induktionsschritt k>1. Erster Ableitungsschritt (mit q m+1 =p): [q,x,p] a[q 1,Y 1,q 2 ][q 2,Y 2,q 3 ] [q m,y m,q m+1 ] k 1 a w 1 w 2 w m = w Also gilt nach I.V.: (q j,w j,y j ) * (q j+1,ε,ε) und (q j,w j,y j Y j+1 Y m ) * (q j+1,ε,y j+1 Y m ) p,q Q, X Γ, w Σ*: * [q,x,p] w (q,w,x) (p,ε,ε) * 590
(q j,w j,y j Y j+1 Y m ) (q j+1,ε,y j+1 Y m ) Also: * * * * * 591
Schritt 1b: Bew. der Zw.beh. Induktion über die Länge k der Rechnung (q,w,x) * (p,ε,ε) des NPDAs. k=1. Dann w 1 und (p,ε) δ(q,w,x). Es gibt Regel [q,x,p] w in G. p,q Q, X Γ, w Σ*: * * [q,x,p] w (q,w,x) (p,ε,ε) 592
Induktionsschritt Sei k>1 und (q,w,x) (p,ε,ε). Zerlege w in aw mit ε, falls erster Rechenschritt ε-bewegung, a = erster Buchstabe von w, sonst. Ersten Rechenschritt aufschreiben: k-1 (q,aw,x) (q 1,w,Y 1 Y m ) (p,ε,ε). k Zerlege w in w 1 w m, so dass nach Lesen von w 1,w j erstmals Stackinhalt Y j+1 Y m. Erreichter Zustand: q j+1. Dann k-1 (q j,w j w m,y j Y m ) (q j+1,w j+1 w m,y j+1 Y m ) 593
k-1 (q j,w j w m,y j Y m ) (q j+1,w j+1 w m,y j+1 Y m ), wobei Y j+1 nicht gelesen wird. Dann gilt auch k-1 (q j,w j,y j ) (q j+1,ε,ε). I.V. impliziert: [q j,y j,q j+1 ] * w j. Insgesamt: [q,x,p] a[q 1,Y 1,q 2 ][q 2,Y 2,q 3 ] [q m,y m,q m+1 ] * aw 1 w m =w. 594
Gesamtergebnis Satz T7.3.3: Die Menge der von NPDAs erkannten Sprachen ist gleich der Menge der kontextfreien Sprachen. Folgerung aus den Beweisen: NPDAs kommen mit einem Zustand aus (da der Beweis von Satz T7.3.1 mit einem Zustand auskommt). 595