Theoretische Informatik

Stackautomat

Erkennung von kontextfreien Sprachen

 aufwärts

Wir hatten gesehen, dass die regulären Sprachen genau von den (nicht­deterministischen oder deterministischen) endlichen Automaten erkannt werden. Die kontextfreien Sprachen werden genau von den nicht­deterministischen Stackautomaten erkannt.

Ein Stackautomat ist ein endlicher Automat, der zusätzlich mit einem StackErklärung als Arbeitsspeicher ausgerüstet ist (Bild 1).

Prinzip des Stackautomaten
Bild 1:  Prinzip des Stackautomaten

Zu Beginn der Verarbeitung steht ein Wort w am Anfang des Eingabebandes. Der Stack ist leer und der Automat befindet sich in seinem Startzustand.

In jedem Zustand kann der Stackautomat ein Zeichen des Eingabewortes lesen sowie das oberste Zeichen vom Stack lesen und entfernen, er kann ein Zeichen auf den Stack legen und einen Folgezustand annehmen.

Der Automat erkennt das Eingabewort, wenn er es vollständig gelesen hat und, je nach Version, einen Endzustand erreicht hat oder den Stack wieder vollständig geleert hat.

 

Definition

Definition:  Ein nicht­deterministischer Stackautomat 1) ist ein Tupel

N  =  (Z, E, H, d, q, F).

Hierbei ist

Z eine endliche, nichtleere Menge von Zuständen,
E das Eingabe­alphabet, ferner sei E? = E vereinigt {ε},
H das Stack­alphabet, ferner sei H? = H vereinigt {ε},
d die Übergangs­relation   d  enthalten  Z kreuz E? kreuz H? kreuz H? kreuz Z,
q Element Z    der Startzustand,
F enthalten Z die Menge der Endzustände.

Die Übergangs­relation d wird in Form einer Tabelle dargestellt. Ein Element (s, e, h, h', s') der Übergangs­relation d hat folgende Bedeutung: Im Zustand s kann der Automat das Eingabezeichen e lesen, das Zeichen h vom Stack entfernen, das Zeichen h' auf den Stack legen und anschließend in den Zustand s' übergehen.

Ist e = ε, so vollführt der Automat einen Zustands­übergang, ohne ein Zeichen des Eingabewortes zu lesen. Er kann dabei ein Zeichen vom Stack entfernen, er kann auch ein Zeichen auf den Stack legen. Ist h = ε, so entfernt der Automat kein Zeichen vom Stack. Ist h' = ε, so legt der Automat kein Zeichen auf den Stack.

Wenn h' und s' eindeutig bestimmt sind, so ist der Stackautomat deterministisch. Ein deterministischer Stackautomat ist ein Spezialfall des nicht­deterministischen Stackautomaten, bei dem die Übergangs­relation eine partielle Funktion ist:

d :   Z kreuz E? kreuz H?  Pfeil  H? kreuz Z

 

Erkennung von Wörtern

Es gibt zwei Versionen von Stackautomaten, die sich darin unterscheiden, wie Wörter erkannt werden, nämlich entweder durch Erreichen eines Endzustandes oder durch Hinterlassen eines leeren Stacks. Diese beiden Möglichkeiten werden kurz als Erkennen durch Endzustand bzw. Erkennen durch leeren Stack bezeichnet.

Definition:  Sei N ein Stackautomat.

Der Stackautomat erkennt das Wort w durch Endzustand, wenn es eine Folge von Zustands­übergängen gibt, die das Eingabewort w vollständig abarbeitet und einen Endzustand erreicht.

Der Stackautomat erkennt die Sprache L durch Endzustand, wenn er jedes Wort w Element L durch Endzustand erkennt und jedes Wort w nicht Element L verwirft.

Der Stackautomat erkennt das Wort w durch leeren Stack, wenn es eine Folge von Zustands­übergängen gibt, die das Eingabewort w vollständig abarbeitet und einen leeren Stack hinterlässt.

Der Stackautomat erkennt die Sprache L durch leeren Stack, wenn er jedes Wort w Element L durch leeren Stack erkennt und jedes Wort w nicht Element L verwirft.

Beispiel:  Der folgende Stackautomat N  = (Z, E, H, d, q, F) erkennt die Sprache { anbn  |  n Element natürliche Zahlen0 } durch leeren Stack.

Z  = {0, 1}
E  = {a, b}
H  = {a}
q  = 0
F  = leere Menge
d :     
sehh's'
0aεa0
0baε1
1baε1

Der Stackautomat legt solange jedes gelesene a auf den Stack, bis er das erste b liest. Für jedes gelesene b entfernt er anschließend ein a vom Stack.

Der Stackautomat ist sogar deterministisch.

 

Äquivalenz Erkennen durch Endzustand / durch leeren Stack

Die beiden Möglichkeiten des Erkennens durch Erreichen eines Endzustands bzw. durch leeren Stack sind bei nicht­deterministischen Stackautomaten gleichwertig.

Satz:  Ein nicht­deterministischer Stackautomat, der eine Sprache L durch Endzustand erkennt, kann in einen nicht­deterministischen Stackautomaten, der dieselbe Sprache L durch leeren Stack erkennt, umgeformt werden und umgekehrt.

Beweis:  

Leerer Stack  Pfeil  Endzustand

Ein Stackautomat, der eine Sprache L durch leeren Stack erkennt, wird folgendermaßen in einen Stackautomaten umgeformt, der die Sprache L durch Endzustand erkennt.

Zu Beginn wird zunächst ein spezielles neues Stackzeichen $ als Begrenzungszeichen auf den Stack gelegt. Ein Wort w Element L wird dann nicht durch leeren Stack erkannt, sondern dadurch, dass nur noch das Zeichen $ im Stack steht. Mit diesem Zeichen wird vom jeweiligen Zustand s, in dem sich der Stackautomat dann befindet, ein Zustands­übergang in einen neuen Endzustand f durchgeführt.

Es kommt also zunächst das Tupel

sehh's'
q'εε$q

zur Übergangs­relation hinzu. Hierbei ist q' der neue Startzustand des Stackautomaten, q der bisherige Startzustand.

Für jeden Zustand s Element Z kommen ferner die Tupel

sehh's'
sε$εf

zur Übergangs­relation hinzu. Hierbei ist f ein neuer Zustand, der Endzustand, d.h. es gilt F = {f}.

 

Beispiel:

Der Stackautomat aus dem vorigen Beispiel wird folgendermaßen umgeformt; die neuen Zustands­übergänge sind hellgelb hinterlegt:

sehh's'
-1εε$ 0
0aεa0
0baε1
1baε1
0ε$ε 2
1ε$ε 2

Hierbei ist -1 der neue Startzustand q' und 2 ist der neu eingeführte Endzustand f.

 

Endzustand  Pfeil  leerer Stack

Umgekehrt kann ein Stackautomat, der eine Sprache L durch Erreichen eines Endzustands erkennt, in einen Stackautomaten umgeformt werden, der dieselbe Sprache L durch leeren Stack erkennt.

Zu Beginn wird ebenfalls wieder ein neues Stackzeichen $ als Begrenzungszeichen auf den Stack gelegt. Hierdurch ist gewährleistet, dass der ursprüngliche Stackautomat keinen leeren Stack hinterlässt.

Es kommt also zunächst das Tupel

sehh's'
q'εε$q

zur Übergangs­relation hinzu. Hierbei ist s0' der neue Startzustand des Stackautomaten, q der bisherige Startzustand.

Es werden dann von jedem Endzustand aus Zustands­übergänge hinzugefügt, die den Stack leeren. Es kommen also Tupel der Form

sehh's'
fεhεt
tεhεt

für alle Endzustände f Element F und alle Stackzeichen h Element H (einschließlich des neuen Zeichens $) zur Übergangs­relation hinzu. Hierbei ist t ein neuer Zustand.

 

Aufgaben

Aufgabe 1:  Sei A = {a, b} ein Alphabet und sei L enthalten A* mit

L  =  { w  |  na(w) = nb(w) }

die Sprache aller Wörter, die gleichviele a's und b's enthalten.

Geben Sie einen Stackautomaten an, der L durch leeren Stack erkennt.

Aufgabe 2:  Geben Sie je einen Stackautomaten an, der die Sprache  a* vereinigt anbn  erkennt, und zwar

  1. durch Erreichen eines Endzustands,
  2. durch leeren Stack.

 


1)  Andere gebräuchliche Bezeichnungen sind: Kellerautomat, Pushdown-Automat

 

Weiter mit:   [Konstruktion eines nicht­deterministischen Stackautomaten]   oder   up del.icio.us digg.com Google Ma.gnolia Mister Wong StumbleUpon YahooMyWeb LinkARENA

 

homeH.W. Lang   FH Flensburg   lang@fh-flensburg.de   Impressum   ©   Created: 26.01.2003   Updated: 29.01.2010
Valid HTML 4.01 Transitional