Unterabschnitte
Ein NKA ist ein Tupel
bestehend aus
- endlichen Menge von Zuständen
- Eingabealphabeth
- Kelleralphabet
- Anfangszustand
- Kellerstartsymbol (unterstes Kellerzeichen)
- Menge von Endzuständen
- Übergangsfunktion
Konfiguration:
Eine Konfiguration hat die Form
wobei
der aktuelle Zustand,
das noch zu bearbeitende Band und
der Keller ist, wobei das oberste Kellersymbol ganz links steht und das unterste ganz rechts.
Notation der Übergangsfunktion60:
Bei einem NKA kann in mehrere Folgezustände und/oder Belegungen des Stacks überführt werden, bei DKAs ist es immer nur einer. Leider kann man die Übergangsfunktion und damit den ganzen Automaten nicht mehr zeichnen wie bei DFAs oder NFAs.
Konfigurationswechsel z.B.:
Genaueres über die Akzeptanz siehe unten.
Wir haben bei Kellerautomaten zwei Möglichkeiten für die Akzeptanz:
Akzeptanz durch Endzustände:
Nach dem Lesen des
kompletten Eingabewortes wird akzeptiert, wenn ein
Endzustand erreicht ist. Der Kellerinhalt ist hierbei egal.
Die durch die Endzustände akzeptierte Sprache ist
Akzeptanz durch leeren Keller:
Nach dem Lesen des
kompletten Eingabewortes wird akzeptiert, wenn der
Keller leer ist. Es gibt bei dieser Akzeptanzform keine Endzustände.
Die durch den leeren Keller akzeptierte Sprache ist
Wir fügen von jedem ehemaligen Endzustand eine Übergangsfunktion mit
-Übergang zu dem Zustand
ein. Im Zustand
leeren wir den Keller vollständig und akzeptieren somit. Es kann sein, daß der Keller einmal während der Berechnung leer wird und wir sozusagen ausversehen akzeptieren. Deshalb fügen wir ein Kellersymbol
an die unterste Position des Kellers ein. Dieses entfernen wir erst, wenn wir in den Zustand
kommen. Wir benötigen dazu noch einen anderen Startzustand des NKAs, damit
zuerst in den Keller gelegt wird und dann erst die Berechnung gestartet wird.
Wieder führen wir ein Symbol
ein, welches ganz unten auf dem Stack liegt, um zu verhindern, daß der Automat vorzeitig verwirft, obwohl er eigentlich akzeptieren soll, damit wir noch die Möglichkeit haben, in einen Endzustand zu überführen. Sobald wir nun in eine Konfiguration
geraten, überführen wir in einen Zustand
der Endzustand ist. Zuvor entfernen wir dann auch wieder
.
Die Grammatik muß in Greibach-Normalform vorliegen. Die Regeln sind dann der Art:
. Zu Beginn steht schieben wir das Startsymbol
auf den Kellerspeicher. Wenn nun
als oberstes Element auf dem Kellerspeicher steht, können wir
- im Wort einen nach rechts gehen, wenn das aktuelle Zeichen ist (ansonsten verwerfen wir)
- und dann
auf den Keller schieben, so daß oben steht.
Für eine solche NKA benötigen wir nur einen Zustand, der zugleich Endzustand ist, und nehmen die Verschiebungen auf dem Stack mit
-Moves vor. Wir akzeptieren bei leerem Keller.
Eine NKA und eine kontextfreie Grammatik in beiden Richtungen überführbar und somit äquivalent.
NKAs mit zwei Kellern haben die Mächtigkeit von Turingmaschinen, da man mit einer Registermaschine mit zwei Kellern eine Turingmaschine simulieren kann. Man kann sich klar machen, daß dies auch für NKAs funktioniert, so daß NKAs eine Turingmaschine simulieren können.
Ist
eine reguläre Sprache und
eine kontextfreie Sprache, so ist
kontextfrei.
Wir können uns vorstellen, daß das Produkt eines NKAs mit einem DFA maximal ein NKA sein wird.
Wir haben auch hierfür keinen Beweis gemacht.
Fußnoten
- ... Übergangsfunktion60
- Das oberste Kellerelement wird immer gepoppt. Will man es auf dem Stack liegen lassen, muß man es wieder pushen. Hier kann nun stehen, wenn es entfernt werden soll.