Automaten und Formale Sprachen“ alias ” Theoretische Informatik ...
Automaten und Formale Sprachen“ alias ” Theoretische Informatik ...
Automaten und Formale Sprachen“ alias ” Theoretische Informatik ...
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