Aufgabenblock — AFB II
Zehn Aufgaben aus allen Unterkapiteln: Zustände deuten, Entwürfe vergleichen und erweitern, Automaten implementieren und Mealy-Ausgaben untersuchen — mit gestuften Tipps, wenn Sie nicht weiterkommen.
Gegeben ist ein DEA über \(\Sigma=\{a,\,b\}\).
Analysieren Sie den Automaten, indem Sie für jeden Zustand seine Bedeutung notieren. Wie viele Wörter der Länge 3 bzw. der Länge 4 akzeptiert er?
b? Was ändert ein a? Die Schleifen zeigen: b spielt für den Zustand keine Rolle.a modulo 3. Akzeptiert wird, wenn diese Anzahl durch 3 teilbar ist.bbb, aaa → 2. Länge 4: bbbb und die vier Wörter mit genau drei a → 5.Vollständige Lösung
| Zustand | Bedeutung |
|---|---|
| z0 | Anzahl der a durch 3 teilbar (auch 0) |
| z1 | Anzahl der a lässt Rest 1 |
| z2 | Anzahl der a lässt Rest 2 |
\(L(A)=\{\,w\in\{a,b\}^*\mid \text{Anzahl der } a \text{ in } w \text{ ist durch 3 teilbar}\,\}\) — dazu gehört auch \(\varepsilon\).
Länge 3: 0 oder 3 a, also bbb, aaa → 2. Länge 4: 0 oder 3 a, also bbbb und aaab, aaba, abaa, baaa → 5
Ein Schüler zeichnet den folgenden Graphen über \(\Sigma=\{a,\,b,\,c\}\), ohne einen Vermerk darunter zu schreiben.
Begründen Sie, warum der Graph keinen vollständigen DEA darstellt. Wie viele Übergänge fehlen? Wie viele Übergänge hat der Automat, nachdem Sie ihn um einen Fehlerzustand zF vervollständigt haben?
Vollständige Lösung
Ein vollständiger DEA braucht aus jedem Zustand für jedes Zeichen genau einen Pfeil. Hier fehlen δ(z1, c), δ(z2, a) und δ(z2, b) → 3. Ohne Vermerk ist nicht klar, was bei diesen Eingaben passiert — der Graph ist unvollständig.
Vervollständigt: Die drei Lücken führen nach zF, zF erhält eine Schleife mit a, b, c. Insgesamt \(4\cdot 3\) = 12 Übergänge (6 gezeichnete + 3 neue + 3 Schleifen an zF).
Der folgende DEA liest Binärzahlen, das höchstwertige Bit zuerst. Er akzeptiert genau die Binärzahlen, die durch 3 teilbar sind.
Erläutern Sie, warum Zustand zr bedeutet: „Der bisher gelesene Wert lässt beim Teilen durch 3 den Rest r.“ In welchem Zustand endet der Automat für 100000? (Nummer angeben)
10 (2) wird zu 101 (5).Vollständige Lösung
Hängt man an eine Binärzahl mit Wert \(v\) das Bit \(x\) an, entsteht der Wert \(2v+x\). Für den Rest bei Division durch 3 zählt nur der alte Rest \(r\): neuer Rest \((2r+x)\bmod 3\). Prüfung am Graphen: z1 mit 0 → \((2+0)\bmod 3=2\) → z2; z2 mit 1 → \((4+1)\bmod 3=2\) → z2 (Schleife). Startzustand z0: vor dem ersten Bit ist der Wert 0.
z0 \(\xrightarrow{\text{1}}\) z1 \(\xrightarrow{\text{0}}\) z2 \(\xrightarrow{\text{0}}\) z1 \(\xrightarrow{\text{0}}\) z2 \(\xrightarrow{\text{0}}\) z1 \(\xrightarrow{\text{0}}\) z2 → z2, denn \(32 \bmod 3 = 2\).
Gesucht ist ein vollständiger DEA über \(\Sigma=\{0,\,1\}\), der genau die geraden Binärzahlen ohne führende Null akzeptiert: 0, 10, 110, 1000 ja, aber 00, 010, ε, 11 nein.
Erstellen Sie die Übergangstabelle mit einer Bedeutung für jeden Zustand. Wie viele Zustände (einschließlich Fehlerzustand) benötigt Ihr Automat mindestens, und wie viele davon sind Endzustände?
Vollständige Lösung
| Zustand | 0 | 1 | Bedeutung |
|---|---|---|---|
| z0 | z1 | z2 | noch nichts gelesen |
| z1 | zF | zF | genau die Zahl 0 gelesen |
| z2 | z3 | z2 | Zahl endet auf 1 (ungerade) |
| z3 | z3 | z2 | Zahl mit mind. zwei Stellen endet auf 0 |
| zF | zF | zF | führende Null — nicht zu retten |
5 Zustände, davon 2 Endzustände (z1, z3). Weniger geht nicht: z1 und z3 sind beide Endzustände, verhalten sich aber verschieden — nach z1 ist jede weitere Ziffer ein Fehler, nach z3 nicht.
Testwörter: 0 ✓, 10 ✓, 1010 ✓, 01 ✗, 111 ✗, ε ✗.
Der DEA für ganze Zahlen mit optionalem Vorzeichen hat die Zustände z0 (Start), z1 (Vorzeichen gelesen), z2 (mindestens eine Ziffer, Endzustand) und zF. Vorzeichen sind nur als erstes Zeichen erlaubt.
Implementieren Sie den Automaten als Klasse mit einem ganzzahligen Attribut zustand (z0 → 0, z1 → 1, z2 → 2, zF → 3), einer Methode uebergang für ein Zeichen und einer Methode akzeptiert für ein Wort. Zeichen außerhalb von Σ führen in zF. Welchen Wert hat zustand nach dem Aufruf akzeptiert("-0-")?
uebergang nach dem aktuellen Zustand (switch) und darin nach der Art des Zeichens: Vorzeichen, Ziffer, sonstiges.akzeptiert setzt zuerst den Startzustand, ruft für jedes Zeichen uebergang auf und prüft danach auf den Endzustand.- → 1, 0 → 2, - → 3 (zF).Vollständige Lösung
public class GanzeZahl { private int zustand; // 0 = z0, 1 = z1, 2 = z2, 3 = zF public void uebergang(char c) { boolean ziffer = c >= '0' && c <= '9'; boolean vorzeichen = c == '+' || c == '-'; switch (zustand) { case 0: if (vorzeichen) { zustand = 1; } else if (ziffer) { zustand = 2; } else { zustand = 3; } break; case 1: case 2: if (ziffer) { zustand = 2; } else { zustand = 3; } break; default: zustand = 3; // zF: kein Weg zurück } } public boolean akzeptiert(String wort) { zustand = 0; for (int i = 0; i < wort.length(); i++) { uebergang(wort.charAt(i)); } return zustand == 2; } }
Ablauf für -0-: 0 \(\xrightarrow{\text{-}}\) 1 \(\xrightarrow{\text{0}}\) 2 \(\xrightarrow{\text{-}}\) 3 → zustand = 3, Rückgabe false.
Zwei Entwürfe sollen genau die Wörter über {0, 1} akzeptieren, die 101 als zusammenhängendes Teilwort enthalten.
Vergleichen Sie die beiden Entwürfe. Welche Länge hat das kürzeste Wort, das die Entwürfe unterschiedlich behandeln?
11; damit sich das Ergebnis unterscheidet, muss danach noch 01 folgen.1101 — Länge 4.Vollständige Lösung
Einziger Unterschied: δ(z1, 1) = z1 in A, δ(z1, 1) = z0 in B. In z1 bedeutet: „zuletzt eine 1 gelesen“. Eine weitere 1 ist wieder ein möglicher Anfang von 101 — A bleibt zu Recht in z1, B verschenkt den Neuanfang.
A: z0 \(\xrightarrow{\text{1}}\) z1 \(\xrightarrow{\text{1}}\) z1 \(\xrightarrow{\text{0}}\) z2 \(\xrightarrow{\text{1}}\) z3 akzeptiert. B: z0 \(\xrightarrow{\text{1}}\) z1 \(\xrightarrow{\text{1}}\) z0 \(\xrightarrow{\text{0}}\) z0 \(\xrightarrow{\text{1}}\) z1 abgelehnt. → Länge 4
Kürzere Wörter benutzen δ(z1, 1) entweder gar nicht oder enden, bevor sich der Unterschied auswirkt. Entwurf A ist korrekt.
Ein Mealy-Automat steuert das Treppenhauslicht: T ist ein Tastendruck, t meldet, dass eine Minute vergangen ist. Die Zustände an2 und an1 geben an, wie viele Minuten das Licht noch brennt.
Untersuchen Sie das Verhalten für die Eingabefolge T t T t t t. Nach dem wievielten Eingabezeichen geht das Licht aus? Wie viele Minuten brennt es nach dem letzten Tastendruck noch?
T vergehen zwei Minuten.Vollständige Lösung
| Schritt | Zustand | Eingabe | Ausgabe | Folgezustand |
|---|---|---|---|---|
| 1 | aus | T | an | an2 |
| 2 | an2 | t | ε | an1 |
| 3 | an1 | T | ε | an2 |
| 4 | an2 | t | ε | an1 |
| 5 | an1 | t | aus | aus |
| 6 | aus | t | ε | aus |
Ausgabewort: an, aus. Das Licht geht beim 5. Zeichen aus; das letzte T (Schritt 3) setzt auf an2, danach laufen 2 Minuten ab. Der erneute Tastendruck erzeugt \(\varepsilon\): Das Licht brennt ja schon.
Ein Fahrkartenautomat verkauft Fahrkarten zu 2 € und nimmt bisher nur 1-€- und 2-€-Münzen an (Zustände 0 € und 1 €). Er soll zusätzlich 50-ct-Münzen annehmen; zu viel Gezahltes gibt er zusammen mit der Fahrkarte als Wechselgeld zurück.
Erweitern Sie den Mealy-Automaten, sodass \(\Sigma=\{50\text{ ct},\,1\text{ €},\,2\text{ €}\}\) gilt und die Zustände das bisher eingeworfene Guthaben speichern. Wie viele Zustände hat der erweiterte Automat, und wie viele Übergänge geben Wechselgeld aus?
Vollständige Lösung
| Zustand | 50 ct | 1 € | 2 € |
|---|---|---|---|
| 0 ct | 50 ct / ε | 1 € / ε | 0 ct / Fahrkarte |
| 50 ct | 1 € / ε | 1,50 € / ε | 0 ct / Fahrkarte, 50 ct |
| 1 € | 1,50 € / ε | 0 ct / Fahrkarte | 0 ct / Fahrkarte, 1 € |
| 1,50 € | 0 ct / Fahrkarte | 0 ct / Fahrkarte, 50 ct | 0 ct / Fahrkarte, 1,50 € |
Feld: Folgezustand / Ausgabe; ein Betrag hinter „Fahrkarte“ ist das Wechselgeld.
4 Zustände (0 ct, 50 ct, 1 €, 1,50 €), \(4\cdot 3=12\) Übergänge, davon 4 mit Wechselgeld: 50 ct + 2 €, 1 € + 2 €, 1,50 € + 1 €, 1,50 € + 2 €.
Überprüfen Sie für jede Sprache, ob es einen DEA gibt, der sie erkennt. Wie viele der sechs Sprachen sind regulär?
- Wörter über {a, b} mit gleich vielen a wie b
- Wörter über {a, b}, deren Anzahl der a durch 5 teilbar ist
- korrekt geklammerte Ausdrücke mit Schachtelungstiefe höchstens 3
- Palindrome über {a, b}, z. B. aabbaa
- \(\{a^n b^m \mid n,\,m\ge 0\}\): erst beliebig viele a, dann beliebig viele b
- \(\{a^n b^n \mid 0\le n\le 100\}\)
Vollständige Lösung
- nicht regulär — wie bei \(a^nb^n\): Die Vorgeschichten \(a^0, a^1, \dots\) müssten alle unterschieden werden.
- regulär — fünf Zustände für die Reste 0 bis 4.
- regulär — je Tiefe 0, 1, 2, 3 ein Zustand plus Fehlerzustand.
- nicht regulär — die erste Hälfte des Worts müsste vollständig gespeichert werden.
- regulär — zwei Zustände: „noch im a-Teil“ und „im b-Teil“ (plus zF, falls nach b wieder a kommt).
- regulär — die Sprache ist endlich; ein DEA kann bis 100 mitzählen.
→ 4 reguläre Sprachen
Der Mealy-Automat erhält eine Binärzahl mit dem niederwertigsten Bit zuerst und soll die um 1 erhöhte Zahl ausgeben, ebenfalls niederwertigstes Bit zuerst. Beispiel: 0111 steht für \(0\cdot1+1\cdot2+1\cdot4+1\cdot8=14\).
Bestätigen Sie mit einem Ablaufprotokoll, dass der Automat für 0111 die Zahl 15 ausgibt. Welchen Dezimalwert hat die Ausgabe zur Eingabe 1110?
1110 (Wert 7) liefert 0001 — Wert 8.Vollständige Lösung
| Schritt | Zustand | Eingabe | Ausgabe | Folgezustand |
|---|---|---|---|---|
| 1 | c1 | 0 | 1 | c0 |
| 2 | c0 | 1 | 1 | c0 |
| 3 | c0 | 1 | 1 | c0 |
| 4 | c0 | 1 | 1 | c0 |
Ausgabe 1111 = 1 + 2 + 4 + 8 = 15 = 14 + 1 ✓.
1110 = 1 + 2 + 4 = 7: c1 liest dreimal 1 und gibt jeweils 0 aus (Übertrag bleibt), dann 0 / 1 → Ausgabe 0001 = 8
