Theorie für MI Parsebäume E ndliche A utom aten Ä quivalenz der A utom atenm odelle Ein P arsebaum ist ein B aum , dessen K noten m it Sym bolen aus V ∪ Σ beschriftet sind, m it: R eguläre A usdrücke P um ping Lem m a K ontextfreie Sprachen P ushdow n-A utom aten I innere K noten sind m it A ∈ V beschriftet I B lätter sind m it A ∈ V oder a ∈ Σ beschriftet. I ist ein K noten m it A ∈ V beschriftet, und seine K inder m it X1 ,...,Xk , dann ist A → X1 ...Xk in P. P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A D as Ergebnis des P arsebaum es ist der String der Sym bole an den B lättern, von links nach rechts gelesen. Parsebäume sind eine kompakte Darstellung, wie ein String aus der Grammatik hergeleitet wird, die von unwesentlichen Details wie der Reihenfolge der Ableitungsschritte abstrahiert. Betrachten Sie als Beispiel die Grammatik aus der letzten Vorlesung für die Sprache Lkl . Ein Parsebaum ist z.B.der folgende, mit der Wurzel K und dem Ergebnis <<K >><>. K K K < K > < < K > > Z ur Vereinfachung betrachten wir in diesem K apitel nur Grammatiken, die Sprachen ohne das Wort erzeugen. Theorie für MI Linksableitung E ndliche A utom aten Ä quivalenz der A utom atenm odelle ` Für γ1 , γ2 ∈ (V ∪ Σ)∗ gilt γ1 ⇒G γ2 , falls: R eguläre A usdrücke P um ping Lem m a I I K ontextfreie Sprachen es gibt eine P roduktion A → β in P, P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A und W örter δ1 ∈ Σ∗ und δ2 ∈ (V ∪ Σ)∗ m it γ1 = δ1 Aδ2 und γ2 = δ1 βδ2 . ` ` ` Eine Folge γ1 ⇒G γ2 ⇒G ... ⇒G γk heißt Linksableitung von γk aus γ1 ` ∗ ` ⇒G ist die reflexive, transitive H ülle von ⇒G . Bei einer Linksableitung ist die Wahlfreiheit gegenüber einer allgemeinen Ableitung eingeschränkt: es muss stets die erste in einem String vorkommende Variable ersetzt werden. Als einziger Freiheitsgrad bleibt die Auswahl der verwendeten Produktion. Eine Linksableitung in der obigen Beispielgrammatik ist die folgende: ` ` ` ` K ⇒ KK ⇒ <K >K ⇒ <<>>K ⇒ <<>><> Äquivalenz Theorie für MI E ndliche A utom aten Ä quivalenz der A utom atenm odelle R eguläre A usdrücke P um ping Lem m a Für eine kontextfreie Grammatik G = (V , Σ, P, S) und Wort w ∈ Σ∗ sind äquivalent: I w ∈ L(G ), also S ⇒∗G w ` ∗ ⇒G I S I Es gibt einen P arsebaum mit Wurzel S und Ergebnis w . K ontextfreie Sprachen P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A w Aus der zweiten Bedingung folgt trivialerweise die Erste, da eine Linksableitung ein Spezialfall einer Ableitung ist. Wir zeigen auf der nächsten Folie, dass die erste Bedingugng die dritte impliziert, und aus der dritten die zweite folgt. Damit ist die Äquivalenz bewiesen. Beide Implikationen müssen in etwas allgemeinerer Form bewiesen werden, wie in den Lemmas auf der nächsten Folie ausgeführt. Beweis der Äquivalenz Theorie für MI E ndliche A utom aten Ä quivalenz der A utom atenm odelle Lem m a R eguläre A usdrücke Für A ∈ V und β ∈ (V ∪ Σ)∗ gilt: falls A ⇒∗G β gilt, dann gibt es einen Parsebaum mit Wurzel A und Ergebnis β P um ping Lem m a K ontextfreie Sprachen P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A Lem m a Für A ∈ V und w ∈ Σ∗ gilt: falls es einen Parsebaum mit Wurzel A und Ergebnis w gibt, ` ∗ dann gilt A ⇒G w . Beweis des ersten Lemmas durch Induktion nach der Länge der Ableitung von β aus A. Induktionsanfang: die Länge ist 0, also β = A. Der Baum aus einem Knoten mit Beschriftung A ist ein Parsebaum mit Wurzel A und Ergebnis A: Induktionsschritt: die Ableitung hat einen letzten Schritt, also A ⇒∗ γ ⇒ β. Nach Induktionsvoraussetzung gibt es einen Parsebaum T mit Wurzel A und Ergebnis γ. Ferner ist γ = δ1 Bδ2 und β = δ1 ηδ2 für eine Produktion B → η in G . Der benötigte Parsebaum entsteht, indem in T unter das Blatt mit Beschriftung B neue Blätter mit den Symbolen aus η gehängt werden. Beweis des zweiten Lemmas durch Induktion nach der Höhe des Parsebaumes. Induktionsanfang: der Baum hat die Höhe 1, also sind die Blätter mit Symbolen in w direkt unter der Wurzel. Dann ist aber A → W eine Produktion ` in G , und somit A ⇒ w . Induktionsschritt: der Baum hat die Höhe h + 1. Seien x1 , . . . , xk die Beschriftungen der Knoten direkt unter der Wurzel, und für i = 1 . . . k sei wi das Ergebnis des Teilbaums mit Wurzel xi , so dass w = w1 . . . wk . Jeder dieser ` ∗ Teilbäume hat Höhe ≤ h, also gilt nach Induktionshypothese xi ⇒ wi . Diese Linksableitungen können zu einer Linksableitung von w aus A kombiniert werden: ` ∗ ` ∗ ` ∗ ` ` ∗ A ⇒ x 1 x 2 . . . x k ⇒ w1 x 1 . . . x k ⇒ w1 w 2 . . . x k ⇒ . . . ⇒ w1 w2 . . . w k Motivation Theorie für MI E ndliche A utom aten Ä quivalenz der A utom atenm odelle Für G = (V , Σ, P, S) und A ∈ V sei R eguläre A usdrücke P um ping Lem m a L(G , A) := { w ∈ Σ∗ ; A ⇒∗G w } K ontextfreie Sprachen P ushdow n-A utom aten Kontextfreie Grammatik = ^ wechselseitig rekursive Definition der Sprachen L(G , A) P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A Verarbeitung rekursiver Funktionen mit Stack. Erweiterung endlicher A utomaten um einen Stack. Obwohl Typ 3-Grammatiken ja auch rekursive Definitionen sind, können reguläre Sprachen von einfachen endlichen Automaten ohne Stack erkannt werden. Das liegt daran, dass die Variablen, also der rekursive Aufruf, hier stets am Ende des Definitionsrumpfes steht. Es handelt sich also um endrekursive Definitionen, und Endrekursionen können bekantlich ohne Stack abgearbeitet werden. Theorie für MI Definition E ndliche A utom aten Ä quivalenz der A utom atenm odelle Ein P ushdow n-A utom at (P D A ) A m it A lphabet Σ besteht aus: R eguläre A usdrücke P um ping Lem m a I Z ustände Q K ontextfreie Sprachen (endlich viele!) P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A I Stack-A lphabet Γ I A nfangszustand q0 ∈ Q I A nfangssym bolZ0 ∈ Γ I Ü bergangsfunktion δ : Q × (Σ ∪ {}) × Γ → 2Q×Γ Kurzschreibweise: ∗ A = (Q, Σ, Γ, δ, q0 , Z0 ) Ein PDA ist also ein -NEA mit einem zusätzlichen Stack. Die Übergangsfunktion liefert zu jedem Zustand, gelesenem Eingabesymbol (oder ) und dem obersten Stacksymbol eine Menge von Paaren, jeweils bestehend aus dem neuen Zustand und einem String aus Stacksymbolen, die das gesehene oberste Stacksymbol ersetzen. Der folgende PDA dient als Beispiel auf den nächsten Folien. Er hat zwei Zustände {q0 , q1 }, von denen q0 der Anfangszustand ist, Alphabet {0, 1}, und ein zusätzliches Stacksymbol Z , das auch Anfangssymbol ist. Die Übergangsfunktion ist durch die folgenden beiden Tabellen definiert, in denen die Zeilen für den Input, die Spalten für das Stacksymbol stehen: q0 0 1 q1 0 1 Z {(q0 , 0Z )} {(q0 , 1Z )} {(q1 , Z )} Z ∅ ∅ {(q1 , )} 0 {(q0 , 00)} {(q0 , 10)} {(q1 , 0)} 0 {(q1 , )} ∅ ∅ 1 {(q0 , 01)} {(q0 , 11)} {(q1 , 1)} 1 ∅ {(q1 , )} ∅ Theorie für MI Konfigurationen E ndliche A utom aten Ä quivalenz der A utom atenm odelle R eguläre A usdrücke P um ping Lem m a Eine Konfiguration eines PDA A = (Q, Σ, Γ, δ, q0 , Z0 ) ist ein Tripel (q, w , γ) ∈ Q × Σ∗ × Γ ∗ , bestehend aus: I dem Z ustand q ∈ Q I dem zu lesenden Eingabew ort w ∈ Σ∗ I dem Stack-Inhalt γ ∈ Γ ∗ K ontextfreie Sprachen P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A Eine Konfiguration ist eine Momentaufnahme der Berechnung eines PDA, in dem sich gemerkt wird, in welchem Zustand der Automat ist, welchen Teil der Eingabe er noch zu verarbeiten hat und was auf dem Stack steht. Durch eine Konfiguration ist der weitere Verlauf der möglichen Berechnungen eindeutig bestimmt. Für nichtdeterministische endliche Automaten war ein solcher Begriff nicht nötig, da die weiteren Berechnungen nur vom Zustand abhängen. Theorie für MI Übergangsrelation E ndliche A utom aten Ä quivalenz der A utom atenm odelle R eguläre A usdrücke P um ping Lem m a Die Übergangsrelation `A zwischen Konfigurationen eines PDA A ist definiert durch: I (q, aw , X γ) `A (p, w , βγ), falls (p, β) ∈ δ(q, a, X ) ist. I (q, w , X γ) `A (p, w , βγ), falls (p, β) ∈ δ(q, , X ) ist. K ontextfreie Sprachen P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A `∗A ist die reflexive, transitive H ülle von `A . Die folgende Folge von Konfigurationen ist eine mögliche Berechnung des Beispiel-PDA bei Eingabe 0110 von oben: (q0 , 0110, Z ) ` (q0 , 110, 0Z ) ` (q0 , 10, 10Z ) ` (q1 , 10, 10Z ) ` (q1 , 0, 0Z ) ` (q1 , , Z ) ` (q1 , , ) Theorie für MI Akzeptierte Sprache E ndliche A utom aten Ä quivalenz der A utom atenm odelle R eguläre A usdrücke P um ping Lem m a Der PDA A akzeptiert ein Wort w , wenn er ausgehend von (q0 , w , Z0 ) eine Konfiguration erreicht, in der der Stack leer ist: D efinition K ontextfreie Sprachen P ushdow n-A utom aten P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A Die vom PDA A = (Q, Σ, Γ, δ, q0 , Z0 ) akzeptierte Sprache ist: L(A) := w ∈ Σ∗ ; (q0 , w , Z0 ) `∗A (p, , ) für ein p ∈ Q Für den Beispiel-PDA oben ist die akzeptierte Sprache ww R ; w ∈ {0, 1} . Um das zu zeigen, sehen wir genauer an, wie der PDA funktioniert. Im Zustand q0 kann der PDA jederzeit entweder das gelesene Input-Symbol auf den Stack pushen, oder ohne einen Input zu lesen in den Zustand q1 wechseln. Im Zustand q1 kann ein Symbol vom Stack gepopt werden, wenn es mit dem gelesenen Inputsymbol übereinstimmt. Ist nur noch das Startsymbol auf dem Stack, kann dieses auch entfernt werden, dann wird akzeptiert sofern der input aufgebraucht war. Das heißt, der PDA errät nichtdeterministisch die Mitte des Strings, schiebt die vordere Hälfte auf den Stack und gleicht sie dann mit der hinteren Hälfte ab. Somit akzeptiert er genau die genannte Sprache. Theorie für MI PDA und kontextfreie Sprachen E ndliche A utom aten Satz Ä quivalenz der A utom atenm odelle Die von PDA erkannten Sprachen sind genau die kontextfreien Sprachen. R eguläre A usdrücke P um ping Lem m a K ontextfreie Sprachen P ushdow n-A utom aten Dazu zeigen wir zwei Teile: Lem m a P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A Für jede Typ 2-Gram m atik G gibt es einen PDA AG m it L(AG ) = L(G ). Lem m a Für jeden PDA A gibt es eine Typ 2-Gram m atik GA m it L(GA ) = L(A). Die Äquivalenzen werden wir nicht formal beweisen. Das erste Lemma ist relativ einfach zu beweisen, indem die nach der Konstruktion auf der nächsten Folie stehende Behauptung durch Induktion nach der Länge einer Linksableitung gezeigt wird. Die Konstruktion wird an einem Beispiel verdeutlicht. So wie der PDA aus dieser Konstruktion funktionieren im wesentlichen auch in der Praxis Parser für kontextfreie Sprachen. Es ist dabei nur dafür zu sorgen, dass der Ablauf des PDA deterministisch gemacht werden kann. Dafür gibt es zahlreiche Methoden, die für verschiedene Teilklassen der kontextfreien Grammatiken funktionieren. Die umgekehrte Richtung ist schwieriger, aber auch für die Praxis weniger bedeutsam, daher zeigen wir sie hier nicht. Theorie für MI Von der Typ 2-Grammatik zum PDA E ndliche A utom aten Ä quivalenz der A utom atenm odelle Aus G = (V , Σ, P, S) definiere den PDA AG wie folgt: R eguläre A usdrücke Z ustände Q = {q} P um ping Lem m a I Stack-Alphabet Γ = V ∪ Σ P ushdow n-A utom aten I Anfangszustand q, Anfangssym bol S. I Für jedes a ∈ Σ ist (q, ) ∈ δ(q, a, a) I Für jede Produktion A → β ist (q, β) ∈ δ(q, , A) I K ontextfreie Sprachen ` ∗ Z u zeigen: falls ` ∗ P arsebäum e und Linksableitungen D efinition von P ushdow n-A utom aten Ä quivalenz von kfG und P D A für ein u m it w = uv , S ⇒G uγ ⇒G w (q, w , S) `∗AG (q, v , γ) dann gilt: Betrachte als Beispiel die bekannte Grammatik mit den Produktionen K → KK , K → <K > und K → <> und Startsymbol K . Der konstruierte PDA hat nur einen Zustand q und das Startsymbol K , sowie die Übergänge: q < > K ∅ ∅ {(q, KK ), (q, <K >), (q, <>)} < {(q, )} ∅ ∅ > ∅ {(q, )} ∅ E ine Linksableitung in dieser Grammatik ist ` ` ` ` K ⇒ KK ⇒ <K >K ⇒ <<>>K ⇒ <<>><> Dieser entspricht der folgende Ablauf des Automaten, wobei in den K onfigurationen nur der R estinput und Stack angegeben sind: ` ` ` ` ` `∗ ` `∗ <<>><> <<>><> <<>><> <>><> <>><> >><> <> <> K KK <K >K K >K <>>K >>K K <>