HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/2006 02.11.2005 2. Zentralübung Christian Schindelhauer 1 HEINZ NIXDORF INSTITUT Ratschläge für die Klausur Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Keep cool! – Keine Panik, locker bleiben, take it easy, etc. Formalitäten beachten: – Wann, wo, welche Hilfsmittel erlaubt, Personalausweis, Studienausweis, etc. Aufgabentext lesen und verstehen! – Bei Unstimmigkeiten sofort fragen! – Die Aufgabenstellung könnte fehlerhaft sein. Erst denken, dann schreiben. – Lösungsstrategie zurecht legen und dann durchführen Ergonomisch arbeiten – Zuerst die leichten Aufgaben mit den vielen Punkten – Am Schluss die schweren Aufgaben mit den wenigen Punkten Keine Selbstzerstörung: – Zwischenschritte mit an/ab-geben, (halb-) richtige Lösungen nicht streichen – Nicht vorzeitig abgeben (weil es die anderen auch machen) Berechenbarkeit, Formale Sprachen, 02-2 Komplexitätstheorie HEINZ NIXDORF INSTITUT (Mini) Klausur-Aufgabenvorschläge Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer 1. 2. 3. 4. 5. 6. Konstruieren Sie einen DFA für folgende Sprache L = ... Konstruieren Sie einen NFA für folgende Sprache L = ... Wandeln Sie folgenden NFA in einen DFA um. Beweisen Sie, dass die Sprache L = ... nicht regulär ist. Bestimmen Sie den regulären Ausdruck passend zu dem NFA. Beweisen Sie, dass die regulären Sprachen abgeschlossen sind gegenüber ... 7. Bestimmen Sie die Äquivalenzklassen der Sprache L. Berechenbarkeit, Formale Sprachen, 02-3 Komplexitätstheorie 1. Konstruieren Sie einen DFA für folgende Sprache ... HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Achtung: – Hohe Quote an leichtsinnigen, leicht vermeidbaren Fehlern! DFA: – Formal: 5 Komponenten – Übergangsfunktion (nur eine Komponente!) • Ist jeder Übergang definiert? • Gibt es auch nicht etwa zwei Übergänge von einem Zustand? Erkennt der DFA alle Wörter der Sprache? – Epsilon? Erkennt der DFA nicht etwa zu viele Wörter? Berechenbarkeit, Formale Sprachen, 02-4 Komplexitätstheorie HEINZ NIXDORF INSTITUT Beispiele zum Üben Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer 1. {w | w beginnt mit 1 und endet auf 0} 2. {w | w beginnt mit 0, hat ungerade Länge oder beginnt mit 1 und hat gerade Länge} 3. {w | w ist ein Wort aus {a,b,c,d}* aber nicht a und auch nicht b} 4. {, 0} 5. Die leere Menge 6. Die Menge aller Worte aus {0,1}* 7. Alle Worte aus {0,1}* außer das leeren Wort Berechenbarkeit, Formale Sprachen, 02-5 Komplexitätstheorie HEINZ NIXDORF INSTITUT Das ist kein DFA! Warum? Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Berechenbarkeit, Formale Sprachen, 02-6 Komplexitätstheorie 2. Konstruieren Sie einen NFA für folgende Sprache HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Oftmals schwieriger als DFA 1. Trick – Umformulierung der Sprache als regulärer Ausdruck – Kombination der Einzel-NFAs 2. Trick – Angabe eines DFAs = NFA mit einelementiger Übergangsfunktion – ACHTUNG: DFAs können erheblich größer als NFAs sein. Vorsicht: – Epsilon-Übergänge führen oftmals zum Fehler 2. Ordnung – NFAs können nicht so einfach “invertiert” werden Fehler 1. Ordnung: – Nicht alle Worte werden erkannt Fehler 2. Ordnung (typisch für NFAs) – Zu viele Worte werden erkannt Berechenbarkeit, Formale Sprachen, 02-7 Komplexitätstheorie HEINZ NIXDORF INSTITUT Beispiele zum Üben Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer 1. {w | w endet auf 00} NFA mit drei Zuständen 2. {a} NFA mit zwei Zuständen 3. NFA für (01 001 010)* 4. NFA für (a b+)a+b+, wobei L+ := LL* Berechenbarkeit, Formale Sprachen, 02-8 Komplexitätstheorie HEINZ NIXDORF INSTITUT 3. Wandeln Sie einen NFA in einen DFA um! Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Kann mechanisch durchgeführt werden: – 1. Potenzmenge der Zustände malen – 2. Für jede Menge die Nachfolgezustände bestimmen – 3. und dann die Epsilon-Übergänge berücksichtigen Tricks: – Nur die Potenzmengenzustände einzeichnen, die auch von einem Startzustand erreicht werden können – Zur Kontrolle ähnliche Mengen vergleichen • in der Regeln sind die Übergänge auch ähnlich Zur Kontrolle: – Einfache Worte einsetzen – Sind alle Übergänge definiert? Berechenbarkeit, Formale Sprachen, 02-9 Komplexitätstheorie HEINZ NIXDORF INSTITUT L(NFA) L(DFA) Gegeben sei ein nichtdeterministischer endlicher Automat N = (Q, , , q0, F) – dann konstruieren wir den DFA M = (Q’, , ’, q0’, F’ ) wie folgt: 2. Fall: Mit -Übergang in Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer 1. Zustandsmenge: Q’ = P(Q), Q’ ist die Potenzmenge von Q 2. Alphabet bleibt gleich 3. Übergangsfunktion Für alle r Q1 und a gelte Notation: andere Notation: 4. Anfangszustand: q0 = E({q0}) 5. Akzeptierende Zustände: Zustand R akzeptiert, falls ein akzeptierender Zustand von F in R ist Berechenbarkeit, Formale Sprachen, 02-10 Komplexitätstheorie HEINZ NIXDORF INSTITUT Beispiel NFADFA Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer 1. .. 2. .. 3. Übergangsfunktion Für alle r Q1 und a gelte andere Notation: 4. Anfangszustand: q0 = E({q0}) 5. Akzeptierende Zustände: Zustand R akzeptiert, falls ein akzeptierender Zustand von F in R ist Berechenbarkeit, Formale Sprachen, 02-11 Komplexitätstheorie 4. Beweisen Sie, dass die Sprache L nicht regulär ist! HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Zwei 1/2 Methoden: – Pumping-Lemma • Hochpumpen • Runterpumpen • Zielpumpen – Äquivalenzklassen • Es reicht eine unendliche Teilmenge zu finden – Abschlusseigenschaften und Pumping-Lemma/Äquivalenzklassen • Ist das Komplement nicht regulär, so ist es die Sprache auch nicht • Eine reguläre Sprache geschnitten mit einer weiteren ergibt wieder eine reguläre Berechenbarkeit, Formale Sprachen, 02-12 Komplexitätstheorie HEINZ NIXDORF INSTITUT Das Pumping-Lemma ist ein Killerargument Beispiel: – Sei B = {0n1n | n ≥ 0} zu zeigen: B ist nicht regulär Angenommen doch (Pumping-Lemma) • Dann gibt es eine Zahl p>0 • so dass für jedes Wort s mit |s|≥p • s in drei Teile geteilt werden kann: s = xyz, wobei gilt für alle i≥0: xyiz B |y| > 0 |xy| ≤ p. Daraus folgt für s = 0p1p B – dann ist xy L(0*) – und |y| > 0 – Sei m = |y| Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Dann müssten nach dem PumpingLemma folgende Worte in B sein: – i=0: Das Wort xz = 0p-m1p – i=1: Das Wort xyz = 0p1p – i=2: Das Wort xyyz = 0p+m1p – i=3: Das Wort xy3z = 0p+2m1p – ... Bis auf i=1 gilt xyiz B – Das Pumping-Lemma liefert Worte, die nicht in B sind Daher kann B nicht regulär sein Berechenbarkeit, Formale Sprachen, 02-13 Komplexitätstheorie HEINZ NIXDORF INSTITUT Beispiele Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer {an | n ist eine Zweierpotenz} { w {<,>}* | w ist ein korrekter Klammerausdruck} – Also < > oder < > <> oder < < > < > > < >, ... {wtw | w,t {0,1}*} – Hinweis :Betrachte Schnitt mit 0*1*0* {0m1n | m ≠ n} – Hinweis: Komplement! {x = y + z | x,y,z sind Binärzahlen, und x ist die Summe von y und z} Berechenbarkeit, Formale Sprachen, 02-14 Komplexitätstheorie 5. Bestimmen Sie den regulären Ausdruck zum NFA! HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Reine Fleißaufgabe – GNFA bauen und dann Schritt für Schritt die Zustände ersetzen – Auf dem Zielübergang steht der gewünschte reguläre Ausdruck Umgekehrt: (regulärer Ausdruck -> NFA) – viel einfacher Natürlich muss man reguläre Ausdrücke verstanden haben: –Ø –Ø – * – Ø* Berechenbarkeit, Formale Sprachen, 02-15 Komplexitätstheorie Die regulären Ausdrücke beschreiben genau die reguläre Sprachen (2. Teil: ) HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Strategie: – NFA mit k Zuständen GNFA mit k+2 Zuständen – GNFA mit k+2 Zuständen GNFA mit k+1 Zuständen – GNFA mit k+1 Zuständen GNFA mit k Zuständen – ... – GNFA mit 3 Zuständen GNFA mit 2 Zuständen – GNFA mit 2 Zuständen Regulärer Ausdruck a*b(a b)* Berechenbarkeit, Formale Sprachen, 02-16 Komplexitätstheorie GNFA mit k Zuständen GNFA mit k-1 Zuständen HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Wie kann man einen Zustand im GNFA einsparen? Zustand qraus soll raus Betrachte alle anderen Paare qi,qj Jeder Weg von qi nach qj kann entweder – nach qraus führen (R1) – dort beliebig häufig qraus die Schleife über qraus nehmen (R2)* – dann nach qj gehen (R3) oder – überhaupt nicht über qraus gehen (R4) Berechenbarkeit, Formale Sprachen, 02-17 Komplexitätstheorie 6. Beweisen Sie, dass die regulären Sprachen abgeschlossen sind unter ... HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Reguläre Sprachen sind abgeschlossen unter – Stern – Vereinigung – Konkatenation – Schnitt – Komplement – Differenzmenge – Umkehrung – ... Tricks: – Stern, Vereinigung, Umkehrung, Konkatenation folgen direkt aus den regulären Ausdrücken – Komplement durch Invertierung der Zustände im DFA – Schnitt kann aus Komplement und Vereinigung hergeleitet werden Berechenbarkeit, Formale Sprachen, 02-18 Komplexitätstheorie 7. Bestimmen Sie die Äquivalenzklassen der Sprache L! HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Knifflig!!!!! 1. Versuch: L ist regulär – Jeder Zustand im DFA steht für eine Untermenge einer Äquivalenzklasse – Zustände können vereinigt werden, falls für alle Folgeworte Worte gleich akzeptiert oder verworfen werden (Def.!) – Sukzessives Vereinigen führt zu den Äquivalenzklassen 2. Versuch: L ist nicht regulär – Dann muss es unendlich viele Äquivalenzklassen geben – Aufgabe nur lösbar, wenn es eine einheitliche Struktur gibt – Diese muss gefunden und verifiziert werden Achtung: – In irgendeiner Äquivalenzklassen müssen auch und die ein-buchstabigen Worte liegen – Also nicht vergessen! Berechenbarkeit, Formale Sprachen, 02-19 Komplexitätstheorie HEINZ NIXDORF INSTITUT Nächsten Mittwoch ist die 1. Miniklausur Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Keine Anmeldung notwendig! Keine Hilfsmittel erlaubt! Bitte pünktlich erscheinen und automatisch mit Sicherheitsabstand (möglichst zwei Sitze zum Nachbarn hinsetzen) Bitte nicht abschreiben! – Es werden verschiedene Versionen ausgeteilt, die aus der Entfernung ähnlich aussehen. Abschreiben = 0 Punkte. Abschreiben lassen = 0 Punkte. Unterhalten = 0 Punkte. Berechenbarkeit, Formale Sprachen, 02-20 Komplexitätstheorie HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Vielen Dank Ende der 2. Zentralübung Nächste Zentralübung: Nächste Vorlesung: Nächste Miniklausur: Mi. 16.11.2005 Mo. 07.11.2005 Mi. 09.11.2005 Heinz Nixdorf Institut & Institut für Informatik Universität Paderborn Fürstenallee 11 33102 Paderborn Tel.: 0 52 51/60 66 92 Fax: 0 52 51/60 64 82 E-Mail: [email protected] http://www.upb.de/cs/schindel.html 21