WS07/08 Automaten und Formale Sprachen 14. Vorlesung Martin Dietzfelbinger 29. Januar 2008 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 Klausur: Mittwoch, 5. März 2008 17:00 Uhr, Helmholtz-Hörsaal Keine Hilfsmittel! Themen: Stoff der Vorlesung: Definitionen, Sätze, Sachverhalte Übungsaufgaben Möglich: Beweis aus der Vorlesung. Vorbereitungszeit? 4P ˆ= ca. 120 Stunden Gesamtaufwand für diese Veranstaltung. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 1 Stichworte (etzte Vorlesung) EBNF Syntaxdiagramme Nichtdeterministische automaten... und ihre Sprachen Formale Definition Ein nichtdeterministischer automat M (englisch: nondeterministic pushdown automaton; Abk.: NPDA) besteht aus 6 Komponenten: Q, endliche, nichtleere Zustandsmenge Σ, alphabet Γ, alphabet q 0 Q, Startzustand Z 0 Γ, Anfangs--Zeichen δ : Q (Σ {ε}) Γ P < (Q Γ ) (Tabelle!) (P < (R) = {T R T endlich }, für Mengen R.) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 2 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 3
Beispiel 2 Palindrome gerader änge ohne Mittezeichen: 2 = {w w R w {a, b, c} } Der NPDA benutzt Nichtdeterminismus, um die Mitte zu raten. Q = {, R} Σ={a, b, c} Γ={A, B, C, } q 0 = Z 0 = δ ist durch folgende Tabelle gegeben. δ A B C (, a) (, A) (, AA) (, AB) (, AC) (, b) (, B) (, BA) (, BB) (, BC) (, c) (, C) (, CA) (, CB) (, CC) (,ε) (R,ε) (R, A) (R, B) (R, C) (R, a) (R,ε) (R, b) (R,ε) (R, c) (R,ε) Wo ist die nichtdeterministische Entscheidungsmöglichkeit? In Zustand : ese a Σ oder schalte mit einem ε-schritt in Zustand R. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 4 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 4 Graphische Darstellung Start Akzeptierungsmodus, informal Gegeben: NPDA M und wort x = a 1 a n Σ a, b, c, a, u b, u A B C Au B u ε, u u ε, ε R a, A b, B c, C ε ε ε Starte mit esekopf auf erstem Buchstaben a 1, im Startzustand q 0, mit Zeichen Z 0 im Führe Schritt für Schritt legale Züge gemäß δ durch Eine Situation, in der w vollständig gelesen und der leer ist, heißt akzeptierend c, u Cu u steht für A, B oder C Wir sagen, dass M die w akzeptiert, falls es mindestens eine Folge legaler Schritte gibt, die zu einer akzeptierenden Situation führt. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 5 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 6
Formalisierung: Konfigurationen Definition Ein Tripel (q, w, γ) Q Σ Γ heißt eine Konfiguration von M. In Beispiel 2: (, aabbc, BBC) oder (R, aabbc, CCC) Soll bedeuten: q: gegenwärtiger Zustand w: Restwort, noch zu lesen γ: inhalt (egale) Konfigurationsübergänge Definition M sei NPDA. Wenn k =(q, au, Zγ) Konfiguration ist, a Σ,u Σ, und (q,z 1 Z r ) δ(q, a, Z), dann schreiben wir (q, au, Zγ) M (q,u,z 1 Z r γ)=k. Wenn k =(q, u, Zγ) Konfiguration ist, und (q,z 1 Z r ) δ(q, ε, Z), dann schreiben wir (q, u, Zγ) M (q,u,z 1 Z r γ)=k. Jedesmal heißt k eine Nachfolgekonfiguration von k. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 7 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 8 Eine Konfiguration k kann keine, eine, oder mehrere verschiedene Nachfolgekonfigurationen haben. In Beispiel 2: (, aabbc, BBC) M (, abbc, ABBC) (, aabbc, BBC) M (R, aabbc, BBC) (Auch dumme Übergänge können legal sein.) (R, aabbc, BBC) hat keine Nachfolgekonfiguration. Es kommt nicht darauf an, ob k und k in echten Berechnungen vorkommen: (, abc, BBC A) M (, bc, ABBC A) M (oder, wenn M gegeben ist) ist Relation auf der Menge K M aller Konfigurationen von M. (Achtung: K M ist eine (abzählbar) unendliche Menge.) Definition Wir schreiben k M k, wenn es eine Konfigurationsfolge k = k 0,k 1,...,k r = k, r 0, gibt mit Beachte: k M k. k 0 M k 1 M k 2 M M k r. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 9 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 10
Definition Sei M NPDA, x wort zu M. Wir sagen, dass M x akzeptiert, wenn es ein q Q gibt derart dass (q 0,x,Z 0 ) M (q, ε, ε). Das heißt:... wenn es eine Folge k 0 M M k r gibt mit k = init M (x) :=(q 0,x,Z 0 ) (Startkonfiguration) und k r =(q, ε, ε) (akzeptierende (Halte-)Konfiguration) Eine solche Folge heißt eine akzeptierende Berechnung von M auf x. In Beispiel 2: und akzeptiere! (, cbbc, ) (, bbc, C) (, bc, BC) (R, bc, BC) (R, c, C) (R,ε,ε) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 11 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 12 In Beispiel 2: (, cbbc, ) (, bbc, C) (, bc, BC) (, c, BBC) (R, c, BBC) keine Nachfolgekonfiguration Sackgasse dies ist eine Berechnung, aber keine akzeptierende Berechnung! Definition Für einen NPDA M =(Q, Σ, Γ,q 0,Z 0,δ) definieren wir M := {x Σ M akzeptiert x}. D.h.: x M genau dann wenn es eine akzeptierende Berechnung von M auf x gibt. Beachte: Die Definitionen von M, M M sind pur mathematisch kein Bezug zu, Steuereinheit, esen usw. Überblick über alle Berechnungen auf festem x: Baum aller möglichen Berechnungen zum Beispiel: (x M der Baum hat ein Blatt (q, ε, ε).) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 13 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 14
Startkonfiguration: (,abbbba, ) Top-Down-Parsing, Beispiel (,bbbba,a) (R,abbbba, ε ) (,bbba,ba) (R,bbbba,A) (,bba,bba) (R,bbba,BA) (,ba,bbba) (R,bba,BBA) (,a,bbbba) (R,ba,BBBA) (, ε,abbbba) (R,a,BBBBA) (R,a,BBA) (R, ε,abbbba) (R,bba,A) (R,ba,BA) (R,a,A) (R, ε, ε ) G =(V,Σ,S,P) mit V = {S}, Σ={(, )}, Produktionen S (S)S ε erzeugt die Klammersprache. NPDA M: alphabet Γ={S, (, )} Anfangs--Zeichen S Expandiere : Oberstes zeichen S mit ε-zug durch (S)S oder ε ersetzen ese : Oberstes zeichen a Σ und a das nächste Zeichen in der lese a und streiche a vom FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 15 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 16 : ()(()()) Resteingabe gelesen nächste Aktion ()(()()) S E: S (S)S ()(()()) (S)S : ( )(()()) ( S)S E: S ε )(()()) ( )S : ) (()()) () S E: S (S)S (()()) () (S)S : ( ()()) ()( S)S E: S (S)S ()()) ()( (S)S)S : ( )()) ()(( S)S)S : ()(()()) Resteingabe gelesen nächste Aktion )()) ()(( S)S)S E: S ε )()) ()(( )S)S : ) ()) ()(() S)S E: S (S)S ()) ()(() (S)S)S : ( )) ()(()( S)S)S E: S ε )) ()(()( )S)S : ) ) ()(()() S)S E: S ε ) ()(()() )S : ) ()(()()) S E: S ε ()(()()) ε Akzeptiere! FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 17 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 18
Eigenschaften dieser Verarbeitungsweise: -Parsing : Von links lesen, inksableitung erzeugen (Konkatenation (gelesene ) bildet inksableitung) Top-Down-Parsing : Ableitungsbaum von der Wurzel beginnend erzeugen Parsing : Syntaxanalyse durchführen Top-Down-Parsing, allgemein Gegeben sei eine kfg G =(V,Σ,S,P). Baue NPDA M G wie folgt: Q = {0}, q 0 =0 (ein Zustand genügt) Γ=V Σ Z 0 = S Expandiere : δ(0,ε,a):={(0,α) A α Produktion } ese : Für jedes a Σ ist δ(0,a,a):={(0,ε)} FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 19 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 20 Satz (5.2.2) Für den eben beschriebenen NPDA M G gilt: MG = (G). Insbesondere: kontextfrei = M für einen NPDA M. Beweis: Zeige für x Σ folgende Aussagen: (i) Eine gegebene inksableitung S = α 0 α t = x kann in eine akzeptierende Berechnung von M G umgebaut werden. (ii) Eine gegebene akzeptierende Berechnung (0,x,S)=k 0 MG MG (0,ε,ε) liefert eine inksableitung für x. Bsp.: S (S)S ((S)S)S (()S)S (()(S)S)S (()()S)S (()())S (()()) S E (S)S ( S)S E ( (S)S)S (( S)S)S E (( )S)S (() S)S E (() (S)S)S (()( S)S)S E (()( )S)S (()() S)S E (()() )S (()()) S E (()()) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 21 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 22
(i) Allgemein: Eine gegebene inksableitung S = α 0 α t = x kann in eine akzeptierende Berechnung von M G umgebaut werden. Beweis: Erweitere Satzformen um einen Cursor, z.b.. Starte mit β 0 = S = α 0. Invariante: β t ist Satzform α i mit Cursor, irgendwo links vom ersten Nichtterminal (falls es eines gibt). Wenn in β t auf den Cursor ein Terminalzeichen a folgt, schiebt man den Cursor über a hinweg, um β t+1 zu erhalten (-Schritt). Wenn in β t auf den Cursor eine Variable A folgt, dann ersetzt man A wie im nächsten Ableitungsschritt α i α i+1 (E-Schritt). Ende: α t = x. (Fast) klar: Die entstehende Folge entspricht einer akzeptierenden Berechnung des NPDA M G. inks vom Cursor: Gelesene. Rechts vom Cursor: inhalt. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 23 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 24 (ii) Eine gegebene akzeptierende Berechnung (0,x,S)=k 0 MG MG (0,ε,ε) der änge t liefert eine inksableitung für x. Beweis: Man betrachtet die Folge S = β 0,β 1,...,β t = x, die sich ergibt, wenn man nach jedem M-Schritt die Folge (gelesener Teil der ) (inhalt) notiert. -Schritte führen zu einer Wiederholung (die man ignoriert). E-Schritte führen zur Anwendung einer legalen Produktion auf die am weitesten links stehende Variable (weil der gelesene teil keine Variablen enthält). Bezeichnung Top-Down-Syntaxanalyse : Produktionen werden in einer Reihenfolge angewendet, die einem Aufbau des Ableitungsbaums von der Wurzel her nach unten entspricht. Problem: Nichtdeterminismus Wunsch: Entscheide in E-Schritten deterministisch, welche Produktion auf die oberste variable anzuwenden ist. Sogenannte (1)-Grammatiken erlauben es, diese Entscheidung zu treffen, wobei als Zusatzinformation genau ein weiteres Zeichen der angesehen wird. ookahead von 1 Zeichen. (Verallgemeinerung: (k), k 1. Details: Nächstes Mal.) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 25 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 26
Straffung der Arbeit: Unmittelbares esen Gegeben: kfg G =(V,Σ,S,P). Baue NPDA M G wie folgt: Q = {0}, q 0 =0, Γ=V Σ, Z 0 = S Expandiere : Wenn A Z 1 Z r Produktion ist, und r =0oder Z 1 V, dann ist (0,Z 1 Z r ) δ(0,ε,a) ese : Für jedes a Σ ist (0,ε) δ(0,a,a) Expandiere/ese : Wenn A Z 1 Z r Produktion ist, und Z 1 = a Σ, dann ist (0,Z 2 Z r ) δ(0,a,a) Auch dieser NPDA akzeptiert genau die Wörter aus (G). Beispiel: Klammersprache Produktionen: S (S)S ε NPDA: Q = {0}, Σ={(, )}, Γ={S, (, )}, Z 0 = S; δ(0, ), )) ={(0,ε)} ese δ(0, (,S)={(0,S)S)} Expandiere/ese δ(0,ε,s)={(0,ε)} Expandiere. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 27 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 28 Greibach-Normalform Die letzte Konstruktion ist günstig besonders wenn jede Produktion die Form hat: A ab 1 B r,a Σ,r 0,B 1,...,B r V Greibach-Normalform Jeder Schritt liest genau ein Zeichen. Satz Man kann jede kfg G, ε/ (G), in eine äquivalente Grammatik G in Greibach-Normalform umbauen. oder: R-Parsing oder: Shift-Reduce-Parsing Bottom-Up-Syntaxanalyse... liest von links nach rechts, erzeugt Rechtsableitung, erzeugt Ableitungsbaum von unten nach oben. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 29 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 30
Anfang: a 1 a 2......... a n unten Z.... a r Z1 i......... an gelesen Steuereinheit oben unten oben Steuereinheit Aktion shift : ese ein Zeichen in den. Zwischensituation: Z.... a r Z1 i......... an Z r.... Z 1 a i Steuereinheit gelesen a i+1.... a n unten oben Steuereinheit gelesen FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 31 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 32 unten Z.... a r Z1 i......... an gelesen Steuereinheit oben Aktion reduce : Wende Produktion A Z s Z 1 rückwärts! auf s obere zeichen an. Rückwärts! Zr.... Z s +1 A Steuereinheit gelesen a i......... a n Entscheidung zwischen verschiedenen möglichen Zügen: (hier) nichtdeterministisch Beispielgrammatik: (Klammersprache ohne ε) S (S)S () (S) ()S. (())((()())()) shift: ( (.())((()())()) shift: (( ((.))((()())()) shift: (() (().)((()())()) reduce: (S (().)((()())()) shift: (S) (()).((()())()) Griff :() FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 33 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 34
(S) (()).((()())()) Griff :(S) Shift-Reduce-Konflikt : für shift entschieden shift: (S)( (())(.(()())()) shift: (S)(( (())((.()())()) shift: (S)((( (())(((.)())()) shift: (S)((() (())((().())()) Konflikt! shift shift: (S)((()( (())((()(.))()) shift: (S)((()() (())((()().)()) (S)((()() (())((()().)()) Konflikt! reduce reduce: (S)((()S (())((()().)()) Konflikt! reduce reduce: (S)((S (())((()().)()) shift: (S)((S) (())((()()).()) Konflikt! shift shift: (S)((S)( (())((()())(.)) shift: (S)((S)() (())((()())().) reduce: (S)((S)S (())((()())().) reduce: (S)(S (())((()())().) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 35 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 36 S (S)(S (())((()())().) shift: (S)(S) (())((()())()). reduce: (S)S (())((()())()). ( S ) ( ) S ( ) S reduce: S (())((()())()). Schluss-Schritt: leere ε ( S ) S ( ) ( ) S ( ) FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 37 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 38
Im Ableitungsbaum: Arbeiten von den Blättern startend: Bottom-Up Beobachtung: Von unten nach oben gelesen, bilden die Konkatenationen inhalt Restwort eine Rechtsableitung für das wort w. Technisches Problem: Wenn t = max{ α A α Produktion }, muss die Steuereinheit zur Entscheidung über den nächsten Zug die t obersten symbole kennen. Trick: t symbole (cacheartig) in der Steuereinheit aufbewahren. (Details: Skript.) Auch bottom-up-parsing führt zum Resultat: G kontextfreie Grammatik (G) = M für einen NPDA M. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 39 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 40 Störend: Nichtdeterminismus. Aufgrund der t obersten zeichen (in Steuereinheit) und 1 weiteren Zeichen der ( ookahead 1 ) löse shift-reduce-konflikte eindeutig auf. Ob eine Grammatik hierfür geeignet ist ( R(1)-Grammatiken ), kann algorithmisch getestet werden. Steuerstruktur (Übergangsfunktion δ in Form von Tabellen) kann aus einer Standard-Beschreibung von G automatisch erzeugt werden. ( Parsergeneratoren, z.b. yacc.) Allgemeiner: R(k)-Grammatiken (k Zeichen ookahead) Basis der meisten realen Compiler. Von automaten zu Grammatiken (5.5) Satz (5.5.1) Wenn M ein NPDA ist, dann gibt es (konstruktiv) eine kontextfreie Grammatik G mit M = (G). Beweis: Tripelkonstruktion (Skript, Details sind nicht prüfungsrelevant.) Also: = M für einen NPDA = (G) für eine kfg G Das Maschinenmodell für die 2 -Sprachen ist der NPDA. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 41 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 42
Von automaten zu Grammatiken Tripelkonstruktion. Gegeben: M =(Q, Σ, Γ,q 0,Z 0,δ). V := {S} { q, A, p p, q Q, A Γ}. Von automaten zu Grammatiken Absicht: Für q, p Q, A Γ und w Σ soll gelten: q, A, p G w (q, w, A) M (p, ε, ε). ( ) In Worten: Es gibt einen G-Ableitungsbaum mit Wurzel q, A, p und Ergebnis (Blattinschrift) w M kann von Zustand q mit A als oberstem symbol die Teileingabe w lesen, dabei Zustand p erreichen und das Zeichen A aus dem streichen. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 43 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 44 Von automaten zu Grammatiken Produktionen: (i) S q 0,Z 0,p, für jedes p Q. Von automaten zu Grammatiken Angenommen, folgendes gilt: q, A, p G w (q, w, A) M (p, ε, ε). ( ) (ii) q, A, q m+1 a q 1,A 1,q 2 q 2,A 2,q 3 q m,a m,q m+1, für (q, a, A) Q (Σ {ε}) Γ,q 1,...,q m+1 Q, m 0, wo (q 1,A 1 A m ) δ(q, a, A). Beachte: G wird aus M ganz formal, mechanisch gebildet. Dann: w M p Q :(q 0,w,Z 0 ) M (p, ε, ε) p Q : q 0,Z 0,p G w S G w w (G). FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 45 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 46
Von automaten zu Grammatiken Die Äquivalenz q, A, p G w (q, w, A) M (p, ε, ε) ( ) Bis zum nächsten Mal: Folien aus Netz besorgen, durcharbeiten. Skript Seiten 177 185, 191 196, 198 199 oben durcharbeiten. Definitionen lernen, Beispiele ansehen, Fragen vorbereiten. beweist man und, für jede Richtung einzeln, jeweils mit einer geeigneten Induktion. Details: Skript. FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 47 FG KTuEA, TU Ilmenau Automaten und Formale Sprachen WS07/08 29.01.2008 48