Gliederung der Vorlesung. Grundbegriffe. Formale Sprachen/Automatentheorie.. Grammatiken.2..3. Kontext-freie Sprachen 2. Berechnungstheorie 2.. Berechenbarkeitsmodelle 2.2. Die Churchsche These 2.3. Unentscheidbarkeit 3. Komplexitätstheorie 3.. Nicht-deterministische Turing Maschinen 3.2. Komplexitätsmaße 3.3. Das P=NP? Problem 8/ Fahrplan Aspekt : nützliche Eigenschaften regulärer Sprachen Vorteile der Beschreibungsmittel Aspekt 2: Grenzen der Beschreibungsmittel Welcherart formale Sprachen sind nicht regulär? Wie weit tragen die Beschreibungsmittel für reguläre Sprachen? 8/2
Aspekt : nützliche Eigenschaften regulärer Sprachen formale Sprachen, also auch reguläre Sprachen, sind Teilmengen der Menge aller Wörter über dem zugrunde liegenden Alphabet es gibt eine Reihe von Mengenoperationen: Durchschnitt, Vereinigung, Komplement, Differenz, Fakt Die Klasse aller regulärer Sprachen ist abgeschlossen bzgl. dieser (/* und weiterer */) Mengenoperationen. mit anderen Worten: Für alle Sprachen L,L 2 Σ* gilt: Wenn L und L 2 regulär sind, so sind auch L L 2, L L 2, co(l ) und L \L 2 regulär. 8/3 für einige Mengenoperationen ist offensichtlich, daß die Klasse der regulären Sprachen bzgl. der jeweiligen Operation abgeschlossen ist z.b.: Vereinigung, Komplement (?) für andere Mengenoperationen ist es nicht ganz so offensichtlich, daß die Klasse der regulären Sprachen z.b.: Durchschnitt, Differenz wir werden im folgenden die zugrunde liegenden Ideen zum Nachweis der Abgeschlossenheitseigenschaften beispielhaft diskutieren 8/4
Mengenoperation: Komplement (/* Nützlichkeit */) L = { w w {, }*, w enthält das Teilwort nicht } Fragestellung: Ist L eine reguläre Sprache? L = { w w {, }*, w enthält das Teilwort } offenbar ist L regulär offenbar gilt: L = co(l) Hinweis: co(l) = Σ* \ L aus der Abgeschlossenheit bzgl. der Mengenoperation Komplement folgt, daß auch L regulär ist 8/5 Mengenoperation: Komplement (/* Beweisidee */) es sei L eine reguläre Sprache dann gibt es einen DFA A mit L(A) = L Idee: benutze A um einen DFA A mit L(A ) = co(l) zu konstruieren da es einen DFA A mit L(A ) = co(l) gibt, ist auch co(l) regulär Hinweis: es ist wichtig, daß unsere DFAs vollständig sind 8/6
Mengenoperation: Komplement (/* Beispiel */) L = { w w {, }*, w enthält das Teilwort } z z z 2, co(l) = { w w {, }*, w enthält nicht das Teilwort } z z z 2, 8/7 Mengenoperation: Durchschnitt (/* Nützlichkeit */) L = { w w {, }*, w enthält die Teilwörter und } Fragestellung: Ist L eine reguläre Sprache? L = { w w {, }*, w enthält das Teilwort } L 2 = { w w {, }*, w enthält das Teilwort } offenbar sind L und L 2 regulär offenbar gilt: L = L L 2 aus der Abgeschlossenheit bzgl. der Mengenoperation Durchschnitt folgt, daß auch L regulär ist 8/8
Mengenoperation: Durchschnitt (/* Beweisidee */) es seien L und L 2 reguläre Sprachen dann gibt es einen DFA A mit L(A ) = L dann gibt es einen DFA A 2 mit L(A 2 ) = L 2 Idee: benutze A und A 2, um einen DFA A mit L(A) = L L 2 zu konstruieren da es einen DFA A mit L(A) = L L 2 gibt, ist auch L regulär 8/9 Mengenoperation: Durchschnitt (/* Beispiel */) L = { w w {, }*, w enthält das Teilwort }, a a a 2 L 2 = { w w {, }*, w enthält das Teilwort }, b b b 2 8/
Mengenoperation: Durchschnitt (/* Beispiel */) L = L L 2 = { w w {, }*, w enthält die Teilwörter und } <a,b > <a,b > <a,b > <a,b 2 > <a 2,b > <a 2,b 2 >, 8/ Mengenoperation: Differenz (/* Nützlichkeit */) L = { w w {, }*, w hört mit einer auf, w enthält nicht das Teilwort } Fragestellung: Ist L eine reguläre Sprache? L = { w w {, }*, w hört mit einer auf } L 2 = { w w {, }*, w enthält das Teilwort } offenbar sind L und L 2 regulär offenbar gilt: L = L \L 2 aus der Abgeschlossenheit bzgl. der Mengenoperation Differenz folgt, daß auch L regulär ist 8/2
Mengenoperation: Differenz (/* Beweisidee */) L L 2 Σ* L \L 2 = L co(l 2 ) es seien L und L 2 reguläre Sprachen dann ist co(l 2 ) eine reguläre Sprache also ist auch L co(l 2 ) eine reguläre Sprache Hinweis: wir benutzen die Eigenschaften der Mengenoperationen 8/3 Mengenoperation: Differenz (/* Beweisidee */) es seien L und L 2 reguläre Sprachen dann gibt es einen DFA A mit L(A ) = L dann gibt es einen DFA A 2 mit L(A 2 ) = L 2 Idee: () benutze A 2, um einen DFA A 3 mit L(A 3 ) = co(l 2 ) zu konstruieren (2) benutze A und A 3, um einen DFA A mit L(A) = L co(l 2 ) (/* = L \L 2 */) zu konstruieren 8/4
Aspekt 2: Grenzen der Beschreibungsmittel jede endliche Sprache ist regulär es gibt unendliche Sprachen, die regulär sind es gibt unendliche Sprachen, die nicht regulär sind Beispiele: L = { n n n > } L = { w w {, }*, # (w) = # (w) } Hinweis: # (w) und # (w) bezeichnen, wie oft eine bzw. eine in w vorkommt 8/5 um die Frage zu beantworten, was allen reguläre Sprachen gemein ist, muß man sich die zur Verfügung stehenden Beschreibungsmittel für reguläre Sprachen genauer ansehen die jeweils betrachteten Beschreibungsmittel haben Einfluß auf die Antworten und den Weg diese zu finden wählen deterministische endliche Automaten 8/6
, L(A) ist eine unendliche Sprache, da z, z z 2 z 3 es sei s L(A) mit s 4 dann muß der mit s markierte Weg durch den DFA A mindestens einen Knoten zweimal durchlaufen 8/7 Wege z z z z 2 z 3 z z z 2 z z 2 z 3 akzeptierte Wörter,, z,, z z 2 z 3 markierter Weg: z z z 2 z z 2 z 3 da der Zustand z zweimal auftaucht, führen auch folgende Wege in den Endzustand: z z z 2 z z 2 z z 2 z 3, z z z 2 z z 2 z z 2 z z 2 z 3 k, z z z 2 z z 2 z z 2 z z 2 z z 2 z 3, 8/8
Wege z z z z 2 z 3 z z z 2 z z 2 z 3 akzeptierte Wörter,, z,, z z 2 z 3 markierter Weg: z z z z 2 z 3 da der Zustand z zweimal auftaucht, führen auch die wie Wege in den Endzustand: z z z z z 2 z 3, z z z z z z 2 z 3, z z z z z z z 2 z 3, 8/9 Wege akzeptierte Wörter z, z z z 2 z 3, z z z 2 z z 2 z 3, z z z 2 z z 2 z z 2 z 3, z z z 2 z z 2 z z 2 z z 2 z 3 k, z z z 2 z z 2 z z 2 z z 2 z z 2 z 3,, z z 2 z 3 Konsequenz: L = { u v i w i, u =, v =, w = } L(A) L 2 = { u v i w i, u =, v =, w = } L(A) 8/2
Wege akzeptierte Wörter z z z 2 z 3, z z z z 2 z 3, z z z z z 2 z 3, z z z z z z 2 z 3, z z z z z z z 2 z 3, z,, z z 2 z 3 Konsequenz: L 3 = { u v i w i, u =, v =, w = } L(A) L 4 = { u v i w i, u =, v =, w = } L(A) 8/2 Zwischenfazit es sei A ein DFA mit n Zuständen es sei L(A) eine unendliche Sprache es sei s ein Wort aus L(A) mit s n dann gibt es Wörter u, v und w, so daß gilt: s = u v w v u + v n u v k w L(A) für alle k Hinweis : v bezeichnet die Länge von v; bezeichnet die Operation Verkettung 8/22
allgemein Was haben alle unendlichen regulären Sprachen L gemeinsam? es gibt einen DFA A = [Z,Σ,δ,z,E] mit L(A) = L es gibt ein n > mit card(z) = n 8/23 Pumping-Lemma für reguläre Sprachen Es sei L Σ* eine unendliche Sprache. Wenn L regulär ist, so gibt es eine Zahl n, so daß für alle Wörter s L mit s n, gilt: es gibt Wörter u, v und w aus Σ*, so daß gilt: (i) s = u v w (ii) v (iii) u + v n (iv) u v k w L für alle k 8/24
Was kann man mit dem Pumping-Lemma anfangen? es sei L Σ* eine unendliche Sprache wenn L regulär ist, so gelten die Aussagen des Pumping- Lemma für L wenn die Aussagen des Pumping-Lemma für L nicht gelten, so ist L nicht regulär das Pumping-Lemma kann demzufolge benutzt werden, um nachzuweisen, daß eine Sprache L nicht regulär ist Hinweis: A B ist logisch äquivalent zu B A 8/25 es sei L Σ* eine unendliche Sprache wenn L regulär ist, so gibt es ein n, so daß für alle s L mit s n die im Pumping-Lemma formulierten Eigenschaften gelten wenn es kein n gibt, so daß für alle s L mit s n die im Pumping-Lemma formulierten Eigenschaften gelten, so ist L nicht regulär 8/26
es sei L Σ* eine unendliche Sprache wenn es kein n gibt, so daß für alle s L mit s n die im Pumping-Lemma formulierten Eigenschaften gelten, so ist L nicht regulär [ n: ( s L mit s n: E(s) ) ] abstrakt: n: ( s L mit s n: E(s) ) ] n: ( s L mit s n: E(s) ) ] 8/27 es sei L Σ* eine unendliche Sprache wenn es kein n gibt, so daß für alle s L mit s n die im Pumping-Lemma formulierten Eigenschaften gelten, so ist L nicht regulär wenn es zu jedem n ein s L mit s n gibt, so daß für s die im Pumping- Lemma formulierten Eigenschaften nicht gelten, so ist L nicht regulär 8/28
es sei L Σ* eine unendliche Sprache wenn es kein n gibt, so daß für alle s L mit s n die im Pumping-Lemma formulierten Eigenschaften gelten, so ist L nicht regulär wenn es zu jedem n ein s L mit s n gibt, so daß für s die Eigenschaften (i), (ii), (iii) und (iv) nicht gleichzeitig erfüllt sind so ist L nicht regulär 8/29 Beispiel L = { a z b z z > } n 2 3 4 Kandidaten für s ab, aabb, aaabbb, aaaabbbb, ab, aabb, aaabbb, aaaabbbb, ab, aabb, aaabbb, aaaabbbb, aabb, aaabbb, aaaabbbb, aabb, aaabbb, aaaabbbb, geeignete Auswahl treffen zu n wählen wir hier das Wort s n = a n b n 8/3
Beispiel L = { a z b z z > } (/* n = 2, s n = aabb */) nachweisen, daß alle u, v und w aus Σ* nicht gleichzeitig (i), (ii), (iii) und (iv) erfüllen können aber es gibt unendlich viele u, v und w in Σ* aber es gibt nur endlich viele u, v, w in Σ*, die gleichzeitig (i), (ii) und (iii) erfüllen für die endlich vielen u, v und w aus Σ*, die gleichzeitig (i), (ii) und (iii) erfüllen, zeigen wir, daß sie (iv) nicht erfüllen Hinweis: (A B) ist logisch äquivalent zu A B 8/3 Beispiel L = { a z b z z > } (/* n = 2, s n = aabb */) Idee: für die endlich vielen u, v und w aus Σ*, die gleichzeitig (i), (ii) und (iii) erfüllen, zeigen wir, daß sie nicht (iv) erfüllen Beobachtung: u, v und w aus Σ* erfüllen (iv) nicht, falls gilt: es gibt ein k, so daß gilt: u v k w L (i) s n = u v w (ii) v (iii) u + v n 8/32 (iv) u v k w L für alle k
Beispiel L = { a z b z z > } (/* n = 2, s n = aabb */) wenn u, v, w aus Σ* gleichzeitig (i), (ii) und (iii) erfüllen, liegt einer der folgenden Fälle vor Fall : v = a (/* also u = a und w = bb bzw. u = ε und w = abb */) für k = 2 gilt: u v k w = aaabb L Fall 2: v = aa (/* also u = ε und w = bb */) für k = 2 gilt: u v k w = aaaabb L (i) s n = u v w (ii) v (iii) u + v n 8/33 (iv) u v k w L für alle k Beispiel L = { a z b z z > } (/* allgemein */) für jedes n > sei s n = a n b n es sei n beliebig, aber fest wenn u, v und w aus Σ* gleichzeitig (i), (ii) und (iii) erfüllen, so muß gelten: v = a r für ein r mit < r n (/* also u = und w = */) also gilt für k = 2: u v k w = a n+r b n L also ist L nicht regulär!!! (i) s n = u v w (ii) v (iii) u + v n 8/34 (iv) u v k w L für alle k
es sei L Σ* eine unendliche Sprache um nachzuweisen, daß L nicht regulär ist, gehe wie folgt vor: Schritt : wähle zu jedem n > ein s n L mit s n n (/* geschickt */) Schritt 2: zeige, daß zu jedem s n und für alle u, v und w aus Σ* mit s n = u v w, v und u + v n ein k existiert, so daß gilt: u v k w L 8/35 Beispiel L = { w w w { a,b }* } für jedes n > sei s n = a n b a n b es sei n > beliebig, aber fest wenn u, v und w aus Σ* gleichzeitig (i), (ii) und (iii) erfüllen, so muß gelten: v = a r für ein r mit < r n (/* also u = und w = */) also gilt für k = 2: u v k w = a n+r b a n b L also ist L nicht regulär!!! 8/36
Begriffe: Chomsky-Grammatik, Ableitbarkeit reguläre Grammatik DFA, NFA Sätze / Zusammenhänge: reguläre Grammatiken, DFA und NFA sind äquivalente Beschreibungsmittel für reguläre Sprachen Pumping-Lemma Methoden / Techniken / Algorithmen: Übersetzung (/* reguläre Grammatiken NFA DFA */) Minimierungsalgorithmus Anwendung des Pumping-Lemma 8/37