Formale Sprachen und Komplexit¨ at
Sommersemester 2019
Regul¨ are Sprachen: Formalismen
Prof. Dr. David Sabel
LFE Theoretische Informatik
Letzte ¨Anderung der Folien: 4. Juni 2019
Regul¨ are Sprachen
Wiederholung:
Eine Sprache heißt regul¨ ar (bzw. vom Typ 3), wenn sie von einer Typ 3-Grammatik erzeugt wird.
Eine Grammatik G = (V, Σ, P, S) ist vom Typ 3 (bzw. regul¨ ar), wenn alle Produktionen von der Form
A → a oder A → aB mit A, B ∈ V und a ∈ Σ sind.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 2/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Inhalts¨ ubersicht
Deterministische endliche Automaten Nichtdeterministische endliche Automaten Regul¨ are Ausdr¨ ucke
Aquivalenz der Formalismen ¨
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 3/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Deterministische endliche Automaten
Die informelle Kurzfassung:
Endliche Automaten lesen Zeichenweise ein Eingabewort Wechseln dabei den Zustand (eindeutig)
Nur endlich viele Zust¨ ande Starten im Startzustand
Nach Lesen der Eingabe: Akzeptieren oder Verwerfen Akzeptieren = in einem Endzustand
Verwerfen = in keinem Endzustand
Akzeptierte Sprache = alle Worte, f¨ ur die der Automat akzeptiert
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 4/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
DFA: Definition
Definition (Deterministischer Endlicher Automat, DFA) Ein deterministischer endlicher Automat (determinististic finite automaton, DFA) ist ein 5-Tupel M = (Z, Σ, δ, z
0, E) wobei
Z ist eine endliche Menge von Zust¨ anden,
Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅, z
0∈ Z ist der Startzustand,
E ⊆ Z ist die Menge der Endzust¨ ande (oder auch akzeptierende Zust¨ ande) und
δ : Z × Σ → Z ist die Zustands¨ uberf¨ uhrungsfunktion (oder nur Uberf¨ ¨ uhrungsfunktion).
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 5/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Zustandsgraph eines DFA
F¨ ur DFA M = (Z, Σ, δ, z
0, E) F¨ ur z ∈ Z gibt es Knoten z
Startzustand z
0∈ Z: eingehender Pfeil z
0, Endzust¨ ande z ∈ E: doppelte Kreise z , Uberg¨ ¨ ange δ(z
i, a) = z
jals Kante z
ia z
jund statt z
iz
ja
b
zeichnen wir z
ia, b z
j.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 6/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel
DFA M = ({z
0, z
1, z
2}, {a, b}, δ, z
0, {z
2}) mit δ(z
0, a) = z
1δ(z
1, b) = z
0δ(z
0, b) = z
0δ(z
2, a) = z
2δ(z
1, a) = z
2δ(z
2, b) = z
2z z z
000z z
11z z z
222b
b a a
a a b
b
a, b a, b
Abarbeitung von abbaaa:
Starte in z
0Lese a und wechsle in z
1Lese b und wechsle in z
0Lese b und wechsle in z
0Lese a und wechsle in z
1Lese a und wechsle in z
2Lese a und wechsle in z
2Akzeptiere
Abarbeitung von bbab:
Starte in z
0Lese b und wechsle in z
0Lese b und wechsle in z
0Lese a und wechsle in z
1Lese b und wechsle in z
0Verwerfe
Akzeptierte Spraches eines DFA
Definition (Akzeptierte Sprache eines DFA) Sei M = (Z, Σ, δ, z
0, E) ein DFA.
Wir definieren die Funktion b δ : Z × Σ
∗→ Z durch b δ(z, ε) := z und b δ(z, aw) := δ(δ(z, a), w) b Die von M akzeptierte Sprache ist
L(M) := {w ∈ Σ
∗| b δ(z
0, w) ∈ E}.
δ b wendet δ solange an, bis das Eingabewort abgearbeitet ist
Beispiel
DFA M = ({z
0, z
1, z
2}, {a, b}, δ, z
0, {z
2}) mit δ(z
0, a) = z
1δ(z
1, b) = z
0δ(z
0, b) = z
0δ(z
2, a) = z
2δ(z
1, a) = z
2δ(z
2, b) = z
2z
0z
1z
2b
a
a b
a, b
L(M) = {uaav | uv ∈ {a, b}
∗}
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 9/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: DFA konstruieren
Konstruiere DFA ¨ uber Σ = {a, b} der alle Worte akzeptiert, die mit abaa beginnen und mit bab enden:
z
0z
1z
2z
3z
4z
5z
6z
7z
8a, b
a b a a
b a b b
b a b
a a
a b b
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 10/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: DFA konstruieren (2)
Zus¨ atzlich die W¨ orter a und ab akzeptieren
z
0z
1z
2z
3z
4z
5z
6z
7z
8a, b
a b a a
b a b b
b a b
a a
a b b
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 11/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Lauf
Definition
Sei M = (Z, Σ, δ, z
0, E) ein DFA und w ∈ Σ
∗mit |w| = n.
Die Folge von Zust¨ anden q
0, . . . , q
nmit q
0= z
0und
q
i= δ(q
i−1, w[i]) bezeichnet man als Lauf von M f¨ ur Wort w.
F¨ ur eine solchen Lauf schreiben wir auch:
q
0−−→
w[1]q
1−−→ · · ·
w[2]−−−−→
w[n−1]q
n−1−−→
w[n]q
nTCS | 02 Regul¨are Sprachen (I) | SoSe 2019 12/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
DFAs akzeptieren regul¨ are Sprachen
Theorem 4.2.1
Sei M = (Z, Σ, δ, z
0, E) ein DFA. Dann ist L(M) regul¨ ar.
Beweis: Sei G = (V, Σ, P, S) die regul¨ are Grammatik mit V = Z, S = z
0, P = {z
i→ az
j| δ(z
i, a) = z
j}
∪ {z
i→ a | δ(z
i, a) = z
j∧ z
j∈ E}
∪ {z
0→ ε | falls z
0∈ E}
Offensichtlich ε ∈ L(M ) ⇐⇒ ε ∈ L(G). Ansonsten:
w = a
1· · · a
m∈ L(M )
g.d.w. es gibt z
1, . . . , z
m∈ Z mit δ(z
i−1, a
i) = z
iund z
m∈ E.
g.d.w. z
0⇒
Ga
1z
1, f¨ ur 1 ≤ i < m: a
1· · · a
i−1z
i−1⇒
Ga
1· · · a
iz
iund a
1· · · a
m−1z
m−1⇒
Ga
1· · · a
m, d.h. z
0⇒
∗Ga
1· · · a
mg.d.w. w = a
1· · · a
m∈ L(G)
Daher gilt L(M ) = L(G) und somit ist L(M) regul¨ ar.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 13/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: Konstruktion Typ 3-Grammatik aus DFA
DFA M = ({z
0, z
1, z
2}, {a, b}, δ, z
0, {z
2}) mit δ(z
0, a) = z
1δ(z
1, b) = z
0δ(z
0, b) = z
0δ(z
2, a) = z
2δ(z
1, a) = z
2δ(z
2, b) = z
2z
0z
1z
2b
a
a b
a, b
Die erzeugte regul¨ are Grammatik dazu ist:
G = ( {z
0, z
1, z
2}, {a, b}, P, z
0) mit P = {z
0→ az
1| bz
0,
z
1→ az
2| a | bz
0, z
2→ az
2| a | bz
2| b}
.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 14/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Wird jede regul¨ are Sprache durch einen DFA akzeptiert?
Der vorherige Beweis konstruiert:
” f¨ ur jeden DFA gibt es eine ¨ aquivalente regul¨ are Grammatik“
F¨ ur die andere Richtung w¨ are notwendig
” f¨ ur jede regul¨ are Grammatik gibt es einen ¨ aquivalenten DFA“
Problem:
Produktionen: A → aA
1und A → aA
2k¨ onnen in Grammatiken vorkommen
Konstruktion des determinstischen Automaten unklar.
Daher: Beweis, dass DFAs alle regul¨ aren Sprachen akzeptieren, erfolgt auf Umwegen
Nichtdeterministische Endliche Automaten
Ideen
Zustandswechsel nicht eindeutig, sondern nichtdeterministisch in einen von mehreren m¨ oglichen
D.h. der Automat darf sozusagen
” raten“ welchen Nachfolgezustand er w¨ ahlt
Im Zustandsgraph erlaubt:
z
z
1z
2a a
Technisch:
DFA δ : Z × Σ → Z und ein Startzustand
NFA δ : Z × Σ → P(Z) und Menge von Startzust¨ anden
Definition NFA
Definition
Ein nichtdeterministischer endlicher Automat (nondeterministic finite automaton, NFA) ist ein 5-Tupel (Z, Σ, δ, S, E ) wobei
Z ist eine endliche Menge von Zust¨ anden,
Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅, S ⊆ Z ist die Menge der Startzust¨ ande,
E ⊆ Z ist die Menge der Endzust¨ ande und
δ : Z × Σ → P (Z) ist die Zustands¨ uberf¨ uhrungsfunktion
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 17/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke 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 b δ : (P(Z) × Σ
∗) → P (Z) induktiv durch:
δ(X, ε) b := X f¨ ur alle X ⊆ Z δ(X, aw) b := S
z∈X
b δ(δ(z, a), w) f¨ ur alle X ⊆ Z Die von M akzeptierte Sprache ist
L(M) = {w ∈ Σ
∗| δ(S, w) b ∩ E 6= ∅}
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 18/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: Leere Menge von Startzust¨ anden
Sei M = (Z, Σ, δ, ∅, E) ein NFA.
Dann ist L(M) = ∅.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 19/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Lauf beim NFA
Definition
Sei M = (Z, Σ, δ, S, E) ein NFA und w ∈ Σ
∗mit |w| = n.
Eine Folge von Zust¨ anden q
0, . . . , q
nmit q
0∈ S und
q
i∈ δ(q
i−1, w[i]) bezeichnet man als Lauf von M f¨ ur Wort w.
Beachte: W¨ ahrend es bei DFAs genau einen Lauf pro Wort gibt, kann es bei NFAs mehrere geben.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 20/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel
Sei M = ({z
0, z
1, z
2, z
3}, {a, b, c}, δ, {z
0, z
3}, {z
3}) ein NFA mit δ(z
0, a) = {z
0, z
1}
δ(z
0, b) = {z
0} δ(z
0, c) = {z
0}
δ(z
1, a) = {z
2} δ(z
1, b) = {z
2} δ(z
1, c) = {z
2}
δ(z
2, a) = {z
3} δ(z
2, b) = {z
3} δ(z
2, c) = {z
3}
δ(z
3, a) = ∅ δ(z
3, b) = ∅ δ(z
3, c) = ∅
Der Zustandsgraph zu M ist z
0a z
1a, b, c z
2a, b, c z
3a, b, c
.
L(M) = {ε} ∪ {uaw | u ∈ {a, b, c}
∗, w ∈ {a, b, c}
2}
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 21/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Jede regul¨ are Sprache wird durch NFA erkannt
Theorem 4.4.1
F¨ ur jede regul¨ are Sprache L gibt es einen NFA M mit L(M) = L.
Beweis:
Sei G = (V, Σ, P, S) eine regul¨ are Grammatik mit L(G) = L.
Sei M = (Z, Σ, δ, S
0, E) ein NFA mit Z = V ∪{z ·
E} (z
Eneu), S
0= {S}
und E = {z
E, S } falls S → ε ∈ P , sonst E = {z
E}, und δ(A, a) := {B | A → aB ∈ P } ∪ {z
E| falls A → a ∈ P } δ(z
E, a) := ∅ f¨ ur alle a ∈ Σ.
Es gilt: ε ∈ L(M ) ⇐⇒ ε ∈ L(G).
F¨ ur w = a
1· · · a
ngilt:
w ∈ L(G) g.d.w. S ⇒
Ga
1A
1⇒
G. . . ⇒
Ga
1· · · a
n−1A
n−1⇒
Ga
1· · · a
ng.d.w. Es gibt Zust¨ ande A
1, . . . , A
n−1mit
A
1∈ δ (S, a
1), A
i+1∈ δ(A
i, a
i+1) f¨ ur 1 ≤ i ≤ n − 2 und z
E∈ δ(A
n−1, a
n)
g.d.w. w ∈ L(M)
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 22/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: Konstruktion NFA aus Typ 3-Grammatik
Betrachte die regul¨ are 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 ∪ {z
E} = {A, B, C, D, z
E},
E = {A, z
E}, 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)={z
E} δ(D, b) ={z
E} δ(D, c) ={z
E}
δ(z
E, a)=∅
δ(z
E, b) =∅
δ(z
E, c) =∅
Beispiel: Konstruktion NFA aus Typ 3-Grammatik (2)
Der Zustandsgraph zu M ist
A
B a C a, b, c D a, b, c z
Ea, b, c
a, b, c
a
NFAs in DFAs transformieren
Theorem 4.5.1 (Rabin & Scott 1959)
Jede von einem NFA akzeptierte Sprache ist auch durch einen DFA akzeptierbar.
Beweisidee:
Konstruiere f¨ ur einen gegebenen NFA einen DFA, sodass sich
” der DFA alle Zust¨ ande merkt, in denen der NFA sein k¨ onnte“
Z.B. babbabb z
0z
0z
0z
0z
0z
0z
0z
0z
0z
1z
1z
1z
2z
2z
2z
3z
3z
3z
3a a, b, c a, b, c a, b, c
Konstruktion: Jede Teilmenge von Zust¨ anden des NFA wird zu einem Zustand des DFA (daher: Potenzmengenkonstruktion)
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 25/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Potenzmengenkonstruktion
F¨ ur NFA M = (Z, Σ, δ, S, E ) konstruieren wir den DFA M
0= (Z
0, Σ, δ
0, S
0, E
0) mit
Z
0= P (Z)
” Zustandsmenge ist Potenzmenge von Z“
S
0= S
” Startzustand ist Menge S aller Startzust¨ ande von M“
E
0= {X ∈ Z
0| (E ∩ X) 6= ∅}
” Jede Menge, die mind. einen Endzustand von E enth¨ alt, ist Endzustand in M
0“
δ
0(X, a) = S
z∈X
δ(z, a) = b δ(X, a)
” δ
0(X, a) berechnet alle von einem Zustand in X aus ¨ uber a erreichbaren Zust¨ ande.“
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 26/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Korrektheit der Potenzmengenkonstruktion
Wir beweisen, dass L(M ) = L(M
0) gilt, indem wir zeigen:
w ∈ L(M) g.d.w. w ∈ L(M
0)
Fall w = ε:
ε ∈ L(M) g.d.w. S ∩ E 6= ∅ g.d.w S ∈ E
0g.d.w. ε ∈ L(M
0) Fall w = a
1· · · a
n∈ Σ
∗:
w ∈ L(M) g.d.w. δ(S, w) b ∩ E 6= ∅
g.d.w. Es gibt Teilmengen Z
1, . . . , Z
nvon Z mit
δ(S, a
1) = Z
1, δ(Z
i, a
i+1) = Z
i+1f¨ ur i = 1, . . . , n − 1 und Z
n∩ E 6= ∅
g.d.w. δ b
0(S
0, w) ∈ E
0g.d.w w ∈ L(M
0)
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 27/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: Potenzmengenkonstruktion
F¨ur NFA
z
0a z
1a, b, c z
2a, b, c z
3a, b, c
wird der DFA konstruiert:
M
0= (P({z0, z
1, z
2, z
3}),{a, b, c}, δ0, S
0, E
0)mitS
0={z0, z
3}E
0={{z3},{z0, z
3},{z1, z
3},{z2, z
3},{z0, z
1, z
3},{z0, z
2, z
3},{z1, z
2, z
3},{z0, z
1, z
2, z
3}}δ0(∅, d) =∅f¨urd∈ {a, b, c}
δ0({z0}, a) ={z0, z1}
δ0({z0}, d) ={z0}f¨urd∈ {b, c}
δ0({z1}, d) ={z2}f¨urd∈ {a, b, c}
δ0({z2}, d) ={z3}f¨urd∈ {a, b, c}
δ0({z3}, d) =∅f¨urd∈ {a, b, c}
δ0({z0, z1}, a) ={z0, z1, z2}
δ0({z0, z1}, d) ={z0, z2}f¨urd∈ {b, c}
δ0({z0, z2}, a) ={z0, z1, z3}
δ0({z0, z2}, d) ={z0, z3}f¨urd∈ {b, c}
δ0({z0, z3}, a) ={z0, z1}
δ0({z0, z3}, d) ={z0}f¨urd∈ {b, c}
δ0({z1, z2}, d) ={z2, z3}f¨urd∈ {a, b, c}
δ0({z1, z3}, d) ={z2}f¨urd∈ {a, b, c}
δ0({z2, z3}, d) ={z3}f¨urd∈ {a, b, c}
δ0({z0, z1, z2}, a) ={z0, z1, z2, z3}
δ0({z0, z1, z2}, d) ={z0, z2, z3}f¨urd∈ {b, c}
δ0({z0, z1, z3}, a) ={z0, z1, z2}
δ0({z0, z1, z3}, d) ={z0, z2}f¨urd∈ {b, c}
δ0({z0, z2, z3}, a) ={z0, z1, z3}
δ0({z0, z2, z3}, d) ={z0, z3}f¨urd∈ {b, c}
δ0({z1, z2, z3}, d) ={z2, z3}f¨urd∈ {a, b, c}
δ0({z0, z1, z2, z3}, a) ={z0, z1, z2, z3} δ0({z0, z1, z2, z3}, b) ={z0, z2, z3} δ0({z0, z1, z2, z3}, c) ={z0, z2, z3}
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 28/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: Potenzmengenkonstruktion (2)
z
0z
0z
0z
0z
0z
0z
0z
0z
0z
1z
1z
1z
2z
2z
2z
3z
3z
3z
3a a, b, c a, b, c
a, b, c
Ablauf bei Eingabe babbabb
DFA als Zustandsgraph (nur erreichbare Zust¨ ande):
{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}
b, c a b, c
a
b, c a
a b, c
a
a b, c
b, c
a
b, c
b, c a
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 29/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
DFAs & NFAs sind Formalismen f¨ ur Typ 3-Sprachen
Theorem 4.5.4
DFAs und NFAs erkennen genau die regul¨ aren Sprachen.
Das folgt aus:
Theorem 4.2.1: Sei M ein DFA. Dann ist L(M ) regul¨ ar.
Theorem 4.4.1: F¨ ur jede regul¨ are Sprache L gibt es einen NFA M mit L(M ) = L.
Theorem 4.5.1: Jede von einem NFA akzeptierte Sprache ist auch durch einen DFA akzeptierbar.
Jeder DFA kann leicht auch als NFA interpretiert werden
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 30/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Gr¨ oße des DFAs vs NFAs (1)
Sei M ein NFA mit n Zust¨ anden.
Der durch die Potenzmengenkonstruktion erstellte DFA hat 2
nZust¨ ande!
D.h. der Platz explodiert uns!
Frage: Geht es besser (unsere Kodierung ist zu einfach) oder nicht?
Das folgende Lemma zeigt, dass es nicht wirklich besser geht
Gr¨ oße des DFAs vs NFAs (2)
Lemma
Sei L
n= {uav | u ∈ {a, b}
∗, v ∈ {a, b}
n−1} f¨ ur n ∈ N
>0.
(Sprache aller W¨ orter aus {a, b}
∗, die an n-letzter Stelle ein a haben).
Es gibt NFA M
nmit L(M
n) = L
nund M
nhat n + 1 Zust¨ ande.
Jeder DFA M
n0mit L(M
n0) = L
n, hat mindestens 2
nZust¨ ande.
Beweis (Teil 1): Sei M
nder folgende NFA:
z
0a z
1a, b z
2a, b a, b z
n−1a, b z
na, b
L(M
n) = L
n, denn:
zum Akzeptieren m¨ ussen z
0, z
1, . . . z
nnacheinander durchlaufen
werden, was genau mit W¨ ortern av mit v ∈ {a, b}
n−1m¨ oglich ist
In z
0kann zuvor jedes u ∈ {a, b}
∗gelesen werden (Verbleib in z
0).
Gr¨ oße des DFAs vs NFAs (3)
Beweis (Teil 2): Beweis durch Widerspruch.
Annahme: Es gibt n ∈ N
>0und DFA M
0= (Z, {a, b}, δ, z
0, E) mit L(M
0) = L
n= {uav | u ∈ {a, b}
∗, v ∈ {a, b}
n−1} und |Z| < 2
nMenge W = {a, b}
nenth¨ alt 2
nWorte der L¨ ange n und da |Z| < 2
n, muss es w 6= w
0∈ W geben mit b δ(z
0, w) = δ(z b
0, w
0) = z
iSei j die erste Position, an der sich w und w
0unterscheiden.
Falls j = 1, dann ist o.B.d.A. w = au ∈ L
naber w
0= bu
06∈ L
nund z
i∈ E und z
i6∈ E m¨ usste gleichzeitig gelten. Widerspruch!
Falls j > 1: O.B.d.A. w = uav und w
0= ubv
0mit |v| = |v
0| = n − j Sei w
0= wb
j−1= uavb
j−1w
00= w
0b
j−1= ubv
0b
j−1Dann muss gelten b δ(w
0) = δ(w b
00), da b δ(uav) = z
i= δ(ubv b
0).
Aber w
0∈ L
nund w
006∈ L
n, Widerspruch!
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 33/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
NFAs mit ε-¨ Uberg¨ angen
ε- ¨ Uberg¨ ange erlauben Zustandswechsel ohne Lesen eines Zeichens (es wird sozusagen das leere Wort ε gelesen)
Ausdruckskraft ¨ andert sich mit ε- ¨ Uberg¨ angen nicht ε- ¨ Uberg¨ ange machen manche Konstruktionen einfacher.
Definition (NFA mit ε- ¨ Uberg¨ angen)
Ein nichtdeterministischer endlicher Automat mit ε- ¨ Uberg¨ angen (NFA mit ε- ¨ Uberg¨ angen) ist ein Tupel M = (Z, Σ, δ, S, E ) wobei
Z ist eine endliche Menge von Zust¨ anden,
Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅, S ⊆ Z ist die Menge der Startzust¨ ande,
E ⊆ Z ist die Menge der Endzust¨ ande und
δ : Z × (Σ ∪ {ε}) → P(Z) ist die Zustands¨ uberf¨ uhrungsfunktion
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 34/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: NFA mit ε-¨ Uberg¨ angen
z
1z
0a z
2a, b, c z
3a, b, c z
4a, b, c
ε ε
ε Akzeptierte Sprache:
alle Worte aus {a, b, c}
∗, die an letzter, vorletzter, oder drittletzter Postion ein a haben, und das leere Wort
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 35/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
ε-H¨ ulle
Definition (ε-H¨ ulle)
Sei M = (Z, Σ, δ, S, E) ein NFA mit ε- ¨ Uberg¨ angen. Die ε-H¨ ulle clos
ε(z) eines Zustands z ∈ Z ist induktiv definiert als die kleinste Menge von Zust¨ anden, welche die folgenden Eigenschaften erf¨ ullt:
1
z ∈ clos
ε(z).
2
Wenn z
0∈ clos
ε(z) und z
00∈ δ(z
0, ε), dann ist auch z
00∈ clos
ε(z).
F¨ ur eine Zustandsmenge X ⊆ Z definieren wir clos
ε(X ) := S
z∈X
clos
ε(z).
Die ε-H¨ ulle f¨ ugt f¨ ur eine Zustandsmenge alle durch ε- ¨ Uberg¨ ange erreichbaren Zust¨ ande hinzu.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 36/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
ε-H¨ ulle (2)
Die ε-H¨ ulle f¨ ur eine Zustandsmenge X ⊆ Z kann auch berechnet werden durch:
clos
ε(X ) :=
X, wenn S
z∈X
δ(z, ε) ⊆ X clos
ε(X ∪ S
z∈X
δ(z, ε)), sonst
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 37/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel
z
1z
0a z
2a, b, c z
3a, b, c z
4a, b, c
ε ε
ε
clos
ε(z
0) = {z
0} clos
ε(z
1) = {z
1} clos
ε(z
4) = {z
4} clos
ε(z
3) = {z
1, z
3, z
4} clos
ε(z
2) = {z
1, z
2, z
3, z
4}
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 38/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
NFA mit ε-¨ Uberg¨ angen: Akzeptierte Sprache
Akzeptierte Sprache eines NFA mit ε- ¨ Uberg¨ angen Sei M = (Z, Σ, δ, S, E ) ein NFA mit ε- ¨ Uberg¨ angen.
Wir definieren e δ : (P (Z) × Σ
∗) → P(Z) induktiv durch:
δ(X, ε) e := X δ(X, aw) := e S
z∈X
e δ(clos
ε(δ(z, a)), w) f¨ ur alle X ⊆ Z Die von M akzeptierte Sprache ist
L(M ) := {w ∈ Σ
∗| δ(clos e
ε(S), w) ∩ E 6= ∅}
ε-¨ Uberg¨ ange ¨ andern die Ausdruckskraft nicht (1)
Satz 4.6.7
NFAs mit ε- ¨ Uberg¨ angen akzeptieren genau die regul¨ aren Sprachen.
Beweis
” ⇐“:
Jede regul¨ are Sprache wird von einem
” normalen“ NFA akzeptiert.
Transformiere diesen NFA in einen NFA mit ε- ¨ Uberg¨ angen:
Setze δ(z, ε) = ∅ f¨ ur alle Zust¨ ande z
Offensichtlich ist die akzeptierte Sprache diesselbe.
Daher wird jede regul¨ are Sprache von einem NFA mit
ε- ¨ Uberg¨ angen akzeptiert.
ε-¨ Uberg¨ ange ¨ andern die Ausdruckskraft nicht (2)
Beweis
” ⇒“: Sei M = (Z, Σ, δ, S, E) ein NFA mit ε- ¨ Uberg¨ angen.
Konstruiere NFA M
0mit L(M) = L(M
0). Dann ist L(M) regul¨ ar.
M
0= (Z, Σ, δ
0, S
0, E) mit S
0= clos
ε(S), δ
0(z, a) = clos
ε(δ(z, a)).
L(M) = L(M
0):
Wir zeigen δ(clos e
ε(X ), w) = δ b
0(clos
ε(X ), w) f¨ ur alle X ⊆ Z und w ∈ Σ
∗. Wir verwenden Induktion ¨ uber die Wortl¨ ange |w|.
Basis: w = ε. Dann gilt e δ(clos
ε(X ), ε) = clos
ε(X) = δ b
0(clos
ε(X ), ε) Schritt: Sei w = au mit a ∈ Σ. Wir formen um:
e δ(clos
ε(X ), au)
Def.=
eδS
z∈closε(X)
e δ(clos
ε(δ(z, a)), u)
I.H.= S
z∈closε(X)
δ b
0(clos
ε(δ(z, a)), u)
Def.δ0
= S
z∈closε(X)
δ b
0(δ
0(z, a), u)
Def.=
bδδ b
0(clos
ε(X ), au)
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 41/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Eindeutige Start- und Endzust¨ ande
Satz 4.6.8
F¨ ur jeden NFA M mit ε- ¨ Uberg¨ angen gibt es einen NFA M
0mit ε- ¨ Uberg¨ angen, sodass L(M ) = L(M
0) und M
0genau einen Startzustand und genau einen Endzustand hat, wobei diese beiden Zust¨ ande verschieden sind.
Beweis: Konstruiere M
0aus M , durch Hinzuf¨ ugen eines neuen Start- und eines neuen Endzustand mit ε- ¨ Uberg¨ angen:
M
wird zuε ε ε
ε ε ε
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 42/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel
z
1z
0a z
2a, b, c z
3a, b, c z
4a, b, c
ε ε
ε wird zu
z
Sz
Ez
1z
0ε
ε a z
2a, b, c z
3a, b, c z
4a, b, c
ε ε
ε
ε
ε
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 43/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Regul¨ are Ausdr¨ ucke
Regul¨ are Ausdr¨ ucke sind (wie Automaten und Grammatiken) ein Formalismus zur Repr¨ asentation von Sprachen.
Praktische Verwendung: Regex-Bibliotheken in Programmiersprachen zum Suchen und Ersetzen von Zeichenketten
(verwenden meist erweiterte regul¨ are Ausdr¨ ucke) Aufbau regul¨ arer Ausdr¨ ucke:
Basisausdr¨ ucke und Operatoren zum Zusammensetzen.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 44/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Regul¨ are Ausdr¨ ucke (2)
Definition (Regul¨ arer Ausdruck)
Sei Σ ein Alphabet. Ein regul¨ arer Ausdruck ¨ uber Σ ist induktiv definiert:
∅ ist ein regul¨ arer Ausdruck ε ist ein regul¨ arer Ausdruck
a mit a ∈ Σ ist ein regul¨ arer Ausdruck
Wenn α
1und α
2regul¨ are Ausdr¨ ucke sind, dann auch α
1α
2Wenn α
1und α
2regul¨ are Ausdr¨ ucke sind, dann auch (α
1|α
2) Wenn α regul¨ arer Ausdruck ist, dann auch (α)
∗TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 45/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Regul¨ are Ausdr¨ ucke (3)
Erzeugte Sprache
Die von einem regul¨ aren Ausdruck α erzeugte Sprache L(α) ist induktiv ¨ uber dessen Struktur definiert:
L(∅) := ∅ L(ε) := {ε}
L(a) := {a} f¨ ur a ∈ Σ
L(α
1α
2) := L(α
1)L(α
2) = {uv | u ∈ L(α
1), v ∈ L(α
2)}
L(α
1|α
2) := L(α
1) ∪ L(α
2) L((α)
∗) := L(α)
∗F¨ ur alle regul¨ aren Ausdr¨ ucke α
1, α
2, α
3gilt:
L((α
1|α
2)|α
3) = L(α
1|(α
2|α
3))
Daher lassen wir Klammern weg und schreiben (α
1|α
2| . . . |α
n).
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 46/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiele
(a|b)
∗aa(a|b)
∗erzeugt alle Worte ¨ uber {a, b} die zwei aufeinanderfolgende 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 leere Wort
((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 im 24-Stunden-Format
Eine endliche Sprache S = {w
1, . . . , w
n} wird durch (w
1| . . . |w
n) erzeugt.
Satz von Kleene
Theorem 4.7.4 (Satz von Kleene)
Regul¨ are Ausdr¨ ucke erzeugen genau die regul¨ aren Sprachen.
Beweis in zwei Teilen:
1
Jede von einem regul¨ aren Ausdruck erzeugte Sprache ist regul¨ ar.
2
F¨ ur jede regul¨ are Sprache gibt es einen regul¨ aren Ausdruck,
der sie erzeugt.
Beweis: Satz von Kleene (1)
1. Jede von einem regul¨ aren Ausdruck erzeugte Sprache ist regul¨ ar.
Beweis:
Wir konstruieren f¨ ur regul¨ aren Ausdruck α einen NFA M
αmit ε- ¨ Uberg¨ angen und eindeutigen Start- und Endzust¨ anden, sodass L(M
α) = L(α).
Induktion ¨ uber die Struktur von α Basisf¨ alle:
F¨ ur α = a ∈ Σ konstruiere
aF¨ ur α = ε konstruiere
εF¨ ur α = ∅ konstruiere
In allen F¨ allen ist L(α) = L(M
α) offensichtlich
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 49/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beweis: Satz von Kleene (2)
Induktionsschritt: Betrachte den Aufbau von α (3 F¨ alle) F¨ ur α = α
1α
2, liefert die I.H. M
α1, M
α2.
M
α1M
α2Konstruiere daraus M
α:
ε
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 50/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beweis: Satz von Kleene (3)
F¨ ur α = (α
1|α
2) liefert die I.H. M
α1, M
α2: M
α1M
α2Konstruiere daraus M
α:
ε
ε
ε
ε
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 51/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beweis: Satz von Kleene (4)
F¨ ur α = (α
1)
∗liefert die I.H. M
α1M
α1Konstruiere daraus M
α:
ε
ε ε
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 52/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beweis: Satz von Kleene (5)
2. F¨ ur jede reg. Sprache L gibt es einen regul¨ aren Ausdruck α mit L(α) = L Beweis:
Sei DFA M = ({z
1, . . . , z
n}, Σ, δ, z
1, E) mit L(M ) = L gegeben.
F¨ ur w ∈ Σ
∗und z
i∈ z mit b δ(z
i, w) = z
jsei visit
i(w) = q
1, . . . , q
mdie Folge der besuchten Zust¨ ande (wobei q
1= z
iund q
m= z
j).
Wir definieren:
L
ki,j=
w ∈ Σ
∗b δ(z
i, w) = z
jund visit
i(w) = q
1, . . . , q
m, sodass f¨ ur 1 < l < m: wenn q
l= z
pdann p ≤ k
L
ki,jenth¨ alt die Worte, die M von Zustand z
izu Zustand z
jf¨ uhren ohne dabei Zwischenzust¨ ande mit Index gr¨ oßer als k zu benutzen.
Mit Induktion ¨ uber k zeigen wir, dass es regul¨ are Ausdr¨ ucke α
ki,jmit L(α
ki,j) = L
ki,jgibt.
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 53/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beweis: Satz von Kleene (6)
Zur Erinnerung:Lki,j enth¨alt die Worte, dieM von Zustandzizu Zustandzjf¨uhren ohne dabei Zwischenzust¨ande mit Index gr¨oßer alskzu benutzen.
Basis: k = 0
Wenn i 6= j, dann ist L
0i,j= {a ∈ Σ | δ(z
i, a) = z
j}.
Falls L
0i,j= {a
1, . . . , a
q}, dann gilt L(α
0i,j) = L
0i,jf¨ ur α
0i,j= (a
1| . . . |a
q).
Falls L
0i,j= ∅, dann gilt L(α
0i,j) = L
0i,jmit α
0i,j= ∅.
Wenn i = j, dann ist L
0i,i= {ε} ∪ {a ∈ Σ | δ(z
i, a) = z
i}.
Sei L
0i,i= {ε, a
1, . . . , a
q}.
Dann gilt L(α
0i,i) = L
0i,if¨ ur α
0i,i= (ε|a
1| . . . |a
q).
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 54/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beweis: Satz von Kleene (7)
Zur Erinnerung:Lki,jenth¨alt die Worte, dieMvon Zustandzizu Zustandzjf¨uhren ohne dabei Zwischenzust¨ande mit Index gr¨oßer alskzu benutzen.
Induktionsschritt: k → k + 1
L
k+1i,j= L
ki,j∪ L
ki,k+1(L
kk+1,k+1)
∗L
kk+1,j,
denn entweder l¨ auft M ohne Zustand z
k+1zu besuchen, oder der Lauf kann in 3 Teile gespalten werden:
1
Lauf von z
ibis zum ersten Besuch des Zustands z
k+1(abgedeckt durch L
ki,k+1)
2
Mehrmaliges, zyklisches Besuchen von k + 1 (beliebig oft) (abgedeckt durch L
kk+1,k+1)
3
Letztmaliges Verlassen von z
k+1und Lauf bis zu z
j(abgedeckt durch L
kk+1,j)
Daher gilt α
k+1i,j= (α
ki,j|α
ki,k+1(α
kk+1,k+1)
∗α
kk+1,j) und L(α
k+1i,j) = L
k+1i,j. F¨ ur E = {z
i1, . . . , z
ir} gilt L(α
n1,i1
|α
n1,i2
| . . . |α
n1,ir
) = S
z∈E
L
n1,i= L(M )
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 55/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: Regul¨ arer Ausdruck → NFA mit ε-¨ Uberg¨ angen
NFA zum regul¨ aren Ausdruck
(ε|(a|b)
∗b(a|b))
konstruieren:
ε
a
ε b
ε ε
ε ε
ε
ε ε b
a
b ε
ε
ε
ε ε ε
ε
ε ε
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 56/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Beispiel: DFA → regul¨ arer Ausdruck
z
1z
2a
a Regul¨ arer Ausdruck dazu:
α
21,2= (α
11,2|α
11,2(α
12,2)
∗α
12,2)
= ((a|ε(ε)
∗a) | (a|ε(ε)
∗a) (ε|a(ε)
∗a)
∗(ε|a(ε)
∗a))
= (a|a(aa)
∗) (durch Vereinfachung) denn
α
01,1= ε α
02,2= ε α
01,2= a α
02,1= a α
11,2= (α
01,2|α
01,1(α
01,1)
∗α
01,2) = (a|ε(ε)
∗a) α
12,2= (α
02,2|α
02,1(α
01,1)
∗α
01,2) = (ε|a(ε)
∗a)
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 57/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.
Zusammenfassung: Formalismen f¨ ur regul¨ are Sprachen
Regul¨ are Grammatiken (=Regul¨ are Sprachen)
NFAs
NFAs mit ε- ¨ Uberg¨ angen
NFAs mit ε- ¨ Uberg¨ angen und eindeutigem Start- und
Endzustand
DFAs
Regul¨ are Ausdr¨ ucke Theorem 4.2.1
offensichtlich
Theorem 4.5.1 Theorem 4.4.1
Satz 4.6.7
Satz 4.6.8
Theorem 4.7.4
Theorem 4.7.4
Kanten → zeigen Kodierungen
TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 58/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.