Endliche Automaten ohne Ausgabe und mit Kellerspeicher - Kellerautomat
Im Baumarkt gibt es einen Automaten, der Schrauben und die passenden Anzahl Muttern eintütet. Zuerst wird die gewünschte Anzahl der Schrauben mit Mutter erfasst, dann die Schrauben und anschließend die Muttern in die Tüte gegeben. In eine Sprache übersetzt also: L = {Schrauben Muttern | n > 0}. Können wir einen Akzeptor konstruieren, der diese Sprache erkennt und akzeptiert?
Ansatz: Für n ≤ 3 liefert der Graph des Akzeptors (ohne Zustandsübergänge in einen Fehlzustand) eine Lösung:
Eine Erweiterung für größere n scheint auf den ersten Blick problemlos möglich, man muss nur neue Zustände einführen. Im allgemeinen Fall würde der Automat aber unendlich viele Zustände besitzen müssen. Dies widerspricht der Definition des Akzeptors. Diese Sprache kann also nicht von einem Akzeptor erkannt werden. Wir benötigen dafür "irgendeinen" Speicher, der sich die Anzahl der Schrauben merken kann.
Kellerautomat – Kellerspeicher
Ein sehr simpler Speicher ist der sog. Kellerspeicher (Stapel, Stack). Wie in einem Keller können Objekte oben abgelegt (push) und von oben entnommen (pop) werden. Dabei gilt: das zuletzt abgelegte Objekt muss als erstes wieder entnommen werden. Dieses Prinzip bezeichnet man mit Last in – First out (LIFO).
Funktionsmodell eines Kellerautomaten
Der Automat besitzt einen Kellerspeicher zum Ablegen von Objekten. Der Kellerspeicher
Zum Kellerautomaten gehören außerdem eine Steuereinheit und ein Eingabeband, dass die Eingabezeichen enthält, ein nach rechts bewegbarer Lesekopf sowie eine Lampe zur Anzeige des Akzeptierzustandes.
Arbeitsweise
- Initialisierung des Kellerautomaten: Keller ist leer, der Kellerlesekopf steht auf dem Kellerleerzeichen #
- SOLANGE ein Zustandsübergang möglich ist:
- Lies mithilfe der Leseköpfe das Zeichen aus der aktuellen Zelle des Eingabeband sowie das oberste Zeichen aus dem Kellerspeicher
- Führe in Abhängigkeit vom aktuellen Zustand, dem gelesenen Keller- und Bandzeichen eine Kelleroperation aus und wechsle in einen Folgezustand.
- Bewege das Eingabeband eine Zelle weiter.
- Falls der aktuelle Zustand ein Endzustand ist, das Eingabewort vollständig gelesen wurde und der Keller nur aus dem Kellerleerzeichen besteht, dann aktiviere die Akzeptanzanzeige.
Definition des Kellerautomaten
Ein deterministischer Kellerautomat KA = (X, Z, Γ, δ, z0, k0, ZE) ist ein endlicher Automat ohne Ausgabe und mit Kellerspeicher. Dabei gilt:
-
- X ... Eingabealphabet (nichtleere, endliche Menge)
- Z ... Zustandsmenge (nichtleere, endliche Menge)
- Γ ... Kelleralphabet (nichtleere, endliche Menge)
- δ ... Überführungsfunktion, die dem aktuellem Zustand in Abhängigkeit vom jeweils aktuellen (ggf. leerem) Eingabezeichen und Kellerzeichen höchstens eine Kelleroperation und einen Folgezustand zuordnet
- z0 ∈ Z ist der Anfangszustand
- k0 ∈ Γ ist das Kellerleerzeichen (#)
- ZE ... Endzustandsmenge (nichtleere, endliche Teilmenge von Z)
Bei einem nichtdeterministischer Kellerautomaten müssen die Zustandsübergänge nicht eindeutig sein.
Beispiel: Kellerautomat für den Schrauben-Muttern-Automaten
Die akzeptierte Sprache für den Automaten aus dem Eingangsbeispiel ist L = {Schrauben Muttern | n > 0}.
Dafür lässt sich ein Kellerautomat KA = (X, Z, Γ, δ, z0, k0, ZE) konstruieren:
-
- X = {Schraube, Mutter}
- Z = {q0, q1, q2}
- Γ = {#, S}
- δ als Graph
- q0
- k0 = #
- ZE = {q2}
Die Beschriftung eines Übergangs ist wie folgt aufgebaut: (erwünschtes Kellerzeichen, erwünschtes Eingabezeichen): zu realisierende Kelleroperation.
-
- Die Kelleroperation S# bedeutet dabei, dass das Zeichen S eingekellert werden soll, die Raute - die beim Lesen aus dem Keller entnommen wurde - jedoch davor wieder zurückgeschrieben werden muss.
- Die Kelleroperation ε bedeutet dabei, dass kein Zeichen zurückgeschrieben werden muss.
- Die Kelleroperation # bedeutet dabei, dass die Raute - die beim Lesen aus dem Keller entnommen wurde - wieder zurückgeschrieben werden muss.
Der Übergang in den Endzustand q2 sieht eigenartig aus, bedeutet aber:
Wenn der Keller leer ist und kein Zeichen mehr auf dem Band, dann setzte den Keller wieder leer und wechsle und den Endzustand.
ε hat also eine Mehrfachbedeutung:
-
- als Kelleroperation: nichts zurückschreiben
- als "virtuelles" Eingabezeichen - nichts vom Band lesen