Professional Documents
Culture Documents
Dieses Dokument vom 6. Juli 2009 steht unter einer Creative Commons BY-NC-ND 3.0 Deutschland Lizenz
für die Seite http://page.mi.fu-berlin.de/mlenders/mitschriften/gti/
Inhaltsverzeichnis
3 Grammatiken 31
3.1 Definition von Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2 Die Chomsky-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3 Typ-0-Sprachen (rekursiv aufzählbare Sprachen) . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 Typ-3-Sprachen (reguläre Sprachen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5 Typ-1-Sprachen (kontextsensitive Sprachen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3
Inhaltsverzeichnis
4
1 Turing-Maschine, Berechenbarkeit,
Entscheidbarkeit
1.1 Definition der Turing-Maschine
Steuerung
(q, a) Programm
Zustand
(Programmzähler)
Schreib−/Lesekopf (q ′ , a′ , b)
B B B 0 1 X B B B
Beispiel:
Σ = {0, 1}, Γ = {0, 1, B, X}
n n
Erkenne die Eingabe der Form: 0 1 , für n ≥ 1
rechts und links von der Eingabe stehen unendlich viele B-Symbole
• Phase 1: laufe einmal von links nach rechts über das Band und überprüfe, ob dort eine Folge von 0en
gefolgt von eine Folge von 1en steht.
• Phase 2: Fahre abwechselnd nach links und nach rechts und ersetze jeweils 0 und eine 1 durch X.
Akzeptiere, wenn am Ende alles durch X erstzt ist und kene 0, 1 übrig bleibt
5
KAPITEL 1. TURING-MASCHINE, BERECHENBARKEIT, ENTSCHEIDBARKEIT
δ 0 1 B X Kommentar
q0 (q0 , 0, 1) (q1 , 1, 1) (q− , B, 0) egal fahre nach rechts über Nullen
q1 (q− , 0, 0) (q1 , 1, 1) (q2 , B, −1) egal fahre nach rechts über Einsen
q2 (q3 , X, 1) (q2 , 1, −1) (q4 , B, 1) (q2 , X, −1) fahre nach links und suche 0,
ersetze sie durch X
q3 (q3 , 0, 1) (q2 , X, −1) (q4 , B, 1) (q3 , X, 1) fahre nach rechts und suche 1,
ersetze sie durch X
q4 (q4 , 0, 1) (q− , 1, 1) (q+ , B, 0) (q4 , X, 1) fahre nach rechts und suche 1;
akzeptiere wenn keine 1 mehr
vorhanden ist.
q− (q− , 0, 0) (q− , 1, 0) (q− , B, 0) (q− , X, 0)
q+ (q+ , 0, 0) (q+ , 1, 0) (q+ , B, 0) (q+ , X, 0)
• Die Maschine hält, wenn sie in einen Zustand q über einen Symbol a mit δ(q, a) = (q, a, 0) steht.
Q = {q0 , q1 , q2 , q3 , q4 , q+ , q− }
q0 = q0
F = {q+ }
• Die T. M. akzeptiert die Eingabe, wenn sie in einem Zustand aus F hält.
Eingabe: bin(x)#bin(y)$ (bin(x) := Binärdarstellung einer positiven Zahl, führende Nullen sind egal)
Ausgabe: bin(x + y)#bin(y)$
Programmiertechniken:
• Verwenden mehrerer Spuren: Jedes Feld des Bandes wird als aus mehreren Unterfeldern beste-
hend betrachtet.
X X X
0 1 1 0 1
s ∈ {0, 1}
ü ∈ {0, 1}
Eingabealphabet: Σ = {0, 1, #, $}
Bandalphabet: Γ = Σ ∪ {B, 0̄, 1̄}
6
1.3. REGISTERMASCHINEN
δ 0 1 0̄ 1̄ # $ B Schritt
qü0 qü0 , 0, + q00 , 1, + qü0 , 0̄, + qü0 , 1̄, + rü0 , #, +
rü0 rü0 , 0, + rü0 , 1, + s0ü , 0̄, − s0ü , 1̄, − s0ü , $, − 1
s0ü t0ü , 0̄, − t1ü , 1̄, − u0ü , #, −
tiü t0ü , 0̄, − t1ü , 1̄, − uiü , #, −
ui0 ui0 , 0̄, − ui0 , 1̄, −
u00 q00 , 0̄, + q00 , 1̄, + v00 , 0̄, + 2
u10 , u01 q00 , 1̄, + q00 , 0̄, + v00 , 1̄.+
u11 q10 , 0̄, + q10 , 1̄, + v01 , 0̄.+
vü0 vü0 , 0, + vü0 , 1, + vü0 , 0̄, + vü0 , 1̄, + wü0 , #, +
wü0 rü0 , 0, + rü0 , 1, + x0ü , 0̄, − x0ü , 1̄, −
x0ü yü0 , #, − 3
y00 y00 , 0̄, − y00 , 1̄, − z, B, +
y10 y10 , 0̄, − y10 , 1̄, − z, 1, +
z z, 0, + z, 1, + z, #, + p, $, − 4
p p, 0, − p, 1, − p, #, − h, B, +
• Unterprogrammtechnik
1.3 Registermaschinen
L = {0n 1n |n ≥ 1}
L=∅
L = {ε}
7
KAPITEL 1. TURING-MASCHINE, BERECHENBARKEIT, ENTSCHEIDBARKEIT
Rechenregeln: 1. u · (v · w) = (u · v) · w
2. ∀u ∈ Σ∗ : u · ε = ε · u = u
Beispiel: u = abra
v = kadabra
u · v = abrakadabra
v = kad ·u
ui = |u · u · u{z· . . . · u}
i−mal
1
u =u
u0 = ε
Li = |L · L {z
· . . . · L} = {u1 · u2 · . . . · ui |u1 ∈ L, u2 ∈ L, . . . , ui ∈ L}
i−mal
L1 = L L0 = {ε}
L∗ := L0 ∪ L1 ∪ L2 ∪ . . .
= Menge der Wörter, die man aus bel. vielen (≥ 0) Bestandteilen ∈ L zusammen multiplizieren kann.
Definition: Eine Konfiguration einer Turingmaschine ist ein Wort aus Γ∗ QΓ∗ , das nicht mit B anfängt oder
aufhört (ein Wort ∈ Γ∗ QΓ∗ \ (B(Γ ∪ Q)∗ ∪ (Γ ∪ Q)∗ B)).
Das Wort xqy mit x, y ∈ Γ∗ und q ∈ Q beschreibt den Zustand der Turingmaschine wo xy auf dem Band
steht und der Kopf über dem ersten Zeichen von y steht Für zwei Konfigurationen k1 und k2 schreibt man
k1 ⊢ k2 wenn die Turingmaschine in einem Schrittvon k1 nach k2 übergeht. (Nachfolgerrelation zwischen
Konfigurationen.)
∗
k1 ⊢ k2 bedeutet, dass auf k1 nach beliebig vielen Schritten (≥ 0) die Konfiguration k2 folgt.
8
1.6. TURINGMASCHINE MIT MEHREREN BÄNDERN
Beispiel: binäre Addition von 2 n-Bit Zahlen geht mit 2 Bändern in O(n) Schritten (≤ konst. (n)) (mit einem
Band in O(n2 ) Schritten).
Zuerst wird bin(y) auf das 2. Band kopiert, und dann bitweise von rechts nach links addiert.
Satz: Eine k-Band-Turingmaschine die nach T Schritten hält kann durch eine 1-Band-Turinmaschine simuliert
werden, die in höchstens const.T 2 Schritten hält.
Beweis: Simulation der k Bänder auf k Spuren eines einzigen Bandes. Die Kopfposition der Bänder ist af der
jeweiligen Spur vermerkt.
M hält in q ∈ F
→ x ∈ L(M )
Eingabe x M hält in q ∈
/F →x∈ / L(M )
M terminiert nicht → x ∈
/ L(M )
9
KAPITEL 1. TURING-MASCHINE, BERECHENBARKEIT, ENTSCHEIDBARKEIT
Definition: Eine Sprache L heißt rekursiv aufzählbar (semi-entscheidbar, engl. recursiv enumerable) wenn es
eine Turingmaschine M mit L = L(M ) gibt.
L heißt entscheidbar (rekursiv), wenn es eine Turingmaschine M gibt, die auf allen Eingaben hält und
mit L = L(M )
Unterscheide: abzählbare (denumerable) Mengen: endlich oder gleichmächtig mit N
Turingmaschine die etwas berechnet: x ∈ Σ∗ steht auf dem Eingabeband.
• Wenn die Maschine hält, steht ein Wort y ∈ Σ∗ auf dem Ausgabeband (bzw. auf dem einzigen Band).
• Die von der Turingmaschine berechnete (partielle) Funktion fM ist definiert auf der Menge A = {x ∈
Σ ∗ |M hält bei Eingabe um x}
fM : A → Σ∗ mit A ⊆ Σ∗
• Eine partielle Funktion f : A → Σ∗ mit A ⊆ Σ∗ oder eine totale Funktion f : Σ∗ → Σ∗ heißt
berechenbar, wenn es eine Turingmaschine M mit f = fM gibt.
1.8 Unentscheidbarkeit
1.8.1 Universelle Sprache und Diagonalsprache
Definition: Die universelle Sprache LU ist die Sprache
10
1.8. UNENTSCHEIDBARKEIT
w1 = ε
w2 = 0
w3 = 1
w4 = 00
w5 = 01
w6 = 10
w7 = 11
w8 = 000
..
.
M1 , M2 , ..., Mi , ...
Turingmaschine M , falls wi = hM i ist
Turingmaschine, die einen Schritt
Mi =
nach links macht, und dann in einem
akzeptierenzen Zustand anhält. falls wi keine gültige Gödelnummer ist
D = {wi | wi ∈
/ L(Mi ) , i = 1, 2, 3, ...}
| {z }
Mi akzeptiert wi nicht.
Satz: D ist nicht rekursiv aufzählbar und damit auch nicht entscheidbar.
Beweis durch Widerspruch: Angenommen, es gibt eine Turingmaschine Mk die D akzeptiert:
wk ∈ D
Definition von D
⇐⇒ wk ∈
/ L(MK )
Annahme: Mk akzeptiert die Sprache D
⇐⇒ wk ∈
/D
11
KAPITEL 1. TURING-MASCHINE, BERECHENBARKEIT, ENTSCHEIDBARKEIT
hMi i wi
| {z }
=wi
⇐ M1 akzeptiert L, M2 akeptiert L
U = {hM ix|x ∈ L(M ), M hält bei Eingabe von x in einem akzeptierenden Zustand}
12
1.8. UNENTSCHEIDBARKEIT
Teste zuerst, ob hM ix ∈ H ist. Wenn nein, dann ist hM ix ∈/ U . Wenn ja, simuliere M auf der Eingabe
x, diese Simulation muss terminieren. Je nachdem, ob der Haltezustand von M ein akzeptierender
Zustand ist oder nicht, gehört hM ix zu U oder nicht.
Das spezielle Halteproblem
Hε = {hM i|M hält bei Eingabe ε}
Folgerung: Hε ist unentscheidbar.
Indirekter Beweis: Annahme wir hätten einen Algorithmus A, der Hε entscheidet.
Behauptung: Dann könnten wir H entscheiden.
hM ix sei Eingabe für H.
Konstruiere eine neue Turingmaschine M ′ die am Anfang das Wort x auf das Band schreibt, dann
nach links zurückkehrt und dann wie M weitermacht.
Teste mit dem Algorithmus A, ob hM i ∈ Hε
hM ′ i ∈ Hε ⇔ hM ix ∈ H
Beispiel: H ≤ Hε
f (hM ix) = hM ′ i
f (y) = hM ∞ i, falls y nicht mit der gültigen Codierung einer Turingmaschine beginnt
M ∞ := eine Turingmaschine, die nie hält.
( y ist keine korrekte Eingabe für das Halteproblem“)
”
Beispiel: D ≤ U
Satz: 1. A ≤ B ∧ B ≤ C ⇒ A ≤ C
2. A ≤ B und B entscheidbar ⇒ A entscheidbar
3. A ≤ B und A unentscheidbar ⇒ B unentscheidbar
Beweis: 1. Transitivität
2. Wir wollen entscheiden, ob x ∈ A ist: Berechne f (x) und entscheide, ob f (x) ∈ B ist.
3. logisch äquivalent zu 2.
y = |{z}
10 |{z}
111 |{z}
111 |{z}
0
(10, 101), (011, 11), (101, 011)
(001, 0), (01, 011), (01, 101), (10, 001) kürzeste Lösung k = 66
13
KAPITEL 1. TURING-MASCHINE, BERECHENBARKEIT, ENTSCHEIDBARKEIT
xi
↓
x1 q0 v#u1 q 1 v1 #u2 q 2 v2 #u3 q 3 v3 #...
|{z}
x1
Beispiel
xi + 1
xi
↓ xj
↓ z}|{ z}|{ z}|{ z}|{ z}|{
# 0 0 1 0 q1 10#
#0010q110#|{z}0 |{z}
0 |{z} 0 0q ′ 10#
1 |{z}
|{z}
↑
↑ yi
yi
yi + 1
δ(a, 1) = (q ′ , 0, +1)
Gegeben: M, x ∈ Σ∗
Alphabet für PKP = Γ ∪ Q ∪ {#}
Anfangspaar: (x1 , y1 ) = (#, #q0 x#)
Kopierpaare: (xi , yi ) = (a, a) für a ∈ Γ ∪ {#}
Zustandsübergänge:
M P KP ≤ P KP
Gegeben: Eingabe für M P KP
(x1 , y1 ), (x2 , y2 ), . . . (xn , ym )
i 1 , i2 , . . . , ik k ≥ 1 mit i1 = 1
14
1.8. UNENTSCHEIDBARKEIT
Beispiel:
(0, 010), (11, 0), (101, 01) Eingabe für MPKP
x′n+1 = $yn+1
′
= #$
....01 7→ 0#1#$
....01 7→ #0#1#$
Die Eingabe (x′0 , y0′ ), ..., (x′n+1 , yn+1
′
) ist aus (x1 , y1 ), ..., (xn , yn ) berechenbar.
Lemma: U ≤ M P KP
Beweis: Gegeben ist eine Eingabe hM ix für U
Wir konstruieren daraus eine Eingabe für MPKP mit folgenden Eigenschaften
MPKP hat eine Lösung ⇔ hM ix ∈ U
(M akzeptiert x)
Idee: MPKP simuliert die Berechnung von M
Lösungswort: #K0 #K1 #K2 #... Ki aufeinanderfolgende Konfigurationen von M
K0 = q0 x
Ki = ui q i vi qi ∈ Q, ui , vi ∈ Γ∗
xi1 xi2 ...xik = #|K1 #|K2 #K3 #|
yi1 yi2 ...yik = #K1 #|K2 #|K3 #K4 #|
Das y-Wort ist immer einen Schritt vorraus; dadurch können wir sicherstellen, dass Ki+1 aus Ki
durch einen Schritt vom M entsteht.
(x1 , y1 ) = (#, #q0 x#) Anfangsregel
(a, a) a ∈ Γ ∪ {#}... Kopierregel
Zustandsregeln: ′
(q , b, +1) ⇒ (qa, bq ′ )
(q ′ , b, 0) ⇒ (qa, q ′ b)
δ(q, a) =
(cqa, q ′ cb)
(q ′ , b, −1) ⇒
(#qa, #q ′ Bb)
′
(q , b, +1) ⇒ (q#, bq ′ #)
(q ′ , b, 0) ⇒ (q#, q ′ b#)
δ(q, B) =
(cq#, q ′ cb#)
(q ′ , b, −1) ⇒
(#q#, #q ′ Bb#)
Löschregeln:
Wenn M in einen akzeptierenden Zustand q ∈ F gerät, dann frisst“ dieser Zustand den Bandinhalt
”
(qa, q)
∀q ∈ F, a ∈ Γ
(aq, q)
Abschlusspaar:
(q##, #) ∀q ∈ F
Satz: Das Post’sche Korrespondenzproblem ist unentscheidbar.
15
KAPITEL 1. TURING-MASCHINE, BERECHENBARKEIT, ENTSCHEIDBARKEIT
S sei eine Eigenschaft von formalen Sprachen L, die von einigen aber nicht von allen rekursiv aufzählbaren
erfüllt wird:
Beispiele: Ist S = ∅?
Ist S = {ε}?
ε ∈ S?
Ist S endlich?
Ist S = {0n 1n |n ≥ 1}
16
2 Reguläre Sprachen und endliche Automaten
2.1 Deterministische endliche Automaten
A = (Q, Σ, δ, q0 , F )
Ein (deterministischen) endlicher Automat (DEA) (engl.: deterministic finite automaton, DFA) hat:
• eine Zustandsüberführungsfunktion δ : Q × Σ → Q
• einen Startzustand q0 ∈ Q
Arbeitsweise: Der Automat beginnt in q0 und liest in jedem Schritt das nächste Eingabesymbol und ändert
denm Zustand gemäß δ. Er akzeptiert das Eingabewort, wenn er sich nach dem Lesen des letzten Buch-
stabens in einem Zustand ∈ F befindet.
Beispiel:
Q = {q0 , q1 , q2 , q3 } Σ = {0, 1}
q0 = q0 F = {q3 }
δ 0 1
q0 q1 q2
q1 q0 q3
q2 q3 q0
q3 q2 q1
Zustandsdiagramm:
Eingabe: x = 0 0 1 1 0 0 1 ∈
/ L(A)
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
q0 q1 q0 q2 q0 q1 q0 q2 ∈
/F
δ(q, ε) = q, (∀q ∈ Q)
δ(q, a1 a2 ...an ) = δ(δ(q, a1 a2 ...an−1 , an )), (n ≥ 1)
17
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
∃i ≤ j : δ(q0 , 0i ) = δ(q0 , 0j )
δ(δ(q0 , 0i ), 1i ) = δ(q0 , 0i 1i ) ∈ F
weil A das Wort 0i 1i akzeptieren soll.
• reguläre Ausdrücke
• NEA: nichtdeterministische endliche Automaten
• Typ-3-Grammatiken
• L(ε) = {ε}
• L(a) = {a} für a ∈ Σ
18
2.2. REGULÄRE AUSDRÜCKE
• L((A)∗ ) = (L(A))∗
Satz: Jede reguläre Sprache wird durch einen regulären Ausdruck beschrieben:
L0ij = {a ∈ Σ|δ(qi , a) = qj } i 6= j
L0ii = {a ∈ Σ|δ(qi , a) = qi } ∪ {ε}
⊆“ Betrachte ein Wort x ∈ Lkij und die Folge der Zustände die der Automat beim Lesen von x, ausgehend
”
von qi besucht.
Fall 1: qk tritt nicht als Zwischenzustand auf ⇒ x ∈ Lik−1 j
Fall 2: Zerlege x in Bestandteile an jeder Stelle, wo der Zustand qk erreicht wird.
qk qk qk qk
qi qj
k−1 k−1
∈ Lik ∈ Lkj
k−1
∈ Lkk
k−1 k−1
x besteht aus einem Anfangsstück ∈ Lik , beliebig vielen (≥ 0) Zwischenstücken ∈ Lkk und einem
k−1
Endstück ∈ Lkj
Wenn i = k oder j = k ist, dann kann man die Formel vereinfachen:
k−1 k−1
Beispiel: Lkik = Lik · (Lkk )
k k−1 ∗ k−1 ∗ k−1
Lkk = (Lkk ) Lkkj = ((Lkk ) Lkj
19
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
Durch Induktion nach k ergibt sich: Alle Sprachen Lkij sind durch reguläre Ausdrücke darstellbar, und
sonst auch L(A). Schranke für die Länge des Ausdrucks:
(beim Übergang von k auf k + 1 wird die Länge höchstens mit 4 multipliziert.)
Der Algorithmus von Floyd-Warshall für kürzeste Wege in Graphen beruht auf dem gleichen Prinzip.
δ : Q × Σ → 2Q (Potenzmenge von Q)
Wenn ein Automat sich im Zustand q ∈ Q befindet und das Symbol a ∈ Σ liegt, kann er in irgendeinem der
Zustände aus der Menge δ(q, a) gehen.
Gesund Kopfweh,Gesund
Hochdruckwetter Kälte
Gesund
Kopfweh
Gewitter Gesund
• Eine Berechnung des Automaten bei Eingabe von x = a1 a2 ...an ∈ Σ∗ ist eine Folge
(q0 , a1 , q1 , a2 , q2 , ..., qn−1 , an , qn ) mit qi ∈ Q mit q0 = Anfangszustand und qi+1 ∈ δ(qi , ai+1 ) für i =
0, ..., n − 1.
• Eine akzeptierende Berechnung ist eine Berechnung mit qn ∈ F .
• Ein Wort x ∈ Σ∗ wird von A akzeptiert, wenn es eine akzeptierende Berechnung für x gibt.
0,1 0,1
0 1 0 1
→ q0 q1 q2 q3 q4
Beispiel: 010 0101 0010000 würde akzeptiert werden, 011110000111 ∈ / L(A) jedoch nicht.
Ein DEA entspricht dem Spezialfall wo |δ(q, a)| = 1 für alle q und a.
Ursprünglicher Formalismus Alternativer Formalismus
δ : Q × Σ → 2Q δ ⊆ Q × Σ × Q (dreistellige Relation)
q ′ ∈ δ(q, a) (q, a, q ′ ) ∈ δ
20
2.3. NICHTDETERMINISTISCHE ENDLICHE AUTOMATEN
Konstruktion eines äquivalenten DEA A′ = (Q′ , Σ, δ ′ , q0′ , F ′ ) zu einem gegebenen NEA A = (Q, Σ, δ, q0 , F )
(Potenzmengenkonstruktion)
Q′ = 2 Q q0′ == {q0 }
δ ′ : Q′ × Σ →
SQ
′
F ′ = {q ′ ∈ Q|q ′ ∩ F 6= ∅}
′ ′
δ (q , a) = δ(q, a)
q∈q′
→ q0 1 q3
1
0
0
q7 q4
1
0
0
1
q6 q5
1
0
L = {Wörter, deren 4-letzter Buchstabe eine 1 ist}
0,1
1 0,1 0,1 0,1
→ q0 q1 q2 q3 q4
21
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
Satz: Zu jedem regulären Ausdruck S, gibt es einen NEA A mit ε-Übergängen und einem einzigen akzep-
tierenden Zustand mit L(A) = L(S)
S=a∈Σ → a
S=∅ →
S=ε → ε
A1
S = S1 + S2 → ε
ε
ε
ε
L(A) = L(A1 ) ∪ L(A2 )
A2
ε
S = (S1 )∗ → A1 L(A) = L(A1 )∗
Potenzmengenkonstruktion
0
→ q1 ε, 1 q2
ε, 0
ε
1 0 1 q5
ε, 0
0
q3 1 q4
0
22
2.5. MINIMIERUNG DETERMINISTISCHER ENDLICHER AUTOMATEN
while !isEmpty(Q)
entferne einen Zustand r aus Q
forall s aus delta(r, epsilon):
if !(s aus R) then
R := R + {s}
Q := Q + {s}
→ q0 ε q1
ε
ε
q4
ε
q2 q3
[
δ ′ (q, a) = δ(r, a)
r∈Rε (q)
1
1
0
e 1 f 1 g 0 h
0
1
23
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
0
1 1
0
e 1 f 1 g 0 h
0
1
0
2. Zusammenfassen von äquivalenten Zuständen. Zwei Zustände heißen äquivalent, wenn es keine Rolle spielt,
in welchem der beiden Zustände man ist.
def
q ≡ r ⇐⇒ ∀x ∈ Σ∗ ; δ(q, x) ∈ F ⇔ δ(r, x) ∈ F
q 6≡ r ⇐⇒ ∃x ∈ Σ∗ ; δ(q, x) ∈ F ⊕ δ(r, x) ∈ F
(XOR)
| {z }
(∗)
Der Algorithmus beginnt mit einer ganz groben Klasseneinteilung in zwei Klassen Q = F ∪ (Q − F ). Diese
Klasseneinteilung wird nach und nach verfeinert, wenn sich herrausstellt, dass Zustände in der gleichen
Klasse nicht äquivalent sind.
Invariante: Wenn q und r nicht in derselben Klasse sind, dann gilt (∗):
∃x ∈ Σ∗ : (δ(q, x) ∈ F ∧ δ(r, y) ∈
/ F ) ∨ (δ(q, x) ∈
/ F ∧ δ(r, x) ∈ F )
Beispiel: Q = {a} ∪ {b, c, e, f, g, h} = K1 ∪ K2
δ(b, 0) = g ∈ K2
δ(c, 0) = a ∈ K1
δ(e, 0) = h ∈ K2
δ(f, 0) = c ∈ K2
δ(g, 0) = g ∈ K2
δ(h, 0) = g ∈ K2
⇒ c unterscheidet sich vom Rest, da δ(c, 0) ∈ K1 ∧ δ({b, e, f, g, h}, 0)
Zerlege K2 = A ∪ B, je nachdem in welche (bisherige) Klasse δ(q, 0) ist
K2 = {c} ∪ {b, e, f, g, h}
neue Klasseneinteilung: Q = {a} ∪ {c} ∪ {b, e, f, g, h}
K1 K2 K3
δ(b, 0) ∈ K3
δ(e, 0) ∈ K3
δ(f, 0) ∈ K2
δ(g, 0) ∈ K3
δ(h, 0) ∈ K3
Zerlege K3 = {f } ∪ {b, e, g, h}
Neue Zerlegung: Q = {a} ∪ {c} ∪ {f } ∪ {b, e, g, h}
K1 K2 K3 K4
δ(b, 0) ∈ K4
δ(e, 0) ∈ K4
δ(g, 0) ∈ K4
δ(h, 0) ∈ K4
24
2.5. MINIMIERUNG DETERMINISTISCHER ENDLICHER AUTOMATEN
δ(b, 1) = c ∈ K2
δ(e, 1) = f ∈ K3
δ(g, 1) = e ∈ K4
δ(h, 1) = c ∈ K2
δ(b, 0) ∈ K6
δ(h, 0) ∈ K6
δ(b, 1) ∈ K3
δ(h, 1) ∈ K3
0
0
0
e 1 f 1 g
0
1
a 6≡ c wenn x = ε
h 6≡ g weil δ(h, 1) = c, δ(g, 1) = e und c 6≡ e
c 6≡ e weil δ(c, 0) = a, δ(e, 0) = h und h 6≡ a
h 6≡ a weil h ∈
/ F, a ∈ F
h 6≡ g weil δ(h, 10) ∈ F, δ(g, 10) ∈
/F
K1 = F
K2 = Q − F
Q = K1 ∪ K2 ∪ ... ∪ Kj
Solange es zwei Zustände q, r in derselben Klasse Ki gibt und einen Buckstaben a ∈ Σ mit:
Satz: Zu jedem DEA (zu jeder regulären Sprache) gibt es einen eindeutig bestimmten (eindeutig bis auf
Bennenung der Zustände) Minimalautomaten, der die gleiche Sprache akzeptiert.
• Dieser hat unter allen äquivalenten DEA’s die kleinste Anzahl von Zuständen.
• Der Minimalautomat kann in O(|Q|2 · |Σ|) Schritten berechnet werden.
25
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
[l]Q = {q1 , q2 , q3 } ∪ {q4 , q7 } ∪ {q5 } ∪{q6 }
δ(q1 , 0) δ(q1 , 1) ein Verfeinerungsschritt O(|Q| · |Σ|)
δ(q2 , 0) in der selben Klasse? δ(q2 , 1) ?
δ(q3 , 0) δ(q3 , 1)
Man kann höchstens (|Q| − 1)-mal verfeinern
Zusätzlich: Verwalten der Kalssen Einteilung
q1 1
q2 1
q3 1
q4 2
q5 3
q6 4
q7 2
Diese Relation ist eine Äquivalenzrelation. Daher können wir die Äquivalenzklassen [u]L = {v ∈ Σ∗ | v ≡L u}
bilden.
Folgerung: ≡L hat höchstens |Q| Äquivalnzklassen. Jeder DEA hat mindestens so viele Zustände, wie ≡L
Äquivalenzklassen hat.
Beispiel:
L = {x ∈ {0, 1}∗ | k-letzter Buchstabe ist eine 1, |x| ≥ k}
= Σ∗ · 1 · Σk−1
Behauptung: u, v ∈ Σk , u 6= v u 6≡L v
⇒ ≡L hat mindestens 2k Äquivalenzklassen.
x
u = 1000100100000 ∈
/L
v = 1000110100000 ∈ L
Beweis der Behauptung: u 6= v unterscheiden sich in der i-ten Position, o. B. d. A. u hat dort eine 0, v
hat dort eine 1.
Für x = 0i−1 ux ∈
/ L, vx ∈ L
26
2.6. DAS PUMPING-LEMMA FÜR REGULÄRE SPRACHEN
Beweis: ⇐“
”
[u1 ]L [u2 ]L , ..., [uk ]L seine Äquivalenzklassen von ≡L
Q = {[u1 ]L [u2 ]L , ..., [uk ]L }
Σ
δ([ui ]L , a) = [ui a]L
q0 = [ε]L
F = {[ui ]L | ui ∈ L}
zu zeigen:
1) Dieser Automat ist wohldefiniert :
Das Ergebnis von δ, die Menge F hängt nicht davon ab, welcher Representant ui aus der Äquivalenz-
klasse [ui ]L gewählt wird.
δ: v ≡ ui ([v]L = [ui ]L ) ⇒ [va]L = [ui a]L ⇔ va ≡L ui a
v ≡L ui , a ∈ Σ ⇒ va ≡L ui a
def ∀x ∈ Σ∗ : vax ∈ L ⇔ ui ax ∈ L
∀y ∈ Σ∗ : vy ∈ L ⇔ ui y ∈ L ↑ y = a · x
In Worten: In einer rgulären Sprache hat jedes genügend lange Wort eine Stelle, an der man pumpen“ kann.
”
Das Lemma wird in der Regel dazu verwendet, um zu zeigen, dass eine Sprache nicht regulär ist.
Beispiel: L = {0n 1n | n ≥ 1} nicht regulär.
Annahme: L wäre regulär ⇒ Pumping-Lemma ist anwendbar
∃n0 : Wähle x = 0n0 1n0
∃x = uvw, v 6= ε, sodass ∀i: uv i w ∈ L
Fall 1: v enthält nur Einsen uv 0 w enthält weniger Einsen als Nullen.
⇒∈/ L Widerspruch
00001 11 |{z}
| {z } |{z} 1
u v w
00001|1 i=0
00001111 i=1
00001 1111
| {z } 1 i=2
v2
..
. ∈L
27
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
> n20
+
+
+
+
+
+
+
+
+
+
+
Es gibt ein Wort uv i w, dessen Länge (n20 )2 < |uv i w| < (n20 + 1)2 ist. ⇒ Widerspruch
Beweis: L sei regulär (L ∈ L3 ), A... DEA mit L(A) = L
n0 := |Q|
|x| ≥ 0
x = x1 x2 ....xn
q0
u
q0 q′
v
28
2.7. ABSCHLUSSEIGENSCHAFTEN REGULÄRER SPRACHEN
u = x1 ...xi
v = xi+1 ...xj 6= ε
w = xj+1 ...xn
i
uvw) ∈ F
∀i ≥ 0: δ(q0 , uv w) = δ(q0 , |{z}
x
2
L = {01} n0 = 3 L = {0i 1j | i ≥ 0, j ≥ 0}
0 1
⊲ q0 ·
29
KAPITEL 2. REGULÄRE SPRACHEN UND ENDLICHE AUTOMATEN
Beispiel: L = (01)∗
σ(0) = {a}
σ(1) = {b, c}
σ(L) = {ababab, ababac, ac, abacacab, ε, ...} = (a(b + c))∗
——
σ(0) = a
σ(1) = ab∗ b
σ(L) = {aabbbbbaabaabbbb, ...} = σ(a(ab∗ b))∗ = (aab∗ b)∗
Satz: L ⊆ Σ∗ regulär
σ(a), a ∈ Σ seien regulär ⇒ σ(L) regulär
Spezialfall: |σ(a)| = 1... Homomorphismus.
Beweis: requläre Ausdrücke
R: regulärer Ausdruck für L, Ra regulärer Ausdruck für σ(a), a ∈ Σ
Ersetze in R jedes Vorkommen eines Buchstaben a ∈ Σ durch Ra
• inverse Homomorphismen
h : Σ∗ → Γ∗ Homomorphismus
Satz:
(L ⊆ Γ∗ ) ∈ L3 ⇒ h−1 := {x ∈ Σ∗ | h(x) ∈ L} ∈ L3
Beispiel: h(a) = 0
h(b) = 10
abaab
Beweis: DEA A = (Q, Γ, δ, q0 , F )
1
a, b
⊲ 0
b
0, 1 a 1 b 0a
b
0
a b
neuer DEA A′ = (Q, Σ, δ ′ , q0 , F )
δ ′ (q, x) = δ(q, h(x)), x ∈ Σ
30
3 Grammatiken
3.1 Definition von Grammatiken
Beispiel: in Programmiersprachen; arithmetische Ausdücke:
• Zahlen und Variablen sind arithmetische Ausdrücke
• wenn A und B arithmetische Ausdrücke, dann sind auch A + B, A − B, A ∗ B, A/B, (A) arithmetische
Ausdrücke
S → V, S → Z, S → (S) S, → S + S,
S → S − S, S → S ∗ S, S → S/S,
Z → U, Z → U,
U → 0, U → 1, ..., U →9
⇒U → 0|1|...|9
B → B, V ′ → V ′ B, V ′ → V ′U
B → a, B → b, B → c, ...
⇒B → a|b|c|...
Definition: Die von einer Grammatik G = (V, Σ, P, S) beschriebene Spache L(G) ist
∗
L(G) = {x ∈ Σ∗ | S → x}
31
KAPITEL 3. GRAMMATIKEN
D. h. die Konklusionen der Regeln sind mindestest so lang wie die Prämissen.
• Typ-2-Grammatiken: kontextfreie Grammatiken
P ⊆ V × (Σ ∪ V )∗
P ⊆ V × (ΣV ∪ {ε})
Beispiel:
S → aT |bS
T → +V
T →ε
Die beschriebenen Sprachen dieser Grammatiken entsprechen den regulären Sprachen (es gibt auch linkslin-
eare Grammatiken)
Entsprechend gibt es Typ-0-Sprachen, Typ-1-Sprachen, ...
L0 , L1 , L2 , L3 seien die Typ-0-Sprachen, Typ-1-Sprachen, ...
trivial
L3 ⊂ L2 ⊂ L1 ⊂ L0
regulär 6= kontextfrei 6= kontextsensitiv 6= rekursiv aufzählbar
Produktionen P :
δ(q, a) = (q ′ , b, 0) ⇒ q ′ Vb → qVa
δ(q, a) = (q ′ , b, +1) ⇒ Vb q ′ → qVa
δ(q, a) = (q ′ , b, −1) ⇒ q ′ Vc Vb → Vc qVa , ∀c ∈ Γ
32
3.4. TYP-3-SPRACHEN (REGULÄRE SPRACHEN)
Anfangsregeln: Erzeuge eine beliebige Konfiguration mit einem akzeptierenden Zustand und genügend
vielen B-Symbolen rechts und links.
S → $T #
T → T Va |Va T, ∀a ∈ Γ
T → q, ∀q ∈ F
VB # → #, #→ε
$VB → $, $q0 → ε
Vx → x, x∈Σ
Jede akzeptierende Berechnung für w ∈ Σ∗ kann in eine Ableitung von w transformiert werden.
Jede Ableitung eines Wortes x entspricht einer akzeptierenden Berechnung.
S → aT |bS V = {S, T }
T → bT |bS|aS|ε Σ = {a, b}
P = {q → aq ′ | q ∈ Q, a ∈ Σ, q ′ = δ(q, a)} ∪ {q → ε | q ∈ F }
q′ ∈δ(q,a)
S = q0
⇒“ Gegeben: G = (V, Σ, P, S)
”
Gesucht: NEA A mit L(A) = L(G)
A: Q=V
Σ=Σ
δ(q, a) = {q ′ | (q → aq ′ ) ∈ P }
F = {q ∈ V | (q → ε) ∈ P }
q0 = S Zustände des Automaten entsprechen den Variablen der Grammatik.
Berechnungen des Automaten werden durch Ableitungen der Grammatik dargestellt und umgekehrt.
L = {0n 1n |n ≥ 0} ist keine Typ-3-Sprache, aber sie ist eine Typ-2-Sprache
G: S → 0S1|ε
33
KAPITEL 3. GRAMMATIKEN
T → V0 V1 U U V1 → V1 U U V0 → W V0 V0 |00 V1 W → W V1 V0 W → V0 T
V0 → 0 V1 → 1 V1 W → W V1 U 1 → 1U U V1 → V1 U
∗
S → 0T 10 → 001U10
∗
→ 0011U0 → 0011W 00
∗
→ 00W 1100 → 00T 1100
∗ ∗
→ 000W 111000 → 00001111U000
→ 000011110000
L(G) = {0n 1n 0n | n ≥ 0}
Bemerkung: Man kann die Regeln einer kontextsensitiven Grammatik in die Form bringen, dass immer nur
eine einzelne Variable durch etwas Neues ersetzt wird.
z. B. ABA A → ABAA01DA
| {z } C |{z}
Kontext Kontext
ABC → X1 BC X1 X2 X3 → BX2 X3
X1 BC → X1 X2 C BX2 X3 → BAX3
X1 X2 C → X1 X2 X3 BAX3 → BAD
|x|
P
|M | ≤ (|Σ| + |V |)i endlich. Daher muss die Schleife irgendwann terminieren
i=1
x ∈ L(G) ⇔ x ∈ M
34
4 Kontextfreie Sprachen (Typ-2-Sprachen)
4.1 Tiefenstruktur von Sprachen
Das Wetter war gestern regnerisch.
Satz
Subjektgruppe Prädikatgruppe
4.2 Dyck-Sprache
D1 S → SS | (S) | ε
∗
S → SS → (S)S → (SS)S → ((S)S)S → (()S)S → (()(S))S → (()())S → (()())((S)) → (()())(()) ∈ D1
())(() ∈
/ D1
Klammertiefe:
Dyck-Weg
b b b
b b b b b
b b
( ( ) ( ) ) ( ( ) )
Definition: Der Weg mit n Schritten nach oben ր und n Schritten nach unten ց, der oberhalb der x-Achse
bleibt wird Dyck-Weg genannt.
35
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
D2 S → SS | (S) | [S] | ε
⇒ ([()()])[] ∈ D2
a
b
b
b
ab
a
b
b
b
b
b
a
b
b
b
b
b
a
b
a
b
b
b
b b
S → SS|ε|aP b|bN a
P → P P |aP b|ε
N → N N |bN a|ε
VS = VS · VS ∪ {ε} ∪ a · Vp · b ∪ b · Vn · a
VP = VP · VP ∪ a · VP · b ∪ {ε}
VN = VN · VN ∪ b · VN · a ∪ {ε}
S S
( S ) ( S )
S S ( S )
( S ) ( S ) ε
ε ε
36
4.4. EINDEUTIGKEIT
∗
Rechtsableitung: S → SS → S(S) → S((S)) → S (()) → (S)(()) → (SS)(()) → (()())(()) entspricht der
bottom-up-Syntaxanalyse
∗
Linksableitung: S → SS → (S)S → (SS)S → ((S)S)S → (()S)S → (()(S))S → (()())S → (()())((S)) →
(()())(()) entspricht der top-down-Syntaxanalyse
Die Beliebigkeit bei der Auswahl, welche Variable be einer Ableitung als nächstes ersetzt wird, kann auf drei
Arten aus der Welt geschafft werden:
1. Linksableitung: Es wird immer die linkeste Variable ersetzt
2. Rechtsableitung: Es wird immer die rechteste Variable ersetzt
3. Syntaxbaum: Wurzel = S, Kinder einses Variablenknotens sind die Symbole auf der rechten Seite einer
Regel in der passenden Reihenfolge, Blätter sind Terminalsymbole, dargestelltes Wort wird durch die Folge
der Blätter gegeben.
()()() kann durch 2 verschiedene Syntaxbäume / Linksableitungen / Rechtsableitungen dargestellt werden.
S S
( S ) S S
ε ( S ) ( S )
ε ε
S
S S
S S ( S )
( S ) ( S ) ε
ε ε
anders arithmetische Ausdrücke (am Beispiel 3 − 5 + 5):
S S
S + 5 3 - S
3 - 4 4 + 5
4.4 Eindeutigkeit
Definition: Eine kontextfreie Sprache ist eindeutig, wenn jedes Wort eine eindeutige Linksableitung / eine
eideutige Rechtsableitung / einen eindeutigen Syntaxbaum hat.
Beispiel: S → if B then S | if B then S else S | while ... | ...
37
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
S → A|T
A → if B then S | if B then T else A
T → if B then T else T | while ... | andere Anweisungen...
4.5 Chomsky-Normalform
Definition: Eine kontextfreie Grammatik ist in Chomsky-Normalform (CNF), wenn jede Regel lediglich folgende
Gestalt haben:
1. A → BC, A, B, C ∈ V
2. A → b, A ∈ V, b ∈ Σ
Ausnahme: Die Regel S → ε ist erlaubt, aber S darf nie auf der rechten Seite einer Regel vorkommen.
S → (S)... S → V( SV)
V( → (
V) →)
2. Zerlegung von Regeln mit mehr als 2 Variablen auf der rechten Seite
• Einführen von zusätzlichen Zwischenvariablen in mehreren Schritten
Beispiel:
A → BAAS... A → BSV1
V1 → AV2
V2 → AS
38
4.5. CHOMSKY-NORMALFORM
U →VW | V | W | ε
V →W | VV | ε | V
A→U | VV | ε | V
(B → AU BV | ABV | AU B | AB | BV | U B | B)
↓ ↓
ε ε
U →VW U →W
∗
• M wird initialisiert mit den Variablen A für die es eine Regel A → ε gibt.
∗
• Durch das Aufstellen neuer verkürzter Regeln können neue Regeln der Form A → ε entstehen.
• Die entsprechende Variablen werden dann zu M hinzugefügt.
• Erstelle für jede Variable A aus M eine neue Variable A′ .
• Auf der rechten Seite aller Regeln wird wird jede diese Variablen A durch A′ ersetzt.
• Die Regeln für A’ sind dieselben wie für A, nur die ε-Regel wird gestrichen.
Am Beispiel:
U → V ′W ′ | V ′ | W ′ | ε
U ′ → V ′W ′ | V ′ | W ′
V → W ′ | V ′V ′ | V ′ | ε
V ′ → W ′ | V ′V ′ | V ′
..
.
A B D
C E
In einer Ableitung kann eine Kette von Anwendungen derartiger REgeln vorkommen.
AB
A→B→C→A→B→B→C→A→B→C →D
a
(U V A U U → U V BU U → ........ → U V DU U )
B→V A
39
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
D → AB VD = {A, B, C, D, E}
A → AB, B → AB, C → AB, (D → AB), E → AB
Die Menge VA können durch umgekehrte Graphensuche bestimmt werden: Suche alle Variablen
X, von denen aus A erreichbar ist.
∗
Vij := {X ∈ V | X → si si+1 ...sj } (1 ≤ i ≤ j ≤ n)... Teilprobleme s1 s2 ... si ...sj ...sn
s ∈ L(G) ⇔ s ∈ V1n
Vii = {X | (X → si ) ∈ P }
Vij = {X | ∃(X → BC) ∈ P, ∃k: i ≤ k ≤ j: B ∈ Vik ∧ C ∈ Vk+1,j }
vorher berechnet
Σ = {0, 1, +}
S → 0 | SP
P → MS | +
M → 0 | 1 | PP
i, j 1 2 3 4 5
1 M, S S − − −
2 P − − −
3 M − −
4 P −
5 M, S
40
4.7. (ERWEITERTE) BACKUS-NAUR-FORM (E)BNF
S P
S P M S
0 + P P 0
+ +
s=0+++0
i, j 1 2 3 4 5
1 M, S S S S S
2 P M − M
0
3 P M P
+
4 P −
+
5 M, S
+
[
i < j: Vij = {X | ∃(X → BC) ∈ P : B ∈ Vik ∧ C ∈ Vk+1,j }
k=i,i+1,...,j−1
Laufzeit: Es müssen höchstens n2 Mengen Vij berechnet werden. Jede Berechnung ist eine Schleife über
höchstens n Werte k. ⇒ O(n3 )
harithmetischer
| {z Ausdruck}i ::= hTermi {hAdditionsoperatorihTermi}
Variable der Grammatik
↑
→
hAdditonsoperatori ::= + | −
Terminalsymbol oder“ Terminalsymbol
”
hTermi ::= hFaktori {hMultiplikationsoperatorihFaktori}
hMultiplikationsoperatori ::= ∗ | /
hFaktori ::= hZahli | hVariablei | (hArithmetischer Ausdrucki | hFunltionsaufrufi)
hFunktionsaufrufi ::= hNamei() | hNamei (hArgumentlistei)
hArgumentlistei ::= hArgumenti {, hArgumenti}
::= | { } [ ] h i
| {z }
Metasymbole
41
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
{ } [ ] müssen bei der Übersetzung in eine kontextfreie Grammatik aufgelöst werden, durch Einführen von
neuen Variablen und zusätzlichen Regeln.
{abc} ↔ (abc)∗
[abc] ↔ (abc + ε)
| {z }
als regulärer Ausdruck
|↔+
z v
Beispiel: L = {0n 1n | n ∈ N}
Annahme: L sein kontextfrei ⇒ n0
x = 0n0 1n0 0n0 = yzuvw
yz i uv i w...mindestens ein Block ändert seine Länge, mindestens ein Block ändert seine Länge nicht.
⇒yz i uv i w ∈
/ L für i 6= 1
1 S
2 X X
3 X X X X
4 a X X b c
0 1
42
4.9. ABSCHLUSSEIGENSCHAFTEN KONTEXTFREIER SPRACHEN
Wenn |x| > 2h−2 , dann gibt es einen Weg von der Wurzel, der h Variablenknoten enthält
h := |V | + 1
S
n := 2|V |−1 + 1 funktioniert
T2 ⊂ T1
T2
A
y z u v w
∗
S → yAw
∗
T1 : A → zAv (zv 6= ε)
∗
T2 : A → u
∗ ∗ ∗
S → yAw→yzAvw → yzuvw
Folgerung: Die Chomsky-Hierarchie ist echt: L0 , L1 , L2 , L3 seien die Typ-0-Sprachen, Typ-1-Sprachen, ...
L3 ⊂ L2 ⊂ L1 ⊂ L0
regulär 6= kontextfrei 6= kontextsensitiv 6= rekursiv aufzählbar
43
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
• Menge M : Initialisiere M := {A ∈ V | (A → x) ∈ P }
• Initialisiere M2 := {S}
• Wenn es eine Regel A → BC mit A ∈ M2 gibt, dann setze M2 = M2 ∪ {B, C}.
• Wiederhole, bis M3 sich stabilisiert.
• Streiche Variablen in V − M2 . Das Ergebnis ist eine Grammatik ohne Überflüssige Variablen.
4.11 Kellerautomaten
Typ-0-Sprachen ⇐⇒ Turingmaschinen
(Typ-1-Sprachen ∼ Turingmaschinen mit linearem Platzbedarf)
Typ-2-Sprachen ⇐⇒ Kellerautomaten
Typ-3-Sprachen ⇐⇒ endliche Automaten
Linksableitung:
S → ABC → bAABC → bbAAABC → bbAABC → bb B BSBC
| {z }
44
4.11. KELLERAUTOMATEN
(q ′ , z) ∈ δ(q, a, γ) bedeutet: Wenn der PDA im Zustand q ist, as obere Kellersymbol γ ist, und er den Buchstaben
a liest (bzw. nichts liest, falls a = ε ist), dann kann er in den Zustand q ′ wechseln und die Spitze des Kellers
durch z ersetzen (z = ε: Das oberste Symbol γ wird gelöscht).
Definition: Eine Konfiguration eines Kellerautomaten ist ein Tripel (q, w1 ...wm , z) mit
• q ∈ Q... augenblicklicher Zustand,
• w1 ...wn ∈ Σ∗ ... noch nicht gelesener Teil des Eingabewortes und
• z ∈ Γ∗ ... Inhalt des Stapels (Spitze ist links.)
Beispiel:
(a) ⊢ (q1 , ε, ε)
(q0 , 01#10, Z0 ) ⊢ (q0 , 1#10, 0Z0 ) ⊢ (q0 , #10, 10Z0 ) ⊢ (q1 , 10, 10Z0 ) ⊢ (q1 , 0, 0Z0 ) ⊢ (q1 , ε, Z0 )
(b) ⊢ (q2 , ε, Z0 )
45
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
(q0 , 0110, Z0) ⊢ (q0 , 110, 0Z0) ⊢ (q0 , 10, 10Z0) ⊢ (q1 , 10, 10Z0) ⊢ ...weiter wie bisher ⊢ (q0 , 0110, Z0)
⊢ (q0 , 110, 0Z0) ⊢ (q1 , 110, 0Z0 ) STOP.
Satz: Die PDAs, die nach (a) und nach (b) akzeptieren, akzeptieren dieselbe Klasse von Sprachen.
Beweis: ⇒“ Seien M = (Q, Σ, Γ, q0 , Z0 , δ) ein PDA, der mit leerm Keller akzeptiert, und
” ′
M = (Q ∪ {qF , q0′ }, Σ, Γ ∪ {Z0′ }, q0′ , Z0′ , δ ′ , F = {qF }) ein PDA, der nach b) akzeptiert
δ ′ (q0′ , ε, Z0′ ) = {(q0 , Z0 Z0′ )} δ ′ (q, ε, Z0′ ) = {(qF , ε)}
neuer Automat M ′ :
• fügt ein zusätzliches unterestes Kellersymbol ein. Wenn M in einem akzeptierenden Zustand
übergehen, wo der Keller geleert wird, ohne die Eingabe gelesen wird.
• Das zusätzliche Kellersymbol stellt sicher, dass M ′ nicht nur deshalb akzeptiert, weil M den
Keller leert.
Satz: Die kontextfreien Sprachen sind genau die Sprachen, die von Kellerautomaten akzeptiert werden.
Beweis: ⇒“ Wir nehmen an, die Grammatik ist in CNF.
”
• Σ, Γ = V, Z0 = S, {q0 }, Automat akzeptiert mit leerem Keller.
• Für jede Regel A → B1 B2 ...Bk füge (q0 , B1 ...Bk ) ∈ δ(q0 , ǫ, A) ein.
• Für jede Regel A → u ∈ Σ füge (q0 , ε) ∈ δ(q0 , u, A) ein.
δ(q0 , ε, A) := {(q0 , B1 ...Bk ) | (A → B1 ...Bk ∈ V ∗ ) ∈ P }
δ(q0 , u, A) := {(q0 , ε) | (A → u) ∈ P }, u ∈ Σ
Der Kellerautomat kann nun genau die Linksableitung der Grammatik nachbilden.
S → ABC → uBC → uAAC → uAC → uvC → uvBC → uvuC → uvuv
m
(q0 , uvuv, S) ⊢ (q0 , uvuv, ABC) ⊢ (q0 , vuv, BC) ⊢ (q0 , vuv, AAC) ⊢ ...
⇐“ Gegeben: Kellerautomat, akzeptiert durch F ⊆ Q von akzeptierenden Zuständen.
”
Gesucht: Grammatik G.
46
4.11. KELLERAUTOMATEN
∗
Idee: S → w1 w2 ...wk (q1 , Z1 , q2 )(q2 , Z2 , q3 )(q3 , Z3 , q4 )...(ql , Zl , ql+1 )
| {z }
das soll folgende Rechnung widerspiegeln
∗
(q0 , w1 ...wn , Z0 ) ⊢ (q1 , wk+1 ...wn , Z1 Z2 ...Zl ) (die ersten k Symbole sind gelesen.)
• qi>1 ist der Zustand, der in der weiteren Rechnung angenommen wird, sobald Zi als oberstes
Startsymbol erscheint.
• q2 , q3 , ... werden geraten.
Regeln: Für alle (q ′ , z ′ ) ∈ δ(q, a, z) mit |z ′ | ≥ 1, Z ′ = z1 z2 ...zl
(q, z, q̄) → a(q ′ , z1 , q1 )(q1 , z2 , q2 )...(ql−1 , zl , q̄), ∀q1 , q2 , ..., ql−1 , q̄ (a ∈ Σ ∪ {ε})
(q, z, q ′ ) → a
∗ ∗
Behauptung: (q, Z, q ′ ) → w ∈ Σ∗ ⇔ (q, w, Z) ⊢ (q ′ , ε, ε)
Der Automat hat w gelesen und sieht das erste Mal, was unter Z auf dem Stapel ist.
Beweis durch Induktion nach der Länge der Ableitung bzw. nach der Länge der Rechnung.
Beispiel: L = {wwT | w ∈ {0, 1}∗ } Q = {q0 , q1 }
(q0 , 0, q0 ) → (q1 , 0, q0 )
(q0 , 0, q1 ) → (q1 , 0, q1 )
(q1 , 1, q1 ) → 1
(q0 , 0110, Z0) ⊢ (q0 , 110, 0Z0) ⊢ (q0 , 10, 10Z0) ⊢ (q1 , 10, 10Z0) ⊢ (q1 , 0, 0Z0) ⊢ (q1 , ε, Z0 )
⊢ (q1 , ε, ε)
47
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
Bew.: M1 sei ein PDA für die kontextfreie Sprache L1 , der durch akzeptierende Zustände akzeptiert. A2 sei ein
DEA für L2 .
• PDA: M mit Q = Q1 × Q2
Bemerkung: Deterministisch kontextfreie Sprachen sind abgeschlossen unter Komplement, aber nicht unter
Umkehrung.
⇐⇒ K1 K2
K1 K2
Deterministische Zweiwege-Kellerautomaten können auf dem Eingabeband beliebig nach links uder nach rechts
fahren.
δ(q, a, z) = (q ′ , Z1 Z2 ...Zk , b), a ∈ Σ ∪ {%, $}, b ∈ {0, +1, −1}: Bewegung des Kopfes
Die Eingabe ist durch % und $ auf dem Eingabeband begrenzt.
Lesekopf
48
4.14. DETERMINISTISCHE ZWEIWEGE-KELLERAUTOMATEN
4.14.1 Teilwortproblem
Eingabe: x#y
Frage: Kommt das Muster x im Text y vor?
L = {x#uxv | x, u, v ∈ (Σ0 )∗ }
% x # $
..
.
• Kopiere y auf den Stapel, von rechts nach links
• Fahre zur ersten Position von x
• (A) Vergleiche die Symbole von x mit dem Sybol auf dem Stapel, die Symbole werden vom Stapel gelöscht.
• Wenn # gelesen wird → Teilwort vorhanden → akzeptiere
• Bei einem Konflikt fahre zurück zum Anfang und fülle den Stapel mit den Symbolen von x auf. Lösche
erstes Symbol des Stapels und gehe zu (A).
Satz: Jede Sprache, die von enem deterministischen Zweiwege-Kellerautomaten akzeptiert wird, kann in linearer
Zeit von einer Registermaschine (RAM) entschieden werden.
Folgerung: Teilwortproblem ist in linearer Zeit lösbar.
Beweis: Entladefunktion
Eingabe: %w1 ...wn $
↑ ↑ ... ↑
0 1 n+1
ent(q, Z, i) = (q ′ , j) q, q ′ ∈ Q, Z ∈ Γ, 0 ≤ i, j ≤ n + 1
Wenn der Automat im Zustand q an Position i ist, und das oberste Stapelsymbol Z ist, dann ist er zu
dem Zeitpunkt, wo das darunterliegende Stapelsymbol sichtbar wird, in Zustand q ′ und an Position j
e n t ( q, Z, i )
i f i n A r b e i t [ q, Z, i ] then STOP ; // Wort wir d n i c h t a k z e p t i e r t
i f ENT[ q, Z, i ] 6= 0 then
return ENT[ q, Z, i ]
i n A r b e i t [ q, Z, i ] := true
..
.
(q ′ , Z1 ...Zk , b) := δ(q, wi , Z)
j := i + b
for l := 1, 2, ..., k
(q ′ , j) := e n t ( q ′ , Zl , j )
ENT[ q, Z, i ] := (q, j)
i n A r b e i t [ q, Z, i ] := f a l s e
return ( q ’ , j )
Idee: Speichere die Werte der Entladefunktion in einem Feld ENT[q, Z, i] der Größe O(n) sobald sie berechnet
wurden (Initialisiere zu 0).
Die Technik heißt Tabellieren (engl. memorization)
Laufzeit: O(n) Jeder Eintrag von ENT wird höchstens einmal berechnet.
Problem: Bei rekursiven Aufrufen kann die Laufzeit ∞ sein. Während ent(q, z, i) aufgerufen ist, kann ein rekur-
siver Aufruf mit denselben Parametern (q, z, i) gestartet werden.
⇒ Algorithmus terminiert nicht.
⇒ Kellerautomat terminiert nicht, weil sich die Konfiguration (q, z, i) unendlich oft wiederholt. Der Stapel
wird dabei immer weiter wachsen oder konstant bleiben.
49
KAPITEL 4. KONTEXTFREIE SPRACHEN (TYP-2-SPRACHEN)
Durch ein Boolsches Feld inArbeit[q, z, i] (am Anfang false) wird endlose Rekursion vermieden.
Wir können annehmen, dass der Kellerautomat, wenn er ein Wort akzeptieren will, in einen akzeptierenden
Zustand geht und dann der Keller leert.
Wort wird akzeptiert ⇐⇒ ent(q0 , z0 , 1) = (q ′ , j) mit q ′ ∈ F
50