View
10
Download
0
Category
Preview:
Citation preview
Formale Sprachen und KomplexitatSommersemester 2019
Regulare Sprachen: Formalismen
Prof. Dr. David Sabel
LFE Theoretische Informatik
Letzte Anderung der Folien: 4. Juni 2019
Regulare Sprachen
Wiederholung:
Eine Sprache heißt regular (bzw. vom Typ 3), wenn sie voneiner Typ 3-Grammatik erzeugt wird.
Eine Grammatik G = (V,Σ, P, S) ist vom Typ 3(bzw. regular), wenn alle Produktionen von der Form
A→ a oder A→ aB
mit A,B ∈ V und a ∈ Σ sind.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 2/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Inhaltsubersicht
Deterministische endliche Automaten
Nichtdeterministische endliche Automaten
Regulare Ausdrucke
Aquivalenz der Formalismen
TCS | 02 Regulare Sprachen (I) | SoSe 2019 3/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Deterministische endliche Automaten
Die informelle Kurzfassung:
Endliche Automaten lesen Zeichenweise ein Eingabewort
Wechseln dabei den Zustand (eindeutig)
Nur endlich viele Zustande
Starten im Startzustand
Nach Lesen der Eingabe: Akzeptieren oder Verwerfen
Akzeptieren = in einem Endzustand
Verwerfen = in keinem Endzustand
Akzeptierte Sprache = alle Worte, fur die der Automatakzeptiert
TCS | 02 Regulare Sprachen (I) | SoSe 2019 4/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
DFA: Definition
Definition (Deterministischer Endlicher Automat, DFA)
Ein deterministischer endlicher Automat (determinististic finiteautomaton, DFA) ist ein 5-Tupel M = (Z,Σ, δ, z0, E) wobei
Z ist eine endliche Menge von Zustanden,
Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅,z0 ∈ Z ist der Startzustand,
E ⊆ Z ist die Menge der Endzustande (oder auchakzeptierende Zustande) und
δ : Z × Σ→ Z ist die Zustandsuberfuhrungsfunktion (odernur Uberfuhrungsfunktion).
TCS | 02 Regulare Sprachen (I) | SoSe 2019 5/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Zustandsgraph eines DFA
Fur DFA M = (Z,Σ, δ, z0, E)
Fur z ∈ Z gibt es Knoten z
Startzustand z0 ∈ Z: eingehender Pfeil z0 ,
Endzustande z ∈ E: doppelte Kreise z ,
Ubergange δ(zi, a) = zj als Kante zi zja
und statt zi zj
a
b
zeichnen wir zi zja, b
.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 6/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
BeispielDFA M = ({z0, z1, z2}, {a, b}, δ, z0, {z2}) mit
δ(z0, a) = z1 δ(z1, b) = z0δ(z0, b) = z0 δ(z2, a) = z2δ(z1, a) = z2 δ(z2, b) = z2
z0z0z0 z1z1 z2z2z2
bb
aaaa
bb
a, ba, b
Abarbeitung von abbaaa:
Starte in z0
Lese a und wechsle in z1
Lese b und wechsle in z0
Lese b und wechsle in z0
Lese a und wechsle in z1
Lese a und wechsle in z2
Lese a und wechsle in z2
Akzeptiere
Abarbeitung von bbab:
Starte in z0
Lese b und wechsle in z0
Lese b und wechsle in z0
Lese a und wechsle in z1
Lese b und wechsle in z0
Verwerfe
TCS | 02 Regulare Sprachen (I) | SoSe 2019 7/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Akzeptierte Spraches eines DFA
Definition (Akzeptierte Sprache eines DFA)
Sei M = (Z,Σ, δ, z0, E) ein DFA.Wir definieren die Funktion δ : Z × Σ∗ → Z durch
δ(z, ε) := z und δ(z, aw) := δ(δ(z, a), w)
Die von M akzeptierte Sprache ist
L(M) := {w ∈ Σ∗ | δ(z0, w) ∈ E}.
δ wendet δ solange an, bis das Eingabewort abgearbeitet ist
TCS | 02 Regulare Sprachen (I) | SoSe 2019 8/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel
DFA M = ({z0, z1, z2}, {a, b}, δ, z0, {z2}) mit
δ(z0, a) = z1 δ(z1, b) = z0δ(z0, b) = z0 δ(z2, a) = z2δ(z1, a) = z2 δ(z2, b) = z2
z0 z1 z2
b
aa
b
a, b
L(M) = {uaav | uv ∈ {a, b}∗}
TCS | 02 Regulare Sprachen (I) | SoSe 2019 9/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: DFA konstruieren
Konstruiere DFA uber Σ = {a, b} der alle Worte akzeptiert, die mitabaa beginnen und mit bab enden:
z0 z1 z2 z3 z4
z5
z6 z7 z8
a, b
a b a a
b a b b
b a b
a a
ba b
TCS | 02 Regulare Sprachen (I) | SoSe 2019 10/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: DFA konstruieren (2)
Zusatzlich die Worter a und ab akzeptieren
z0 z1 z2 z3 z4
z5
z6 z7 z8
a, b
a b a a
b a b b
b a b
a a
ba b
TCS | 02 Regulare Sprachen (I) | SoSe 2019 11/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Lauf
Definition
Sei M = (Z,Σ, δ, z0, E) ein DFA und w ∈ Σ∗ mit |w| = n.Die Folge von Zustanden q0, . . . , qn mit q0 = z0 undqi = δ(qi−1, w[i]) bezeichnet man als Lauf von M fur Wort w.
Fur eine solchen Lauf schreiben wir auch:
q0w[1]−−→ q1
w[2]−−→ · · · w[n−1]−−−−→ qn−1w[n]−−→ qn
TCS | 02 Regulare Sprachen (I) | SoSe 2019 12/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
DFAs akzeptieren regulare Sprachen
Theorem 4.2.1
Sei M = (Z,Σ, δ, z0, E) ein DFA. Dann ist L(M) regular.
Beweis: Sei G = (V,Σ, P, S) die regulare Grammatik mit
V = Z, S = z0, P = {zi → azj | δ(zi, a) = zj}∪ {zi → a | δ(zi, a) = zj ∧ zj ∈ E}∪ {z0 → ε | falls z0 ∈ E}
Offensichtlich ε ∈ L(M) ⇐⇒ ε ∈ L(G). Ansonsten:w = a1 · · · am ∈ L(M)
g.d.w. es gibt z1, . . . , zm ∈ Z mit δ(zi−1, ai) = zi und zm ∈ E.g.d.w. z0 ⇒G a1z1, fur 1 ≤ i < m: a1 · · · ai−1zi−1 ⇒G a1 · · · aizi und
a1 · · · am−1zm−1 ⇒G a1 · · · am, d.h. z0 ⇒∗G a1 · · · amg.d.w. w = a1 · · · am ∈ L(G)
Daher gilt L(M) = L(G) und somit ist L(M) regular.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 13/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Konstruktion Typ 3-Grammatik aus DFA
DFA M = ({z0, z1, z2}, {a, b}, δ, z0, {z2}) mit
δ(z0, a) = z1 δ(z1, b) = z0δ(z0, b) = z0 δ(z2, a) = z2δ(z1, a) = z2 δ(z2, b) = z2
z0 z1 z2
b
aa
b
a, b
Die erzeugte regulare Grammatik dazu ist:
G = ({z0, z1, z2}, {a, b}, P, z0) mitP = {z0 → az1 | bz0,
z1 → az2 | a | bz0,z2 → az2 | a | bz2 | b}
.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 14/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Wird jede regulare Sprache durch einen DFA akzeptiert?
Der vorherige Beweis konstruiert:
”fur jeden DFA gibt es eine aquivalente regulare Grammatik“
Fur die andere Richtung ware notwendig
”fur jede regulare Grammatik gibt es einen aquivalenten DFA“
Problem:
Produktionen: A→ aA1 und A→ aA2 konnen inGrammatiken vorkommen
Konstruktion des determinstischen Automaten unklar.
Daher: Beweis, dass DFAs alle regularen Sprachen akzeptieren,erfolgt auf Umwegen
TCS | 02 Regulare Sprachen (I) | SoSe 2019 15/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Nichtdeterministische Endliche Automaten
Ideen
Zustandswechsel nicht eindeutig, sondern nichtdeterministischin einen von mehreren moglichen
D.h. der Automat darf sozusagen”raten“ welchen
Nachfolgezustand er wahlt
Im Zustandsgraph erlaubt:
z
z1
z2
a
a
Technisch:
DFA δ : Z × Σ→ Z und ein StartzustandNFA δ : Z × Σ→ P(Z) und Menge von Startzustanden
TCS | 02 Regulare Sprachen (I) | SoSe 2019 16/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Definition NFA
Definition
Ein nichtdeterministischer endlicher Automat (nondeterministicfinite automaton, NFA) ist ein 5-Tupel (Z,Σ, δ, S,E) wobei
Z ist eine endliche Menge von Zustanden,
Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅,S ⊆ Z ist die Menge der Startzustande,
E ⊆ Z ist die Menge der Endzustande und
δ : Z × Σ→ P(Z) ist die Zustandsuberfuhrungsfunktion
TCS | 02 Regulare Sprachen (I) | SoSe 2019 17/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Akzeptanz beim NFA
”Ein Wort w wird vom NFA akzeptiert, wenn es einen Pfad von
einem Startzustand zum Endzustand entlang w gibt“
Definition (Akzeptierte Sprache eines NFA)
Sei M = (Z,Σ, δ, S,E) ein NFA.Wir definieren δ : (P(Z)× Σ∗)→ P(Z) induktiv durch:
δ(X, ε) := X fur alle X ⊆ Zδ(X, aw) :=
⋃z∈X
δ(δ(z, a), w) fur alle X ⊆ Z
Die von M akzeptierte Sprache ist
L(M) = {w ∈ Σ∗ | δ(S,w) ∩ E 6= ∅}
TCS | 02 Regulare Sprachen (I) | SoSe 2019 18/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Leere Menge von Startzustanden
Sei M = (Z,Σ, δ, ∅, E) ein NFA.Dann ist L(M) = ∅.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 19/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Lauf beim NFA
Definition
Sei M = (Z,Σ, δ, S,E) ein NFA und w ∈ Σ∗ mit |w| = n.Eine Folge von Zustanden q0, . . . , qn mit q0 ∈ S undqi ∈ δ(qi−1, w[i]) bezeichnet man als Lauf von M fur Wort w.
Beachte: Wahrend es bei DFAs genau einen Lauf pro Wort gibt,kann es bei NFAs mehrere geben.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 20/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel
Sei M = ({z0, z1, z2, z3}, {a, b, c}, δ, {z0, z3}, {z3}) ein NFA mit
δ(z0, a) = {z0, z1}δ(z0, b) = {z0}δ(z0, c) = {z0}
δ(z1, a) = {z2}δ(z1, b) = {z2}δ(z1, c) = {z2}
δ(z2, a) = {z3}δ(z2, b) = {z3}δ(z2, c) = {z3}
δ(z3, a) = ∅δ(z3, b) = ∅δ(z3, c) = ∅
Der Zustandsgraph zuM ist z0 z1 z2 z3a a, b, c a, b, c
a, b, c
.
L(M) = {ε} ∪ {uaw | u ∈ {a, b, c}∗, w ∈ {a, b, c}2}
TCS | 02 Regulare Sprachen (I) | SoSe 2019 21/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Jede regulare Sprache wird durch NFA erkannt
Theorem 4.4.1
Fur jede regulare Sprache L gibt es einen NFA M mit L(M) = L.
Beweis:
Sei G = (V,Σ, P, S) eine regulare Grammatik mit L(G) = L.
Sei M = (Z,Σ, δ, S′, E) ein NFA mit Z = V ·∪{zE} (zE neu), S′ = {S}und E = {zE , S} falls S → ε ∈ P , sonst E = {zE}, und
δ(A, a) := {B | A→ aB ∈ P} ∪ {zE | falls A→ a ∈ P}δ(zE , a) := ∅ fur alle a ∈ Σ.
Es gilt: ε ∈ L(M) ⇐⇒ ε ∈ L(G).
Fur w = a1 · · · an gilt:
w ∈ L(G) g.d.w. S ⇒G a1A1 ⇒G . . .⇒G a1 · · · an−1An−1 ⇒G a1 · · · ang.d.w. Es gibt Zustande A1, . . . , An−1 mit
A1 ∈ δ(S, a1), Ai+1 ∈ δ(Ai, ai+1) fur 1 ≤ i ≤ n− 2und zE ∈ δ(An−1, an)
g.d.w. w ∈ L(M)
TCS | 02 Regulare Sprachen (I) | SoSe 2019 22/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Konstruktion NFA aus Typ 3-Grammatik
Betrachte die regulare Grammatik G = (V,Σ, P,A)mit V = {A,B,C,D}, Σ = {a, b, c} und
P = { A→ ε | aB | bB | cB | aC,B → aB | bB | cB | aC,C → aD | bD | cD,D → a | b | c}
.
Konstruktion des dazu passenden NFA: M = (Z,Σ, δ, S,E) mit
Z = V ∪ {zE} = {A,B,C,D, zE},E = {A, zE}, S = {A} und
δ(A, a)={B,C}δ(A, b)={B}δ(A, c)={B}
δ(B, a)={B,C}δ(B, b)={B}δ(B, c)={B}
δ(C, a)={D}δ(C, b)={D}δ(C, c)={D}
δ(D, a)={zE}δ(D, b)={zE}δ(D, c)={zE}
δ(zE , a)=∅δ(zE , b)=∅δ(zE , c)=∅
TCS | 02 Regulare Sprachen (I) | SoSe 2019 23/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Konstruktion NFA aus Typ 3-Grammatik (2)
Der Zustandsgraph zu M ist
A
B C D zEa a, b, c a, b, c
a, b, c
a, b, ca
TCS | 02 Regulare Sprachen (I) | SoSe 2019 24/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
NFAs in DFAs transformieren
Theorem 4.5.1 (Rabin & Scott 1959)
Jede von einem NFA akzeptierte Sprache ist auch durch einen DFAakzeptierbar.
Beweisidee:
Konstruiere fur einen gegebenen NFA einen DFA, sodass sich
”der DFA alle Zustande merkt, in denen der NFA sein konnte“
Z.B. babbabb z0
z0z0z0z0z0z0z0z0
z1
z1z1
z2
z2z2
z3
z3z3z3
a a, b, c a, b, c
a, b, c
Konstruktion: Jede Teilmenge von Zustanden des NFA wird zueinem Zustand des DFA (daher: Potenzmengenkonstruktion)
TCS | 02 Regulare Sprachen (I) | SoSe 2019 25/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Potenzmengenkonstruktion
Fur NFA M = (Z,Σ, δ, S,E) konstruieren wir den DFAM ′ = (Z ′,Σ, δ′, S′, E′) mit
Z ′ = P(Z)
”Zustandsmenge ist Potenzmenge von Z“
S′ = S
”Startzustand ist Menge S aller Startzustande von M“
E′ = {X ∈ Z ′ | (E ∩X) 6= ∅}
”Jede Menge, die mind. einen Endzustand von E enthalt, ist
Endzustand in M ′“
δ′(X, a) =⋃z∈X
δ(z, a) = δ(X, a)
”δ′(X, a) berechnet alle von einem Zustand in X aus uber a
erreichbaren Zustande.“
TCS | 02 Regulare Sprachen (I) | SoSe 2019 26/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Korrektheit der Potenzmengenkonstruktion
Wir beweisen, dass L(M) = L(M ′) gilt, indem wir zeigen:
w ∈ L(M) g.d.w. w ∈ L(M ′)
Fall w = ε:
ε ∈ L(M) g.d.w. S ∩ E 6= ∅ g.d.w S ∈ E′ g.d.w. ε ∈ L(M ′)
Fall w = a1 · · · an ∈ Σ∗:
w ∈ L(M)
g.d.w. δ(S,w) ∩ E 6= ∅g.d.w. Es gibt Teilmengen Z1, . . . , Zn von Z mit
δ(S, a1) = Z1, δ(Zi, ai+1) = Zi+1 fur i = 1, . . . , n− 1und Zn ∩ E 6= ∅
g.d.w. δ′(S′, w) ∈ E′g.d.w w ∈ L(M ′)
TCS | 02 Regulare Sprachen (I) | SoSe 2019 27/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Potenzmengenkonstruktion
Fur NFA z0 z1 z2 z3a a, b, c a, b, c
a, b, c
wird der DFA konstruiert:
M ′ = (P({z0, z1, z2, z3}), {a, b, c}, δ′, S′, E′) mitS′ = {z0, z3}E′ = {{z3}, {z0, z3}, {z1, z3}, {z2, z3}, {z0, z1, z3}, {z0, z2, z3}, {z1, z2, z3}, {z0, z1, z2, z3}}δ′(∅, d) = ∅ fur d ∈ {a, b, c}δ′({z0}, a) = {z0, z1}δ′({z0}, d) = {z0} fur d ∈ {b, c}δ′({z1}, d) = {z2} fur d ∈ {a, b, c}δ′({z2}, d) = {z3} fur d ∈ {a, b, c}δ′({z3}, d) = ∅ fur d ∈ {a, b, c}δ′({z0, z1}, a) = {z0, z1, z2}δ′({z0, z1}, d) = {z0, z2} fur d ∈ {b, c}δ′({z0, z2}, a) = {z0, z1, z3}δ′({z0, z2}, d) = {z0, z3} fur d ∈ {b, c}δ′({z0, z3}, a) = {z0, z1}δ′({z0, z3}, d) = {z0} fur d ∈ {b, c}δ′({z1, z2}, d) = {z2, z3} fur d ∈ {a, b, c}
δ′({z1, z3}, d) = {z2} fur d ∈ {a, b, c}δ′({z2, z3}, d) = {z3} fur d ∈ {a, b, c}δ′({z0, z1, z2}, a) = {z0, z1, z2, z3}δ′({z0, z1, z2}, d) = {z0, z2, z3} fur d ∈ {b, c}δ′({z0, z1, z3}, a) = {z0, z1, z2}δ′({z0, z1, z3}, d) = {z0, z2} fur d ∈ {b, c}δ′({z0, z2, z3}, a) = {z0, z1, z3}δ′({z0, z2, z3}, d) = {z0, z3} fur d ∈ {b, c}δ′({z1, z2, z3}, d) = {z2, z3} fur d ∈ {a, b, c}δ′({z0, z1, z2, z3}, a) = {z0, z1, z2, z3}δ′({z0, z1, z2, z3}, b) = {z0, z2, z3}δ′({z0, z1, z2, z3}, c) = {z0, z2, z3}
TCS | 02 Regulare Sprachen (I) | SoSe 2019 28/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Potenzmengenkonstruktion (2)
z0
z0z0z0z0z0z0z0z0
z1
z1z1
z2
z2z2
z3
z3z3z3
a a, b, c a, b, c
a, b, c
Ablauf bei Eingabe babbabb
DFA als Zustandsgraph (nur erreichbare Zustande):
{z0,z3}
{z0,z3}{z0,z3}{z0,z3}
{z0,z1}
{z0,z1}{z0,z1}
{z0,z1,z2} {z0,z1,z2,z3}
{z0,z2,z3}{z0,z2}
{z0,z2}{z0,z2}
{z0,z1,z3}
{z0}
{z0}
ab, c
b, c
a
b, c
a
a
b, c
a
b, ca
b, c
a
b, c
b, c
a
TCS | 02 Regulare Sprachen (I) | SoSe 2019 29/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
DFAs & NFAs sind Formalismen fur Typ 3-Sprachen
Theorem 4.5.4
DFAs und NFAs erkennen genau die regularen Sprachen.
Das folgt aus:
Theorem 4.2.1: Sei M ein DFA. Dann ist L(M) regular.
Theorem 4.4.1: Fur jede regulare Sprache L gibt es einen NFAM mit L(M) = L.
Theorem 4.5.1: Jede von einem NFA akzeptierte Sprache istauch durch einen DFA akzeptierbar.
Jeder DFA kann leicht auch als NFA interpretiert werden
TCS | 02 Regulare Sprachen (I) | SoSe 2019 30/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Große des DFAs vs NFAs (1)
Sei M ein NFA mit n Zustanden.
Der durch die Potenzmengenkonstruktion erstellte DFA hat 2n
Zustande!
D.h. der Platz explodiert uns!
Frage: Geht es besser (unsere Kodierung ist zu einfach) odernicht?
Das folgende Lemma zeigt, dass es nicht wirklich besser geht
TCS | 02 Regulare Sprachen (I) | SoSe 2019 31/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Große des DFAs vs NFAs (2)
Lemma
Sei Ln = {uav | u ∈ {a, b}∗, v ∈ {a, b}n−1} fur n ∈ N>0.(Sprache aller Worter aus {a, b}∗, die an n-letzter Stelle ein a haben).
Es gibt NFA Mn mit L(Mn) = Ln und Mn hat n+ 1 Zustande.
Jeder DFA M ′n mit L(M ′n) = Ln, hat mindestens 2n Zustande.
Beweis (Teil 1): Sei Mn der folgende NFA:
z0 z1 z2 zn−1 zna a, b a, b a, b a, b
a, b
L(Mn) = Ln, denn:
zum Akzeptieren mussen z0, z1, . . . zn nacheinander durchlaufenwerden, was genau mit Wortern av mit v ∈ {a, b}n−1 moglich ist
In z0 kann zuvor jedes u ∈ {a, b}∗ gelesen werden (Verbleib in z0).
TCS | 02 Regulare Sprachen (I) | SoSe 2019 32/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Große des DFAs vs NFAs (3)
Beweis (Teil 2): Beweis durch Widerspruch.
Annahme: Es gibt n ∈ N>0 und DFA M ′ = (Z, {a, b}, δ, z0, E) mitL(M ′) = Ln = {uav | u ∈ {a, b}∗, v ∈ {a, b}n−1} und |Z| < 2n
Menge W = {a, b}n enthalt 2n Worte der Lange n und da |Z| < 2n,muss es w 6= w′ ∈W geben mit δ(z0, w) = δ(z0, w
′) = zi
Sei j die erste Position, an der sich w und w′ unterscheiden.
Falls j = 1, dann ist o.B.d.A. w = au ∈ Ln aber w′ = bu′ 6∈ Ln undzi ∈ E und zi 6∈ E musste gleichzeitig gelten. Widerspruch!
Falls j > 1: O.B.d.A. w = uav und w′ = ubv′ mit |v| = |v′| = n− j
Sei w0 = wbj−1 = uavbj−1
w′0 = w′bj−1= ubv′bj−1
Dann muss gelten δ(w0) = δ(w′0), da δ(uav) = zi = δ(ubv′).
Aber w0 ∈ Ln und w′0 6∈ Ln, Widerspruch!
TCS | 02 Regulare Sprachen (I) | SoSe 2019 33/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
NFAs mit ε-Ubergangen
ε-Ubergange erlauben Zustandswechsel ohne Lesen eines Zeichens(es wird sozusagen das leere Wort ε gelesen)
Ausdruckskraft andert sich mit ε-Ubergangen nicht
ε-Ubergange machen manche Konstruktionen einfacher.
Definition (NFA mit ε-Ubergangen)
Ein nichtdeterministischer endlicher Automat mit ε-Ubergangen (NFA mitε-Ubergangen) ist ein Tupel M = (Z,Σ, δ, S,E) wobei
Z ist eine endliche Menge von Zustanden,
Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅,S ⊆ Z ist die Menge der Startzustande,
E ⊆ Z ist die Menge der Endzustande und
δ : Z × (Σ∪{ε})→ P(Z) ist die Zustandsuberfuhrungsfunktion
TCS | 02 Regulare Sprachen (I) | SoSe 2019 34/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: NFA mit ε-Ubergangen
z1
z0 z2 z3 z4a a, b, c a, b, c
a, b, c
ε ε
ε
Akzeptierte Sprache:
alle Worte aus {a, b, c}∗, die an letzter, vorletzter, oderdrittletzter Postion ein a haben, und das leere Wort
TCS | 02 Regulare Sprachen (I) | SoSe 2019 35/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
ε-Hulle
Definition (ε-Hulle)
Sei M = (Z,Σ, δ, S,E) ein NFA mit ε-Ubergangen. Die ε-Hulleclosε(z) eines Zustands z ∈ Z ist induktiv definiert als die kleinsteMenge von Zustanden, welche die folgenden Eigenschaften erfullt:
1 z ∈ closε(z).
2 Wenn z′ ∈ closε(z) und z′′ ∈ δ(z′, ε), dann ist auchz′′ ∈ closε(z).
Fur eine Zustandsmenge X ⊆ Z definieren wirclosε(X) :=
⋃z∈X closε(z).
Die ε-Hulle fugt fur eine Zustandsmenge alle durch ε-Ubergangeerreichbaren Zustande hinzu.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 36/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
ε-Hulle (2)
Die ε-Hulle fur eine Zustandsmenge X ⊆ Z kann auch berechnetwerden durch:
closε(X) :=
{X, wenn
⋃z∈X δ(z, ε) ⊆ X
closε(X ∪⋃z∈X δ(z, ε)), sonst
TCS | 02 Regulare Sprachen (I) | SoSe 2019 37/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel
z1
z0 z2 z3 z4a a, b, c a, b, c
a, b, c
ε ε
ε
closε(z0) = {z0}closε(z1) = {z1}closε(z4) = {z4}closε(z3) = {z1, z3, z4}closε(z2) = {z1, z2, z3, z4}
TCS | 02 Regulare Sprachen (I) | SoSe 2019 38/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
NFA mit ε-Ubergangen: Akzeptierte Sprache
Akzeptierte Sprache eines NFA mit ε-Ubergangen
Sei M = (Z,Σ, δ, S,E) ein NFA mit ε-Ubergangen.Wir definieren δ : (P(Z)× Σ∗)→ P(Z) induktiv durch:
δ(X, ε) := X
δ(X, aw) :=⋃z∈X
δ(closε(δ(z, a)), w) fur alle X ⊆ Z
Die von M akzeptierte Sprache ist
L(M) := {w ∈ Σ∗ | δ(closε(S), w) ∩ E 6= ∅}
TCS | 02 Regulare Sprachen (I) | SoSe 2019 39/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
ε-Ubergange andern die Ausdruckskraft nicht (1)
Satz 4.6.7
NFAs mit ε-Ubergangen akzeptieren genau die regularen Sprachen.
Beweis”⇐“:
Jede regulare Sprache wird von einem”normalen“ NFA
akzeptiert.
Transformiere diesen NFA in einen NFA mit ε-Ubergangen:
Setze δ(z, ε) = ∅ fur alle Zustande z
Offensichtlich ist die akzeptierte Sprache diesselbe.
Daher wird jede regulare Sprache von einem NFA mitε-Ubergangen akzeptiert.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 40/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
ε-Ubergange andern die Ausdruckskraft nicht (2)
Beweis”⇒“: Sei M = (Z,Σ, δ, S,E) ein NFA mit ε-Ubergangen.
Konstruiere NFA M ′ mit L(M) = L(M ′). Dann ist L(M) regular.
M ′ = (Z,Σ, δ′, S′, E) mit S′ = closε(S), δ′(z, a) = closε(δ(z, a)).
L(M) = L(M ′):
Wir zeigen δ(closε(X), w) = δ′(closε(X), w) fur alle X ⊆ Z undw ∈ Σ∗. Wir verwenden Induktion uber die Wortlange |w|.Basis: w = ε. Dann gilt δ(closε(X), ε) = closε(X) = δ′(closε(X), ε)
Schritt: Sei w = au mit a ∈ Σ. Wir formen um:
δ(closε(X), au)Def. δ
=⋃
z∈closε(X)
δ(closε(δ(z, a)), u)I.H.=
⋃z∈closε(X)
δ′(closε(δ(z, a)), u)
Def. δ′=
⋃z∈closε(X)
δ′(δ′(z, a), u)Def. δ
= δ′(closε(X), au)
TCS | 02 Regulare Sprachen (I) | SoSe 2019 41/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Eindeutige Start- und Endzustande
Satz 4.6.8
Fur jeden NFA M mit ε-Ubergangen gibt es einen NFA M ′ mitε-Ubergangen, sodass L(M) = L(M ′) und M ′ genau einenStartzustand und genau einen Endzustand hat, wobei diese beidenZustande verschieden sind.
Beweis: Konstruiere M ′ aus M , durch Hinzufugen eines neuenStart- und eines neuen Endzustand mit ε-Ubergangen:
M wird zu
ε
ε
ε
ε
ε
ε
TCS | 02 Regulare Sprachen (I) | SoSe 2019 42/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel
z1
z0 z2 z3 z4a a, b, c a, b, c
a, b, c
ε ε
ε
wird zu
zS zEz1
z0
ε
ε z2 z3 z4a a, b, c a, b, c
a, b, c
ε ε
ε
ε
ε
TCS | 02 Regulare Sprachen (I) | SoSe 2019 43/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Regulare Ausdrucke
Regulare Ausdrucke sind (wie Automaten und Grammatiken)ein Formalismus zur Reprasentation von Sprachen.
Praktische Verwendung: Regex-Bibliotheken inProgrammiersprachen zum Suchen und Ersetzen vonZeichenketten(verwenden meist erweiterte regulare Ausdrucke)
Aufbau regularer Ausdrucke:Basisausdrucke und Operatoren zum Zusammensetzen.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 44/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Regulare Ausdrucke (2)
Definition (Regularer Ausdruck)
Sei Σ ein Alphabet. Ein regularer Ausdruck uber Σ ist induktiv definiert:
∅ ist ein regularer Ausdruck
ε ist ein regularer Ausdruck
a mit a ∈ Σ ist ein regularer Ausdruck
Wenn α1 und α2 regulare Ausdrucke sind, dann auch α1α2
Wenn α1 und α2 regulare Ausdrucke sind, dann auch (α1|α2)
Wenn α regularer Ausdruck ist, dann auch (α)∗
TCS | 02 Regulare Sprachen (I) | SoSe 2019 45/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Regulare Ausdrucke (3)
Erzeugte Sprache
Die von einem regularen Ausdruck α erzeugte Sprache L(α) istinduktiv uber dessen Struktur definiert:
L(∅) := ∅L(ε) := {ε}L(a) := {a} fur a ∈ Σ
L(α1α2) := L(α1)L(α2) = {uv | u ∈ L(α1), v ∈ L(α2)}L(α1|α2) := L(α1) ∪ L(α2)L((α)∗) := L(α)∗
Fur alle regularen Ausdrucke α1, α2, α3 gilt:
L((α1|α2)|α3) = L(α1|(α2|α3))
Daher lassen wir Klammern weg und schreiben (α1|α2| . . . |αn).
TCS | 02 Regulare Sprachen (I) | SoSe 2019 46/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiele
(a|b)∗aa(a|b)∗ erzeugt alle Worte uber {a, b} die zweiaufeinanderfolgende a’s enthalten
(ε|((a|b|c)∗a(a|b|c)(a|b|c)(a|b|c))) erzeugt alle Worte uber{a, b, c}, die an viertletzter Stelle ein a haben und das leereWort
((0|1|2|3|4|5|6|7|8|9)|1(0|1|2|3|4|5|6|7|8|9)|(2(0|1|2|3))) :((0|1|2|3|4|5)(0|1|2|3|4|5|6|7|8|9)) erzeugt alle Uhrzeiten im24-Stunden-Format
Eine endliche Sprache S = {w1, . . . , wn} wird durch(w1| . . . |wn) erzeugt.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 47/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Satz von Kleene
Theorem 4.7.4 (Satz von Kleene)
Regulare Ausdrucke erzeugen genau die regularen Sprachen.
Beweis in zwei Teilen:
1 Jede von einem regularen Ausdruck erzeugte Sprache istregular.
2 Fur jede regulare Sprache gibt es einen regularen Ausdruck,der sie erzeugt.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 48/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (1)
1. Jede von einem regularen Ausdruck erzeugte Sprache ist regular.Beweis:
Wir konstruieren fur regularen Ausdruck α einen NFA Mα mitε-Ubergangen und eindeutigen Start- und Endzustanden,sodass L(Mα) = L(α).
Induktion uber die Struktur von α
Basisfalle:
Fur α = a ∈ Σ konstruierea
Fur α = ε konstruiereε
Fur α = ∅ konstruiere
In allen Fallen ist L(α) = L(Mα) offensichtlich
TCS | 02 Regulare Sprachen (I) | SoSe 2019 49/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (2)
Induktionsschritt: Betrachte den Aufbau von α (3 Falle)
Fur α = α1α2, liefert die I.H. Mα1,Mα2
.
Mα1Mα2
Konstruiere daraus Mα:
ε
TCS | 02 Regulare Sprachen (I) | SoSe 2019 50/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (3)
Fur α = (α1|α2) liefert die I.H. Mα1,Mα2
:
Mα1
Mα2
Konstruiere daraus Mα:
ε
ε
ε
ε
TCS | 02 Regulare Sprachen (I) | SoSe 2019 51/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (4)
Fur α = (α1)∗ liefert die I.H. Mα1
Mα1
Konstruiere daraus Mα:
ε
ε
ε
TCS | 02 Regulare Sprachen (I) | SoSe 2019 52/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (5)
2. Fur jede reg. Sprache L gibt es einen regularen Ausdruck α mit L(α) = LBeweis:
Sei DFA M = ({z1, . . . , zn},Σ, δ, z1, E) mit L(M) = L gegeben.
Fur w ∈ Σ∗ und zi ∈ z mit δ(zi, w) = zj sei visit i(w) = q1, . . . , qmdie Folge der besuchten Zustande (wobei q1 = zi und qm = zj).
Wir definieren:
Lki,j =
{w ∈ Σ∗
δ(zi, w) = zj und visit i(w) = q1, . . . , qm,sodass fur 1 < l < m: wenn ql = zp dann p ≤ k
}Lki,j enthalt die Worte, die M von Zustand zi zu Zustand zj fuhrenohne dabei Zwischenzustande mit Index großer als k zu benutzen.
Mit Induktion uber k zeigen wir, dass es regulare Ausdrucke αki,j mit
L(αki,j) = Lki,j gibt.
TCS | 02 Regulare Sprachen (I) | SoSe 2019 53/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (6)
Zur Erinnerung: Lki,j enthalt die Worte, die M von Zustand zi zu Zustand zj fuhren ohne
dabei Zwischenzustande mit Index großer als k zu benutzen.
Basis: k = 0
Wenn i 6= j, dann ist L0i,j = {a ∈ Σ | δ(zi, a) = zj}.
Falls L0i,j = {a1, . . . , aq}, dann gilt L(α0
i,j) = L0i,j fur α0
i,j = (a1| . . . |aq).
Falls L0i,j = ∅, dann gilt L(α0
i,j) = L0i,j mit α0
i,j = ∅.Wenn i = j, dann ist L0
i,i = {ε} ∪ {a ∈ Σ | δ(zi, a) = zi}.
Sei L0i,i = {ε, a1, . . . , aq}.
Dann gilt L(α0i,i) = L0
i,i fur α0i,i = (ε|a1| . . . |aq).
TCS | 02 Regulare Sprachen (I) | SoSe 2019 54/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beweis: Satz von Kleene (7)Zur Erinnerung: Lk
i,j enthalt die Worte, die M von Zustand zi zu Zustand zj fuhrenohne dabei Zwischenzustande mit Index großer als k zu benutzen.
Induktionsschritt: k → k + 1
Lk+1i,j = Lki,j ∪ Lki,k+1(L
kk+1,k+1)
∗Lkk+1,j ,
denn entweder lauft M ohne Zustand zk+1 zu besuchen, oder der Laufkann in 3 Teile gespalten werden:
1 Lauf von zi bis zum ersten Besuch des Zustands zk+1
(abgedeckt durch Lki,k+1)
2 Mehrmaliges, zyklisches Besuchen von k + 1 (beliebig oft)(abgedeckt durch Lkk+1,k+1)
3 Letztmaliges Verlassen von zk+1 und Lauf bis zu zj(abgedeckt durch Lkk+1,j)
Daher gilt αk+1i,j = (αki,j |αki,k+1(α
kk+1,k+1)
∗αkk+1,j) und L(αk+1i,j ) = Lk+1
i,j .
Fur E = {zi1 , . . . , zir} gilt L(αn1,i1 |αn1,i2| . . . |αn1,ir) =
⋃zi∈E
Ln1,i = L(M)TCS | 02 Regulare Sprachen (I) | SoSe 2019 55/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: Regularer Ausdruck → NFA mit ε-Ubergangen
NFA zum regularen Ausdruck
(ε|(a|b)∗b(a|b))
konstruieren:
ε
a
bε
ε ε
ε
ε
ε
ε bε
a
b
ε
ε
ε
ε
εε
ε
ε
ε
TCS | 02 Regulare Sprachen (I) | SoSe 2019 56/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Beispiel: DFA → regularer Ausdruck
z1 z2
a
a
Regularer Ausdruck dazu:
α21,2 = (α1
1,2|α11,2(α
12,2)∗α1
2,2)
= ((a|ε(ε)∗a) | (a|ε(ε)∗a) (ε|a(ε)∗a)∗ (ε|a(ε)∗a))
= (a|a(aa)∗) (durch Vereinfachung)
denn
α01,1 = ε α0
2,2 = ε α01,2 = a α0
2,1 = a
α11,2 = (α0
1,2|α01,1(α
01,1)∗α0
1,2) = (a|ε(ε)∗a)
α12,2 = (α0
2,2|α02,1(α
01,1)∗α0
1,2) = (ε|a(ε)∗a)
TCS | 02 Regulare Sprachen (I) | SoSe 2019 57/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Zusammenfassung: Formalismen fur regulare Sprachen
Regulare Grammatiken(=Regulare Sprachen)
NFAs
NFAs mit ε-Ubergangen
NFAs mit ε-Ubergangen undeindeutigem Start- und
Endzustand
DFAs
Regulare Ausdrucke
Theorem 4.2.1
offensichtlich
Theorem 4.5.1Theorem 4.4.1
Satz 4.6.7
Satz 4.6.8
Theorem 4.7.4
Theorem 4.7.4
Kanten → zeigen Kodierungen
TCS | 02 Regulare Sprachen (I) | SoSe 2019 58/58 DFAs NFAs NFAs+ε Regulare Ausdrucke Zusammenf.
Recommended