23.11.2013 Aufrufe

Endliche Automaten

Endliche Automaten

Endliche Automaten

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Endliche</strong> <strong>Automaten</strong><br />

Modell für Systeme mit Ein/Ausgaben aus endlichem Wertebereich<br />

und mit endlichem Speicher.<br />

<br />

<br />

Reguläre<br />

<br />

Menge<br />

<br />

<br />

minimaler<br />

NEA<br />

DEA<br />

<br />

<br />

<br />

DEA <br />

<br />

DEA . . . deterministischer endlicher Automat<br />

NEA . . . nichtdeterministischer endlicher Automat<br />

31


Beispiel.<br />

q 4<br />

<br />

<br />

digit <br />

digit <br />

<br />

. <br />

E <br />

digit <br />

digit <br />

<br />

<br />

q0 q1 q2 q3 q5<br />

Deterministischer endlicher Automat (DEA)<br />

digit digit<br />

+, −<br />

Nichtdeterministischer endlicher Automat (ε-NEA)<br />

digit<br />

<br />

digit <br />

digit<br />

<br />

+<br />

<br />

<br />

digit<br />

. <br />

<br />

E<br />

<br />

ε digit<br />

<br />

<br />

q0 q1 q2 q3 − q4 q5<br />

<br />

32


Deterministischer endlicher Automat<br />

A = 〈Q, Σ, δ, q 0 , F 〉, wobei<br />

Q . . . endliche Menge von Zuständen<br />

Σ . . . Eingabealphabet<br />

δ: Q × Σ → Q . . . Übergangsfunktion (total)<br />

q 0 ∈ Q . . . Anfangszustand<br />

F ⊆ Q . . . Menge von Endzuständen<br />

Falle: Sei A = 〈Q, Σ, δ, q 0 , F 〉 ein DEA und q ∈ Q − F mit<br />

δ(q, a) = q für alle a ∈ Σ. Dann heißt q Falle.<br />

Zur Erhöhung der Übersichtlichkeit können Fallen bei der<br />

Beschreibung von endlichen <strong>Automaten</strong> weggelassen werden.<br />

33


Deterministischer endlicher Automat<br />

Erweiterte Übergangsfunktion: δ ∗ : Q × Σ ∗ → Q<br />

δ ∗ (q, ε) = q, δ ∗ (q, aw) = δ ∗ (δ(q, a), w)<br />

für alle q ∈ Q, w ∈ Σ ∗ , a ∈ Σ.<br />

Akzeptierte Sprache: L(A) = {w ∈ Σ ∗ | δ ∗ (q 0 , w) ∈ F }<br />

34


Einschub: Graphen<br />

Seien U und W endliche Mengen. Ein markierter gerichteter Graph<br />

g über U und W ist ein Tripel (K, E, L) wobei<br />

• K die Menge der Knoten<br />

• E ⊆ K × W × K die Menge der Kanten<br />

• L : K → U die Knotenmarkierungsfunktion ist.<br />

Ein Element (x, w, y) ∈ E stellt eine gerichtete Kante vom Knoten<br />

x zum Knoten y mit Markierung w dar.<br />

Zwei markierte gerichtete Graphen g = (K, E, L) und<br />

g ′ = (K ′ , E ′ , L ′ ) über U und W heißen isomorph, wenn wenn es<br />

eine bijektive Abbildung f : K → K ′ gibt, sodass für alle k, l ∈ K<br />

und w ∈ W gilt: (k, w, l) ∈ E genau dann wenn (f(k), w, f(l)) ∈ E ′ .<br />

Gilt außerdem L(k) = L ′ (f(k)) für alle k ∈ K, so heißen g und g ′<br />

äquivalent.<br />

35


Minimalautomat<br />

Satz. Zu jeder regulären Sprache kann man effektiv einen DEA mit<br />

einer minimalen Anzahl von Zuständen konstruieren, der bis auf<br />

die Umbenennung der Zustände eindeutig ist.<br />

36


Nichtdeterministischer endlicher Automat<br />

Übergangsfunktion NEA: δ: Q × Σ → P(Q)<br />

Übergangsfunktion ε-NEA: δ: Q × (Σ ∪ {ε}) → P(Q)<br />

Erweiterte Übergangsfunktion: δ ∗ : Q × Σ ∗ → P(Q)<br />

δ ∗ (q, w) = {q ′ ∈ Q | q w q ′ }<br />

q w q ′ . . . es gibt einen mit w beschrifteten Pfad von q nach q ′<br />

Akzeptierte Sprache:<br />

L(A) = {w ∈ Σ ∗ | δ ∗ (q 0 , w) ∩ F ≠ {}}<br />

Definition. <strong>Automaten</strong> A und A ′ sind äquivalent, falls<br />

L(A) = L(A ′ ).<br />

37


Determinisierung (NEA → DEA)<br />

Satz. Zu jedem NEA gibt es einen äquivalenten DEA.<br />

NEA: A = 〈Q, Σ, δ, q 0 , F 〉<br />

DEA: Â = 〈 ˆQ, Σ, ˆδ, ˆq 0 , ˆF 〉, wobei<br />

ˆQ = P(Q)<br />

ˆδ(ˆq, a) = ⋃ δ ∗ (q, a) für alle ˆq ∈ ˆQ, a ∈ Σ<br />

q∈ˆq<br />

ˆq 0 = {q 0 }<br />

{ {ˆq ∈ ˆQ | ˆq ∩ F ≠ {}} ∪ {ˆq0 } falls ε ∈ L(A)<br />

ˆF =<br />

{ˆq ∈ ˆQ | ˆq ∩ F ≠ {}} sonst<br />

Tipp: Berechne die Übergangsfunktion ausgehend von ˆq 0 nur für<br />

tatsächlich erreichbare Zustände.<br />

38


Reguläre Menge → ε-NEA<br />

Satz. Zu jeder regulären Sprache L gibt es einen endlichen<br />

<strong>Automaten</strong> A, sodass L = L(A).<br />

L = {}:<br />

<br />

L = {s}:<br />

s <br />

s ∈ (Σ ∪ {ε})<br />

L = L 1 ∪ L 2 :<br />

<br />

<br />

q0,1<br />

ε<br />

ε<br />

<br />

q0,2<br />

<br />

A 1<br />

A 2<br />

q f,1<br />

q f,2<br />

<br />

<br />

<br />

<br />

<br />

<br />

39


o.B.d.A. hat A 1 nur einen Endzustand!<br />

L = L 1 · L 2 :<br />

<br />

A ε<br />

1<br />

<br />

q0,1 q f,1<br />

q0,2<br />

<br />

A 2<br />

q f,2<br />

<br />

<br />

<br />

L = (L 1 ) ∗ :<br />

<br />

<br />

ε<br />

<br />

<br />

<br />

<br />

<br />

<br />

q0,1<br />

ε<br />

A 1<br />

ε<br />

q f,1<br />

<br />

<br />

<br />

ε <br />

<br />

<br />

<br />

<br />

40


DEA → reguläre Menge<br />

Satz. Jede von einem DEA akzeptierte Sprache ist regulär.<br />

A = 〈{q 1 , . . ., q n }, Σ, δ, q 1 , F 〉<br />

R k ij . . . Menge aller Wörter, mit denen man von q i nach q j gelangt,<br />

ohne einen Zustand mit einem Index größer als k zu berühren.<br />

R 0 ij =<br />

{ {s ∈ Σ | δ(qi , s) = q j } i ≠ j<br />

{s ∈ Σ | δ(q i , s) = q j } ∪ {ε} i = j<br />

R k ij = R k−1<br />

ij<br />

L(A) = ⋃<br />

q j ∈F<br />

∪ R k−1<br />

ik<br />

R n 1j<br />

· (R k−1<br />

kk<br />

)∗ · R k−1<br />

kj<br />

k > 0<br />

41


Beispiel.<br />

<br />

1<br />

<br />

q 1<br />

<br />

<br />

0<br />

0 1 <br />

q 2<br />

q<br />

<br />

3<br />

<br />

<br />

<br />

0, 1<br />

<br />

<br />

<br />

42


k = 0 k = 1 k = 2<br />

R11 k {ε} {ε} {00} ∗<br />

R12 k {0} {0} {0} · {00} ∗<br />

R13 k {1} {1} {0} ∗ · {1}<br />

R21 k {0} {0} {0} · {00} ∗<br />

R22 k {ε} {ε, 00} {00} ∗<br />

R23 k {1} {1, 01} {0} ∗ · {1}<br />

R31 k {} {} {0, 1} · {00} ∗ · {0}<br />

R32 k {0, 1} {0, 1} {0, 1} · {00} ∗<br />

R33 k {ε} {ε} {ε} ∪ {0, 1} · {0} ∗ · {1}<br />

43


Eigenschaften regulärer Sprachen<br />

L reg (Σ) ist abgeschlossen gegenüber<br />

• Vereinigung, Verkettung, Stern-Operator: per Definition.<br />

• Plus-Operator: A + = A ∗ · A.<br />

• Komplement bzgl. Σ ∗ : konstruiere DEA und vertausche Endund<br />

Nichtendzustände.<br />

• Durchschnitt: A ∩ B = A ∪ B.<br />

• Differenz: A − B = A ∩ B.<br />

• Homomorphismen: Sei h: Σ → Σ ′∗ eine Abbildung von<br />

Symbolen aus Σ auf Wörter über Σ ′ .<br />

Ist L eine reguläre Sprache, dann auch h(L) = {h(w) | w ∈ L}.<br />

Beweis: repräsentiere L durch regulären Ausdruck und ersetze<br />

alle Vorkommnisse von a durch Ausdruck für h(a).<br />

44


Homomorphismus<br />

h(ε) = ε, h(wa) = h(w)h(a)<br />

für alle w ∈ Σ ∗ und a ∈ Σ<br />

Beispiel.<br />

h(0) = a und h(1) = bbb<br />

Wenn w = 011 dann<br />

h(w) = abbbbbb.<br />

45


Folgende Probleme sind für reguläre Sprachen L, L ′ entscheidbar.<br />

• Gehört ein Wort w der Sprache L an?<br />

Konstruiere einen DEA für L und prüfe δ ∗ (q 0 , w) ∈ F .<br />

• Ist L leer?<br />

Konstruiere einen DEA für L und prüfe, ob von q 0 aus ein<br />

Endzustand erreichbar ist.<br />

• Ist L endlich oder unendlich?<br />

L ist unendlich gdw. der minimale DEA für L (abgesehen von<br />

der Falle!) einen Zyklus enthält.<br />

• Gilt L = L ′ ?<br />

Überprüfe, ob L − L ′ und L ′ − L leer sind.<br />

46


Grenzen regulärer Sprachen<br />

Beispiel. Modulo-Arithmetik<br />

L . . . Menge aller binären Numerale ohne führende Nullen, die<br />

kongruent 0 modulo 5 sind<br />

z(x) = durch Darstellung x repräsentierte Zahl.<br />

Beispiel.<br />

z(1000) = 8 = 3 mod 5,<br />

z(10000) = 8 ∗ 2 = 1 mod 5,<br />

z(10001) = 8 ∗ 2 + 1 = 2 mod 5,<br />

Prinzip: Ist z(x) = i mod 5 dann<br />

z(x0) = 2 ∗ i mod 5,<br />

z(x1) = 2 ∗ i + 1 mod 5.<br />

47


Zustand i . . . ”<br />

bisherige Zahl ist kongruent i mod 5“<br />

δ(i, 0) = (i · 2 + 0) mod 5<br />

δ(i, 1) = (i · 2 + 1) mod 5<br />

<br />

0 3<br />

<br />

<br />

1 1 0<br />

<br />

1 <br />

<br />

0 <br />

0 <br />

4<br />

1 2<br />

<br />

<br />

1<br />

1<br />

1<br />

<br />

<br />

<br />

0<br />

0<br />

48


Beispiel. Geschachtelte Strukturen<br />

Ist L = {a n b n | n ≥ 0} regulär?<br />

Angenommen, es gibt DEA A = 〈Q, Σ, δ, q 0 , F 〉 für L.<br />

Wir betrachten δ ∗ (q 0 , a i ) für i = 1, 2, 3, . . . .<br />

Schubfachprinzip: es gibt m, n sodass<br />

m ≠ n aber δ ∗ (q 0 , a m ) = q = δ ∗ (q 0 , a n ) .<br />

a n b n ∈ L(A), daher gilt δ ∗ (q, b n ) = q f ∈ F .<br />

Wir erhalten:<br />

δ ∗ (q 0 , a m b n ) = δ ∗ (δ ∗ (q 0 , a m ), b n )<br />

= δ ∗ (q, b n )<br />

= q f<br />

d.h., a m b n ∈ L(A) obwohl m ≠ n!<br />

Folgerung: L ist nicht regulär.<br />

49


Pumping Lemma für reguläre Sprachen<br />

Sei L eine unendliche reguläre Sprache.<br />

Für alle hinreichend großen Wörter w ∈ L existiert eine Zerlegung<br />

w = xyz mit y ≠ ε, sodass xy i z ∈ L für alle i = 0, 1, 2, . . .<br />

Formal: Es gibt eine (nur von L abhängige) Schranke m > 0, sodass<br />

für alle w ∈ L mit |w| ≥ m gilt:<br />

w kann geschrieben werden als<br />

w = xyz mit |xy| ≤ m und |y| > 0<br />

sodass<br />

w i = xy i z ∈ L für alle i ≥ 0.<br />

50


Beispiel. L = {a n b n | n ≥ 0}<br />

Wäre L regulär, müsste Pumping Lemma gelten.<br />

• Lemma gilt für alle w mit |w| ≥ m, m unbekannt.<br />

• Wähle w = a m b m .<br />

• Nachdem |xy| ≤ m und |y| > 0 besteht y aus lauter Symbolen<br />

a, also y = a k für 0 < k < m.<br />

• Betrachte w 0 = a m−k b m .<br />

Da w 0 /∈ L, ist L nicht regulär.<br />

51

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!