MINT lernen

Übung AFB III

Entwerfen, beweisen, bewerten: Hier entscheiden Ihre Begründungen, nicht die Rechenschritte.

Ihr Fortschritt:
0 / 0 Aufgaben
3

Aufgabenblock — AFB III

Begründen statt nur ausführen: Automaten selbstständig entwerfen, Behauptungen widerlegen, Grenzen beweisen, Entwürfe und Tests beurteilen. Formulieren Sie Ihre Antwort vollständig, bevor Sie die Musterlösung aufklappen.

A1
E-Mail-Adressen prüfen
AFB III

Eine vereinfachte E-Mail-Adresse besteht aus einem Namen (mindestens ein Buchstabe), dem Zeichen @ und einer Domain aus mindestens zwei Teilen, die durch Punkte getrennt sind; jeder Teil besteht aus mindestens einem Buchstaben. Beispiele: anna@schule.de, max@mail.nds.de. Verwenden Sie \(\Sigma=\{B,\,@,\,.\}\), wobei B für einen beliebigen Buchstaben steht.

Entwerfen Sie einen DEA, der genau diese Adressen akzeptiert. Geben Sie für jeden Zustand seine Bedeutung an und testen Sie Ihren Automaten mit geeigneten Wörtern, auch mit Grenzfällen.

Strategie: Bauen Sie die Adresse von links nach rechts auf und fragen Sie nach jedem Teilstück: Was muss sich der Automat merken?Warum so? Jede Stelle, an der ein anderes Zeichen erlaubt ist, braucht einen eigenen Zustand.
Lösungsskizze: Kette z0 –B→ z1 –@→ z2 –B→ z3 –.→ z4 –B→ z5; Schleifen mit B an z1, z3, z5; von z5 mit Punkt zurück nach z4 für weitere Teile. Nur z5 ist Endzustand.
Musterlösung anzeigen (zählt als erledigt)
z0 z1 z2 z3 z4 z5 B B @ B B . B . B

Nicht eingezeichnete Übergänge führen in den Fehlerzustand zF.

ZustandBedeutung
z0noch nichts gelesen
z1Name mit mind. einem Buchstaben
z2@ gelesen
z3erster Domain-Teil begonnen
z4Punkt gelesen — Teil fehlt noch
z5mind. zwei Domain-Teile, letzter nicht leer
TestwortErgebnis
anna@schule.de✓ akzeptiert
max@mail.nds.de✓ akzeptiert
anna@de✗ abgelehnt
a.b@c.de✗ abgelehnt
@x.de✗ abgelehnt
a@b..de✗ abgelehnt
anna@schule.✗ abgelehnt

Wichtig: z3 darf kein Endzustand sein (anna@de hat nur einen Domain-Teil), z4 auch nicht (Adresse endet auf Punkt). Der Rückweg z5 –.→ z4 erlaubt beliebig viele Domain-Teile, verhindert aber zwei Punkte hintereinander.

A2
Eine falsche Behauptung
AFB III

Ein Mitschüler behauptet: „Mein Automat akzeptiert genau die Binärzahlen, die durch 4 teilbar sind.“

z0 z1 z2 0 1 0 1 0 1

Widerlegen Sie die Behauptung und geben Sie an, welche Sprache der Automat tatsächlich erkennt. Beschreiben Sie, wie ein korrekter Automat aussehen müsste.

Strategie: Suchen Sie ein möglichst kurzes Wort, das akzeptiert wird, aber nicht durch 4 teilbar ist.Warum so? Eine allgemeine Aussage ist widerlegt, sobald ein einziges Gegenbeispiel existiert.
Lösungsskizze: 10 (Wert 2) endet in z1 und wird akzeptiert. Der Automat merkt sich nur die letzte Ziffer; für Teilbarkeit durch 4 braucht er die letzten zwei.
Musterlösung anzeigen (zählt als erledigt)

Gegenbeispiel: z0 \(\xrightarrow{\text{1}}\) z1 \(\xrightarrow{\text{1}}\) z2 \(\xrightarrow{\text{0}}\) z1 — 110 (Wert 6) wird akzeptiert, 6 ist nicht durch 4 teilbar. Die Behauptung ist falsch.

z1 bedeutet „letzte Ziffer 0“, z2 „letzte Ziffer 1“. Der Automat erkennt \(L(A)=\{\,w\in\{0,1\}^*\mid w \text{ endet auf } 0\,\}\), also die geraden Binärzahlen (führende Nullen zugelassen).

Korrektur: Eine Binärzahl ist genau dann durch 4 teilbar, wenn sie auf 00 endet (oder 0 ist). Der Automat muss sich die letzten zwei Ziffern merken: ein zusätzlicher Zustand „endet auf 00“ als einziger Endzustand neben „nur 0 gelesen“; z1 („endet auf genau eine 0“) ist dann kein Endzustand mehr.

A3
Gleich viele a und b
AFB III

Gegeben ist die Sprache \(L=\{\,w\in\{a,b\}^*\mid w \text{ enthält gleich viele } a \text{ wie } b\,\}\), z. B. aabb, ba, \(\varepsilon\).

Beweisen Sie, dass es keinen DEA gibt, der \(L\) erkennt.

Strategie: Widerspruchsbeweis wie bei \(\{a^nb^n\}\): Nehmen Sie einen DEA mit \(k\) Zuständen an und betrachten Sie die Vorgeschichten \(a^0,\dots,a^k\).Warum so? Ein DEA kann nur so viele Vorgeschichten unterscheiden, wie er Zustände hat.
Lösungsskizze: Zwei Vorgeschichten \(a^i\), \(a^j\) (\(i<j\)) enden im selben Zustand. Hängen Sie \(b^i\) an: \(a^ib^i\in L\), aber \(a^jb^i\notin L\) — der DEA muss beide gleich behandeln.
Musterlösung anzeigen (zählt als erledigt)

Annahme: Ein DEA \(A\) mit \(k\) Zuständen erkennt \(L\).

Schubfach: Die \(k+1\) Wörter \(a^0,a^1,\dots,a^k\) können nicht alle in verschiedenen Zuständen enden. Also gibt es \(i<j\), sodass \(A\) nach \(a^i\) und nach \(a^j\) im selben Zustand \(z\) ist.

Gleiches Urteil: Ab \(z\) liest \(A\) bei \(a^ib^i\) und bei \(a^jb^i\) dieselben Zeichen \(b^i\) und endet im selben Zustand. Er akzeptiert also beide oder keines.

Widerspruch: \(a^ib^i\) enthält \(i\) mal a und \(i\) mal b, liegt also in \(L\); \(a^jb^i\) enthält \(j\ne i\) mal a, liegt nicht in \(L\). Die Annahme ist falsch — kein DEA erkennt \(L\), gleichgültig wie groß \(k\) ist.

A4
Die Sprache eines DEA
AFB III

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

z0 z1 z2 z3 b a a b a b a b

Formulieren Sie die Sprache \(L(A)\) präzise in Worten und als Menge \(L(A)=\{\,w\in\Sigma^*\mid\dots\,\}\). Begründen Sie Ihre Beschreibung mit den Bedeutungen der Zustände.

Strategie: Testen Sie systematisch kurze Wörter: ε, a, b, aa, ab, ba, bb, und notieren Sie, was die akzeptierten gemeinsam haben.Warum so? Die Bedeutung jedes Zustands ergibt sich daraus, welche Wörter in ihm enden.
Lösungsskizze: Akzeptiert werden aa, ab, aab, bab …, abgelehnt a, ba, bb. Die Endzustände z2, z3 bedeuten: das vorletzte Zeichen ist ein a.
Musterlösung anzeigen (zählt als erledigt)
ZustandBedeutung
z0die letzten zwei Zeichen enthalten kein a (bzw. noch nichts gelesen / nur b)
z1letztes Zeichen a, davor kein a (oder nichts)
z2Wort endet auf ab
z3Wort endet auf aa

\(L(A)=\{\,w\in\{a,b\}^*\mid |w|\ge 2 \text{ und das vorletzte Zeichen von } w \text{ ist } a\,\}\)

Begründung: z2 und z3 sind genau die Zustände, in denen das vorletzte gelesene Zeichen ein a war (…ab bzw. …aa). Jedes weitere Zeichen verschiebt das Fenster: z3 –b→ z2 (aus …aa wird …ab), z2 –a→ z1 (aus …ab wird …ba) usw. Wörter mit weniger als zwei Zeichen enden in z0 oder z1 und werden abgelehnt.

Gegenprobe: ε ✗, a ✗, ab ✓, ba ✗, bab ✓, abb ✗, baa ✓

A5
Implementierung mit Tabelle
AFB III

Der Automat aus A4 (vorletztes Zeichen ist a) soll in einem Programm verwendet werden. Wörter können auch Zeichen außerhalb von Σ enthalten.

Implementieren Sie eine Klasse, die die Übergangstabelle als zweidimensionales Feld speichert, eine Methode spalte für die Zeichennummer und eine Methode akzeptiert besitzt. Begründen Sie, warum Ihre Tabelle keine Zeile für einen Fehlerzustand braucht.

Strategie: Kodieren Sie die Zustände z0 bis z3 als 0 bis 3 und die Zeichen a, b als Spalten 0 und 1. Ein Schritt ist dann ein einziger Tabellenzugriff.Warum so? Die Methoden bleiben für jeden anderen DEA gleich — nur Tabelle, Spalten und Endzustände ändern sich.
Lösungsskizze: Liefert spalte den Wert −1, bricht akzeptiert sofort mit false ab. Sonst zustand = delta[zustand][s]; am Ende auf 2 oder 3 prüfen.
Musterlösung anzeigen (zählt als erledigt)
Java
public class VorletztesA {
    //                         a  b
    private int[][] delta = { {1, 0},     // z0
                              {3, 2},     // z1
                              {1, 0},     // z2  (Endzustand)
                              {3, 2} };   // z3  (Endzustand)
    private int zustand;

    private int spalte(char c) {
        if (c == 'a') { return 0; }
        if (c == 'b') { return 1; }
        return -1;                        // Zeichen nicht in Σ
    }

    public boolean akzeptiert(String wort) {
        zustand = 0;
        for (int i = 0; i < wort.length(); i++) {
            int s = spalte(wort.charAt(i));
            if (s == -1) { return false; }    // ungültiges Zeichen
            zustand = delta[zustand][s];
        }
        return zustand == 2 || zustand == 3;
    }
}

Der Automat selbst hat keinen Fehlerzustand: Aus jedem Zustand ist ein Endzustand erreichbar. Ungültige Zeichen fängt akzeptiert mit dem Sofort-Abbruch ab — ohne diese Prüfung würde delta[zustand][-1] eine Ausnahme auslösen. Wichtig ist außerdem zustand = 0; zu Beginn jedes Aufrufs.

A6
Treppenhauslicht erweitern
AFB III

Das Treppenhauslicht (Zustände aus, an2, an1; T Taster, t eine Minute vergangen) soll zwei neue Funktionen erhalten:

  • Eine Minute vor dem Ausschalten flackert das Licht kurz (Ausgabe flackern), damit man rechtzeitig erneut drücken kann.
  • Ein Hausmeisterschalter D schaltet Dauerlicht ein; ein weiteres D schaltet das Licht sofort aus.

Erweitern Sie den Mealy-Automaten und geben Sie die vollständige Übergangstabelle an. Testen Sie mit der Eingabe T t t D t D.

Strategie: Überlegen Sie zuerst, ob die vorhandenen Zustände reichen. Dauerlicht verhält sich anders als an2 und an1 — die Minuten dürfen es nicht beenden.Warum so? Ein neuer Zustand ist genau dann nötig, wenn sich der Automat etwas Neues merken muss.
Lösungsskizze: Neuer Zustand „dauer“; an2 –t / flackern→ an1; aus jedem Zustand führt D nach dauer, aus dauer führt D / aus nach aus.
Musterlösung anzeigen (zählt als erledigt)
ZustandTtD
ausan2 / anaus / εdauer / an
an2an2 / εan1 / flackerndauer / ε
an1an2 / εaus / ausdauer / ε
dauerdauer / εdauer / εaus / aus

\(\Omega=\{\text{an},\,\text{aus},\,\text{flackern}\}\), \(4\cdot 3=12\) Übergänge. D im Zustand an2/an1 gibt \(\varepsilon\) aus, weil das Licht bereits brennt.

SchrittZustandEingabeAusgabeFolgezustand
1ausTanan2
2an2tflackernan1
3an1tausaus
4ausDandauer
5dauertεdauer
6dauerDausaus

Ausgabewort: an, flackern, aus, an, aus — die Minute t im Dauerbetrieb bleibt ohne Wirkung.

A7
Verschlüsseln mit zwei Schlüsseln
AFB III

Ein Verschlüsselungsgerät verschiebt Buchstaben im Alphabet abwechselnd um 1 und um 2 Stellen: Der erste Buchstabe wird um 1 verschoben, der zweite um 2, der dritte wieder um 1 usw. Nach Z geht es mit A weiter. Es gilt \(\Sigma=\Omega=\{A,\,B,\,\dots,\,Z\}\).

Entwickeln Sie einen Mealy-Automaten für das Verschlüsseln und einen für das Entschlüsseln. Verschlüsseln Sie HALLO und begründen Sie, warum ein Mealy-Automat mit nur einem Zustand hier nicht ausreicht.

Strategie: Welche Information braucht das Gerät vor jedem Buchstaben? Genau diese wird der Zustand.Warum so? Die Ausgabe hängt nicht nur vom Buchstaben ab, sondern auch von seiner Position — das muss ein Zustand speichern.
Lösungsskizze: Zwei Zustände p1 („um 1 verschieben“) und p2 („um 2 verschieben“); jeder Pfeil steht stellvertretend für 26 Übergänge, einer je Buchstabe.
Musterlösung anzeigen (zählt als erledigt)
p1 p2 x / x+1 x / x+2
Verschlüsseln: x+1 bzw. x+2 bezeichnet den um 1 bzw. 2 Stellen verschobenen Buchstaben (zyklisch).

Jeder Pfeil steht für 26 Übergänge (einer je Buchstabe), insgesamt \(2\cdot 26=52\).

HALLO: H+1 = I, A+2 = C, L+1 = M, L+2 = N, O+1 = P → Ausgabewort ICMNP.

Entschlüsseln: gleicher Aufbau, Beschriftungen x / x−1 und x / x−2. Probe: ICMNP → HALLO.

Ein Zustand reicht nicht: Das zweite L in HALLO wird zu N, das erste zu M — dieselbe Eingabe, verschiedene Ausgaben. Bei nur einem Zustand hinge die Ausgabe allein vom Eingabezeichen ab.

A8
Einen Entwurf prüfen
AFB III

Auftrag: Ein Mealy-Automat soll nach jedem gelesenen Bit ausgeben, ob die Anzahl der bisher gelesenen Einsen ungerade (Ausgabe 1) oder gerade (Ausgabe 0) ist. Eine Schülerin legt folgenden Entwurf vor.

g u 0 / 0 1 / 1 1 / 1 0 / 1

Überprüfen Sie den Entwurf mit geeigneten Testeingaben. Geben Sie jeden Fehler an und korrigieren Sie ihn.

Strategie: Wählen Sie Testeingaben so, dass jeder der vier Pfeile mindestens einmal benutzt wird, und vergleichen Sie Ist- und Soll-Ausgabe Zeichen für Zeichen.Warum so? Ein Fehler an einem Pfeil zeigt sich nur bei Eingaben, die diesen Pfeil benutzen.
Lösungsskizze: 11: Soll 10, Ist 11. Der Pfeil u –1→ g muss 0 ausgeben: Nach der zweiten Eins ist die Anzahl gerade.
Musterlösung anzeigen (zählt als erledigt)

Bedeutung: g = „bisher gerade Anzahl Einsen“, u = „ungerade Anzahl“. Die Ausgabe muss die Parität nach dem Lesen angeben.

PfeilEntwurfSollBefund
g –0→ g00✓
g –1→ u11✓
u –0→ u11✓
u –1→ g10✗ Fehler

Testeingabe 0110: Soll 0100, Ist 0110 — Abweichung im dritten Zeichen, genau beim Pfeil u –1→ g. Korrektur: Beschriftung 1 / 0. Eingaben ohne zwei Einsen (z. B. 100) hätten den Fehler nicht aufgedeckt.

A9
Eine Testliste bewerten
AFB III

Für den DEA, der Dezimalzahlen wie 12,5 prüft (Ziffern, höchstens ein Komma, auf beiden Seiten des Kommas mindestens eine Ziffer), schlägt ein Schüler folgende Testliste vor: 12,5, 3,14, 100, 7,0. Erwartung: alle akzeptiert.

Bewerten Sie die Testliste. Stellen Sie eine verbesserte Liste mit erwarteten Ergebnissen auf.

Strategie: Fragen Sie: Welche fehlerhaften Automaten würden diese Liste ebenfalls bestehen?Warum so? Ein Test ist nur so gut wie die Fehler, die er aufdecken kann — dafür braucht man auch Wörter, die abgelehnt werden müssen.
Lösungsskizze: Die Liste enthält nur akzeptierte Wörter. Ein Automat, der alles akzeptiert, besteht sie. Es fehlen ε, ,5, 3,, 1,2,3.
Musterlösung anzeigen (zählt als erledigt)

Bewertung: Alle vier Wörter sollen akzeptiert werden — die Liste prüft nur, dass nichts Gültiges abgelehnt wird. Ein Automat, der jedes Wort akzeptiert, oder einer, bei dem z2 fälschlich Endzustand ist, bestünde sie. Grenzfälle fehlen völlig. Die Liste ist deshalb unzureichend.

Testworterwartetprüft
7✓kürzestes gültiges Wort
12,75✓Normalfall, benutzt beide Ziffern-Schleifen
ε✗leeres Wort
,5✗Komma am Anfang
3,✗Komma am Ende (z2 kein Endzustand)
1,2,3✗zweites Komma
1,,2✗zwei Kommas hintereinander

Mit dieser Liste wird jeder Übergang aus z0 bis z3 mindestens einmal benutzt, und zu jedem Endzustand gibt es ein akzeptiertes und zu jedem anderen Zustand ein abgelehntes Wort, das dort endet.

A10
Klammern im Quelltext
AFB III

Ein Team möchte für einen Editor prüfen, ob in einem Quelltext alle runden Klammern korrekt geschlossen sind. Ein Teammitglied schlägt vor, dafür einen DEA zu verwenden, weil DEAs schnell sind und leicht zu implementieren.

Erörtern Sie den Vorschlag.

Strategie: Stellen Sie Argumente für und gegen den DEA gegenüber und kommen Sie zu einem begründeten Ergebnis.Warum so? Ein Urteil muss sich auf das Fachwissen über die Grenzen endlicher Automaten stützen.
Lösungsskizze: Pro: schnell, einfach, für beschränkte Tiefe korrekt. Contra: Beliebige Schachtelungstiefe erfordert unbeschränktes Zählen — wie bei aⁿbⁿ unmöglich. Fazit: nur mit Tiefenbegrenzung oder mit zusätzlichem Zähler.
Musterlösung anzeigen (zählt als erledigt)

Pro: Ein DEA liest jedes Zeichen genau einmal, braucht keinen Zusatzspeicher und ist mit einer Tabelle schnell implementiert. Für eine feste Höchsttiefe (z. B. 10) gibt es einen DEA: je Tiefe 0 bis 10 ein Zustand, dazu zF für „zu viele schließende Klammern“ oder „zu tief“.

Contra: Allgemein korrekt geklammerte Ausdrücke sind nicht regulär. Wie bei \(L=\{a^nb^n\mid n\ge 0\}\) müsste der Automat beliebig viele offene Klammern mitzählen; mit \(k\) Zuständen landen die Vorgeschichten (i und (j für ein Paar \(i<j\) im selben Zustand, und (i)i und (j)i würden gleich beurteilt. Ein reiner DEA prüft also nicht jeden Quelltext korrekt.

Fazit: Als alleiniges Werkzeug ist ein DEA ungeeignet. Vertretbar ist er nur mit einer dokumentierten Tiefenbegrenzung; sonst braucht das Programm zusätzlich einen unbeschränkten Zähler für die offenen Klammern — also mehr als endlich viele Zustände.