31.08.2013 Aufrufe

Automaten und Formale Sprachen“ alias ” Theoretische Informatik ...

Automaten und Formale Sprachen“ alias ” Theoretische Informatik ...

Automaten und Formale Sprachen“ alias ” Theoretische Informatik ...

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.

<strong>”</strong> <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> <strong>Sprachen“</strong><br />

<strong>alias</strong><br />

<strong>”</strong> <strong>Theoretische</strong> <strong>Informatik</strong>“<br />

Sommersemester 2012<br />

Dr. Sander Bruggink<br />

Übungsleitung: Jan Stückrath<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 1


Reguläre Sprachen<br />

Reguläre Sprachen<br />

Wir beschäftigen uns ab jetzt einige Wochen mit regulären Sprachen.<br />

deterministische <strong>und</strong> nicht-deterministische endliche <strong>Automaten</strong><br />

reguläre Ausdrücke<br />

beweisen, dass eine Sprache nicht regulär ist: Pumping Lemma<br />

Minimalautomaten <strong>und</strong> Äquivalenzrelationen<br />

Abschlusseigenschaften <strong>und</strong> Entscheidungsverfahren<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 80


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Deterministische endliche <strong>Automaten</strong><br />

Graphische Notation:<br />

Zustand: z Anfangszustand: z0 Endzustand: zE<br />

Beispiel: (Σ = {a, b})<br />

Übergang: a<br />

z1 z2<br />

z1<br />

b<br />

z2<br />

b<br />

a a<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 82


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Deterministische endliche <strong>Automaten</strong><br />

DFAs → Reguläre Sprachen (Satz)<br />

Jede von einem endlichen <strong>Automaten</strong> akzeptierte Sprache ist regulär.<br />

Idee:<br />

Zustände Variablen<br />

Übergänge Produktionen<br />

Formal: Wir konstruieren die Grammatik G = (V , Σ, P, S), wobei V = Z,<br />

S = z0 <strong>und</strong> P folgende Produktionen enthält:<br />

Falls ε ∈ T (M), enthält P eine Produktion S → ε.<br />

Für alle z1 ∈ Z <strong>und</strong> a ∈ Σ:<br />

Falls δ(z1, a) = z2, dann gilt (z1 → az2) ∈ P.<br />

Falls zusätzlich gilt, dass z2 ∈ E, dann gilt auch (z1 → a) ∈ P.<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 89


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Nichtdeterministische endliche <strong>Automaten</strong><br />

Im Gegensatz zu Grammatiken gibt es bei DFAs keine<br />

nichtdeterministischen Effekte. Das heißt, sobald das nächste Zeichen<br />

eingelesen wurde, ist klar, welcher Zustand der Folgezustand ist.<br />

Aber: In vielen Fällen ist es natürlicher, wenn man auch<br />

nichtdeterministische Übergänge zuläßt. Das führt auch oft zu kleineren<br />

oder besser verständlichen <strong>Automaten</strong>.<br />

z1<br />

a<br />

a<br />

z2<br />

z3<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 90


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Nichtdeterministische endliche <strong>Automaten</strong> (Idee)<br />

In einem nichtdeterministischen endlichen <strong>Automaten</strong> gibt es für ein Paar<br />

(z, a) bestehend aus einem Zustand z <strong>und</strong> einem Symbol a entweder<br />

keinen, einen oder mehrere Nachfolgerzustände.<br />

a b c<br />

z0 z1 z2 zE<br />

a, b, c a, b, c<br />

Ein nichtdeterministischer Automat rät aus den möglichen<br />

Nachfolgerzuständen immer (nichtdeterministisch) einen aus. Ein Wort<br />

wird akzeptiert, wenn es von einem Startzustand in einen Endzustand<br />

führt (wenn der Automat immer <strong>”</strong> richtig“ rät).<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 91


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 92


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Nichtdeterministische endliche <strong>Automaten</strong><br />

Definition: Nichtdeterministischer endlicher Automat<br />

Ein nichtdeterministischer endlicher Automat M ist ein 5-Tupel<br />

M = (Z, Σ, δ, S, E), wobei<br />

Z die Menge der Zustände,<br />

Σ das Eingabealphabet (mit Z ∩ Σ = ∅),<br />

S ⊆ Z die Menge der Startzustände,<br />

E ⊆ Z die Menge der Endzustände <strong>und</strong><br />

δ : Z × Σ → P(Z) die Überführungsfunktion (oder<br />

Übergangsfunktion) ist.<br />

Z, Σ müssen endliche Mengen sein.<br />

Abkürzung: NFA (nondeterministic finite automaton)<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 93


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Nichtdeterministische endliche <strong>Automaten</strong><br />

Die Übergangsfunktion δ kann wieder zu einer<br />

Mehr-Schritt-Übergangsfunktion erweitert werden:<br />

Mehr-Schritt-Übergänge<br />

Zu einem gegebenen NFA M = (Z, Σ, δ, S, E) definieren wir eine Funktion<br />

ˆδ : P(Z) × Σ ∗ → P(Z) induktiv wie folgt:<br />

ˆδ(Z ′ , ε) = Z ′<br />

ˆδ(Z ′ , ax) = <br />

mit Z ′ ⊆ Z, x ∈ Σ ∗ <strong>und</strong> a ∈ Σ.<br />

z∈Z ′<br />

ˆδ(δ(z, a), x)<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 94


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Nichtdeterministische endliche <strong>Automaten</strong><br />

Akzeptierte Sprache<br />

Die von einem NFA M akzeptierte Sprache ist<br />

T (M) = {x ∈ Σ ∗ | ˆδ(S, x) ∩ E = ∅}.<br />

In anderen Worten: ein Wort w wird genau dann akzeptiert, wenn es einen<br />

Pfad von einem Anfangszustand zu einem Endzustand gibt, dessen<br />

Übergänge mit den Zeichen von w markiert sind. (Es könnte auch mehrere<br />

solche Pfade geben.)<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 95


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Nichtdeterministische endliche <strong>Automaten</strong><br />

Sei Σ = {a, b}.<br />

Welche Sprache akzeptiert folgender NFA?<br />

a, b<br />

a a, b a, b<br />

1 2 3 4<br />

Wir suchen einen NFA, der die folgende Sprache L akzeptiert:<br />

L = {x | x fängt mit a an <strong>und</strong> endet auf b}<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 96


Von NFAs zu DFAs<br />

NFAs → DFAs (Satz)<br />

Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Jede von einem NFA akzeptierbare Sprache ist auch von einem DFA<br />

akzeptierbar.<br />

Idee: Wir lassen die verschiedenen <strong>”</strong> Paralleluniversen“ von einem<br />

<strong>Automaten</strong> simulieren. Dieser merkt sich, in welchen Zuständen er sich<br />

gerade befinden kann.<br />

Das heißt, die Zustände dieses DFA sind Mengen von Zuständen des<br />

ursprünglichen NFA. Man nennt diese Konstruktion daher auch<br />

Potenzmengenkonstruktion.<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 97


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Ablauf eines nichtdeterministischen <strong>Automaten</strong><br />

Eingabe:<br />

z0<br />

b<br />

a b a b b a b<br />

a<br />

b<br />

z1<br />

a<br />

z2<br />

b<br />

a<br />

z3<br />

Akzeptiert<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 98


Von NFAs zu DFAs<br />

Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Beweis mit Hilfe der Potenzmengenkonstruktion:<br />

Gegeben sei ein nicht-deterministischer endlicher Automat<br />

M = (Z, Σ, δ, S, E). Daraus konstruieren wir einen deterministischen<br />

endlichen <strong>Automaten</strong> M ′ = (Z, Σ, δ ′ , z ′ 0 , E ′ ) mit:<br />

Z = P(Z)<br />

δ ′ (Z ′ , a) = ˆδ(Z ′ , a), Z ′ ⊆ Z<br />

z ′ 0 = S<br />

E ′ = {Z ′ ⊆ Z | Z ′ ∩ E = ∅}<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 99


Von NFAs zu DFAs<br />

Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Es gilt nun für alle x = a1 . . . an ∈ Σ ∗ :<br />

x ∈ T (M)<br />

gdw.<br />

ˆδ(S, x) ∩ E = ∅<br />

gdw.<br />

es gibt Zustandsmengen Z1, . . . , Zn ⊆ Z mit<br />

δ ′ (S, a1) = Z1, δ ′ (Z1, a2) = Z2, . . . , δ ′ (Zn−1, an) = Zn<br />

<strong>und</strong> Zn ∩ E = ∅<br />

gdw.<br />

ˆδ ′ (S, x) ∈ E ′<br />

gdw.<br />

x ∈ T (M ′ ) <br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 100


Von NFAs zu DFAs<br />

Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Bemerkungen zur Potenzmengenkonstruktion:<br />

Wegen |P(Z)| = 2 |Z| hat der DFA im schlechtesten Fall exponentiell mehr<br />

Zustände als der dazugehörige NFA. Evtl. kann er aber noch verkleinert<br />

werden.<br />

In vielen Fällen ist der kleinste DFA, der eine Sprache akzeptiert,<br />

tatsächlich exponentiell größer als der kleinste NFA.<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 101


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

NFAs, DFAs <strong>und</strong> reguläre Grammatiken<br />

Wir können nun<br />

NFAs in DFAs umwandeln<br />

DFAs in reguläre Grammatiken umwandeln<br />

Es fehlt noch die Richtung reguläre Grammatik → NFA, dann haben wir<br />

die Äquivalenz aller dieser Formalismen gezeigt:<br />

Reguläre Grammatik<br />

DFA NFA<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 102


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

NFAs, DFAs <strong>und</strong> reguläre Grammatiken<br />

Reguläre Grammatiken → NFAs (Satz)<br />

Zu jeder regulären Grammatik G gibt es einen NFA M mit L(G) = T (M).<br />

Beweis. Gegeben sei eine reguläre Grammatik G = (V , Σ, P, S). Wir<br />

erstellen einen NFA M = (Z, Σ, δ, S ′ , E) mit<br />

Z = V ∪ {X }, X ∈ V<br />

S ′ = {S}<br />

<br />

{S, X } falls (S → ε) ∈ P<br />

E =<br />

{X } falls (S → ε) ∈ P<br />

B ∈ δ(A, a) falls (A → aB) ∈ P<br />

X ∈ δ(A, a) falls (A → a) ∈ P<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 103


Reguläre Sprachen Endliche <strong>Automaten</strong><br />

NFAs, DFAs <strong>und</strong> reguläre Grammatiken<br />

Beweis (Fortsetzung). Jetzt gilt für alle Wörter w = a1 . . . an ∈ Σ ∗ :<br />

w ∈ L(G)<br />

gdw.<br />

es gibt Variablen A1, . . . , An−1 so dass<br />

S ⇒ a1A1 ⇒ a1a2A2 ⇒ · · · ⇒ a1a2 . . . an−1An−1 ⇒ a1a2 . . . an<br />

gdw.<br />

es gibt Zustände A1, . . . , An mit<br />

δ(S, a1) ∋ A1, δ(A1, a2) ∋ A2, . . . , δ(An−1, an) ∋ X<br />

gdw.<br />

w ∈ T (M) <br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 104


Kleine Zusammenfassung<br />

Reguläre Sprachen Endliche <strong>Automaten</strong><br />

Wir können jetzt deterministische endliche <strong>Automaten</strong> (DFA) in reguläre<br />

Grammatiken umwandeln, reguläre Grammatiken in nichtdeterministische<br />

endliche <strong>Automaten</strong>, <strong>und</strong> NFAs in DFAs.<br />

Reguläre Grammatik<br />

DFA NFA<br />

Ergebnis: Reguläre Grammatiken, deterministische endliche <strong>Automaten</strong><br />

<strong>und</strong> nichtdeterministische endliche <strong>Automaten</strong> beschreiben dieselbe<br />

Sprachklasse, nämlich die Klasse der regulären Sprachen.<br />

Sander Bruggink <strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> Sprachen 105

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!