09.09.2013 Aufrufe

TGI-Skript S. 46 - 51 (PDF)

TGI-Skript S. 46 - 51 (PDF)

TGI-Skript S. 46 - 51 (PDF)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Wir können an dieser Stelle die folgende Feststellung machen:<br />

Satz:<br />

Zu jedem deterministischen endlichen Automaten M = (Z, E, *, z 0, E) gibt es eine reguläre<br />

Grammatik G = (V, G, P, z 0) mit L(M) = L(G).<br />

Beweis:<br />

Jeder Zustand des Automaten M wird zu einem Nichtterminal der rechtslinearen Grammatik<br />

G, also Z = V. Gibt es einen Übergang *(z, a) = z', gilt z 6 az' 0 P. Falls z' Endzustand ist, kann<br />

man entweder statt z 6 az' nur die Produktion z 6 a hinzunehmen oder zusätzlich z' 6 g.<br />

Dass alles, was M erkennt auch von G produziert werden kann und umgekehrt, dass alles, was<br />

G produziert auch von M erkannt werden kann, ist wegen der Konstruktion von P aus * unmittelbar<br />

klar.<br />

Ê<br />

Allerdings muss an dieser Stelle auch darauf hingewiesen werden, dass die Definition des<br />

endlichen Automaten weder mit dem Z-Diagramm für die Grammatik<br />

S 6 aS | aB<br />

B 6 bC | bB<br />

C 6 aC | a<br />

noch mit dem für die Grammatik<br />

S 6 aB<br />

B 6 aB | bC<br />

C 6 bC | aD<br />

D 6 aD | g<br />

in den Eingangsbeispielen kompatibel ist. Im ersten Fall starten zwei Pfeile mit der Beschriftung<br />

b in B und gehen nach B bzw. C. Hier liegt ein nichtdeterministisches Verhalten vor. Um das zu<br />

modellieren, bräuchten wir eine Verallgemeinerung von *, was die Angabe *(B, b) = B und *(B,<br />

b) = C zum Ausdruck bringen würde. Dies könnte mit der Angabe *(B, b) = {B, C} geschehen.<br />

Im zweiten Fall gibt es einen g-Übergang, der, wie wir noch sehen werden, im allgemeinen<br />

Fall - also nicht gerade vor dem Übergang in den Endzustand - auch einen Nichtdeterminismus<br />

darstellt.<br />

Es wird sich zeigen, dass die genannten Probleme gelöst werden können, wobei wir noch<br />

weitere Definitionen benötigen.<br />

<strong>46</strong>


Definition:<br />

Ein nichtdeterministischer endlicher Automat (NEA) ist ein 5-Tupel (Z, E, *, s, E). Z , E, s<br />

und E sind - wie beim DEA - die Menge der Zustände, das Eingabealphabet, der Startzustand 9<br />

bzw. die Menge der Endzustände. Die Übergangsfunktion * wird erweitert zu * : Z × E 6 (Z),<br />

wobei (Z) die Potenzmenge von Z ist.<br />

Die erweiterte Übergangsfunktion ** des NEA wird definiert als:<br />

**(z, g) = {z}, für alle z 0 Z<br />

**(z, aw) = ^ z'0*(z, a) **(z', w), für a 0 E, w 0 E*<br />

Der Konfigurationsbegriff überträgt sich direkt.<br />

Das Paar k' = (z', w) heißt Folgekonfiguration von k, i. W. k | k', wenn v = aw mit w 0 E* ist<br />

und z' 0 *(z, a).<br />

Ein Automat M = (Z, E, *, z 0, E) erkennt / akzeptiert ein Wort a 1a 2...a n 0 E*, wenn es eine<br />

Folge von Konfigurationen (z 0, a 1a 2...a n) | (z 1, a 2...a n) | ... | (z n, g) gibt mit z n 0 E und für 0 # i<br />

< n gilt z i+1 0 *(z i, a i+1).<br />

Sei M = (Z, E, *, z 0, E) ein NEA. Dann ist die von M akzeptierte Sprache die Menge L(M) =<br />

{w | w 0 E*, (z 0, w) |* (z, g), z 0 E}.<br />

Ê<br />

Man sieht sofort, dass ein DEA auch als NEA aufgefasst werden kann. Dabei ist nur notwendig<br />

zu erkennen, dass beim DEA die Mächtigkeit der Menge der Nachfolger 1 ist. Also kann<br />

man sagen, dass es zu jedem DEA auch einen äquivalenten NEA gibt. Die Frage ist, ob auch die<br />

Umkehrung gilt.<br />

9 In manchen Büchern wird der NEA über eine Menge von Anfangszuständen definiert.<br />

Dementsprechend muss auch * modifiziert werden.<br />

47


Satz (Rabin, Scott 1959):<br />

Zu jedem NEA gibt es einen äquivalenten DEA, also L(NEA) = L(DEA).<br />

Beweisidee:<br />

Sei M = (Z, E, *, s, E) ein NEA. Aus ihm konstruieren wir quasi durch „Parallelverfolgung”<br />

der Nachfolgezustände an den jeweiligen Zuständen den DEA N = ((Z), E, * N, s, E N). Die<br />

Menge der Nachfolgerzustände jeweils zu einem a 0 E ergibt einen einzigen „Sammelzustand”<br />

für N. Die Menge der Endzustände von N sind die Zustandsmengen, die eine Element aus E<br />

beinhalten. Genauer gesagt gilt schließlich<br />

* N(X, a) = ^ z0X *(z, a) für alle X f Z<br />

E N = {Y f Z | Y 1 E … i}<br />

Durch Induktion lässt sich nun zeigen dass für alle w 0 E* gilt: **(s, w) = * N*({s}, w).<br />

Weil die Menge aller möglichen Zustände von N die Menge aller Teilmengen von Z ist, nennt<br />

man diese Konstruktion auch die „Potenzmengenkonstruktion”. Es sei gleich an dieser Stelle<br />

gesagt, dass nicht unbedingt alle Elemente von (Z) im so konstruierten Automaten letztlich<br />

notwendig sind. Dazu siehe auch folgendes Beispiel:<br />

Beispiel:<br />

Betrachte folgenden NEA:<br />

Nichtdeterministischer endlicher Automat<br />

48<br />

Ê


Der Automat hat die folgende Tabellendarstellung mit B als Endzustand, was durch Unterstreichung<br />

kenntlich gemacht wurde:<br />

M a b c<br />

A {A, B} {A} {A}<br />

B {B} {A} {A, B}<br />

So ergeben sich z.B. beim Übergang a im Startzustand A die Folgezustände A und B, die im<br />

Sammelfolgezustand [AB] notiert werden. Jeder Zustand dieses Sammelzustands wird untersucht<br />

und seine möglichen Folgezustände hinsichtlich eines Eingabezeichens werden wieder in<br />

einem Sammelzustand zusammengefasst. Schließlich ergibt sich der folgende Automat mit den<br />

Endzuständen [AB] und [B].<br />

N a b c<br />

[A] [AB] [A] [A]<br />

[AB] [AB] [A] [AB]<br />

[B] [B] [A] [AB]<br />

Äquivalenter deterministischer endlicher Automat<br />

Im Zustandsübergangsdiagramm ist gut ersichtlich, dass der schraffierte neue Zustand [B]<br />

vom Startzustand aus nicht erreichbar und somit überflüssig ist. Damit kann man den Automa<br />

ten um diesen Zustand reduzieren.<br />

49


Auf den formalen Beweis, dass mit den Konstruktionen tatsächlich ein äquivalenter Automat<br />

entsteht, wird an dieser Stelle verzichtet.<br />

Ê<br />

Den Nichtdeterminismus sollte man nicht als Erschwernis sehen. Er kann sehr hilfreich bei der<br />

Konstruktion von endlichen Automaten sein.<br />

Beispiel:<br />

Betrachten wir die Sprache, die aus allen Wörtern aus {0, 1}* bestehen, die auf 100 enden.<br />

Ein zugehöriger NEA ist schnell konstruiert:<br />

Ihn gleich in der deterministischen Variante hinzuschreiben, ist zweifelsohne aufwendiger. Es<br />

empfiehlt sich, erst den zugehörigen NEA zu konzipieren und ihn dann zum äquivalenten DEA<br />

zu transformieren („separation of concerns”):<br />

50


Was noch bleibt, ist die Behandlung von Z-Diagrammen mit g-Übergängen, die z.B. für eine<br />

Grammatik dann zu zeichnen sind, wenn Produktionen der Art A 6 B vorliegen würden. Als Z-<br />

Diagramm bei einem Automaten wäre das so zu interpretieren, dass der Automat quasi „spontan”<br />

in einen anderen Zustand übergeht, ohne dass ein Zeichen aus dem Eingabeband gelesen<br />

wird. Wir benötigen das Konzept des endlichen Automaten mit g-Übergängen später außerdem<br />

noch zum modularen Zusammenschalten von endlichen Automaten. Die g-Übergänge sind in<br />

der Praxis beim Beschreiben von Prozessvorgängen mittels endlicher Automaten ebenfalls recht<br />

brauchbar, analog zur Empfehlung, es erst mit dem NEA bei der Problemmodellierung zu<br />

versuchen und das Ergebnis schließlich deterministisch machen.<br />

Definition:<br />

Ein (nichtdeterministischer) endlicher Automat mit g-Übergängen (NEAg) ist ein 5-Tupel A<br />

= (Z, E, *, s, E). Z, E, s und E sind - wie beim NEA - die Menge der Zustände, das Eingabealphabet,<br />

der Startzustand bzw. die Menge der Endzustände. Die Übergangsfunktion * wird<br />

erweitert zu * : Z × (E c {g}) 6 (Z), wobei (Z) die Potenzmenge von Z ist.<br />

Die erweiterte Übergangsfunktion ** des EAg wird definiert als:<br />

**(z, g) = *(z, g), für z 0 Z<br />

**(z, aw) = ^ z'0*(z, a) **(z', w), für a 0 E c {g}, w 0 E*<br />

Der Konfigurationsbegriff überträgt sich direkt.<br />

Das Paar k' = (z', w) heißt Folgekonfiguration von k, i. W. k | k', wenn v = aw mit w 0 E* ist<br />

und z' 0 *(z, a).<br />

Ein Automat M = (Z, E, *, z 0, E) erkennt / akzeptiert ein Wort a 1a 2...a n 0 E*, wenn es eine<br />

Folge von Konfigurationen (z 0, a 1a 2...a n) | (z 1, a 2...a n) | ... | (z n, g) gibt mit z n 0 E und für 0 # i<br />

< n gilt z i+1 0 *(z i, a i+1).<br />

Sei M = (Z, E, *, z 0, E) ein NEAg. Dann ist die von M akzeptierte Sprache die Menge L(M)<br />

= {w | w 0 E*, (z 0, w) |* (z, g), z 0 E}.<br />

Ê<br />

<strong>51</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!