FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Formale Informatik

F2 Aufgabenblatt 4

F2 Aufgabenblatt 4 2003-08-10 17:27
Anonymer User
Hi,

kann mir je man sagen wie man aus einer NFA einen äquivalenten lambda freien automaten konstruiert??
Aus den theorem 3.25 bin ich nicht ganz schlau geworden.
Was bedeutet : ( IdZ U —> )^ |Z|-1 ????????????

Danke.!!!!!!!!!!!!!!

Re: F2 Aufgabenblatt 4 2003-08-10 20:42
Slater
M1:
IdZ = Identität auf Z,
das ist eine relation, nämlich diese: (z,z) für alle z e Z

Z = menge der zustände des automaten

M2:
—>lambda soll die relation sein, die alle lambda-kanten
im automaten wiedergibt,
also (p,q) für alle lambda-kanten von p nach q

M3:
M1 und M2 sind zwei Mengen, diese werden durch U vereinigt zu
einer gesamtmenge: M1 u M2

M4:
nun wird das ganze malgenommen, |Z|-1-mal M3 mit sich selber
(das entspricht dem transitiven abschluss von M3),
das produkt zweier relationsmengen bedeutet in diesem Zusammenhang
etwa folgendes:

M * N = {(x,y) für (x,z) e M & (z,y) e N}



kurz gesagt neben all der theorie:
man bildet den reflexiven transitiven abschluss der Menge M2,
der vorhandenen lambda-kanten,
reflexiv heißt, dass die Identität dabei ist, also M1,
transitiv bedeutet, dass aus (a,b) und (b,c) in der relation folgt,
dass auch (a,c) in der relation ist


beispiel:
für einen automaten mit zwei lambda-kanten von Z1 nach Z2 und
von Z2 nach Z3 sieht das nun so aus:
(Z1,Z2) und (Z2,Z3) sind in der relation die grund-lambdakanten,
durch den reflexiven abschluss kommen (Z1,Z1), (Z2,Z2), (Z3,Z3) hinzu

bedeutung: man kommt mit dem wort lambda von Z1 nach Z1,
von Z2 nach Z2 und von Z3 nach Z3

der transitive abschluss, also dieses ominöse mal-nehmen von
zwei mengen, liefert hier nur ein neues paar,
nämlich (Z1,Z3), da man ja über Z2 mit 2x lambda-lesen
von Z1 nach Z3 kommt

den reflexiven transitive abschluss der Menge M2,
also der lambda-kanten, ist in diesem beispiel nun:
{(Z1,Z2),(Z2,Z3),(Z1,Z1),(Z2,Z2),(Z3,Z3),(Z1,Z3)}

und nun kann man fröhlich die neue kantenmenge des
lambda-freien NFAs bestimmen,
sagen wir mal der automat sah vorher so aus:

l = lambda, Z1= startzustand, {Z3} = menge der endzustände

.---. l .--. l .---. ||Z1| ----> |Z2| ----> |Z3|| '---' '--' '---' <---- <---- b a dann geht man so vor: man geht jede nicht-lambda-kante durch, fangen wir mit Z2 --b--> Z1 an: nun kommt eine neue b-kante von jedem zustand, der über lambda-kanten mit Z2 verbunden ist, zu jedem zustand, der über lambda-kanten mit Z1 verbunden ist, also so: b b .-. .-. v | v | .---. l,b .--. l,b .---. ||Z1| ----> |Z2| ----> |Z3|| '---' '--' '---' <---- <---- b a ------------------------> b zum beispiel neu dabei: Z1 ---b---> Z3, da Z1 über lambda-kanten mit Z2 verbunden ist, über b mit Z1 und dann über lambda-kanten mit Z3 nun noch mal das gleiche für a: b a,b a .-. .-. .-. v | v | v | .---. l,a,b .--. l,a,b .---. ||Z1| ------> |Z2| ------> |Z3|| '---' '--' '---' <---- <---- b a --------------------------> a,b dann entfernt man die lambda-kanten und da man von Z1 über lamdas in einen endzustand kommt (Z3) muss Z1 auch noch endzustand werden, dann ist es aber fertig, wenn ich keinen fehler gemacht habe ;) b a,b a .-. .-. .-. v | v | v | .----. a,b .--. a,b .---. ||Z1|| ------> |Z2| ------> |Z3|| '----' '--' '---' <---- <---- b a --------------------------> a,b

Re: F2 Aufgabenblatt 4 2003-08-14 16:42
Anonymer User
Ich habe im Netz einen Algorithmus gefunden mit dem man einen NFA lambda-frei machen kann. Ich hab den an der Aufgabe 4.2 ausprobiert und habe einen NFA bekommen für den meiner Ansicht nach gilt: L(meinerVariante)=L(Musterlösung). Allerdings habe ich weniger Kanten als in der Musterlösung…
Mein NFA lautet:
A=({1,2,3}, {a,b}, K, {1}, {2})
K={(1,a,2),(1,b,3),(2,b,1),(2,a,2),(2,a,3),(2,b,3)}

Der Algorithmus (epsilon bwz. e = lambda):
NFA -> e-frei-NFA

Als ersten Schritt werden die spontanen Übergänge in einem NFA entfernt. Diese e-Übergänge bewirken stets, dass von einem State mit einem e-Übergang zu einem anderen State ohne Verzögerung oder Eingangssignal gewechselt werden kann. Um diese Übergänge zu entfernen bedarf es zwei einfacher Schritte:

Jeder nicht-akzeptierte State, der mittels mindestens einem e-Übergang zu einem Akzeptierer gelangen kann, kann selbst als Akzeptierer eingefärbt werden. Dabei spielt es auch keine Rolle, ob ein Übergang beispielsweise mit "0,e" beschriftet ist, solche ÜbergŠnge sind ebenfalls e-Übergänge. Dass diese
Abänderung keine Veränderung der akzeptierten Sprache einbringt, liegt auf der Hand, denn wenn ein nicht-Akzeptierer spontan in einen Akzeptierer wechseln kann, so wird auch der String, der in diesem nicht-Akzeptierer stoppen würde in dem Akzeptierer stoppen.

Solange von einem ersten State m ein e-Übergang zu einem zweiten n führt, so können alle Übergänge, welche beim zweiten State beginnen, auch beim ersten hinzugefügt werden. Der betreffende e-Übergang kann danach gelöscht werden. Wiederum steckt eine einfache Überlegung dahinter: Wenn von
einem State spontan in einen zweiten gewechselt werden kann, so bedeutet dies, dass er dieselbe Funktionen annehmen kann, wie der zweite. In Folge müssen also alle States, die von dem zweiten State erreichbar sind auch vom ersten aus erreichbar sein. Sodann ist der e-Übergang Überflüssig und kann entfernt werden.

Vielleicht möchte M.J. sich ja auch dazu äußern ;)

Re: F2 Aufgabenblatt 4 2003-08-14 16:49
Anonymer User
Hier noch der Link:
http://n.ethz.ch/student/stammt/doc/TheoInf/NFADFA.html

Re: F2 Aufgabenblatt 4 2003-08-14 17:00
UncleOwen
Ich kann so auf den ersten Blick keinen Fehler in der Argumentation entdecken. Muesste man natuerlich noch formal beweisen, dass man mit dieser Konstruktion immer einen aequivalenten, lambda-freien Automaten erhaelt.

Re: F2 Aufgabenblatt 4 2003-08-14 17:25
Slater
ich bin auch entzückt und gespannt,
warum nicht dieses verfahren verwendet wird




wen es interessiert, mein beispiel von unten sieht dann
glaub ich so aus, deutlich einfacher ;) :

b a .-. .-. v | v | .----. b .---. a .---. ||Z1|| <---- |Z2|| <---- |Z3|| '----' '---' '---' ----> a

Re: F2 Aufgabenblatt 4 2003-08-14 17:49
Anonymer User
Dann fehlt ja nur noch die Genehmigung unseres Lehrmeisters M.J.

Re: F2 Aufgabenblatt 4 2003-08-15 02:41
Anonymer User
Und wer hats erfunden?
Ein Schweizer ;)