Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam Dies ist eine grobe Übersicht über einige klausurrelevante Themen ohne Anspruch auf Vollständigkeit und Korrektheit. Sie ersetzt nicht das Selbststudium! (Zu diesem Zweck sind die Seitenzahlen der Folien angegeben.) 1 Grundlegende Konzepte Menge(3) M = {. . . } aufzählende Schreibweise intensionale Schreibweise Element(5) leere Menge(14) Teilmenge(15) echte Teilmenge(15) Kardinalität Potenzmenge(17) M1 = {x, y, . . . } Zusammenfassung von beliebigen Objekten ohne Reihenfolge und Häufigkeit z.B. {♣, ♠, ♥, ♦} M2 = {x : p(x)} z.B. {x : x ist eine Spielkartenfarbe } a ∈ M (a ∈ / M) ∅ oder {} A⊆B A⊂B a ist in der Menge M (nicht) enthalten NB: es gibt nur eine leere Menge jedes Element aus A ist auch in B A ist Teilmenge von B, aber sie sind nicht gleich, d.h. ∃b ∈ B : b ∈ /A Anzahl der Elemente in M Menge aller Teilmengen, |2M | = 2|M | |M | oder #M 2M oder ℘(M ) 1.1 Operationen auf Mengen Vereinigung(16) Schnitt(16) Differenz(16) Komplement A∪B A∩B A − B oder A \ B A=U −A Paar(18) Kreuzprodukt(20) (kartesisches P.) Relation auf M (21) ha, bi A×B R⊆M ×M Menge aller Elemente, die in A oder B sind Menge aller Elemente, die in A und B sind Menge aller Elemente aus A, die nicht in B sind Menge aller Elemente, die nicht in A sind (relativ zum Diskursuniversum U) lässt sich verallgemeinern zum n-Tupel Paare der Form ha, bi für jedes a ∈ A und b ∈ B; formal: {ha, bi : a ∈ A ∧ b ∈ B} a zu b in Relation: aRb, bzw. ha, bi ∈ R 1.2 Rechengesetze für Mengen • De Morgan: A ∩ B = A ∪ B, A ∪ B = A ∩ B • Differenz: A − B = A ∩ B • beiderseitige Inklusion: A = B ↔ (A ⊆ B) ∧ (B ⊆ A) 1.3 Eigenschaften von Relationen reflexiv:(22) ∀x ∈ M : xRx (jedes Element steht zu sich selbst in Relation) irreflexiv:(22) ¬∃x ∈ M : xRx (kein Element steht zu sich selbst in Relation) symmetrisch:(22) ∀x, y ∈ M : xRy ↔ yRx asymmetrisch: ¬∃x, y ∈ M : xRy ∧ yRx antisymmetrisch:(22) ∀x, y ∈ M : xRy ∧ yRx → x = z (keine zwei unterschiedlichen Elemente stehen gegenseitig in Relation) • transitiv:(22) ∀x, y, z ∈ M : xRy ∧ yRz → xRz • konnex:(22) ∀x, y ∈ M : x 6= y → xRy ∨ yRx • • • • • 1 Stand: 15. Juli 2009 Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam Besondere Arten von Relationen: • • • • Äquivalenzrelation:(23) reflexiv, symmetrisch, transitiv Halbordnung (partielle Ordnung):(26) reflexiv und antisymmetrisch Striktordnung:(26) irreflexiv und asymmetrisch (und deshalb auch antisymmetrisch) Totalordnung:(26) Halbordnung, die konnex ist Transitive Hülle(28) R+ Reflexive u. trans. Hülle(28) R∗ kleinste Relation, so dass R ⊆ R+ und aRb ∧ bR+ c → aR+ c (Transitivität vervollständigt) R∗ = R+ ∪ {hx, xi : x ∈ M } (Reflexivität vervollständigt) 1.4 Beweisverfahren • Vollständige Induktion: eine Aussage h über natürliche Zahlen wird bewiesen, indem h(n0 ) (Induktionsbasis) und h(n) → h(n + 1) (Induktionsschritt) bewiesen werden. • Kontraposition (Widerspruchsbeweis): das Gegenteil wird angenommen, und es wird gezeigt, dass das zu einem Widerspruch führt. • Reduktion auf ein gelöstes Problem. 1.5 Zeichenketten und Sprachen Alphabet(44) Zeichenkette(44) (String, Wort) Länge(44) leeres Wort(44) Verkettung von Wortmengen Potenz Sternhülle(42) Plushülle(42) Freies Monoid(43) Sprache(45) Komplement Σ = {a, b} w = a · b · b = abb |w| oder `(w) A·B An S n A A∗ = Sn≥0 n A+ = n≥1 A hΣ∗ , ·, i, wobei Σ∗ = {, a, b, ab, . . . } L ⊆ Σ∗ L = Σ∗ − L eine endliche Menge von (beliebigen) Symbolen eine Verkettung von Alphabetssymbolen; Wörter lassen sich auch verketten. Anzahl der Symbole, aus denen w besteht. || = 0 die Menge der Verkettungen uv für alle u ∈ A und v∈B A0 = {}; An = An−1 · A = A · An−1 A+ = A · A ∗ = A ∗ · A die Menge aller möglichen Zeichenketten auf Σ mit Verkettung und neutralem Element () eine Menge von Wörtern über einem Alphabet 1.6 Grammatiken Produktionsregel(47) u → v Grammatik(53) hN, Σ, P, Si Satzform Wort Ableitbarkeit(48) Regelsprache(54) Wortproblem α ∈V∗ w ∈ Σ∗ ⇒⊆ V ∗S× V ∗ n ⇒∗ = n≥0 ⇒ L(G) w∈L u, v ∈ V ∗ (V ist irgendein Alphabet) N sind die Nichtterminale; Σ sind die Terminale; V = N ∪ Σ nennt man auch Vokabular; S ∈ N ist das Startsymbol; jede Regel in P hat auf der linken Seite mindestens ein Nichtterminal. String aus Nichtterminalen und Terminalen String aus Terminalen αβγ ⇒ αδγ gdw. β → δ ∈ P Reflexive und transitive Hülle der Relation ⇒ L(G) = {w ∈ Σ∗ : S ⇒∗ w} Ist das Wort w in der Sprache L enthalten? 2 Stand: 15. Juli 2009 Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam 2 Sprachen, Grammatiken und Automaten Chomsky-Hierarchie(55ff.) Typ Grammatik Sprache 0 unbeschränkt rekursiv aufzählbar 1 kontextsensitiv kontextsensitiv 2 kontextfrei kontextfrei 3 rechts-/linkslinear regulär Typ 0 1 2 3 Regelform V ∗N V ∗ × V ∗ monoton N ×V∗ N × Σ∗ N Abg. KSV* CKSV* KV* CKSV* Automat Turingmaschine LBA (linear bounded automaton) Kellerautomat (pushdown automaton) Endlicher Automat typische Beispielsprachen kein konstruktives Beispiel n a2 , an bn cn , an bm cn dm , MIX-Sprachen an bn , an bm cm dn , Dyck-/Klammersprachen, Palindromsprachen alle endlichen Sprachen, Σ∗ , reguläre Ausdrücke (Abgeschlossenheit: C = Komplement, K = Verkettung, S = Schnitt, V = Vereinigung, * = Sternhülle. Man nennt eine Menge M abgeschlossen unter einer Operation , wenn für alle a, b ∈ M gilt: a b ∈ M .) 2.1 Typ 3 Reguläre Sprachen werden von deterministischen endlichen Automaten(82) (DEA) erkannt. Ein DEA ist A = hQ, Σ, δ, q0 , F i mit • • • • • Q einer endlichen Menge von Zuständen Σ einem endlichen Alphabet δ : Q × Σ → Q der Übergangsfunktion; δ ∗ (q, ) = q; δ ∗ (q, aw) = δ ∗ (δ(q, a), w) q0 ∈ Q dem Anfangszustand F ⊆ Q der Menge der Endzustände Zugehörige Sprache(88) T (A) = {w : w ∈ Σ∗ ∧ δ ∗ (q0 , w) ∈ F }, d.h. alle Wörter, die in einen Endzustand führen. Ein nicht-deterministischer endlicher Automat (NEA)(97ff.) unterscheidet sich nur durch δ : Q × Σ → 2Q , d.h. unterschiedliche Übergänge mit dem selben Symbol sind möglich. Zu jedem NEA existiert ein äquivalenter DEA (Teilmengenkonstruktion).(106) Beispiel: n n {0} y 0 n y o o 3 s y 1 {2} e e s n {1,3} 2 y s {0,2} o s n {3} o n o {0,3} y Jeder EA lässt sich -frei machen: -Hülle(143) für jeden Zustand bilden und Übergänge kopieren. Zustände mit Endzuständen in der -Hülle werden zu Endzuständen. Möglicherweise kann der EA anschließend determinisiert werden. Beispiel: 3 Stand: 15. Juli 2009 Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam a a a ε 0 1 ε ε b 1 b 3 a 2 a a 3 a b 0 b a a a 2 0 a 1 b b a 3 2 Jeder EA lässt sich komplementieren.(176) Das erreicht man, indem man 1. den Automaten determinisiert (wichtig!), 2. Endzustände zu Nicht-Endzuständen macht und umgekehrt, 3. den Automaten vollständig macht (alle nicht vorhandenen Übergänge führen in einen sink state, der Endzustand ist). Beispiel: b a 0 b a a b 1 a {0} b a b a {0,1} S b a {0} {0,1} Aus einem Automaten lässt sich eine rechtslineare Grammatik(89ff.) konstruieren und umgekehrt: Jeder Übergang p ∈ δ(q, b) wird zu einer Regel Q → bP . Reguläre Sprachen lassen sich auch über reguläre Ausdrücke(149ff.) (RE) definieren: • ∅ ist ein RE mit J∅K = ∅; ist ein RE mit JK = {} • a ist ein RE für jedes Alphabetssymbol a: JaK = {a} • Wenn α und β RE sind, dann sind auch α · β, α + β und α∗ RE. Ihre Denotate sind JαK · JβK, JαK ∪ JβK und JαK∗ . Rechenregeln für reguläre Ausdrücke: • α+β =β+α • (α + β) + γ = α + (β + γ) • (αβ)γ = α(βγ) • (α + β)γ = αγ + βγ • α(β + γ) = αβ + αγ • ∅∗ = = ∗ • (α∗ )∗ = α∗ • ( + α)∗ = (α + )∗ = α∗ • (α∗ β ∗ )∗ = (α + β)∗ Reguläre Sprachen sind abgeschlossen unter Vereinigung, Schnitt, Sternhülle, Verkettung und Komplementbildung(174) (siehe Folien für Konstruktionen für Grammatiken und Automaten). Endliche Sprachen sind immer regulär! Das Wortproblem ist in O(n) entscheidbar. Pumping Lemma (Schleifensatz):(136) Für jede reguläre Sprache gilt: in allen Wörter, die länger als eine bestimmte Konstante (anschaulich: Anzahl der Zustände des Automaten) sind, gibt es ein Teilwort, das sich aufpumpen“ lässt (anschaulich: es muss eine Schleife im Automaten geben, da ” mindestens ein Zustand mehrfach durchlaufen wurde). Formal: ∃n : (∀x ∈ L : (|x| > |n| → ∃uvw = x : (|uv| ≤ n ∧ v 6= ∧ ∀i : uv i w ∈ L))) Damit kann man zeigen, dass bestimmte Sprachen nicht regulär sind: man sucht sich ein Wort mit einer Länge abhängig von n und zeigt, dass es keine Zerlegung gibt, die sich beliebig pumpen lässt. (Beispiele in den Folien(140) und in den Musterlösungen der Übungsaufgaben.) 4 Stand: 15. Juli 2009 Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam 2.2 Typ 2 Kontextfreie Sprachen(63) werden von Kellerautomaten (KA)(224ff.) erkannt. Ein KA erweitert den EA durch einen Keller: M = hQ, Σ, Γ, δ, q0 , Z0 , F i mit • Q, Σ, q0 , F wie beim EA • Γ dem Kelleralphabet, Z0 ∈ Γ dem Kellerstartsymbol ∗ • δ : Q × (Σ ∪ {}) × Γ → 2Q×Γ (aber nur in die endlichen Teilmengen) Ein KA ändert seine Konfiguration(226) ∈ Q × Σ∗ × Γ∗ durch Lesen von Symbolen und Ersetzen des obersten Kellersymbols durch Strings auf dem Kelleralphabet: hq, aw, Zαi ` hp, w, βαi gdw. hp, βi ∈ δ(q, a, Z). Ein KA akzeptiert ein Wort entweder durch Erreichen eines Endzustandes oder durch Leeren des Kellers(229) : L(M ) = {w : hq0 , w, Z0 i `∗ hp, , γi ∧ p ∈ F } bzw. N (M ) = {w : hq0 , w, Z0 i `∗ hp, , i} Nicht-deterministische KA sind mächtiger als deterministische KA. (Anders als die EA). Kontextfreie Sprachen werden von kontextfreien Grammatiken erzeugt. Jede Regel besteht auf der linken Seite aus genau einem Nichtterminal, d.h. →⊆ N × V ∗ . Je nachdem, welches Nichtterminal beim Ableiten ersetzt wird, spricht man von Linksableitung(222) , Rechtsableitung oder nicht-kanonischer Ableitung. Eine Grammatik heißt ambig, wenn es ein Wort mit mehr als einer Linksableitung (bzw. mehr als einem Parsebaum) gibt. Kontextfreie Sprachen können mit verschiedenen Parsern erkannt werden: Parsertyp Grammatiktyp Richtung Ableitungsrichtung Kompl. Recursive Descent frei von Linksrekursion top-down Linksableitung O(2n ) Shift-Reduce (naiv) frei von -Regeln bottom-up umg. Rechtsableitung O(2n ) LR(k)-Parser LR(k)-Grammatik hybrid umg. Rechtsableitung O(n) GLR-Parser (Tomita) beliebig hybrid umg. Rechtsableitung O(n3 ) (Foliensatz) CYK-Parser Chomsky-Normalform bottom-up O(n3 ) Chart-Parser (Earley) frei von -Regeln hybrid O(n3 ) Kontextfreie Sprachen lassen sich über Schnitt einer Dyck-Sprache mit einer regulären Sprache und einem Homomorphismus erzeugen (Chomsky-Schützenberger-Theorem). Eine DyckSprache ist eine Sprache von k balancierten Klammertypen, also: S → SS | [1 S]1 | [2 S]2 | · · · | [k S]k | . Es gibt verschiedene Grammatiktransformationen bzw. Normalformen (ggf. nur für kontextfreie Sprachen ohne ): • Separierte Grammatik:(67) jede Regel erzeugt nur Nichtterminale oder nur Terminale, d.h. →⊆ N × (N ∗ ∪ Σ) • Chomsky-Normalform:(191) jede Regel erzeugt genau zwei Nichtterminale oder genau ein Terminal, d.h. →⊆ N × (N 2 ∪ Σ) (stärkere Form der separierten Grammatik) • Reduzierte Grammatik:(180) jedes Nichtterminal ist erreichbar und terminierbar • Eliminierung von Linksrekursion:(Foliensatz) keine Regeln, so dass A ⇒+ A · V ∗ • Entfernen von Kettenregeln(119) /-Regeln(114) • Greibach-Normalform: jede rechte Regelseite beginnt mit Terminal, d.h. →⊆ N × ΣN ∗ Aus einer Grammatik lässt sich einfach ein Kellerautomat konstruieren:(231) δ(q, , A) = {hq, αi : A → α ∈ P } (Hypothesenbildung) und δ(q, a, a) = {hq, i} (Verifikation). 5 Stand: 15. Juli 2009 Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam Der umgekehrte Weg ist etwas komplizierter.(237ff.) Die neue Grammatik besteht aus dem Startsymbol S und zusammengesetzten Nichtterminalen [q, A, p] (Zustand, Kellersymbol und Zustand). Die Regeln sind dann: S → [q0 , Z0 , q] für jeden Zustand q und [q, A, qm+1 ] → a[q1 , B1 , q2 ][q2 , B2 , q3 ] · · · [qm , Bm , qm+1 ] für jeden Übergang hq1 , B1 B2 · · · Bm i ∈ δ(q, a, A) (theoretisch muss man alle Zustände für q1 bis qm+1 berücksichtigen!) Pumping Lemma für kontextfreie Sprachen:(202) ∃n : (∀x ∈ L : (|x| > |n| → ∃xuwvy = x : (|uv| ≥ 1 ∧ |uwv| ≤ n ∧ ∀i : xui wv i y ∈ L))) (Anwendung ähnlich wie bei regulären Sprachen.) Achtung: Typ-2-Sprachen sind nicht unter Schnitt abgeschlossen!(215) (Zu zeigen über an bn ck ∩ ak bn cn = an bn cn .) Allerdings ist der Schnitt einer kontextfreien und einer regulären Sprache kontextfrei.(253) 2.3 Typ 0 und Typ 1 Typ-0-Sprachen (auch rekursiv aufzählbar genannt) werden von Turingmaschinen erkannt. Turingmaschinen präzisieren den intuitiven Begriff des Algorithmus bzw. der Berechenbarkeit. Eine deterministische (genauso mächtig wie nicht-deterministische) Turingmaschine (TM) ist ein 7-Tupel M = hQ, Σ, Γ, δ, q0 , B, F i mit: • • • • • Q einer endlichen Menge von Zuständen, Q ∩ Γ = ∅; Γ einer endlichen Menge von Bandsymbolen, davon B ∈ Γ das Blankzeichen Σ ⊆ Γ − {B} dem Eingabealphabet δ : Q × Γ → Q × Γ × {R, L} der (partiellen) Bewegungsfunktion q0 ∈ Q dem Startzustand und F ⊆ Q der Menge der Endzustände. Eine ID einer Turingmaschine ist α1 qα2 mit q ∈ Q, α1 α2 ∈ Γ∗ ; dies bedeutet, dass α1 α2 das Band bis zum letzten Nicht-Blankzeichen darstellt und der Lesekopf der TM auf dem ersten Symbol von α2 steht. Folgende Schritte kann die TM in der ID X1 X2 . . . Xi1 qXi . . . Xn machen: • wenn δ(q, Xi ) = (p, Y, L), dann: X1 X2 . . . Xi1 qXi . . . Xn ` X1 X2 . . . Xi2 pXi−1 Y Xi+1 . . . Xn ; • wenn δ(q, Xi ) = (p, Y, R), dann: X1 X2 . . . Xi1 qXi . . . Xn ` X1 X2 . . . Xi2 Xi−1 Y pXi+1 . . . Xn . Die Sprache einer TM M ist L(M ) = {w ∈ Σ∗ : q0 w `∗ α1 pα2 ∧ p ∈ F ∧ α1 α2 ∈ Γ∗ }. M hält also in einem Endzustand an; es ist möglich, dass M niemals anhält. Damit gibt es folgende feinere Einteilung der Typ-0-Sprachen: • L ist rekursiv aufzählbar: es gibt eine TM M , so dass L = L(M ); • L ist rekursiv: es gibt eine TM M , so dass L = L(M ) und M hält für jedes w ∈ Σ∗ an. Im Allgemeinen ist also das Wortproblem für rekursiv aufzählbare Sprachen unentscheidbar. Außerdem ist nicht entscheidbar, ob eine gegebene Turingmaschine für jede Eingabe anhält. Die Klasse der rekursiven Sprachen ist eine echte Teilmenge der Klasse der rekursiv aufzählbaren (Typ-0-Sprachen). Weiterhin können Typ-0-Sprachen mit unbeschränkten Grammatiken beschrieben werden. Es kann jedoch gezeigt werden, dass es Sprachen ohne Grammatik oder Turingmaschine (bzw. 6 Stand: 15. Juli 2009 Tutorium Formale Sprachen und Automaten Daniel Quernheim, Universität Potsdam Funktionen ohne Algorithmus) geben muss. Intuitive Begründung: da jeder Algorithmus (jede Grammatik) endlich ist, kann man sie abzählen (d.h. sie sind gleichmächtig zu den natürlichen Zahlen). Die Klasse der Funktionen, die die natürlichen Zahlen auf 0 und 1 abbilden, ist aber gleichmächtig zur Menge der reellen Zahlen und damit überabzählbar. Typ-1-Sprachen (kontextsensitiv) erhält man durch Einschränkung der Grammatik auf monotone Regeln, d.h. die rechte Regelseite darf nicht kürzer sein als die linke. Diese Eigenschaft hat Entscheidbarkeit des Wortproblems (in O(2n )) zur Folge, da sich alle Satzformen bis zur Länge des Eingabewortes aufzählen lassen. Es gibt eine Normalform, von der der Begriff kontextsensitiv herrührt: jede Regel hat hier die Form αBγ → αβγ mit α, β, γ ∈ V ∗ und B ∈ N sowie β 6= . Es wird also nur je ein Nichtterminal im Kontext αγ ersetzt. 7 Stand: 15. Juli 2009