Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Automaten und Formale Sprachen“ ” alias Theoretische Informatik“ ” Sommersemester 2011 Dr. Sander Bruggink ¨ Ubungsleitung: Jan St¨ uckrath Sander Br...
Author: Horst Graf
6 downloads 0 Views 246KB Size
Automaten und Formale Sprachen“ ” alias Theoretische Informatik“ ” Sommersemester 2011 Dr. Sander Bruggink ¨ Ubungsleitung: Jan St¨ uckrath

Sander Bruggink

Automaten und Formale Sprachen

1

Kontextfreie Sprachen

Wir besch¨aftigen uns ab jetzt einige Wochen mit kontextfreien Sprachen: Kontextfreie Grammatiken und eindeutigkeit Wortproblem f¨ ur kontextfeien Sprachen: der CYK-Algorithmus Pumping-Lemma f¨ ur kontextfreien Sprachen Automatenmodell f¨ ur kontextfreien Sprachen: Kellerautomaten Abschlusseigenschaften und Entscheidungsverfahren Deterministische kontextfreie Sprachen

Kontextfreie Sprachen

Entscheidbare Eigenschaften

Entscheidbarkeit

Sind die folgende Probleme entscheidbar? Wortproblem: Gegeben eine kontextfreie Sprache L und w ∈ Σ∗ . Gilt w ∈ L? Leerheitsproblem: Gegeben eine kontextfreie Sprache L. Gilt L = ∅? Endlichkeitsproblem: Gegeben eine kontextfreie Sprache L. Ist L endlich? ¨ Aquivalenzproblem: Gegeben zwei kontextfreie Sprachen L1 , L2 . Gilt L1 = L2 ? Schnittproblem: Gegeben zwei kontextfreie Sprachen L1 , L2 . Gilt L1 ∩ L2 = ∅?

Sander Bruggink

Automaten und Formale Sprachen

275

Kontextfreie Sprachen

Entscheidbare Eigenschaften

Entscheidbarkeit

Entscheidbarkeit des Wortproblems Das Wortproblem f¨ ur kontextfreie Sprachen ist entscheidbar. Kann mit dem CYK-Algorithmus gel¨ ost werden.

Sander Bruggink

Automaten und Formale Sprachen

276

Kontextfreie Sprachen

Entscheidbare Eigenschaften

Entscheidbarkeit

Entscheidbarkeit des Leerheitsproblem Das Leerheitsproblem f¨ ur kontextfreie Sprachen ist entscheidbar. ¨ Beweisidee: Bestimme alle produktiven Variablen (siehe Ubung), d.h., alle ∗ ∗ Variablen A, f¨ ur die es ein x ∈ Σ gibt mit A ⇒ x. Die Sprache L ist leer, genau dann wenn das Startsymbol S nicht produktiv ist.

Sander Bruggink

Automaten und Formale Sprachen

277

Kontextfreie Sprachen

Entscheidbare Eigenschaften

Entscheidbarkeit

Entscheidbarkeit des Endlichkeitproblems Das Endlichkeitsproblem f¨ ur kontextfreie Sprachen ist entscheidbar. Beweisidee: Gegeben eine kontextfreie Grammatik. Sei n = 2|V | die Anzahl von Variablen, d.h. die der Sprache zugeordnete Pumping-Lemma-Zahl. Alle W¨orter x ∈ L mit |x| ≥ n k¨ onnen gepumpt“ werden und alle W¨orter ” x ∈ L mit |x| ≥ 2n k¨onnen geschrumpft“ werden. ” Das heißt, dass L unendlich ist, gdw. es ein Wort x ∈ L gibt mit n ≤ |x| ≤ 2n. Es gibt nur endlich viele von diesen W¨ orter und diese k¨onnen also in endlicher Zeit auf Mitgliedschaft in der Sprache getestet werden.

Sander Bruggink

Automaten und Formale Sprachen

278

Kontextfreie Sprachen

Entscheidbare Eigenschaften

Entscheidbarkeit

Unentscheidbarkeit bei kontextfreien Sprachen Folgende Probleme sind f¨ ur kontextfreie Sprachen nicht entscheidbar, d.h., man kann zeigen, dass es kein entsprechendes Verfahren gibt: ¨ Aquivalenzproblem: Gegeben zwei kontextfreie Sprachen L1 , L2 . Gilt L1 = L2 ? Schnittproblem: Gegeben zwei kontextfreie Sprachen L1 , L2 . Gilt L1 ∩ L2 = ∅? Bemerkung: In der Vorlesung Berechenbarkeit und Komplexit¨at“ wird es ” u.a. darum gehen, wie man solche Unentscheidbarkeitsresultate zeigen kann.

Sander Bruggink

Automaten und Formale Sprachen

279

Kontextfreie Sprachen

Entscheidbare Eigenschaften

Entscheidbarkeit

Das Schnittproblem ist jedoch entscheidbar, wenn von einer der beiden Sprachen L1 , L2 bekannt ist, dass sie regul¨ar ist und sie als endlicher Automat gegeben ist. Entscheidungsverfahren: 1

Konstruiere einen Kellerautomat M, der L1 ∩ L2 akzeptiert.

2

Der Kellerautomat M kann dann in eine kontextfreie Grammatik G umgewandelt werden.

3

Von dieser Grammatik kann das Leerheitsproblem gel¨ost werden.

Sander Bruggink

Automaten und Formale Sprachen

280

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen Wir betrachten nun eine Unterklasse von Kellerautomaten, die dazu verwendet werden k¨onnen, Sprachen deterministisch und damit effizient zu erkennen. Deterministischer Kellerautomat (Definition) En deterministischer Kellerautomat M ist ein 7-Tupel M = (Z , Σ, Γ, δ, z0 , #, E ), wobei (Z , Σ, Γ, δ, z0 , #) ein Kellerautomat ist, E ⊆ Z die Menge von Endzust¨anden ist und ¨ die Uberf¨ uhrungsfunktion δ deterministisch ist, das heißt: f¨ ur alle z ∈ Z , a ∈ Σ und A ∈ Γ gilt: |δ(z, a, A)| + |δ(z, ε, A)| ≤ 1.

Sander Bruggink

Automaten und Formale Sprachen

281

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Unterschiede zwischen Kellerautomaten und deterministischen Kellerautomaten: Deterministische Kellerautomaten haben eine Menge von Endzust¨anden und akzeptieren mit Endzustand – und nicht mit leerem Keller. F¨ ur jeden Zustand z und jedes Kellersymbol A gilt: ¨ entweder gibt es h¨ ochstens einen ε-Ubergang ¨ oder es gibt f¨ ur jedes Alphabetsymbol h¨ ochstens einen Ubergang.

¨ Konfigurationen und Uberg¨ ange zwischen Konfigurationen bleiben jedoch gleich definiert.

Sander Bruggink

Automaten und Formale Sprachen

282

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Akzeptierte Sprache bei deterministischen Kellerautomaten (Definition) Sei M = (Z , Σ, Γ, δ, z0 , #, E ) ein deterministischer Kellerautomat. Dann ist die von M akzeptierte Sprache: D(M) = {x ∈ Σ∗ | (z0 , x, #) `∗ (z, ε, γ) f¨ ur ein z ∈ E , γ ∈ Γ∗ }.

Sander Bruggink

Automaten und Formale Sprachen

283

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Deterministisch kontextfreie Sprachen Eine Sprache heißt deterministisch kontextfrei genau dann, wenn sie von einem deterministischen Kellerautomaten akzeptiert wird.

Sander Bruggink

Automaten und Formale Sprachen

284

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen Beispiel: Die Sprache L = {w $w R | w ∈ {a, b}∗ } ist deterministisch kontextfrei. M = ({z1 , z2 , z3 }, {a, b, $}, {#, A, B}, δ, z1 , #, {z3 }), wobei δ folgendermaßen definiert ist (wir schreiben (z, a, A) → (z 0 , x), falls (z 0 , x) ∈ δ(z, a, A)). (z1 , a, #) (z1 , b, #) (z1 , $, #) (z2 , a, A)

→ → → →

(z1 , A#) (z1 , B#) (z2 , #) (z2 , ε)

(z1 , a, A) (z1 , b, A) (z1 , $, A) (z2 , b, B)

Sander Bruggink

→ → → →

(z1 , AA) (z1 , BA) (z2 , A) (z2 , ε)

(z1 , a, B) (z1 , b, B) (z1 , $, B) (z2 , ε, #)

Automaten und Formale Sprachen

→ → → →

(z1 , AB) (z1 , BB) (z2 , B) (z3 , #)

285

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Beispiel 2: Die Sprache L = {ww R | w ∈ {a, b}∗ } ist jedoch nicht deterministisch kontextfrei. (Ohne Beweis.) Wir haben letzte Woche schon gesehen, dass diese Sprache kontextfrei ist. Das heißt, die Klasse der kontextfreien Sprachen und die Klasse der deterministisch kontextfreien Sprachen sind nicht identisch! Die Klasse der deterministisch kontextfreien Sprachen ist eine echte Teilmenge der Klasse der kontextfreien Sprachen.

Sander Bruggink

Automaten und Formale Sprachen

286

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen Weitere Bemerkungen: Effizienz: Mit Hilfe von deterministischen Kellerautomaten hat man jetzt ein Verfahren zur L¨ osung des Wortproblems, das eine lineare Anzahl von Schritten braucht (als Funktion der L¨ange des Eingabewortes). Dazu l¨asst man einfach den Automaten auf dem Wort arbeiten und u uft, ob man in einen Endzustand gelangt. ¨berpr¨ Deterministisch kontextfreie Grammatiken: Es gibt auch Grammatikklassen, die zu den deterministisch kontextfreien Sprachen passen. Dies ist aber nicht ganz trivial; daher gibt es hierzu mehrere Ans¨atze. Der bekannteste davon sind die sogenannten LR(k)-Grammatiken.

Sander Bruggink

Automaten und Formale Sprachen

287

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen Die Abschlusseigenschaften bei deterministisch kontextfreien Sprachen sehen etwas anders aus als bei kontextfreien Sprachen. Abgeschlossenheit Sind die kontextfreien Sprachen abgeschlossen unter den folgenden Operationen? Vereinigung (L1 , L2 kontextfrei ⇒ L1 ∪ L2 kontextfrei) ? Schnitt (L1 , L2 kontextfrei ⇒ L1 ∩ L2 kontextfrei) ? Schnitt mit regul¨arer Sprache (L1 kontextfrei, L2 regul¨ar ⇒ L1 ∩ L2 kontextfrei) ? Komplement (L kontextfrei ⇒ L = Σ∗ \L kontextfrei) ?

Sander Bruggink

Automaten und Formale Sprachen

288

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Abschluss unter Komplement Wenn L eine deterministisch kontextfreie Sprache ist, dann ist auch L = Σ∗ \L deterministisch kontextfrei. Informeller Beweisansatz: Wie bei DFAs, k¨onnen wir einen deterministischen Kellerautomaten f¨ ur das Komplement bauen, indem wir (mit ein bisschen rumbasteln) die Endzust¨ande und Nicht-Endzust¨ande vertauschen.

Sander Bruggink

Automaten und Formale Sprachen

289

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen Kein Abschluss unter Schnitt Wenn L1 und L2 deterministisch kontextfreie Sprachen sind, dann ist L1 ∩ L2 nicht notwendigerweise deterministisch kontextfrei. Begr¨ undung: Die Beispiel-Sprachen aus dem Argument, dass die kontextfreien Sprachen unter Schnitt nicht abgeschlossen sind, sind sogar deterministisch kontextfrei, ihr Schnitt jedoch noch nicht einmal kontextfrei: L1 = {aj b k c k | j ≥ 0, k ≥ 0} L2 = {ak b k c j | j ≥ 0, k ≥ 0} L1 ∩ L2 = {an b n c n | n ≥ 0}

Sander Bruggink

Automaten und Formale Sprachen

290

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Abschluss unter Vereinigung Wenn L1 und L2 deterministisch kontextfreie Sprachen sind, dann ist auch L1 ∪ L2 eine deterministisch kontextfreie Sprache. (??) Kein Abschluss unter Vereinigung Wenn L1 und L2 deterministisch kontextfreie Sprachen sind, dann ist L1 ∪ L2 nicht notwendigerweise deterministisch kontextfrei. Begr¨ undung: Aus dem Abschluss unter Vereinigung und Komplement w¨ urde auch der Abschluss unter Schnitt folgen (wegen L1 ∩ L2 = L1 ∪ L2 ).

Sander Bruggink

Automaten und Formale Sprachen

291

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Deterministisch kontextfreie Sprachen sind unter Schnitt mit regul¨aren Sprachen abgeschlossen. Abschluss unter Schnitt mit regul¨aren Sprachen Sei L eine deterministisch kontextfreie Sprache und R eine regul¨are Sprache. Dann gilt, dass L ∩ R eine deterministisch kontextfreie Sprache ist. Beweisidee: Analog zu kontextfreien Sprachen.

Sander Bruggink

Automaten und Formale Sprachen

292

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen

Sander Bruggink

Det. KF Spr.

KF Sprachen

Abgeschlossen unter Vereinigung Konkatenation Kleene-Stern Schnitt Schnitt mit RS Komplement

Regul¨are Spr.

Zusammenfassung Abschlusseigenschaften

3 3 3 3 3 3

7 7 7 7 3 3

3 3 3 7 3 7

Automaten und Formale Sprachen

293

Kontextfreie Sprachen

Deterministische Kellerautomaten

Deterministisch kontextfreie Sprachen Entscheidbarkeit bei deterministisch kontextfreien Sprachen Folgende Probleme sind f¨ ur deterministisch kontextfreie Sprachen (repr¨asentiert durch einen deterministischen Kellerautomaten) entscheidbar: Wortproblem: Gegeben eine deterministisch kontextfreie Sprache L und w ∈ Σ∗ . Gilt w ∈ L? Mit einem deterministischen Kellerautomaten in O(|w |) Zeit. Leerheitsproblem: Gegeben eine deterministisch kontextfreie Sprache L. Gilt L = ∅? Siehe das entsprechende Entscheidungsverfahren f¨ ur kontextfreie Sprachen.

Sander Bruggink

Automaten und Formale Sprachen

294

Kontextfreie Sprachen

Deterministische Kellerautomaten

Entscheidbarkeit

Entscheidbarkeit bei deterministisch kontextfreien Sprachen Endlichkeitsproblem: Gegeben eine kontextfreie Sprache L. Ist L endlich? Siehe das entsprechende Entscheidungsverfahren f¨ ur kontextfreie Sprachen. ¨ Aquivalenzproblem: Gegeben zwei deterministisch kontextfreie Sprachen L1 , L2 . Gilt L1 = L2 ? War lange offen und die Entscheidbarkeit wurde erst 1997 von G´eraud S´enizergues gezeigt.

Sander Bruggink

Automaten und Formale Sprachen

295

Kontextfreie Sprachen

Deterministische Kellerautomaten

Entscheidbarkeit

Unentscheidbarkeit bei deterministisch kontextfreien Sprachen Folgende Probleme sind f¨ ur deterministisch kontextfreie Sprachen nicht entscheidbar, d.h., man kann zeigen, dass es kein entsprechendes Verfahren gibt: Schnittproblem: Gegeben zwei deterministisch kontextfreie Sprachen L1 , L2 . Gilt L1 ∩ L2 = ∅? Wie bei kontextfreien Sprachen ist dieses Problem jedoch entscheidbar, wenn eine der beiden Sprachen regul¨ar ist.

Sander Bruggink

Automaten und Formale Sprachen

296

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Kontextfreie Grammatiken werden h¨aufig benutzt, um den Syntax von Computersprachen (Programmiersprachen, Markup-Sprachen, usw.) anzugeben. Ein Parser ist ein Programmmodul, das den Quellcode eines Programms als Eingabe nimmt und irgendwelche Repr¨asentation (z.B. einen Syntaxbaum) davon ausgibt. In dieser Vorlesung werden wir JavaCC kennenlernen, einen parser generator, mit dem man einfach einen Parser (in Java) erzeugen kann.

Sander Bruggink

Automaten und Formale Sprachen

297

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Der Parser eines Compilers bzw. eines Interpreters besteht im Allgemeinen aus zwei Komponenten: Der Scanner (auch lexical analyser) teilt die einzelnen Zeichen in Ketten auf, den sogenannten Tokens. Der Parser selbst analysiert die Folge von Tokens und konstruiert einen Syntaxbaum (bzw. eine andere Repr¨asentation). JavaCC ist in der Lage beide Komponenten zu erzeugen.

Sander Bruggink

Automaten und Formale Sprachen

298

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Einschub: Extended Backus-Naur-Form

In der Praxis wird oft die Extended Backus-Naur-Form (EBNF) benutzt, eine Abk¨ urzung f¨ ur kontextfreie Grammatiken. In EBNF sind die rechten Seiten der Regeln keine Zeichenketten, sondern regul¨are Ausdr¨ ucke.

Sander Bruggink

Automaten und Formale Sprachen

299

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Einschub: Extended Backus-Naur-Form EBNF-Grammatiken k¨onnen einfach in richtige kontextfreie Grammatiken umgewandelt werden: ( A → αBγ A → α(β1 | · · · | βn )γ ⇒ B → β1 | · · · | βn ( A → αγ | αBγ ∗ A → αβ γ ⇒ B → β | βB Abk¨ urzungen: α+ ≡ αα∗ , α? ≡ (ε | α), usw. Regeln anwenden bis die Grammatik keine ∗“- und (geschachtelten) ” |“-Operationen mehr enth¨alt. ” Sander Bruggink

Automaten und Formale Sprachen

300

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Wir werden einen Parser erzeugen, der die folgende Grammatik (in EBNF) f¨ ur arithmetische Ausdr¨ ucke parst: E → T (“+”T | “-”T )∗ T → F (“*”F | “/”F )∗ F → “(”E “)” | number Terminalsymbole stehen in Anf¨ uhrungszeigen. Das Token number wird vom Scanner erkannt.

Sander Bruggink

Automaten und Formale Sprachen

301

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Aufbau einer JavaCC Quelldatei: PARSER_BEGIN(Name) public class Name { ... } PARSER_END(Name) Regeln f¨ ur lexical analyser Regeln der Grammatik

Sander Bruggink

Automaten und Formale Sprachen

302

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC Der lexical analyser: // lexical analyser SKIP: {" " | "\t"} // skip spaces and tabs SKIP: {"\n" | "\r"} // skip newlines and carriage returns TOKEN: { | | | | | | }

Sander Bruggink

Automaten und Formale Sprachen

303

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

¨ Ubersetzung der Regel E → T (“+”T | “-”T )∗ public void E() :→ {} { T() ( T() | T() )* }

Sander Bruggink

Automaten und Formale Sprachen

304

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Ganze Datei parsen: Das Token “ wird am Ende der Datei ausgegeben. Um eine ” vollst¨andige Datei zu parsen, brauchen wir also noch die folgende Regel: public void expression() : {} { E() }

Sander Bruggink

Automaten und Formale Sprachen

305

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Der Parser erkennt zwar die syntaktisch korrekten arithmetischen Ausdr¨ ucke, gibt aber noch keine Repr¨asentation des eingelesenen Ausdrucks zur¨ uck. Daf¨ ur sollen die Zwischenergebnisse der Nichtterminale gespeichert werden und es muss w¨ahrend des Parsings manchmal Java-code ausgef¨ uhrt werden, um die Repr¨asentationen zu konstruieren. In der Praxis gibt ein Parser den Syntaxbaum des eingelesenen Programms zur¨ uck. Wir sind heute aber zufrieden mit dem Wert des arithmetischen Ausdrucks.

Sander Bruggink

Automaten und Formale Sprachen

306

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC Eine Produktion des endg¨ ultigen Parsers public double E() : { double value; double value2; }{ value = T() ( value2 = T() { value += value2; } | value2 = T() { value -= value2; } )* { return value; } }

Sander Bruggink

Automaten und Formale Sprachen

307

Kontextfreie Sprachen

Kontextfreie Sprachen in der Praxis

Parsing mit JavaCC

Im Grunde werden mit JavaCC LL(1)-Grammatiken erzeugt, das heißt, dass nur deterministisch kontextfreie Sprachen erkannt werden k¨onnen. Es gibt aber verschiedene Tricks, um Parser f¨ ur gr¨oßere Klassen von Grammatiken zu erzeugen. Zum Selbststudium: https://javacc.dev.java.net/.

Sander Bruggink

Automaten und Formale Sprachen

308

Suggest Documents