Nichtdeterministische Kellerautomaten (NKA)

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Definition

Ein NKA ist ein 7-Tupel , mit
... endliche Menge von Zuständen,
... Eingabealphabet,
... Stackalphabet,
... partielle Überführungsfunktion,
... Anfangszustand ,
... Stackvorbelegungszeichen ,
... endliche Menge von Endzuständen

Die von akzeptierte Sprache

Auf das Eingabeband von wird das zu analysierende Wort geschrieben. Der Automat befindet sich im Anfangszustand und im Keller steht nichts weiter als das Vorbelegungszeichen . In jedem Schritt wird das oberste Kellerzeichen verbrauchend gelesen und ein Kellerwort auf den Stapel geschrieben. Spontane Übergänge, bei denen kein Eingabezeichen verbraucht wird, stellen einen Sonderfall dar. akzeptiert genau die Wörter über dem Eingabealphabet, die den Automat nach vollständigem Einlesen des Wortes in einen Endzustand stoppen lassen. Der Kellerinhalt am Ende spielt keine Rolle.

Das Eingabewort wird im Prolog-Programm als Liste repräsentiert.

Beispiel

Wir betrachten die Sprache der Palindrome über irgendeinem Alphabet. Im Gegensatz zu den Festlegungen der theoretischen Informatik, wird dieses Alphabet in der folgenden Prolog-Beschreibung dieses NKA nicht angegeben. Das spart Schreibaufwand, da mehrere Regeln durch Parametrisierung zusammengefasst werden.

Wir fragen, ob das Wort zu der von dem Beispielautomaten akzeptierten Sprache gehört:

Fehlt hingegen das letzte , so wird das Wort nicht akzeptiert:

Übungsaufgaben

  1. Entwickeln Sie einen NKA für die Sprache .
Persönliche Werkzeuge