Was bisher geschah: Formale Sprachen I Alphabet, Wort, Sprache Operationen und Relationen auf Wörtern und Sprachen I reguläre Ausdrücke: Syntax, Semantik, Äquivalenz I Wortersetzungssysteme I Wortersetzungsregeln und -systeme I Ableitungen, Ableitungsgraph I durch Wortersetzungssysteme definierte Sprachen I Wortproblem in Wortersetzungssystemen im Allgemeinen nicht algorithmisch lösbar, aber algorithmisch lösbar für I I I nichtverlängernde Systeme nichtverkürzende Systeme Grammatiken I Terminal-, Nichtterminalsymbole I Ableitungen in Grammatiken I durch Grammatiken definierte Sprachen I Äquivalenz von Grammatiken I Chomsky-Hierarchie für Grammatiken und Sprachen 70 Wortproblem für Typ-1-Sprachen gegeben : Grammatik G = (N, T , P, S) vom Chomsky-Typ 1, Wort w ∈ T ∗ Frage : Gilt w ∈ L(G ) ? Satz Es existiert ein Algorithmus, welcher für jede beliebige Eingabe (G , w ), wobei I T ein endliches Alphabet, I w ∈ T ∗ und I G eine monotone Grammatik (Chomsky-Typ 1) über T sind die Wahrheit der Aussage w ∈ L(G ) korrekt beantwortet. (folgt aus entsprechendem Satz für nichtverkürzende Wortersetzungssysteme) demnächst spezielle (effizientere) Verfahren für Grammatiken vom Chomsky-Typ 2 und 3 71 Dyck-Sprache Klammerpaar ( und ) Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke erzeugt durch Grammatik = ({S}, {(, )}, P, S) mit S → ε S → SS P = S → (S) G Beispiele: I ()(()()) ∈ L(G ) I ())(6∈ L(G ) I ε ∈ L(G ) Achtung: I G hat Chomsky-Typ 0 I Dyck-Sprache hat Chomsky-Typ 2 72 Allgemeine Dyck-Sprachen Menge aller korrekt geklammerten Ausdrücke mit n Paaren von Klammern: (i , )i für i ∈ {1, . . . , n} erzeugt durch Grammatik = ({S}, {(i , )i | i ∈ {1, . . . , n}}, P, S) mit S → ε P = ∪ {S → (i S)i | i ∈ {1, . . . , n}} S → SS G Symbole müssen nicht notwendig Klammern sein, z.B. aacdacababdbbcabdb ∈ Dyck-Sprache mit a statt (1 , b statt )1 , c statt (2 und d statt )2 73 Beispiel HTML mehrere Paare öffnender und schließender Klammern (Tags) <html> <head> <title> Theoretische Informatik </title> </head> <body> <h1> Theoretische Informatik </h1> ... </body> </html> 74 Wiederholung: abzählbare Mengen (Mathematik 1. Semester) Eine Menge M heißt genau dann abzählbar, wenn sie höchstens so mächtig wie ist. (also eine surjektive Funktion f : → M existiert) N N Mit dem ersten Diagonalverfahren von Cantor lässt sich z.B. zeigen: I Z und Q sind abzählbar. I Für jedes endliche Alphabet A ist die Menge A∗ aller Wörter über A abzählbar. I Für jedes endliche Alphabet A ist jede Sprache L ⊆ A∗ abzählbar. Mengen, die nicht abzählbar sind, heißen überabzählbar. 75 Beispiele überabzählbarer Mengen Mit dem zweiten Diagonalverfahren von Cantor lässt sich zeigen: R N ist überabzählbar (mächtiger als ). (Es gibt überabzählbar viele reelle Zahlen.) R [0, 1] ⊂ ist überabzählbar. (Intervall [0, 1] enthält überabzählbar viele reelle Zahlen.) 2N (Menge aller Mengen natürlicher Zahlen) ist mächtiger als . (Überabzählbarkeit der Menge 2N ) Es gibt überabzählbar viele Mengen natürlicher Zahlen. N 2{0,1} 2(A ∗ ∗ ) Menge aller Sprachen L ⊆ {0, 1}∗ ist mächtiger als {0, 1}∗ . (Es gibt überabzählbar viele Sprachen über dem Alphabet {0, 1}.) ist für beliebiges endliches Alphabet A mächtiger als A∗ (Für jedes endliche Alphabet A ist die Menge aller Sprachen über A überabzählbar. ) 76 Lässt sich jede Sprache durch eine Grammatik erzeugen? Existiert für jedes endliche Alphabet A zu jeder Sprache L ⊆ A∗ eine Grammatik G mit L = L(G )? Nein (Gegenbeispiel später) Begründung: ∗ 1. Wieviele Sprachen L ⊆ A∗ gibt es? (Mächtigkeit von 2(A ) ) überabzählbar viele 2. Wieviele Grammatiken über dem endlichen Alphabet A gibt es? abzählbar viele, weil I I I I Alphabet A0 = A ∪ {(, ), , , {, }, →, ε} endlich ∗ Menge (A0 ) aller Wörter über A0 abzählbar ∗ jede Grammatik über A ist ein Wort aus (A0 ) (endliche Beschreibung) Menge aller Grammatiken über A ist Teilmenge der ∗ abzählbaren Menge (A0 ) , also selbst abzählbar Damit existieren sogar sehr viel mehr (überabzählbar viele) Sprachen, die nicht durch Grammatiken beschrieben werden können. 77 Zustandsübergangssystem Münzschließfach fg S b O fo A G Z S bg bo O Aktionen: A aufschließen Z zuschließen O Tür öffnen S Tür schließen G Geld einwerfen Zustände : fg frei, Tür zu fo frei, Tür offen bo bezahlt, Tür offen bg bezahlt, Tür zu b belegt 78 Endliche Automaten – Definition NFA (nondeterministic finite automaton) A = (X , Q, δ, I , F ) mit X endliches Alphabet, Q endliche Menge von Zuständen, δ Übergangsrelationen δ : X → (Q × Q), I ⊆ Q Startzustände, F ⊆ Q akzeptierende Zustände. 79 NFA: Beispiel A = (X , Q, δ, {0, 3}, {2, 3, 4}) mit X = {a, b, c} Q = {0, 1, 2, 3, 4} δ(a) = {(0, 0), (0, 1), (1, 3)} δ(b) = {(0, 0), (1, 2)} δ(c) = {(0, 3), (3, 3), (4, 1)} a,b a 0 c 3 b 1 a 2 c c 4 80 Eigenschaften endlicher Automaten NFA A = (X , Q, δ, I , F ) heißt vollständig , falls ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≥ 1 deterministisch (DFA) , falls 1. |I | = 1 und 2. ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≤ 1 Beispiele: a,b b b a 0 b a b b 1 a vollständig nicht deterministisch 0 b 1 nicht vollständig deterministisch 0 1 a vollständig deterministisch 81 Wiederholung: zweistellige Relationen Verkettung der Relationen R ⊆ M × M und S ⊆ M × M: R ◦ S = {(a, b) | ∃c ∈ M : (a, c) ∈ R ∧ (c, b) ∈ S} Beispiel: M = {a, b, c} R = {(a, a), (b, c)} S = {(a, c), (c, b)} R ◦S = {(a, c), (b, b)} S ◦ R = {(c, c)} 82 Darstellung als Graph als gerichteter Graph G = (V , E ) mit V = M und E = R b M = {a, b, c} R = {(a, a), (b, c)} a S = {(a, c), (c, b)} Verkettung als Wege mit passender Markierung R ◦S c b = {(a, c), (b, b)} S ◦ R = {(c, c)} a c 83 Darstellung als Matrix mit Booleschen Einträgen = {a, b, c} M R = {(a, a), (b, c)} S = {(a, c), (c, b)} 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 Verkettung als Matrixmultiplikation mit Booleschen Operationen R ◦S S ◦R 1 = 0 0 0 = 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 = 0 0 1 = 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 84 Übergangsrelation auf Wörtern Fortsetzung der Übergangsrelationen δ : X → (Q × Q) auf Wörter δ : X ∗ → (Q × Q): δ(ε) = {(q, q) | q ∈ Q} = IQ (Identität auf Q) δ(wa) = δ(w ) ◦ δ(a) = {(p, q) | ∃r ∈ Q : (p, r ) ∈ δ(w ) ∧ (r , q) ∈ δ(a)} für alle w ∈ X ∗ , a ∈ X Für w = w1 · · · wn ∈ X n gilt also δ(w ) = δ(w1 ) ◦ · · · ◦ δ(wn ) (Multiplikation der Matrizen δ(w1 ), . . . , δ(wn )) 85 Beispiel a,b A = ({a, b}, {0, 1}, δ, I , F ) mit δ(a) = {(0, 0)} und δ(b) = {(0, 0), (0, 1), (1, 1)} δ(a) = 1 0 δ(ba) = δ(b)δ(a) = δ(abb) = δ(a)δ(b)δ(b) = 1 0 b 0 0 0 b δ(b) = 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 = 1 0 1 1 1 0 0 0 = 1 0 1 0 86