Inhalt Aufgabe 1 Aufgabe 2

Werbung
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
Herunterladen