210 likes | 355 Views
Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/2006 02.11.2005 2. Zentralübung. Christian Schindelhauer. Ratschläge für die Klausur. Keep cool! Keine Panik, locker bleiben, take it easy, etc. Formalitäten beachten:
E N D
Einführung in Berechenbarkeit, Formale Sprachen und KomplexitätstheorieWintersemester 2005/200602.11.20052. Zentralübung Christian Schindelhauer
Ratschläge für die Klausur • 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)
(Mini) Klausur-Aufgabenvorschläge • 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 ... • Bestimmen Sie die Äquivalenzklassen der Sprache L.
1. Konstruieren Sie einen DFA für folgende Sprache ... • 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?
Beispiele zum Üben • {w | w beginnt mit 1 und endet auf 0} • {w | w beginnt mit 0, hat ungerade Länge oder beginnt mit 1 und hat gerade Länge} • {w | w ist ein Wort aus {a,b,c,d}* aber nicht a und auch nicht b} • {, 0} • Die leere Menge • Die Menge aller Worte aus {0,1}* • Alle Worte aus {0,1}* außer das leeren Wort
2. Konstruieren Sie einen NFA für folgende Sprache • 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
Beispiele zum Üben • {w | w endet auf 00} • NFA mit drei Zuständen • {a} • NFA mit zwei Zuständen • NFA für (01 001 010)* • NFA für (a b+)a+b+, • wobei L+ := LL*
3. Wandeln Sie einen NFA in einen DFA um! • 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?
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 Notation: Zustandsmenge: Q’ = P(Q),Q’ ist die Potenzmenge von Q Alphabet bleibt gleich ÜbergangsfunktionFür alle r Q1und a gelteandere Notation: Anfangszustand: q0 = E({q0}) Akzeptierende Zustände:Zustand R akzeptiert, falls ein akzeptierender Zustand von F in R ist L(NFA) L(DFA)
Beispiel NFADFA • .. • .. • ÜbergangsfunktionFür alle r Q1und a gelteandere Notation: • Anfangszustand: q0 = E({q0}) • Akzeptierende Zustände:Zustand R akzeptiert, falls ein akzeptierender Zustand von F in R ist
4. Beweisen Sie, dass die Sprache L nicht regulär ist! • 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
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| Dann müssten nach dem Pumping-Lemma 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 Das Pumping-Lemma ist ein Killerargument
Beispiele • {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}
5. Bestimmen Sie den regulären Ausdruck zum NFA! • 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: • Ø • Ø • * • Ø*
Die regulären Ausdrücke beschreiben genau die reguläre Sprachen (2. Teil: ) • 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)*
GNFA mit k Zuständen GNFA mit k-1 Zuständen • 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)
6. Beweisen Sie, dass die regulären Sprachen abgeschlossen sind unter ... • 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
7. Bestimmen Sie die Äquivalenzklassen der Sprache L! • 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!
Nächsten Mittwoch ist die 1. Miniklausur • 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.
Vielen DankEnde der 2. ZentralübungNächste Zentralübung: Mi. 16.11.2005Nächste Vorlesung: Mo. 07.11.2005Nächste Miniklausur: 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: schindel@upb.de • http://www.upb.de/cs/schindel.html