MINT lernen

Übung AFB II

Analysieren, vergleichen, implementieren: Hier zeigt sich, ob Sie einen Automaten wirklich verstanden haben.

Ihr Fortschritt:
0 / 0 Aufgaben
2

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.

A1
Einen Automaten analysieren
AFB II

Gegeben ist ein DEA über \(\Sigma=\{a,\,b\}\).

z0 z1 z2 a a a b b 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?

Wörter
Wörter
Was ändert ein b? Was ändert ein a? Die Schleifen zeigen: b spielt für den Zustand keine Rolle.
Der Index des Zustands ist die Anzahl der gelesenen a modulo 3. Akzeptiert wird, wenn diese Anzahl durch 3 teilbar ist.
Länge 3: bbb, aaa → 2. Länge 4: bbbb und die vier Wörter mit genau drei a → 5.
Vollständige Lösung
ZustandBedeutung
z0Anzahl der a durch 3 teilbar (auch 0)
z1Anzahl der a lässt Rest 1
z2Anzahl 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

A2
Ist der Graph vollständig?
AFB II

Ein Schüler zeichnet den folgenden Graphen über \(\Sigma=\{a,\,b,\,c\}\), ohne einen Vermerk darunter zu schreiben.

z0 z1 z2 a b, c b a c

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?

Übergänge
Gehen Sie Zustand für Zustand vor und haken Sie für jedes Zeichen aus Σ ab, ob ein Pfeil existiert. Die Schleife „b, c“ zählt doppelt.
z0: a, b, c vorhanden. z1: a, b vorhanden, c fehlt. z2: nur c vorhanden, a und b fehlen.
3 Übergänge fehlen. Mit zF: \(|Z|\cdot|\Sigma|=4\cdot 3=12\).
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).

A3
Bedeutung der Zustände
AFB II

Der folgende DEA liest Binärzahlen, das höchstwertige Bit zuerst. Er akzeptiert genau die Binärzahlen, die durch 3 teilbar sind.

z0 z1 z2 0 1 1 0 0 1

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)

Was passiert mit dem Wert einer Binärzahl, wenn man ein Bit \(x\) anhängt? Beispiel: 10 (2) wird zu 101 (5).
Aus dem Wert \(v\) wird \(2v+x\). Für den Rest gilt deshalb: Aus Rest \(r\) wird Rest \((2r+x) \bmod 3\) — genau das zeigen die Pfeile.
\(100000_2=32\), \(32=10\cdot 3+2\) → z2.
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\).

A4
Übergangstabelle erstellen
AFB II

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?

Fragen Sie: Was muss sich der Automat merken? Die erste Ziffer ist besonders — eine 0 am Anfang darf nur allein stehen.
Unterscheiden Sie: noch nichts gelesen · nur „0“ gelesen · Zahl endet auf 1 · Zahl endet auf 0 (mindestens zwei Stellen) · Fehler.
Fünf Zustände; Endzustände sind „nur 0“ und „endet auf 0“.
Vollständige Lösung
Zustand01Bedeutung
z0z1z2noch nichts gelesen
z1zFzFgenau die Zahl 0 gelesen
z2z3z2Zahl endet auf 1 (ungerade)
z3z3z2Zahl mit mind. zwei Stellen endet auf 0
zFzFzFfü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 ✗, ε ✗.

A5
Automaten implementieren
AFB II

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-")?

Gliedern Sie 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
Java
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.

A6
Zwei Entwürfe vergleichen
AFB II

Zwei Entwürfe sollen genau die Wörter über {0, 1} akzeptieren, die 101 als zusammenhängendes Teilwort enthalten.

z0 z1 z2 z3 1 0 1 0 0 0, 1 1
Entwurf A
z0 z1 z2 z3 1 0 1 0 0 0, 1 1
Entwurf B

Vergleichen Sie die beiden Entwürfe. Welche Länge hat das kürzeste Wort, das die Entwürfe unterschiedlich behandeln?

Zeichen
Suchen Sie den einzigen Pfeil, in dem sich A und B unterscheiden. Ein unterscheidendes Wort muss genau diesen Pfeil benutzen.
Der Unterschied liegt bei δ(z1, 1). Um ihn zu benutzen, braucht man 11; damit sich das Ergebnis unterscheidet, muss danach noch 01 folgen.
Kürzestes Wort: 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.

A7
Treppenhauslicht
AFB II

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.

aus an2 an1 T / an t / ε T / ε t / aus t / ε T / ε

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?

Legen Sie ein Ablaufprotokoll an: Schritt, Zustand, Eingabe, Ausgabe, Folgezustand.
Der zweite Tastendruck kommt in an1 an und setzt die Zeit wieder auf an2 zurück — ohne neue Ausgabe.
Ausgabe „aus“ beim 5. Zeichen; nach dem letzten T vergehen zwei Minuten.
Vollständige Lösung
SchrittZustandEingabeAusgabeFolgezustand
1ausTanan2
2an2tεan1
3an1Tεan2
4an2tεan1
5an1tausaus
6austε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.

A8
Einen Mealy-Automaten erweitern
AFB II

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?

Übergänge
Welche Guthaben können vor einer Fahrkarte auftreten? Solange weniger als 2 € eingeworfen sind, wird nichts ausgegeben.
Mögliche Guthaben: 0 ct, 50 ct, 1 €, 1,50 €. Wechselgeld gibt es, wenn Guthaben + Münze mehr als 2 € ergibt.
4 Zustände, 12 Übergänge, davon 4 mit Wechselgeld.
Vollständige Lösung
Zustand50 ct1 €2 €
0 ct50 ct / ε1 € / ε0 ct / Fahrkarte
50 ct1 € / ε1,50 € / ε0 ct / Fahrkarte, 50 ct
1 €1,50 € / ε0 ct / Fahrkarte0 ct / Fahrkarte, 1 €
1,50 €0 ct / Fahrkarte0 ct / Fahrkarte, 50 ct0 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 €.

A9
Was ein DEA erkennen kann
AFB II

Überprüfen Sie für jede Sprache, ob es einen DEA gibt, der sie erkennt. Wie viele der sechs Sprachen sind regulär?

  1. Wörter über {a, b} mit gleich vielen a wie b
  2. Wörter über {a, b}, deren Anzahl der a durch 5 teilbar ist
  3. korrekt geklammerte Ausdrücke mit Schachtelungstiefe höchstens 3
  4. Palindrome über {a, b}, z. B. aabbaa
  5. \(\{a^n b^m \mid n,\,m\ge 0\}\): erst beliebig viele a, dann beliebig viele b
  6. \(\{a^n b^n \mid 0\le n\le 100\}\)
Sprachen
Fragen Sie jeweils: Muss sich der Automat eine unbeschränkte Anzahl merken, oder genügen endlich viele Fälle?
Endliche Sprachen und Zählen „modulo“ oder „bis zu einer festen Grenze“ gehen. Zwei unbeschränkte Anzahlen vergleichen oder eine ganze Hälfte speichern geht nicht.
Regulär: 2, 3, 5, 6. Nicht regulär: 1, 4.
Vollständige Lösung
  1. nicht regulär — wie bei \(a^nb^n\): Die Vorgeschichten \(a^0, a^1, \dots\) müssten alle unterschieden werden.
  2. regulär — fünf Zustände für die Reste 0 bis 4.
  3. regulär — je Tiefe 0, 1, 2, 3 ein Zustand plus Fehlerzustand.
  4. nicht regulär — die erste Hälfte des Worts müsste vollständig gespeichert werden.
  5. regulär — zwei Zustände: „noch im a-Teil“ und „im b-Teil“ (plus zF, falls nach b wieder a kommt).
  6. regulär — die Sprache ist endlich; ein DEA kann bis 100 mitzählen.

→ 4 reguläre Sprachen

A10
Ein Automat, der rechnet
AFB II

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\).

c1 c0 1 / 0 0 / 1 0 / 0, 1 / 1

Bestätigen Sie mit einem Ablaufprotokoll, dass der Automat für 0111 die Zahl 15 ausgibt. Welchen Dezimalwert hat die Ausgabe zur Eingabe 1110?

Der Zustand c1 bedeutet „es gibt noch einen Übertrag 1“, c0 „kein Übertrag mehr“.
Lesen Sie die Ausgabe wieder mit dem niederwertigsten Bit zuerst: Das erste Ausgabezeichen hat den Wert 1, das zweite 2, das dritte 4, das vierte 8.
1110 (Wert 7) liefert 0001 — Wert 8.
Vollständige Lösung
SchrittZustandEingabeAusgabeFolgezustand
1c101c0
2c011c0
3c011c0
4c011c0

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