Tutorium zur theoretischen Informatik Lösung zum Übungsblatt 1 (2006-12-06) Inhalt ● ● ● ● ● Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5 Aufgabe 1 Konstruiere einen DFA zur Sprache L≔{w | (|w|b = 2i) v (|w|b = 2(i+1)), i ∈ ℕ0} mit Σ ≔ {a,b} Lösung Aufgabe 1 Die Definition der Sprache war absichtlich redundant gehalten, damit dem Leser klar wird, dass sich hinter kompliziert scheinenden Abbildungsvorschriften oft nichts Wildes versteckt. Im Exorciser werden teils ähnliche Aufgaben gestellt. Die Definition kann man daher auch kürzen zu: L≔{w | |w|b = 2i, i ∈ ℕ0} mit Σ ≔ {a,b} Dies ergibt den Graph des Lösungsautomaten: Bzw. die formale Definition: M≔{Q≔{q0, q1}, Σ ≔ {a,b}, δ≔{(q0,a)=q0, (q0,b)=q1, (q1,a)=q1, (q1,b)=q0}, q0, E≔{q0}} Aufgabe 2 Konstruiere einen DFA zur Sprache L≔{anbn} mit n ∈ ℕ0, Σ ≔ {a,b} Lösung Aufgabe 2 Hoffentlich hat niemand allzuviel Zeit mit dieser Aufgabe verschwendet! Die gegebene Sprache L ist nicht-regulär. D. h. sie kann daher auch nicht von endlichen Automaten erkannt werden, was wiederum heisst, dass es keinen EA geben kann, der diese Sprache erkennt. EA können ausschließlich reguläre Sprachen erkennen. Man sollte sich L merken, da diese Sprache meist das Standardbeispiel für eine nichtreguläre Sprache ist, z. B. bei der Einführung des Pumping Lemma-Beweises. Seite 1 / 3 Tutorium zur theoretischen Informatik Lösung zum Übungsblatt 1 (2006-12-06) Aufgabe 3 Konstruiere einen DFA der alle Zahlen erkennen kann, die genau durch 3 teilbar sind, also L≔{x | (x%3) == 0)} Hinweis: bekanntlich ist eine Zahl durch 3 teilbar, wenn ihre Quersumme durch 3 teilbar ist. Lösung Aufgabe 3 Die Idee ist, die Ziffern der Zahl von links nach rechts abzuarbeiten und dabei immer in einen Zustand zu wechseln, der den Rest repräsentiert, wenn man die aktuelle Ziffer durch 3 teilen würde (die Zustände, die man dadurch erhält, nennt man Äquivalenzzustände). Es kann 3 mögliche Reste geben: 0, 1 und 2; daher kann es auch nur 3 Zustände im Lösungsautomat geben. Aufgabe 4 Downloade und installiere den "Exorciser". Löse in dem Programm im Kapitel "Reguläre Sprachen" zu den folgenden Aufgabentypen mindestens 1 Aufgabe im "Fortgeschrittenen"-Level a) Automatenkonstruktion (und hier natürlich wieder von jedem "Sprachtyp" je 1x) b) Reguläre Ausdrücke in endliche Automaten überführen c) ℇ-Übergänge entfernen d) NFA in DFA überführen e) Vereinigung Seite 2 / 3 Tutorium zur theoretischen Informatik Lösung zum Übungsblatt 1 (2006-12-06) Lösung Aufgabe 4 Die Lösungen werden im Exorciser direkt gegeben. Aufgabe 5 Konstruiere den DFA, der die Sprache L≔{x∈Σ * | (|x|a - |x|b) ≡ 2 (%3)} mit Σ ≔ {a,b} erkennt. Hinweis: im Buch von Schöning (siehe oben) auf Seite 28 ("1.2.1 Endliche Automaten") ist ein ähnlicher Automat definiert. Lösung Aufgabe 5 Hier liegt die Schwierigkeit zunächst erstmal darin, überhaupt zu verstehen, was die Sprache sein soll. Erkannt werden alle Wörter deren Differenz der Anzahlen von a´s und b ´s kongruent 2 modulo 3 sind (Erklärung z. B. in der Wikipedia: http://de.wikipedia.org/wiki/Kongruenz_%28Zahlentheorie%29). Somit haben wir es wieder mal mit Äquivalenzzuständen zu tun – von denen es bei Mod 3 wieder nur 3 geben kann. Wie man sieht kann man zwar jede mögliche Reihenfolge von a´s und b´s erkennen, aber es wird erzwungen, dass die Anzahlen von a´s und b´s der Bedingung der Sprache entsprechen. Insbesondere gilt für das Wort "b": |b|a - |b|b = 0 - 1 = -1 ≡ 2 (%3) ..., da -1 kongruent 2 modulo 3 ist. Wer ohne Hilfe auf diesen Automaten kam, kann sich als kleiner Genie der theoretischen Informatik betrachten! Seite 3 / 3