Kellerautomaten
Kellerautomaten 8 Spracherkennung (Syntaxanalyse) Algorithmus gesucht, der für L T (möglichst schnell) entscheidet, ob w L (Lösung des Wortproblems) Grammatik Automat Aufwand rechtslinear endlich linear kontextfrei?? Problem: endliche Automaten können nicht unbeschränkt mitzählen und sich keine unbeschränkt langen Teilwörter merken
Kellerautomaten 9 Beispiel: Klammerstrukturen L = {a n b n n N} nicht regulär kontextfrei erzeugt durch S ::= asb λ
Kellerautomaten 10 Idee: Endlicher Automat mit Zähler a ; +1 b ; 1 a s b ; 1 b s a a a s a s a s b b s b b s Zähler 0 1 2 1 0
Kellerautomaten 11 Beispiel: Palindrome nicht regulär L pde = {wtrans(w)} kontextfrei erzeugt durch S ::= xsx λ f.a. x T
Kellerautomaten 12 Endlicher Automat mit Keller/Speicher x ; PUSH x x ; POP falls HEAD = x up ; down up a up b up b a down down down Keller λ a ba ba a λ
Kellerautomaten 13 Nichtdeterministischer Kellerautomat Idee: endlichen Automaten mit Zusatzspeicher in Form eines Kellers (Stapel, Stack) mit Speicheroperationen pro Übergang Keller über X: X mit den Operationen push, head, pop (d.h. push(x, u) = xu, head(xu) = x, pop(xu) = u für alle x X, u X )
Kellerautomaten 14 Ein nichtdeterministischer Kellerautomat ist ein System K = (Z, I, C, d, s 0, F, c 0 ) mit Z: endliche Menge von Zuständen, I: endliches Eingabealphabet mit / I, C: endliche Menge von Kellersymbolen, d: Z (I { }) C Z C : Zustandsüberführung, s 0 Z: Startzustand, F Z: Endzustände, c 0 C: initiales Kellersymbol.
Kellerautomaten 15 Graphische Darstellung x; c α s s für (s, α) d(s, x, c) s ; c α s für (s, α) d(s,, c)
Kellerautomaten 16 Beispiel a; c 0 Ac 0 a; A AA b; A λ ; c 0 c 0 a s b s OK ; A A ; c 0 c 0
Kellerautomaten 17 Konfiguration Eine Konfiguration con = (s, w, γ) besteht aus einem Zustand s Z, einem Wort w I und einem Kellerwort γ C. Wichtige Konfigurationen: Anfangskonfiguration: con 0 = (s 0, w, c 0 ) Endkonfiguration: con F = (s, λ, γ) mit s F
Kellerautomaten 18 Beispiel a; c 0 Ac 0 a; A AA b; A λ ; c 0 c 0 a s b s OK ; A A ; c 0 c 0 Konfiguration: (b s, bb, AAc 0 ) Anfangskonfiguration: (a s, aabb, c 0 ) Endkonfiguration: (OK, λ, c 0 )
Kellerautomaten 19 Folgekonfiguration (s, xv, cγ) (s, v, αγ), falls (s, α) d(s, x, c) (s, v, cγ) (s, v, αγ), falls (s, α) d(s,, c) Schreibweise: kann durch con = con 0 con 1 con n = con abgekürzt werden. con n con oder con con
Kellerautomaten 20 Beispiel a; c 0 Ac 0 a; A AA b; A λ Konfigurationsfolge: ; c 0 c 0 a s b s OK ; A A ; c 0 c 0 (a s, abb, Ac 0 ) (a s, bb, AAc 0 ) (b s, bb, AAc 0 ) (b s, b, Ac 0 )
Kellerautomaten 21 Erkannte Sprache Gegeben: K = (Z, I, C, d, s 0, F, c 0 ) Erkannte Sprache K erkennt w I, falls (s 0, w, c 0 ) s F. (s, λ, γ) mit Die Menge aller von K erkannten Wörter bildet die erkannte Sprache L(K).
Kellerautomaten 22 Beispiel a; c 0 Ac 0 a; A AA b; A λ ; c 0 c 0 a s b s OK ; A A Erkannte Sprache: {a n b n n N} Erkennen von a 2 b 2 : ; c 0 c 0 (a s, aabb, c 0 ) (a s, abb, Ac 0 ) (a s, bb, AAc 0 ) (b s, bb, AAc 0 ) (b s, b, Ac 0 ) (b s, λ, c 0 ) (OK, λ, c 0 )
Fragestellungen 23 Fragestellungen Wie hängen endliche Automaten und kfg s zusammen? Sind kfg s kompositional? Ist für kfg s das Wortproblem schnell lösbar? Was können kfg s nicht?
Deterministischer Kellerautomat 24 Deterministischer Kellerautomat Jede Konfiguration hat höchstens eine Folgekonfiguration. Lineare Spracherkennung (wie endl. Aut.) Praktischer Einsatz bei Syntaxanalyse von Programmiersprachen Nicht jede kontextfreie Sprache wird von deterministischen Kellerautomaten erkannt.
1 Ein deterministischer Kellerautomat ist ein System K = (Z, I, C, d, s 0, F, c 0 ) mit Z: endliche Menge von Zuständen I: endliches Eingabealphabet mit / I C: endliche Menge von Kellersymbolen d: Z (I { }) C Z C : Zustandsüberführung mit d(s, x, c) + d(s,, c) 1 für alle s Z, x I, c C, s 0 Z: Startzustand F Z: Endzustände c 0 C: initiales Kellersymbol S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
2 Beispiel: Reguläre Ausdrücke s 0 y ; c 0 λ OK ( ; c 0 op c 0 y ; c c ) ; c 0 λ s 1 ( ; c op br c ;op λ ) ;br λ s 2 ;op λ mit y I {empty, lambda}, c {op, br, c 0 } und {+, } S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
3 Erkennen von ((x ) + empty) (s 0, ((x ) + empty), c 0 ) (s 1, (x ) + empty), op c 0 ) (s 1, x ) + empty), op br op c 0 ) (s 2, ) + empty), op br op c 0 ) (s 2, ) + empty), br op c 0 ) (s 2, +empty), op c 0 ) (s 1, empty), c 0 ) (s 2, ), c 0 ) (OK, λ, λ) S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
4 Mächtigkeit L DKA : Klasse aller von deterministischen Kellerautomaten erkannten Sprachen L NKA : Klasse aller von nichtdeterministischen Kellerautomaten erkannten Sprachen Es gibt keinen deterministischen Kellerautomaten, der erkennt. Also gilt {wtrans(w) w {a, b} } L DKA L NKA S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Fragestellungen 5 Fragestellungen Sind kontextfreie Sprachen kompositional? (Die Klasse der kontextfreien Sprachen ist abgeschlossen unter Vereinigung, Konkatenation und Kleene-Stern.) Ist für kontextfreie Sprachen das Wortproblem schnell lösbar? (Die von determinitischen Kellerautomaten erkannten Sprachen lassen sich in linearer Zeit erkennen.) Wie hängen Kellerautomaten und kontextfreie Sprachen zusammen? Was können Kellerautomaten nicht? S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 6 Übersetzung kontextfreier Grammatiken in Kellerautomaten Gegeben: kontextfreie Grammatik G = (N, T, P, S) mit c 0, c OK / N T. x; x λ ; c 0 S c OK s 0 ; c OK λ OK ; A u wobei x T und A ::= u P S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 7 Beispiel: Klammergebirge G = ({A}, { [, ] }, {A ::= AA [A] λ}, A) L(G): alle korrekten Klammerungen über dem Klammerpaar [ und ]. [ ; [ λ ; c 0 A c OK ] ; ] λ s 0 ; c OK λ ; A AA ; A λ ; A [A] OK S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 8 Erzeugen und Erkennen von [] A [A] [] A ::=[A] A ::= λ (s 0, [], c 0 ) (s 0, [], Ac OK ) (s 0, [], [A]c OK ) (s 0, ], A]c OK ) (s 0, ], ]c OK ) (s 0, λ, c OK ) (OK, λ, λ) S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 9 Korrektheit der Übersetzung G translator PDA(G) generator recognizer L(G) = L(PDA(G)) S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 10 Linksableitungen Sei G = (N, T, P, S) eine kontextfreie Grammatik. Eine Linksableitung ist eine Ableitung u 1 P u 2 P P u n, bei der in jedem Schritt u i A i ::= v i u i+1 (1 i < n) das am weitesten links stehende Nichtterminal ersetzt wird, d.h. u i = x i A i y i und u i+1 = x i v i y i mit x i T. Schreibweise: l S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 11 Beispiel G = ({E}, {+,, (, ), id}, P, E) mit den Regeln E ::= E + E E E (E) id Es gibt zwei verschiedene Linksableitungen für id + id id: 1. E E+E id+e id+e E id + id E id + id id 2. E E E E+E E id+e E id + id E id + id id S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Übersetzung kontextfreier Grammatiken in Kellerautomaten 12 Lemma Sei G = (N, T, P, S) eine kontextfreie Grammatik. Dann lässt sich jede Ableitung A v mit A N, P v T in eine Linksableitung A l P v umformen. S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Zusammenhang zwischen Kellerautomaten und kontextfreien Sprachen 13 Zusammenhang zwischen Kellerautomaten und kontextfreien Sprachen Für jede kontextfreie Grammatik G gibt es einen Kellerautomaten K, so dass L(G) = L(K). Für jeden Kellerautomaten K gibt es eine kontextfreie Grammatik G, so dass L(K) = L(G). (Ohne Beweis) S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008
Zusammenhang zwischen Kellerautomaten und kontextfreien Sprachen 14 Folgerung L NKA = L KF S. L NKA : Klasse aller von nichtdeterministischen Kellerautomaten erkannten Sprachen L KF S : Klasse der kontextfreien Sprachen S. Kuske: Kellerautomaten und das Pumping-Lemma; 7.Januar 2008