SprachTyp
Automat
Grammatik
Beispiel
Endl.
Mengen
L3 = REG
{a,ab,abb}
+ -
DFA=NFA
{a}*{b}*
+ +
DCF
DPDA
Typ3=
rechtslin.
-
- +
+ +
+
+
+ +
+ -
L2 = CF
L1= CS
PDA(Keller)
NLBA
Typ2=
Kontextfrei
Typ1=
{wcwrev|w{a,b}*}
{wwrev|w{a,b}*}
{an bn
cn
|n >= 0}
monoton G.
REC
LE
L0=RE
DTM=NTM
Typ0
H, (G*\LD)
Abzhlbare
Menge
LD,
+ +
+ +
Grammatik G:
G = ( ,
V,
S,
P)
Eingabe: aab
(q0, aab) =
=
=
=
=
=
((q0,aa),b)
(((q0, a),a),b)
(((q0, a),a),b)
(q1,a),b)
(q0b)
q2
= {a,b}
L= L =
*
*
*
*
*
*
q0
q1
q2
q3
2. Schritt:
berall in der Table wo ein Endzustand mit einem nicht
Endzustand sich kreuzt kommt ein Sternchen hinein. *
3. Schritt: Tabelle durchgehen mit a (Spalte, Zeile!)
-Betrachte q0 q3: q0mit a->q1 und q3mita->q4
Paar q1,q4 schon*markiert? Ja,dh q0,q3 markieren. *
-Betrachte q1 q3: q1mit a->q4 und q3 mita->q4
Paar q4,q4 bereits * markiert? Nein, auerhalb Tabelle.
-Betrachte q2 q3: q2mit a->q3 und q3 mita->q4
Paar q3,q4 bereits * markiert? Ja,dh q2,q3 markieren. *
-Betrachte q0 q2: q0mit a->q1 und q2 mita->q3
Paar q1,q3 bereits * markiert? Nein, leer.
-Betrachte q1 q2: q1mit a->q4 und q2 mita->q3
Paar q4,q3 bereits * markiert? Hier ja, weil Aufg. fehlerhaft. *
-Betrachte q0 q1: q0mit a->q1 und q1 mita->q4
Paar q1,q4 bereits * markiert? Ja,dh q0,q1 markieren. *
4. Schritt: Tabelle durchgehen mit b (Spalte, Zeile!)
-Betrachte q0 q2: q0mit b->q2 und q2 mitb->q2
Paar q2,q2 bereits * markiert? Nein, auerhalb Tabelle.
-Betrachte q1 q2: q1mit b->q2 und q2 mitb->q2
Paar q2,q2 bereits * markiert? Nein, auerhalb Tabelle.
-Betrachte q1 q3: q1mit b->q2 und q3 mitb->q0
Paar q2,q0 bereits * markiert? Nein, auerhalb Tabelle.
5. Schritt: Bei mehr Buchstaben oder Vernderung in der
Tabelle so oft wiederholen, bis nichts mehr geschieht.
6. Schritt: Minimalautomat bauen:
-Alle nicht markierten Zustnde verschmelzen!
-Kanten als altem Automaten bertragen
NFA:
-Nicht deterministischer endlicher Automat
-Akzeptiert sobald es eine Mglichkeit gibt, den er gehen
kann, so dass er in einem akzeptierenden Zustand beim
Wortende ist. -Mehrere Startzustnde mglich!
-Gleich mchtig wie DFA
-Bei kommt hier eine Menge heraus! :ZX ->2z
Grammatik zu NFA konstruieren:
S->aA|bB|cD|
A->bB|cA|a
B->cA|b
-Terminale sind Endzustnde.S->aA = S Kante a zu Zustand A.
-Nur-Terminale fhren zu neuen Endzustand X.
-S-> = Startzustand ist auch Endzustand
-NFA (GFA):
-Kann nicht mehr als ein DFA/NFA, aber stottern mit
-NFA zu einem NFA umbauen:
NFA
Regulre Ausdrcke:
Konkatenieren R1*R2 , wenn R1 und R2 bereits Regexp
ODER (R1|R2)
Kleene Stern (R1) Beliebig oft
Plus (R1)+ = R1*(R1) Mindestens einmal bis n oft.
Rekursiver Aufbau (a + bc) besteht wiederum aus Regexp.
Daher Gesamtausdruck auch Regexp.
-NFA
Regulre Ausdrcke:
Endzustand.
2. Alle Zustandsanzahlen und nicht Epsilonkanten
bleiben gleich
3. Schauen was anstatt eingesetzt werden muss um
Funktionen zu wahren. Alle Mglichkeiten ber
betrachten und ersetzen.
a =
-Neuer Zustand hinzufgen
-Vom neuen Zustand -Kante auf alten Startzustand
-Neuer Zustand ist Startzustand und Endzustand
- -Kante vom alten Endzustand zum neuen Zustand
Kellerautomat(PDA):
A = (Z,
, zStart,
Zend ,
bc =
-Nicht deterministisch
-Akzeptiert bei Wortende und leerem Keller!
-LIFO Speicher (Stack)
Wort zu Transitionsfolge:
(z, abbabba,S) |--(z, bbabba
b und c konkatenieren
=
a+bc=
(a + bc):
Sprache zu Automatenkonstruktion:
L = {anbn|n >=1}
z0,a, ->z0,A (Fr jedes gelesene a schreibe ein A auf
Keller wenn Kellersymbol oben ist)
z0,a,A->z0,AA (Fr jedes gelesene a schreibe AA auf Keller.
Entnommenes A und ein zustzliches)
z0,b,A -> z1, (Wechselt den Modus in anderen Zustand, nur
einmal. Nimmt ein A vom Keller und legt nichts rauf)
z1,b,A->z1, (Liest ein b, lscht ein A vom Keller und tut
nichts drauf)
z1,, ->z2, (Wenn Wort leer und Kellersymbol oben,
lsche Kellersymbol und Ende)
w= ab
(z0, ab,)|--(z0,b,A)|--(z1,b,)|--(z2,,)
L = {anb2n|n >=1}
Gleiches Spiel nur mit einem A mehr drauflegen. So knnen
doppelt so viele bs gelesen werden.
-Wenn das Leere Wort gehen soll: z0,, ->z2, ergnzen.
w=abb
(z0,abb, )|--(z0,bb,AA)|--(z1,b,A)|--(z1,,)|--(z1, , )
CYK-Algorithmus:
S->SA|a
A->BS
B->BB|BS|b|c
w= abacba
1.Schritt: Tabelle erstellen
-Wort als berschrift, Pro Buchstabe eine Spalte nach rechts
a
b
a
c
b
a
S
B
S
B
B
S
A,B
B
A,B
A,B
S
B
w }
b
B
A,B
S
2.Schritt: Erste Zeile
Wie erhlt man die Terminale aus den Spalten?
a durch S , bdurch B , c durch B eintragen!
2.Schritt: Teilbaum betrachten
a
b
Kann das Paar SB abgeleitet werden?
S
B
Nein, also darunter eintragen.
B
A,B
a
S
A,B
S
Kann das Paar S,BS abgeleitet werden?
(S,A) Ja, aus S, eintragen! (S,B) Nein.
Kann das Paar ,S abgeleitet werden? Nein.
Repeat fr die ganze Zeile nach rechts verrckt
4.Schritt: Teilbaum vergrert betrachten
B
A,B
B
DTM:
A = (Z,
, zStart,
Beispiel DTM:
Bei einer eingabe 111 sollen am Ende 6x1 auf dem Band
stehen.
Strategie: Fr jede gelesene 1 gehen wir ans Ende und
schreiben eine 1 aufs Band.
z0,1->z1,X1,R (Markiere erste 1 und nach rechts)
z1,1->z1,1,R (Skippe alle 1)
z1,X2->z1,X2,R (Skppe alle X)
Z1,#->z2, X2,L
z2,X2,->z2, X2,L (
z2,1->z2,1,L
z2,X1->z0,1,R
z0,X2->z0,1,R
z0,#->z4,#,L
Erfolgsrechnung DTM:
Petrinetze:
z0aab|--Xz0ab|--XXz0b|--XXz0#|--XXz1b|--XXbz2#
Landet im Endzustand, ist Erfolgsrechnung!
NTM:
: (ZX) -> (2X{L,R,H}XZ)
-Akzeptiert wenn es eine Erfolgsrechnung gibt
Probleme:
Wortproblem
Endlichkeitsproblem
Leerheitsproblem
quivalenzproblem
Mengen:
Petri Netz
Bume einhngen
DFA Konstruieren der alle Worte auf aaa akzeptiert:
Nerode quivalenz:
-Jede Sprache L erzeugt eine Relation RLX erklrt
durch: uRLv gdw. Fr alle w(uwL <=> vw L)
Also nach den Prfixen u und v stellt sich die gleiche Situation
ein.
-Jeder DFA erzeugt eine Relation RAX erklrt durch:
uRAv gdw. (q0, u) = (q0, v).
-Also Worte u und v sind Nerode-quivalent, wenn sie aus
dem gleichen Startzustand den gleichen Zustand erreichen.
quivalente Zustnde: Zwei Zustnde p,q eines DFA A sind
quivalent wenn fr alle Wrter w gilt: (p, wEnd)
gdw. (q, w)End.
Entscheidungsverfahren:
Zwei Zustnde p,q sind nicht quivalent wenn gilt: 1) p
akzeptiert und q nicht, sie behandeln das Wort w anders.
2) Es gibt Zustnde die als nicht quivalent bekannt sind.
(Unterschiedlich und p fhrt mit x zu v und q zu s, dh. v!=s
also auch p!=q.