2. Endliche Automaten und reguläre Sprachen
- A = ( Q, Σ, q0, δ, F )
- Q = Zustandsmenge
- Σ = Alphabet
- q0 = Anfangszustand
- δ = Übergangsfunktion
- F = Endzustände
- Beispiel: Endlichen Automat
- Q = { q0, q1, q2 }, Σ = { 0,1 }, q0 Anfangszustand, Endzustand F = {q2}
- δ: Q x Σ → Q
- δ ( q0, 0 ) = q1
- δ ( q0, 1 ) = q0
- δ ( q1, 0 ) = q0
- δ ( q1,1 ) = q1
- δ ( q2,0 ) = q1
- δ ( q2, 1 ) = q2
Allgemein
- ( . ) = Anfangszustand
- ( ) = Zustände
- (( )) = Endzustände
- Für q‘ = d(q,x) kann man auch schreiben:
- Für uns interessant: Nutzung von PEAS für das Wortproblem
- Definition 2.2 ( Erweiterte Übergangsfunktion)
- Sei A = (Q, Σ, q0, δ, F) ein DEA.
- Die erweiterte Übergangsfunktion: δ* : Q x Σ* (Wort) → Q wird iterativ wie folgt definiert:
- 1. δ*(q,Σ) = q
- 2. δ*(q, a)=δ(q, a) für alle a ∈ Σ
- 3. δ*(q,w) = δ* ( δ( q,x ),w‘ ) mit w = x w‘ und w = Σ*, x ∈ Σ
- Beispiel:
- δ*( q0, 100110 )
- = δ* ( q0, 00110 )
- = δ* ( δ ( q0, 0) 0110 )
- = δ* ( δ ( q1, 0) 110 )
- = δ* ( δ ( q2, 1) 10 )
- = δ* ( δ ( q2, 1) 0 )
- = δ* ( δ ( q2, 0) Σ )
- = δ* (q1, Σ ) = q1
- δ*( q0, 100110 ) = q1
- Def 2.3 Akzeptierte Sprache
- Sei A = ( Q, Σ, q0, δ, F) ein DEA, dann heißt L(A) = { w ∈ Σ*, δ*(q,w) ∈ F } die von A akzeptierte Sprache.
- L(A) = { w ∈ { 0,1 }*, die Anzahl der Nullen ist gerade und ungleich 0.
- Beispiel:
- Ein DEA für die Sprache L = { w ∈ {0,1}*, w ist eine Binärdarstellung einer durch 3 teilbaren Zahl }
- Für ein Wort w = wn … w1 ∈ { 0,1 }* sei nat(w) = ∑(i=1 bis n) z(i-1)*wi
- Wir setzen weiter:
- nat(Σ)=0 ( Leere Menge )
- nat (1 0 1 1 ) = ∑ (i=1 bis 4) = 20 * 1+21 * 1+22 * 0+23 * 1 ( Es sind dabei w4, w3, w2, w1 )
- Für eine natürliche Zahl n ∈ ℕ gilt:
- n mod 3 = {0,1,2} ( 0 = Durch drei teilbar )
- Für DEAs ist das Wortproblem lösbar:Gegeben: Eine durch 3 teilbare Zahl, z.B.:
- 11 = 3
- 110 = 6 // hat (w0) = 2nat(w)
- 111 = 7 // hat (w1) = 2nat(w)+1
- Gegeben: Ein DEA A und ein Wort w.
- Frage: Gilt w ∈ L(A)
- Definition 2.4
- Sei A ein DEA, für jedes Wort aus w ∈ Σ* kann in |w| Schritten geprüft werden ( |w| = Länge von w ), ob w ∈ L(A)
- Beweis: Berechne δ*(q0,w) Diese Berechnung erfordert |w| Schritte, dann gilt:
- 1) Ist δ*(q0, w) ∈ F, so ist w ∈ L(A)
- 2) sonst nicht
2.2 Minimierungsalgorithmus
- Definition 2.5:
- Zwei DEA A und A‘ heißen äquivalent, wenn L(A) = L(A‘)
- Zwei Automaten erzeugen die gleiche Sprache, sind aber anders aufgebaut
- Beispiel 1:
- Beispiel 2:Die Sprache L(A) lautet wie folgt:
- L(A)=(a+ba)* bb (a+b)*
- L(A) = { w ∈ {a,b}, w enthält das Teilwort bb}
- L(A, q0) = L(A)
- L(A, q1) = L(A) u {bw, w ∈ Σ*}
- L(A,q2) = {a,b}*
- Es gibt keine äquivalenten Zustände ( nichts zu kürzen)
Wie konstruiert man einen minimalen DEA für eine Sprache. ( Minimal in der Anzahl der Zustände )Die Sprache L(A‘) lautet ebenso:- L(A‘) = (a+ba)*bb(a+b)*
- A und A‘ sind somit äquivalent.
- Erste Beobachtung: q7 kann vom Anfangszustand q0 nicht erreicht werden und kann somit gestrichen werden
- Zweite Beobachtung: Für alle w ∈ {a,b}* gilt δ*(q3,w) ∈ F und δ* (q5, w) ∈ F. Wir können also die Zustände geeignet zusammenfassen, ohne dass sich an der akzeptierten Sprache etwas ändert.
- L(A, q3) = {a,b}*
- L(A, q5) = {a,b}*
- d.h. q3 ~ q5 ( Äquivalenz ist gegeben! )
- Definition 2.6:
- Sei A = (Q, Σ, q0, δ, F) ein DEA. Ein Zustand heißt erreichbar, falls ein Wort w ∈ Σ* mit δ* (q0, w ) = q existiert. Sonst heißt q nicht erreichbar.
- Definition 2.7:
- Sei A = (Q, Σ, q0, δ, F) ein DEA. Zwei Zustände heißen äquivalent (q1~q2), wenn L(A, q1) = L(A,q2), dabei ist L(A,q) = {w ∈ Σ*; δ(q,w) ∈ F} (d.h. die von A akzeptierte Sprache, wenn q der Anfangszustand wäre)
- Definition 2.8:
- Es gilt ~ ist eine Äquivalenzrelation, d.h.
- reflexiv ( d.h. q ~ q für alle q ∈ Q )
- symmetrisch ( d.h. aus q1 ~ q2 → q2 ~ q1)
- transitiv ( d.h. aus q1 ~ q2 und q2 ~ q3 → q1 ~ q3)
- ~ ( die Relation) ist verträglich mit der Übergangsfunktion, d.h. ist q1 ~ q2 ↔ d (q1, a) ~ d(q2, a) für alle a ∈ Σ.
- Es gilt ~ ist eine Äquivalenzrelation, d.h.
- Beweis:
- 1A) Wegen L(A, q) = L(A, q) gilt q ~ q.
- 1B) Ist q1 ~ q2, dann gilt L(A, q1) = L(A, q2), also q2 ~ q1
- 1C) Ist q1~q2 und q2~q3, dann gilt L(A,q1) = L(A, q2) = L(A,q3). Insbesondere gilt also L(A, q1) = L(A,q3), d.h. q1~q3.
- 2) Es gilt nämlich q1 ~ q2 ↔ L(A,q1) = L(A,q2) ↔ ∀ w ∈ Σ* : δ*(q1,w) ∈ F ↔ δ*(q2, w) ∈ F ↔ ∀ a ∈ Σ ∀ v ∈ Σ* : [ d* (δ(q1, a),v) ∈ F ↔ δ*(δ(q2, a), v) ∈ F] ( setze einfach w=av; v = Wort; a= Buchstabe ) ↔ ∀ a ∈ Σ : L(A,δ(q1,a))=L(A,δ(q2,a)) ↔ δ(q1,a) ~ δ(q2,a)
- Definition 2.9 Quotientenautomat
- Sei A = (Q, Σ, q0, δ, F) ein DEA.
- Der Quotientenautomat A~ = ( Q~, E, q~, d~, F~) mit
- Q~ = {q~, q ∈ Q } wobei q~ = { q‘ ∈ Q; q ~ q‘ }
- d~(q~,a) = d~~~(q,a)
- F~ = {q~, q ∈ F }
- q~ = { q‘ ∈ Q; q ~ q‘ } ( Die Äquivalenzklasse von q ) ( q0~ = Äquivalenzklasse von q0 → für / mit allen Elementen aus q0 )
- q0~ = { q0 }
- q1~ = { q1 }
- q2~ = { q2 }