Skript Theoretische Informatik
Skript Theoretische Informatik
Theoretische Informatik
Sommersemester 2021
© T. Nipkow / H. Seidl / J. Esparza / J. Křetı́nský
Version vom 8. Juli 2021
0
Kapitel I Organisatorisches
Siehe https://www.in.tum.de/i07/lehre/ss21/theo/
1
Vorkenntnisse und weiterführende Vorlesungen
Vorkenntnisse:
Einführung in die Informatik 1
Diskrete Strukturen
Weiterführende Vorlesungen:
Automaten und formale Sprachen
Komplexitätstheorie
Logik
Model Checking
Compilerbau
...
2
Inhalt und Gliederung der Vorlesung
Endliche Automaten und reguläre Ausdrücke
Grundlagen der Textanalyse, der lexikalischen Analyse von
Programmiersprachen, und der Spezifikation und Analyse von
Kommunikationsprotokollen.
Kontextfreie Grammatiken
Grundlagen der syntaktischen Analyse von
Programmiersprachen, Parsing, Compilerbau.
Theorie der Berechenbarkeit
Untersuchung der Grenzen, was Rechner prinzipiell können.
Komplexitätstheorie
Untersuchung der Grenzen, was Rechner mit begrenzten
Ressourcen können.
3
Literatur
4
Kapitel II Formale Sprachen
1. Einleitung: Kommunikation mit Rechnern
5
Kapitel II Formale Sprachen
1. Einleitung: Kommunikation mit Rechnern
5
Abbildung: Gezeitenrechenmaschine im Deutschen Museum, gebaut
1935-39. (Quelle: Deutsches Museum)
34
X
Für die Berechnung von Funktionen der Gestalt f (t) = ai cos wi t
i=1
6
Abbildung: Alan Turings Artikel (1936), in dem er eine (abstrakte)
universelle Rechenmaschine beschreibt
7
Abbildung: Programmieren mit Lochkarten in den 1960er Jahre
8
In den 1950er setzt sich die Idee durch,
Programmiersprachen
für die Kommunikation mit Maschinen zu entwickeln.
Gleichzeitig entwickelt der Linguist Noam Chomsky eine neue
Theorie (Transformationgrammatik) der natürlichen Sprachen,
mit dem Ziel, die Mechanismen zu erklären, die Menschen
verwenden, um Sätze zu bauen.
Noam Chomsky.
Three Models for the Description of Language.
Transactions on Information Theory, 113-124, 1956.
Sein Begriff der formalen Grammatiken wird 1960 von dem
ALGOL 60 Kommittee übernommen
(ALGOL = ALGOrithmic Language)
Seitdem wird die Syntax von Programmiersprachen durch
formale Grammatiken beschrieben.
9
Noam Chomsky ist emeritierter Professor
für Linguistik am MIT, einer der weltweit
bekanntesten linken Intellektuellen und seit
den 1960er Jahren einer der prominentesten
Kritiker der US-amerikanischen Politik.
Chomsky gehört zu den bekanntesten
Linguisten der Gegenwart. Er übte durch
die Verbindung der Linguistik,
Kognitionswissenschaften und Informatik
besonders in der zweiten Hälfte des 20.
Jahrhunderts starken Einfluss auf deren
Entwicklung aus.
[Quelle: Wikipedia]
10
Beispiele von Regeln für den Bau von Sätzen:
11
Beispiele von Regeln für den Bau von Sätzen:
11
Das Erkennungsproblem: Ist eine gegebene Zeichenkette ein
Programm, d.h. kann sie von den Regeln erzeugt werden?
Recognizer: Programm, welches das Erkennungsproblem für
eine gegebene Grammatik löst.
Recognizer → Parser → Compiler
Hauptfragen:
Für welche Grammatiken gibt es effiziente Recognizer?
Gegeben eine Grammatik, wie kann ein Recognizer
automatisch konstruiert werden?
12
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
|w| bezeichnet die Länge eines Wortes w.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
|w| bezeichnet die Länge eines Wortes w.
Das leere Wort (das einzige Wort der Länge 0) wird mit
bezeichnet.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
|w| bezeichnet die Länge eines Wortes w.
Das leere Wort (das einzige Wort der Länge 0) wird mit
bezeichnet.
Sind u und v Wörter, so ist uv ihre Konkatenation.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
|w| bezeichnet die Länge eines Wortes w.
Das leere Wort (das einzige Wort der Länge 0) wird mit
bezeichnet.
Sind u und v Wörter, so ist uv ihre Konkatenation.
Ist w ein Wort, so ist wn definiert durch
w0 = und wn+1 = wwn . Bsp: (ab)3 = ababab.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
|w| bezeichnet die Länge eines Wortes w.
Das leere Wort (das einzige Wort der Länge 0) wird mit
bezeichnet.
Sind u und v Wörter, so ist uv ihre Konkatenation.
Ist w ein Wort, so ist wn definiert durch
w0 = und wn+1 = wwn . Bsp: (ab)3 = ababab.
Σ∗ ist die Menge aller Wörter über Σ.
13
2. Grundbegriffe
Definition 2.1
Ein Alphabet Σ ist eine endliche Menge.
Bsp: {0, 1}, ASCII, Unicode.
Ein Wort/String über Σ is eine endliche Folge von Zeichen
aus Σ, zB 010.
|w| bezeichnet die Länge eines Wortes w.
Das leere Wort (das einzige Wort der Länge 0) wird mit
bezeichnet.
Sind u und v Wörter, so ist uv ihre Konkatenation.
Ist w ein Wort, so ist wn definiert durch
w0 = und wn+1 = wwn . Bsp: (ab)3 = ababab.
Σ∗ ist die Menge aller Wörter über Σ.
Eine Teilmenge L ⊆ Σ∗ ist eine (formale) Sprache.
13
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
L1 = {, ab, abab, ababab, . . .} = {(ab)n | n ∈ N}
(Σ1 = {a, b})
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
L1 = {, ab, abab, ababab, . . .} = {(ab)n | n ∈ N}
(Σ1 = {a, b})
L2 = {, ab, aabb, aaabbb, . . .} = {an bn | n ∈ N}
(Σ2 = {a, b})
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
L1 = {, ab, abab, ababab, . . .} = {(ab)n | n ∈ N}
(Σ1 = {a, b})
L2 = {, ab, aabb, aaabbb, . . .} = {an bn | n ∈ N}
(Σ2 = {a, b})
L3 = {, 1, 100, 1001, 10000, . . .} =
{w ∈ {0, 1}∗ | w ist eine binär kodierte Quadratzahl}
(Σ3 = {0, 1})
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
L1 = {, ab, abab, ababab, . . .} = {(ab)n | n ∈ N}
(Σ1 = {a, b})
L2 = {, ab, aabb, aaabbb, . . .} = {an bn | n ∈ N}
(Σ2 = {a, b})
L3 = {, 1, 100, 1001, 10000, . . .} =
{w ∈ {0, 1}∗ | w ist eine binär kodierte Quadratzahl}
(Σ3 = {0, 1})
∅
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
L1 = {, ab, abab, ababab, . . .} = {(ab)n | n ∈ N}
(Σ1 = {a, b})
L2 = {, ab, aabb, aaabbb, . . .} = {an bn | n ∈ N}
(Σ2 = {a, b})
L3 = {, 1, 100, 1001, 10000, . . .} =
{w ∈ {0, 1}∗ | w ist eine binär kodierte Quadratzahl}
(Σ3 = {0, 1})
∅
{}
14
Beispiel 2.2 (Formale Sprachen)
Die Menge aller Wörter im Duden (24. Aufl.)
Die Menge der deutschen Sätze ist keine formale Sprache
L1 = {, ab, abab, ababab, . . .} = {(ab)n | n ∈ N}
(Σ1 = {a, b})
L2 = {, ab, aabb, aaabbb, . . .} = {an bn | n ∈ N}
(Σ2 = {a, b})
L3 = {, 1, 100, 1001, 10000, . . .} =
{w ∈ {0, 1}∗ | w ist eine binär kodierte Quadratzahl}
(Σ3 = {0, 1})
∅
{}
ist keine Sprache
14
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb,
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
An = {w1 . . . wn | w1 , . . . , wn ∈ A} = A
| ·{z
· · A} Bsp:
n
{ab, ba}2 = {abab, abba, baab, baba}
Rekursiv: A0 = {} und An+1 = AAn
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
An = {w1 . . . wn | w1 , . . . , wn ∈ A} = A
| ·{z
· · A} Bsp:
n
{ab, ba}2 = {abab, abba, baab, baba}
Rekursiv: A0 = {} und An+1 = AAn
A∗ = {w1 . . . wn | n ≥ 0 ∧ w1 , . . . , wn ∈ A} = n
S
n∈N A
Bsp: {01}∗ = {, 01, 0101, 010101, . . . }
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
An = {w1 . . . wn | w1 , . . . , wn ∈ A} = A
| ·{z
· · A} Bsp:
n
{ab, ba}2 = {abab, abba, baab, baba}
Rekursiv: A0 = {} und An+1 = AAn
A∗ = {w1 . . . wn | n ≥ 0 ∧ w1 , . . . , wn ∈ A} = n∈N An
S
Bsp: {01}∗ = {, 01, 0101, 010101, . . . } 6= {0, 1}∗
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
An = {w1 . . . wn | w1 , . . . , wn ∈ A} = A
| ·{z
· · A} Bsp:
n
{ab, ba}2 = {abab, abba, baab, baba}
Rekursiv: A0 = {} und An+1 = AAn
A∗ = {w1 . . . wn | n ≥ 0 ∧ w1 , . . . , wn ∈ A} = n∈N An
S
Bsp: {01}∗ = {, 01, 0101, 010101, . . . } 6= {0, 1}∗
A+ = AA∗ = n≥1 An
S
Bsp: Σ+ = Menge aller nicht-leeren Wörter über Σ
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
An = {w1 . . . wn | w1 , . . . , wn ∈ A} = A
| ·{z
· · A} Bsp:
n
{ab, ba}2 = {abab, abba, baab, baba}
Rekursiv: A0 = {} und An+1 = AAn
A∗ = {w1 . . . wn | n ≥ 0 ∧ w1 , . . . , wn ∈ A} = n∈N An
S
Bsp: {01}∗ = {, 01, 0101, 010101, . . . } 6= {0, 1}∗
A+ = AA∗ = n≥1 An
S
Bsp: Σ+ = Menge aller nicht-leeren Wörter über Σ
Achtung:
Für alle A: ∈ A∗
∅∗ =
15
Definition 2.3 (Operationen auf Sprachen)
Seien A, B ⊆ Σ∗ .
Konkatenation: AB = {uv | u ∈ A ∧ v ∈ B}
Bsp: {ab, b}{a, bb} = {aba, abbb, ba, bbb}
NB: {ab, b} × {a, bb} = {(ab, a), (ab, bb), (b, a), (b, bb)}
An = {w1 . . . wn | w1 , . . . , wn ∈ A} = A
| ·{z
· · A} Bsp:
n
{ab, ba}2 = {abab, abba, baab, baba}
Rekursiv: A0 = {} und An+1 = AAn
A∗ = {w1 . . . wn | n ≥ 0 ∧ w1 , . . . , wn ∈ A} = n∈N An
S
Bsp: {01}∗ = {, 01, 0101, 010101, . . . } 6= {0, 1}∗
A+ = AA∗ = n≥1 An
S
Bsp: Σ+ = Menge aller nicht-leeren Wörter über Σ
Achtung:
Für alle A: ∈ A∗
∅∗ = {}
15
Einige Rechenregeln:
Lemma 2.4
∅A = ∅
{}A = A
16
Einige Rechenregeln:
Lemma 2.4
∅A = ∅
{}A = A
Lemma 2.5
A(B ∪ C) = AB ∪ AC
(A ∪ B)C = AC ∪ BC
16
Einige Rechenregeln:
Lemma 2.4
∅A = ∅
{}A = A
Lemma 2.5
A(B ∪ C) = AB ∪ AC
(A ∪ B)C = AC ∪ BC
16
Einige Rechenregeln:
Lemma 2.4
∅A = ∅
{}A = A
Lemma 2.5
A(B ∪ C) = AB ∪ AC
(A ∪ B)C = AC ∪ BC
16
2.1 Grammatiken
17
2.1 Grammatiken
Definition 2.7
Eine Grammatik ist ein 4-Tupel G = (V, Σ, P, S), wobei
V ist eine endliche Menge von Nichtterminalzeichen (oder
Nichtterminale, oder Variablen),
Σ ist eine endliche Menge von Terminalzeichen (oder Terminale),
disjunkt von V , auch genannt ein Alphabet,
P ⊆ (V ∪ Σ)∗ × (V ∪ Σ)∗ ist eine Menge von Produktionen, und
S ∈ V ist das Startsymbol.
17
2.1 Grammatiken
Definition 2.7
Eine Grammatik ist ein 4-Tupel G = (V, Σ, P, S), wobei
V ist eine endliche Menge von Nichtterminalzeichen (oder
Nichtterminale, oder Variablen),
Σ ist eine endliche Menge von Terminalzeichen (oder Terminale),
disjunkt von V , auch genannt ein Alphabet,
P ⊆ (V ∪ Σ)∗ × (V ∪ Σ)∗ ist eine Menge von Produktionen, und
S ∈ V ist das Startsymbol.
Konventionen:
A, B, C, . . . sind Nichtterminale,
a, b, c, . . . (und Sonderzeichen wie +, ∗, . . . ) sind Terminale,
α, β, γ, . . . ∈ (V ∪ Σ)∗
Produktionen schreiben wir α → β statt (α, β) ∈ P .
Statt α → β1 , . . . , α → βn schreiben wir α → β1 | · · · | βn
17
Beispiel 2.8 (Arithmetische Ausdrücke)
V = {hExpri, hTermi, hFactori}
Σ = {a, b, c, +, ∗, (, )}
S = hExpri
Die Menge P enthält folgende Produktionen:
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a | b | c
hFactori → (hExpri)
18
Definition 2.9
Eine Grammatik G = (V, Σ, P, S) induziert eine Ableitungsrelation
→G auf Wörtern über V ∪ Σ:
α →G α0
α = α1 βα2 und α0 = α1 β 0 α2
19
Definition 2.9
Eine Grammatik G = (V, Σ, P, S) induziert eine Ableitungsrelation
→G auf Wörtern über V ∪ Σ:
α →G α0
α = α1 βα2 und α0 = α1 β 0 α2
hExpri →
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
hExpri →
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
hExpri →
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
hExpri → hTermi
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
hExpri → hTermi
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
→ a ∗ (b + c)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
20
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)
20
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Beispiel 2.11
Welche von diesen zwei Grammatiken erzeugt {an bn cn | n ≥ 0} ?
G1 : S → abcS | G2 : S → aBSc |
ba → ab Ba → aB
cb → bc Bb → bB
ca → ac Bc → bc
21
Definition 2.12 (Reflexive transitive Hülle)
α →0G α
α →n+1
G γ :⇔ ∃β. α →nG β →G γ
α →∗G β :⇔ ∃n. α →nG β
n
α →+
G β :⇔ ∃n > 0. α →G β
22
2.2 Die Chomsky-Hierarchie
Eine Grammatik G ist vom
23
2.2 Die Chomsky-Hierarchie
Eine Grammatik G ist vom
Typ 0 immer.
23
2.2 Die Chomsky-Hierarchie
Eine Grammatik G ist vom
Typ 0 immer.
Typ 1 falls für jede Produktion α → β außer S →
gilt |α| ≤ |β|
23
2.2 Die Chomsky-Hierarchie
Eine Grammatik G ist vom
Typ 0 immer.
Typ 1 falls für jede Produktion α → β außer S →
gilt |α| ≤ |β|
Typ 2 falls G vom Typ 1 ist und
für jede Produktion α → β gilt α ∈ V .
23
2.2 Die Chomsky-Hierarchie
Eine Grammatik G ist vom
Typ 0 immer.
Typ 1 falls für jede Produktion α → β außer S →
gilt |α| ≤ |β|
Typ 2 falls G vom Typ 1 ist und
für jede Produktion α → β gilt α ∈ V .
Typ 3 falls G vom Typ 2 ist und
für jede Produktion α → β außer S →
gilt β ∈ Σ ∪ ΣV .
23
2.2 Die Chomsky-Hierarchie
Eine Grammatik G ist vom
Typ 0 immer.
Typ 1 falls für jede Produktion α → β außer S →
gilt |α| ≤ |β|
Typ 2 falls G vom Typ 1 ist und
für jede Produktion α → β gilt α ∈ V .
Typ 3 falls G vom Typ 2 ist und
für jede Produktion α → β außer S →
gilt β ∈ Σ ∪ ΣV .
Offensichtlich gilt:
23
Grammatiken und Sprachklassen:
24
Grammatiken und Sprachklassen:
24
Grammatiken und Sprachklassen:
24
Grammatiken und Sprachklassen:
24
Grammatiken und Sprachklassen:
Satz 2.13
L(Typ 3) ⊂ L(Typ 2) ⊂ L(Typ 1) ⊂ L(Typ 0)
24
Grammatiken und Sprachklassen:
Satz 2.13
L(Typ 3) ⊂ L(Typ 2) ⊂ L(Typ 1) ⊂ L(Typ 0)
24
Das Wortproblem:
Gegeben: eine Grammatik G, ein Wort w ∈ Σ∗
Frage: Gilt w ∈ L(G) ?
25
Das Wortproblem:
Gegeben: eine Grammatik G, ein Wort w ∈ Σ∗
Frage: Gilt w ∈ L(G) ?
In den kommenden Wochen untersuchen wir das Wortproblem für
Grammatiken vom Typ 3 und Typ 2.
25
Das Wortproblem:
Gegeben: eine Grammatik G, ein Wort w ∈ Σ∗
Frage: Gilt w ∈ L(G) ?
In den kommenden Wochen untersuchen wir das Wortproblem für
Grammatiken vom Typ 3 und Typ 2.
Wir studieren Algorithmen, die für eine gegebene Grammatik G
einen Automaten AG konstruieren, und untersuchen ihre Laufzeit.
25
Das Wortproblem:
Gegeben: eine Grammatik G, ein Wort w ∈ Σ∗
Frage: Gilt w ∈ L(G) ?
In den kommenden Wochen untersuchen wir das Wortproblem für
Grammatiken vom Typ 3 und Typ 2.
Wir studieren Algorithmen, die für eine gegebene Grammatik G
einen Automaten AG konstruieren, und untersuchen ihre Laufzeit.
AG ist eine abstrakte Beschreibung eines Programms zur Lösung
des Wortproblems.
25
Das Wortproblem:
Gegeben: eine Grammatik G, ein Wort w ∈ Σ∗
Frage: Gilt w ∈ L(G) ?
In den kommenden Wochen untersuchen wir das Wortproblem für
Grammatiken vom Typ 3 und Typ 2.
Wir studieren Algorithmen, die für eine gegebene Grammatik G
einen Automaten AG konstruieren, und untersuchen ihre Laufzeit.
AG ist eine abstrakte Beschreibung eines Programms zur Lösung
des Wortproblems.
Der Algorithmus mit G als Eingabe und AG als Ausgabe ist eine
abstrakte Beschreibung eines Programms für die automatische
Synthese von Recognizern (lex, yacc).
25
3. Reguläre Sprachen
26
3.1 Deterministische endliche Automaten
b a a, b
a b
0 1 2
Recognizer, die nur einmal das Wort durchläuft und in linearer Zeit
es akzeptiert oder ablehnt.
27
Definition 3.1
Ein deterministischer endlicher Automat (deterministic finite
automaton, DFA) M = (Q, Σ, δ, q0 , F ) besteht aus
einer endlichen Menge von Zuständen Q,
einem (endlichen) Eingabealphabet Σ,
einer (totalen!) Übergangsfunktion δ : Q × Σ → Q,
einem Startzustand q0 ∈ Q, und
einer Menge F ⊆ Q von Endzuständen (akzeptierenden Zust.)
28
Definition 3.2
Die von M akzeptierte Sprache ist
L(M ) := {w ∈ Σ∗ | δ̂(q0 , w) ∈ F } ,
δ̂(q, ) = q
δ̂(q, aw) = δ̂(δ(q, a), w) für a ∈ Σ, w ∈ Σ∗ .
29
Graphische Darstellung
Endliche Automaten können durch gerichtete und markierte
Zustandsgraphen veranschaulicht werden:
Knoten =
b Zuständen
a
b Übergängen: p → q =
Kanten = b δ(p, a) = q
Der Anfangszustand wird durch einen Pfeil, Endzustände
werden durch doppelte Kreise gekennzeichnet.
30
Beispiel 3.3
b a a, b
a b
0 1 2
Die Sprache des DFAs ist die Menge aller Wörter über {a, b}, die
ab enthalten.
31
Beispiel 3.3
b a a, b
a b
0 1 2
Die Sprache des DFAs ist die Menge aller Wörter über {a, b}, die
ab enthalten.
Jedes Wort, das akzeptiert wird, enthält ab.
Sei w ein Wort, welches akzeptiert wird.
Betrachte in der Zustandsfolge für w den Zeitpunkt, in dem
Zustand 1 zum letzten Mal besucht wird (existiert weil die
Folge in Zustand 2 endet).
Unmittelbar davor wird a gelesen und unmittelbar danach b
31
Beispiel 3.3
b a a, b
a b
0 1 2
Die Sprache des DFAs ist die Menge aller Wörter über {a, b}, die
ab enthalten.
Jedes Wort, das akzeptiert wird, enthält ab.
Sei w ein Wort, welches akzeptiert wird.
Betrachte in der Zustandsfolge für w den Zeitpunkt, in dem
Zustand 1 zum letzten Mal besucht wird (existiert weil die
Folge in Zustand 2 endet).
Unmittelbar davor wird a gelesen und unmittelbar danach b
Jedes Wort, das ab enthält, wird akzeptiert.
Für alle q ∈ {0, 1, 2} gilt: δ̂(q, ab) = 2.
31
Beispiel 3.4
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl,
zB #100 = 4.
32
Beispiel 3.4
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl,
zB #100 = 4.
0 1
1
0 1
0
Der DFA akzeptiert genau die w ∈ {0, 1}∗ so dass #w gerade ist.
32
Beispiel 3.4
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl,
zB #100 = 4.
0 1
1
0 1
0
Der DFA akzeptiert genau die w ∈ {0, 1}∗ so dass #w gerade ist.
Beweis:
Für alle w 6= , #w ist gerade gdw w endet mit 0.
32
Beispiel 3.4
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl,
zB #100 = 4.
0 1
1
0 1
0
Der DFA akzeptiert genau die w ∈ {0, 1}∗ so dass #w gerade ist.
Beweis:
Für alle w 6= , #w ist gerade gdw w endet mit 0.
1. δ̂(0, w0) = δ(δ̂(0, w), 0) = 0 ∈ F , daher w0 ∈ L(A)
32
Beispiel 3.4
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl,
zB #100 = 4.
0 1
1
0 1
0
Der DFA akzeptiert genau die w ∈ {0, 1}∗ so dass #w gerade ist.
Beweis:
Für alle w 6= , #w ist gerade gdw w endet mit 0.
1. δ̂(0, w0) = δ(δ̂(0, w), 0) = 0 ∈ F , daher w0 ∈ L(A)
2. δ̂(0, w1) = δ(δ̂(0, w), 1) = 1 ∈
/ F , daher w1 ∈
/ L(A)
32
Beispiel 3.4
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl,
zB #100 = 4.
0 1
1
0 1
0
Der DFA akzeptiert genau die w ∈ {0, 1}∗ so dass #w gerade ist.
Beweis:
Für alle w 6= , #w ist gerade gdw w endet mit 0.
1. δ̂(0, w0) = δ(δ̂(0, w), 0) = 0 ∈ F , daher w0 ∈ L(A)
2. δ̂(0, w1) = δ(δ̂(0, w), 1) = 1 ∈
/ F , daher w1 ∈
/ L(A)
Für w = , δ̂(0, w) = 0, daher ∈ L(A) und # = 0.
32
Beispiel 3.5
0 1
1 0
0 1 2
1 0
Für w ∈ {0, 1}∗ sei #w die von w binär repräsentierte Zahl, zB
#100 = 4.
Der DFA akzeptiert genau die Wörter w ∈ {0, 1}∗ mit: #w ist ein
vielfaches von 3.
33
Beispiel 3.6
0 · 0 1, . . . , 9
0, . . . , 9
1, . . . , 9
1, . . . , 9 ·
0
− 1, . . . , 9 ·
34
3.2 Von rechtslinearen Grammatiken zu DFA (und zurück)
Wir zeigen:
Für jede rechtslineare Grammatik G gibt es einen DFA M mit
L(M ) = L(G).
Für jeden DFA M gibt es eine rechtslineare Grammatik G mit
L(G) = L(M ).
35
3.2 Von rechtslinearen Grammatiken zu DFA (und zurück)
Wir zeigen:
Für jede rechtslineare Grammatik G gibt es einen DFA M mit
L(M ) = L(G).
Für jeden DFA M gibt es eine rechtslineare Grammatik G mit
L(G) = L(M ).
Wir führen nichtdeterministische endliche Automaten (NFA) als
“Zwischenschritt” ein. Wir zeigen:
Für jede rechtslineare Grammatik G gibt es einen NFA N mit
L(N ) = L(G).
Für jeden NFA N gibt es einen DFA M mit L(M ) = L(N ).
Für jeden DFA M gibt es eine rechtslineare Grammatik G mit
L(G) = L(M ).
35
NFA sind eine Verallgemeinerung von DFA: Aus einem Zustand
eines NFAs können 0, 1, 2, oder mehr Transitionen mit derselben
Beschriftung ausgehen.
Beispiel 3.7
Erkennung der Binärzahlen, deren vorlezte Ziffer 1 ist:
0, 1
1 0, 1
p q r
36
Definition 3.8
Ein nichtdeterministischer endlicher Automat (nondeterministic
finite automaton, NFA) ist ein 5-Tupel N = (Q, Σ, δ, q0 , F ), so
dass
Q, Σ, q0 und F sind wie bei einem DFA
δ : Q × Σ → P(Q)
P(Q) = Menge aller Teilmengen von Q = 2Q .
Alternative: Relation δ ⊆ Q × Σ × Q.
Beispiel
0, 1
δ 0 1
1 0, 1 p {p} {p, q}
p q r
q {r} {r}
r ∅ ∅
37
Erweiterung von δ : Q × Σ → P(Q)
auf δ̄ : P(Q) × Σ → P(Q) definiert durch
[
δ̄(S, a) := δ(q, a)
q∈S
38
Erweiterung von δ : Q × Σ → P(Q)
auf δ̄ : P(Q) × Σ → P(Q) definiert durch
[
δ̄(S, a) := δ(q, a)
q∈S
Intuition:
δ̄ˆ(S, w) ist Menge aller Zustände,
die sich von einem Zustand in S aus mit w erreichen lassen.
38
Erweiterung von δ : Q × Σ → P(Q)
auf δ̄ : P(Q) × Σ → P(Q) definiert durch
[
δ̄(S, a) := δ(q, a)
q∈S
Intuition:
δ̄ˆ(S, w) ist Menge aller Zustände,
die sich von einem Zustand in S aus mit w erreichen lassen.
L(N ) := {w ∈ Σ∗ | δ̄ˆ({q0 }, w) ∩ F 6= ∅}
38
Erweiterung von δ : Q × Σ → P(Q)
auf δ̄ : P(Q) × Σ → P(Q) definiert durch
[
δ̄(S, a) := δ(q, a)
q∈S
Intuition:
δ̄ˆ(S, w) ist Menge aller Zustände,
die sich von einem Zustand in S aus mit w erreichen lassen.
L(N ) := {w ∈ Σ∗ | δ̄ˆ({q0 }, w) ∩ F 6= ∅}
38
Beispiel
0, 1
1 0, 1
p q r
39
Satz 3.9
Für jede rechtslineare Grammatik G gibt es einen NFA M mit
L(G) = L(M ).
40
Satz 3.9
Für jede rechtslineare Grammatik G gibt es einen NFA M mit
L(G) = L(M ).
Beispiel
S → aX | aY X → aX | bY | a Y → aS | bX | aY | b
a
X
a a
S b b qf
a
a b
Y
40
Satz 3.9
Für jede rechtslineare Grammatik G gibt es einen NFA M mit
L(G) = L(M ).
Beispiel
S → aX | aY X → aX | bY | a Y → aS | bX | aY | b
a
X
a a
S b b qf
a
a b
Y
41
Beweis:
Sei G = (V, Σ, P, S) eine rechtslineare Grammatik ohne die
Produktion S → . Definiere den NFA A = (Q, Σ, δ, q0 , F ) mit
Q = V ∪ {qf } (wobei qf ∈
/ V)
Y ∈ δ(X, a) gdw (X → aY ) ∈ P
qf ∈ δ(X, a) gdw (X → a) ∈ P
q0 = S
F = {qf }
S → a1 X1 →G a1 a2 X2 →G · · · →G a1 . . . an−1 Xn−1 →G a1 . . . an
qf ∈ δ(S, a1 . . . an ) .
42
Satz 3.10
Für jeden NFA N gibt es einen DFA M mit L(N ) = L(M ).
43
Satz 3.10
Für jeden NFA N gibt es einen DFA M mit L(N ) = L(M ).
Beispiel
0, 1
1 0, 1
p q r
43
Beweis:
Sei N = (Q, Σ, δ, q0 , F ) ein NFA.
Definiere den DFA M = (P(Q), Σ, δ̄, {q0 }, FM ):
FM := {S ⊆ Q | S ∩ F 6= ∅}
44
Beweis:
Sei N = (Q, Σ, δ, q0 , F ) ein NFA.
Definiere den DFA M = (P(Q), Σ, δ̄, {q0 }, FM ):
FM := {S ⊆ Q | S ∩ F 6= ∅}
Dann gilt:
w ∈ L(N ) ⇔ δ̄ˆ({q0 }, w) ∩ F 6= ∅ Def.
⇔ δ̄ˆ({q0 }, w) ∈ FM Def.
⇔ w ∈ L(M ) Def.
44
Beweis:
Sei N = (Q, Σ, δ, q0 , F ) ein NFA.
Definiere den DFA M = (P(Q), Σ, δ̄, {q0 }, FM ):
FM := {S ⊆ Q | S ∩ F 6= ∅}
Dann gilt:
w ∈ L(N ) ⇔ δ̄ˆ({q0 }, w) ∩ F 6= ∅ Def.
⇔ δ̄ˆ({q0 }, w) ∈ FM Def.
⇔ w ∈ L(M ) Def.
Dies nennt man die Potenzmengen- oder Teilmengenkonstruktion.
In der Praxis werden nur die aus q0 erreichbaren Zuständen
konstruiert.
Trotzdem: Für einen NFA mit n Zuständen kann der entsprechende
DFA bis zu 2n Zustände haben.
44
Beispiel 3.11
45
Beispiel 3.11
0, 1
q0 1 q1 0, 1 q2 0, 1 ··· 0, 1 qk
45
Beispiel 3.11
0, 1
q0 1 q1 0, 1 q2 0, 1 ··· 0, 1 qk
45
Beispiel 3.11
0, 1
q0 1 q1 0, 1 q2 0, 1 ··· 0, 1 qk
Lemma 3.12
Jeder DFA M mit L(M ) = Lk hat mindestens 2k Zuständen.
45
Beweis:
Indirekt. Sei M ein DFA mit < 2k Zuständen, so dass L(M ) = Lk .
46
Beweis:
Indirekt. Sei M ein DFA mit < 2k Zuständen, so dass L(M ) = Lk .
46
Beweis:
Indirekt. Sei M ein DFA mit < 2k Zuständen, so dass L(M ) = Lk .
46
Beweis:
Indirekt. Sei M ein DFA mit < 2k Zuständen, so dass L(M ) = Lk .
46
Satz 3.13
Für jeden DFA M gibt es eine rechtslineare Grammatik G mit
L(M ) = L(G).
Beweis:
Sei M = (Q, Σ, δ, q0 , F ). Die Grammatik G = (V, T, P, S) mit
V = Q, T = Σ, S = q0 ,
(q1 → aq2 ) ∈ P gdw δ(q1 , a) = q2 ,
(q1 → a) ∈ P gdw δ(q1 , a) ∈ F , und
(q0 → ) ∈ P gdw q0 ∈ F ,
ist von Typ 3 und erfüllt L(M ) = L(G).
47
3.3 NFAs mit -Übergängen
Grammatiken von Programmiersprachen enthalten viele
Produktionen der Gestalt A → B.
Beispiel 3.14
Ein kleines Fragment der Grammatik von Java:
Literal:
IntegerLiteral
FloatingPointLiteral
CharacterLiteral
StringLiteral
BooleanLiteral
NullLiteral
48
Definition 3.15
Ein NFA mit -Übergängen (auch -NFA) ist ein NFA mit einem
speziellen Symbol ∈
/ Σ und mit
δ : Q × (Σ ∪ {}) → P(Q) .
49
Definition 3.15
Ein NFA mit -Übergängen (auch -NFA) ist ein NFA mit einem
speziellen Symbol ∈
/ Σ und mit
δ : Q × (Σ ∪ {}) → P(Q) .
0 1 0
q0 q1 q2
49
Definition 3.15
Ein NFA mit -Übergängen (auch -NFA) ist ein NFA mit einem
speziellen Symbol ∈
/ Σ und mit
δ : Q × (Σ ∪ {}) → P(Q) .
0 1 0
q0 q1 q2
49
Lemma 3.16
Für jeden -NFA N gibt es einen NFA N 0 mit L(N ) = L(N 0 ).
50
Lemma 3.16
Für jeden -NFA N gibt es einen NFA N 0 mit L(N ) = L(N 0 ).
Beweis:
Seie N = (Q, Σ, δ, q0 , F ) ein -NFA. Wir definieren den NFA
N 0 = (Q, Σ, δ 0 , q0 , F 0 ) mit folgenden Definitionen für δ 0 und F 0 :
δ 0 : Q × Σ → P(Q)
[
δ 0 (q, a) := δ̂({q}, i aj ) .
i≥0,j≥0
∃i ≥ 0. δ̂({q0 }, i ) ∩ F 6= ∅
50
Lemma 3.16
Für jeden -NFA N gibt es einen NFA N 0 mit L(N ) = L(N 0 ).
Beweis:
Seie N = (Q, Σ, δ, q0 , F ) ein -NFA. Wir definieren den NFA
N 0 = (Q, Σ, δ 0 , q0 , F 0 ) mit folgenden Definitionen für δ 0 und F 0 :
δ 0 : Q × Σ → P(Q)
[
δ 0 (q, a) := δ̂({q}, i aj ) .
i≥0,j≥0
∃i ≥ 0. δ̂({q0 }, i ) ∩ F 6= ∅
0 1 0
q0 q1 q2
51
Beispiel 3.17
0 1 0
q0 q1 q2
0 1 0
q0 0, 1 q1 0, 1 q2
0, 1
51
Fazit: Die Automatentypen
DFA
NFA
-NFA
sind gleich mächtig und Erkennen die Sprachen der Grammatiken
mit Produktionen folgender Gestalt:
X → aY
X→a
X→Y
X→
52
3.4 Reguläre Ausdrücke
Reguläre Ausdrücke sind eine alternative Notation für die
Definition von formalen Sprachen.
Werden oft in Kombination mit Grammatiken verwendet.
53
3.4 Reguläre Ausdrücke
Reguläre Ausdrücke sind eine alternative Notation für die
Definition von formalen Sprachen.
Werden oft in Kombination mit Grammatiken verwendet.
Beispiel 3.18
Eine Fragment der Grammatik für Python
(https://docs.python.org/2/reference/grammar.html)
simple stmt: small stmt (’;’ small stmt)* [’;’] NEWLINE
Steht für eine unendliche Menge von Produktionen:
simple stmt → small stmt NEWLINE
simple stmt → small stmt ’;’ NEWLINE
simple stmt → small stmt ’;’ small stmt NEWLINE
simple stmt → small stmt ’;’ small stmt ’;’ NEWLINE
···
53
Definition 3.19
Reguläre Ausdrücke (regular expressions, REs) sind induktiv
definiert:
∅ ist ein regulärer Ausdruck.
ist ein regulärer Ausdruck.
Für jedes a ∈ Σ ist a ist ein regulärer Ausdruck.
Wenn α und β reguläre Ausdrücke sind, dann auch
αβ
α|β (oft α + β geschrieben)
α∗
Nichts sonst ist ein regulärer Ausdruck.
54
Definition 3.19
Reguläre Ausdrücke (regular expressions, REs) sind induktiv
definiert:
∅ ist ein regulärer Ausdruck.
ist ein regulärer Ausdruck.
Für jedes a ∈ Σ ist a ist ein regulärer Ausdruck.
Wenn α und β reguläre Ausdrücke sind, dann auch
αβ
α|β (oft α + β geschrieben)
α∗
Nichts sonst ist ein regulärer Ausdruck.
55
Beispiel 3.21
Sei das zugrunde liegende Alphabet Σ = {0, 1}.
Alle Wörter, die mit 00 enden:
(0|1)∗ 00
56
Beispiel 3.21
Sei das zugrunde liegende Alphabet Σ = {0, 1}.
Alle Wörter, die mit 00 enden:
(0|1)∗ 00
Alle Wörter gerader Länge, in denen 0 und 1 alternieren:
(01)∗ | (10)∗
56
Beispiel 3.21
Sei das zugrunde liegende Alphabet Σ = {0, 1}.
Alle Wörter, die mit 00 enden:
(0|1)∗ 00
Alle Wörter gerader Länge, in denen 0 und 1 alternieren:
(01)∗ | (10)∗
Alle Wörter, die eine gerade Anzahl von 1’en enthalten:
(0∗ 10∗ 1)∗ 0∗
56
Beispiel 3.21
Sei das zugrunde liegende Alphabet Σ = {0, 1}.
Alle Wörter, die mit 00 enden:
(0|1)∗ 00
Alle Wörter gerader Länge, in denen 0 und 1 alternieren:
(01)∗ | (10)∗
Alle Wörter, die eine gerade Anzahl von 1’en enthalten:
(0∗ 10∗ 1)∗ 0∗
Alle Wörter, die die Binärdarstellung einer durch 3 teilbaren
Zahl darstellen, also
0, 11, 110, 1001, 1100, 1111, 10010, . . .
56
Beispiel 3.21
Sei das zugrunde liegende Alphabet Σ = {0, 1}.
Alle Wörter, die mit 00 enden:
(0|1)∗ 00
Alle Wörter gerader Länge, in denen 0 und 1 alternieren:
(01)∗ | (10)∗
Alle Wörter, die eine gerade Anzahl von 1’en enthalten:
(0∗ 10∗ 1)∗ 0∗
Alle Wörter, die die Binärdarstellung einer durch 3 teilbaren
Zahl darstellen, also
0, 11, 110, 1001, 1100, 1111, 10010, . . .
Hausaufgabe!
56
Beispiel 3.22
Gleitkommazahlen: Σ = {+, −, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .}
wobei D = (0|1|2|3|4|5|6|7|8|9)
57
Erweiterte reguläre Ausdrücke in UNIX:
58
Erweiterte reguläre Ausdrücke in UNIX:
. = a1 | . . . |an wobei Σ = {a1 , . . . an }
[a1 . . . an ] = a1 | . . . |an
[ˆa1 . . . an ] = b1 | . . . |bm wobei {b1 , . . . , bm } = Σ \ {a1 , . . . an }
α? = |α
α+ = αα∗
α{n} = α . . . α (n copies)
58
Strukturelle Induktion
Da die regulären Ausdrücke induktiv definiert sind, gilt für sie das
Prinzip der strukturellen Induktion:
Um zu beweisen, dass Eigenschaft P für alle regulären Ausdrücke
γ gilt, also P (γ), beweise
P (∅)
P ()
P (a) für alle a ∈ Σ
P (α) ∧ P (β) ⇒ P (αβ)
P (α) ∧ P (β) ⇒ P (α | β)
P (α) ⇒ P (α∗ )
59
Satz 3.23 (Kleene 1956)
Eine Sprache L ⊆ Σ∗ ist genau dann durch einen regulären
Ausdruck darstellbar, wenn sie regulär ist.
60
Satz 3.23 (Kleene 1956)
Eine Sprache L ⊆ Σ∗ ist genau dann durch einen regulären
Ausdruck darstellbar, wenn sie regulär ist.
Beweis:
“=⇒”:
Sei L = L(γ).
Wir konstruieren einen -NFA N mit L = L(N ) mit Hilfe
struktureller Induktion über γ.
60
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
61
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
Nα Nβ
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
Nα Nβ
61
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
Nα Nβ
61
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
q0α q0β
Nα Nβ
Formal:
Nα = (Qα , Σ, δα , q0α , Fα )
Nβ = (Qβ , Σ, δβ , q0β , Fβ ) (mit Qα ∩ Qβ = ∅)
Nαβ := (Qα ∪ Qβ , Σ, δ, q0α , Fβ )
61
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
q0α q0β
Nα Nβ
Formal:
Nα = (Qα , Σ, δα , q0α , Fα )
Nβ = (Qβ , Σ, δβ , q0β , Fβ ) (mit Qα ∩ Qβ = ∅)
Nαβ := (Qα ∪ Qβ , Σ, δ, q0α , Fβ )
61
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
q0α q0β
Nα Nβ
Formal:
Nα = (Qα , Σ, δα , q0α , Fα )
Nβ = (Qβ , Σ, δβ , q0β , Fβ ) (mit Qα ∩ Qβ = ∅)
Nαβ := (Qα ∪ Qβ , Σ, δ, q0α , Fβ )
61
Fall γ = αβ:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
q0α q0β
Nα Nβ
Formal:
Nα = (Qα , Σ, δα , q0α , Fα )
Nβ = (Qβ , Σ, δβ , q0β , Fβ ) (mit Qα ∩ Qβ = ∅)
Nαβ := (Qα ∪ Qβ , Σ, δ, q0α , Fβ )
δ := δα ∪ δβ ∪ {(f, ) 7→ {q0β } | f ∈ Fα }
61
Fall γ = α | β:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
62
Fall γ = α | β:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
Nβ
Nα
Fall γ = α | β:
Nach Induktionsannahme können wir -NFAs Nα und Nβ
konstruieren mit L(Nα ) = L(α) und L(Nβ ) = L(β).
Nβ
Nα
62
Fall γ = α∗ :
Nach Induktionsannahme können wir einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .
63
Fall γ = α∗ :
Nach Induktionsannahme können wir einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .
Nα
Fall γ = α∗ :
Nach Induktionsannahme können wir einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .
Nα
Fall γ = α∗ :
Nach Induktionsannahme können wir einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .
Nα
63
“⇐=”:
Sei M = (Q, Σ, δ, q1 , F ) ein DFA.
Wir konstruieren einen RE γ mit L(M ) = L(γ).
64
“⇐=”:
Sei M = (Q, Σ, δ, q1 , F ) ein DFA.
Wir konstruieren einen RE γ mit L(M ) = L(γ).
Sei Q = {q1 , . . . , qn }. Wir setzen
k := {w ∈ Σ∗ | die Eingabe w führt von q in q , wobei alle
Rij i j
Zwischenzustände (ohne ersten und letzten)
einen Index ≤ k haben }
64
“⇐=”:
Sei M = (Q, Σ, δ, q1 , F ) ein DFA.
Wir konstruieren einen RE γ mit L(M ) = L(γ).
Sei Q = {q1 , . . . , qn }. Wir setzen
k := {w ∈ Σ∗ | die Eingabe w führt von q in q , wobei alle
Rij i j
Zwischenzustände (ohne ersten und letzten)
einen Index ≤ k haben }
64
Bew.:
Induktion über k:
k = 0: Hier gilt
(
0 {a ∈ Σ | δ(qi , a) = qj }, falls i 6= j
Rij =
{a ∈ Σ | δ(qi , a) = qj } ∪ {}, falls i = j
Setze (
0 a1 | . . . |al falls i 6= j
αij :=
a1 | . . . |al | falls i = j
wobei {a1 . . . , al } = {a ∈ Σ | δ(qi , a) = qj }.
65
Bew.:
Induktion über k:
k ⇒ k + 1: Hier gilt
k+1 k k k
Rij = Rij ∪ Ri(k+1) (R(k+1)(k+1) )∗ R(k+1)j
k
F1 , k + 1, F2 , k + 1, . . . , k + 1, Fm
66
Bew.:
Induktion über k:
k ⇒ k + 1: Hier gilt
k+1 k k k
Rij = Rij ∪ Ri(k+1) (R(k+1)(k+1) )∗ R(k+1)j
k
F1 , k + 1, F2 , k + 1, . . . , k + 1, Fm
66
Bew.:
Induktion über k:
k ⇒ k + 1: Hier gilt
k+1 k k k
Rij = Rij ∪ Ri(k+1) (R(k+1)(k+1) )∗ R(k+1)j
k
F1 , k + 1, F2 , k + 1, . . . , k + 1, Fm
Somit gilt
n n
L(M ) = L(α1i 1
| · · · | α1i r
)
wobei F = {i1 , . . . , ir }.
66
Unsere Konversionen auf einen Blick:
DFA NFA -NFA
RE
67
Unsere Konversionen auf einen Blick:
DFA NFA -NFA
%
RE
67
Unsere Konversionen auf einen Blick:
DFA NFA ← -NFA
%
RE
67
Unsere Konversionen auf einen Blick:
DFA ← NFA ← -NFA
%
RE
67
Unsere Konversionen auf einen Blick:
DFA ← NFA ← -NFA
& ↓ %
RE
67
Unsere Konversionen auf einen Blick:
DFA ← NFA ← -NFA
& ↓ %
RE
67
3.5 Abschlusseigenschaften regulärer Sprachen
Satz 3.24
Seien R, R1 , R2 ⊆ Σ∗ reguläre Sprachen. Dann sind auch
R1 R2 , R1 ∪ R2 , R∗ , R (:= Σ∗ \ R), R1 ∩ R2 , R1 \ R2
reguläre Sprachen.
68
3.5 Abschlusseigenschaften regulärer Sprachen
Satz 3.24
Seien R, R1 , R2 ⊆ Σ∗ reguläre Sprachen. Dann sind auch
R1 R2 , R1 ∪ R2 , R∗ , R (:= Σ∗ \ R), R1 ∩ R2 , R1 \ R2
reguläre Sprachen.
Beweis:
R1 R2 , R1 ∪ R2 , und R∗ : klar.
R Sei R = L(A) für einen DFA A = (Q, Σ, δ, q0 , F ).
Betrachte A0 = (Q, Σ, δ, q0 , Q \ F ).
Dann ist L(A0 ) = L(A) = R
R1 ∩ R2 = R1 ∪ R2 (De Morgan)
R1 \ R2 = R1 ∩ R2
68
Bemerkung
Komplementierung (R) durch Vertauschen von Endzuständen und
Nicht-Endzuständen funktioniert nur bei DFAs, nicht bei NFAs!
69
Bemerkung
Komplementierung (R) durch Vertauschen von Endzuständen und
Nicht-Endzuständen funktioniert nur bei DFAs, nicht bei NFAs!
Bei NFAs:
69
Die Produkt-Konstruktion: Durchschnitt direkt auf DFAs, ohne
Umweg über de Morgan.
70
Die Produkt-Konstruktion: Durchschnitt direkt auf DFAs, ohne
Umweg über de Morgan.
Beide DFAs laufen synchron parallel, Wort wird akzeptiert wenn
beide akzeptieren.
70
Die Produkt-Konstruktion: Durchschnitt direkt auf DFAs, ohne
Umweg über de Morgan.
Beide DFAs laufen synchron parallel, Wort wird akzeptiert wenn
beide akzeptieren.
Satz 3.25
Sind M1 = (Q1 , Σ, δ1 , s1 , Fi ) und M2 = (Q2 , Σ, δ2 , s2 , F2 ) DFAs,
dann ist der Produkt-Automat
M := (Q1 × Q2 , Σ, δ, (s1 , s2 ), F1 × F2 )
δ((q1 , q2 ), a) := (δ1 (q1 , a), δ2 (q2 , a))
70
Die Produkt-Konstruktion: Durchschnitt direkt auf DFAs, ohne
Umweg über de Morgan.
Beide DFAs laufen synchron parallel, Wort wird akzeptiert wenn
beide akzeptieren.
Satz 3.25
Sind M1 = (Q1 , Σ, δ1 , s1 , Fi ) und M2 = (Q2 , Σ, δ2 , s2 , F2 ) DFAs,
dann ist der Produkt-Automat
M := (Q1 × Q2 , Σ, δ, (s1 , s2 ), F1 × F2 )
δ((q1 , q2 ), a) := (δ1 (q1 , a), δ2 (q2 , a))
70
Beweis:
Durch Induktion über w läßt sich zeigen:
71
Beweis:
Durch Induktion über w läßt sich zeigen:
Damit gilt:
w ∈ L(M )
⇔ (δ̂((s1 , s2 ), w) ∈ F1 × F2
⇔ (δ̂1 (s1 , w), δ̂2 (s2 , w)) ∈ F1 × F2
⇔ δ̂1 (s1 , w) ∈ F1 ∧ δ̂2 (s2 , w) ∈ F2
⇔ w ∈ L(M1 ) ∧ w ∈ L(M2 )
⇔ w ∈ L(M1 ) ∩ L(M2 )
71
Beweis:
Durch Induktion über w läßt sich zeigen:
Damit gilt:
w ∈ L(M )
⇔ (δ̂((s1 , s2 ), w) ∈ F1 × F2
⇔ (δ̂1 (s1 , w), δ̂2 (s2 , w)) ∈ F1 × F2
⇔ δ̂1 (s1 , w) ∈ F1 ∧ δ̂2 (s2 , w) ∈ F2
⇔ w ∈ L(M1 ) ∧ w ∈ L(M2 )
⇔ w ∈ L(M1 ) ∩ L(M2 )
71
3.6 Rechnen mit regulären Ausdrücken
Definition 3.26
Zwei reguläre Ausdrücke sind äquivalent gdw sie die gleiche
Sprache darstellen:
α ≡ β :⇔ L(α) = L(β)
72
3.6 Rechnen mit regulären Ausdrücken
Definition 3.26
Zwei reguläre Ausdrücke sind äquivalent gdw sie die gleiche
Sprache darstellen:
α ≡ β :⇔ L(α) = L(β)
72
Null und Eins:
Lemma 3.27
∅|α≡α|∅≡α
∅α ≡ α∅ ≡ ∅
α ≡ α ≡ α
∅∗ ≡
∗ ≡
73
Lemma 3.28
Assoziativität:
(α | β) | γ ≡ α | (β | γ)
(αβ)γ ≡ α(βγ)
Kommutativität:
α|β≡β|α
Distributivität:
α(β | γ) ≡ αβ | αγ
(α | β)γ ≡ αγ | βγ
Idempotenz:
α|α≡α
74
Stern:
Lemma 3.29
| αα∗ ≡ α∗
α∗ α ≡ αα∗
(α∗ )∗ ≡ α∗
75
Stern:
Lemma 3.29
| αα∗ ≡ α∗
α∗ α ≡ αα∗
(α∗ )∗ ≡ α∗
Beispiel 3.30
Herleitung einer Äquivalenz aus obigen Lemmas:
| α∗
75
Stern:
Lemma 3.29
| αα∗ ≡ α∗
α∗ α ≡ αα∗
(α∗ )∗ ≡ α∗
Beispiel 3.30
Herleitung einer Äquivalenz aus obigen Lemmas:
| α∗
≡ | ( | αα∗ ) Stern Lemma
75
Stern:
Lemma 3.29
| αα∗ ≡ α∗
α∗ α ≡ αα∗
(α∗ )∗ ≡ α∗
Beispiel 3.30
Herleitung einer Äquivalenz aus obigen Lemmas:
| α∗
≡ | ( | αα∗ ) Stern Lemma
≡ ( | ) | αα∗ Assoziativität
75
Stern:
Lemma 3.29
| αα∗ ≡ α∗
α∗ α ≡ αα∗
(α∗ )∗ ≡ α∗
Beispiel 3.30
Herleitung einer Äquivalenz aus obigen Lemmas:
| α∗
≡ | ( | αα∗ ) Stern Lemma
≡ ( | ) | αα∗ Assoziativität
≡ | αα∗ Idempotenz
75
Stern:
Lemma 3.29
| αα∗ ≡ α∗
α∗ α ≡ αα∗
(α∗ )∗ ≡ α∗
Beispiel 3.30
Herleitung einer Äquivalenz aus obigen Lemmas:
| α∗
≡ | ( | αα∗ ) Stern Lemma
≡ ( | ) | αα∗ Assoziativität
≡ | αα∗ Idempotenz
≡α ∗ Stern Lemma
75
Lässt sich jede gültige Äquivalenz α ≡ β aus den obigen Lemmas
für ≡ herleiten?
76
Lässt sich jede gültige Äquivalenz α ≡ β aus den obigen Lemmas
für ≡ herleiten?
76
Lässt sich jede gültige Äquivalenz α ≡ β aus den obigen Lemmas
für ≡ herleiten?
76
Für Typ 3 Sprachen können wir automatisch effiziente Recognizer
synthetisieren.
Sind Typ 3 Grammatiken mächtig genug für den Entwurf von
Programmiersprachen?
77
Für Typ 3 Sprachen können wir automatisch effiziente Recognizer
synthetisieren.
Sind Typ 3 Grammatiken mächtig genug für den Entwurf von
Programmiersprachen?
Jede Programmiersprache braucht arithmethische Ausdrücke.
Die Grammatik für arithmethische Ausdrücke von Beispiel
2.11 ist nicht rechtslinear.
Das zeigt jedoch noch nicht das die Sprache der
arithmethischen Ausdrücke nicht regulär ist: Es könnte eine
andere rechtslineare Grammatik (vielleicht viel größer als die
vom Beispiel 2.11), die die selbe Sprache erzeugt.
77
3.7 Pumping Lemma
Oder: Wie zeigt man, dass eine Sprache nicht regulär ist?
78
3.7 Pumping Lemma
Oder: Wie zeigt man, dass eine Sprache nicht regulär ist?
78
Beweis:
Sei R = L(A), A = (Q, Σ, δ, q0 , F ).
Sei n = |Q|. Sei nun z = a1 . . . am ∈ R mit m ≥ n.
Die beim Lesen von z durchlaufene Zustandsfolge sei
a
1 2 a a m
q0 = p0 −→ p1 −→ p2 . . . −→ pm
79
Beweis:
Sei R = L(A), A = (Q, Σ, δ, q0 , F ).
Sei n = |Q|. Sei nun z = a1 . . . am ∈ R mit m ≥ n.
Die beim Lesen von z durchlaufene Zustandsfolge sei
a
1 2 a a m
q0 = p0 −→ p1 −→ p2 . . . −→ pm
79
Beweis:
Sei R = L(A), A = (Q, Σ, δ, q0 , F ).
Sei n = |Q|. Sei nun z = a1 . . . am ∈ R mit m ≥ n.
Die beim Lesen von z durchlaufene Zustandsfolge sei
1 a 2 a m a
q0 = p0 −→ p1 −→ p2 . . . −→ pm
79
Beweis:
Sei R = L(A), A = (Q, Σ, δ, q0 , F ).
Sei n = |Q|. Sei nun z = a1 . . . am ∈ R mit m ≥ n.
Die beim Lesen von z durchlaufene Zustandsfolge sei
1 a 2 a m a
q0 = p0 −→ p1 −→ p2 . . . −→ pm
79
Beweis:
Sei R = L(A), A = (Q, Σ, δ, q0 , F ).
Sei n = |Q|. Sei nun z = a1 . . . am ∈ R mit m ≥ n.
Die beim Lesen von z durchlaufene Zustandsfolge sei
1 a 2 a m a
q0 = p0 −→ p1 −→ p2 . . . −→ pm
80
Logische Struktur: für jede reguläre Sprache R
∃n > 0. ∀z ∈ R mit |z| ≥ n.
80
Logische Struktur: für jede reguläre Sprache R
∃n > 0. ∀z ∈ R mit |z| ≥ n. ∃u, v, w. z = uvw ∧ . . .
80
Logische Struktur: für jede reguläre Sprache R
∃n > 0. ∀z ∈ R mit |z| ≥ n. ∃u, v, w. z = uvw ∧ . . .
Spielbasierte Formulierung.
Sei R eine Sprache (regulär oder nicht). Eine Partie des
R-Spiels zwischen zwei Spielern läuft so:
Spieler I wählt eine Zahl n > 0
Spieler II wählt ein Wort z ∈ R mit |z| ≥ n
Spieler I wählt eine Zerlegung uvw von z.
Spieler I gewinnt, wenn uvw die gewünschten Eigenschaften
erfüllt, sonst gewinnt Spieler II.
80
Logische Struktur: für jede reguläre Sprache R
∃n > 0. ∀z ∈ R mit |z| ≥ n. ∃u, v, w. z = uvw ∧ . . .
Spielbasierte Formulierung.
Sei R eine Sprache (regulär oder nicht). Eine Partie des
R-Spiels zwischen zwei Spielern läuft so:
Spieler I wählt eine Zahl n > 0
Spieler II wählt ein Wort z ∈ R mit |z| ≥ n
Spieler I wählt eine Zerlegung uvw von z.
Spieler I gewinnt, wenn uvw die gewünschten Eigenschaften
erfüllt, sonst gewinnt Spieler II.
Das Pumping Lemma sagt: für jede reguläre Sprache R,
Spieler I hat eine Gewinnstrategie im R-Spiel, d.h., wenn er
richtig spielt, dann gewinnt er jede Partie.
80
Logische Struktur: für jede reguläre Sprache R
∃n > 0. ∀z ∈ R mit |z| ≥ n. ∃u, v, w. z = uvw ∧ . . .
Spielbasierte Formulierung.
Sei R eine Sprache (regulär oder nicht). Eine Partie des
R-Spiels zwischen zwei Spielern läuft so:
Spieler I wählt eine Zahl n > 0
Spieler II wählt ein Wort z ∈ R mit |z| ≥ n
Spieler I wählt eine Zerlegung uvw von z.
Spieler I gewinnt, wenn uvw die gewünschten Eigenschaften
erfüllt, sonst gewinnt Spieler II.
Das Pumping Lemma sagt: für jede reguläre Sprache R,
Spieler I hat eine Gewinnstrategie im R-Spiel, d.h., wenn er
richtig spielt, dann gewinnt er jede Partie.
Gewinnstrategie für Spieler I: Regeln, um erst eine
Pumping-Lemma-Zahl n, und dann eine gute Zerlegung uvw
zu wählen (eine Zerlegung, die die Eigenschaften erfüllt).
80
Falls L(M ) = R so ist |QM | eine Pumping-Lemma-Zahl für R.
81
Falls L(M ) = R so ist |QM | eine Pumping-Lemma-Zahl für R.
81
Falls L(M ) = R so ist |QM | eine Pumping-Lemma-Zahl für R.
81
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
Wähle z = an bn ∈ L.
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
Wähle z = an bn ∈ L.
Jede gute Zerlegung uvw von z erfüllt
u, v ∈ {a}∗ (weil |uv| ≤ n) und v 6= .
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
Wähle z = an bn ∈ L.
Jede gute Zerlegung uvw von z erfüllt
u, v ∈ {a}∗ (weil |uv| ≤ n) und v 6= .
Damit müsste gelten an−|v| bn = uw ∈ L.
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
Wähle z = an bn ∈ L.
Jede gute Zerlegung uvw von z erfüllt
u, v ∈ {a}∗ (weil |uv| ≤ n) und v 6= .
Damit müsste gelten an−|v| bn = uw ∈ L.
82
Satz 3.33
Die Sprache {ai bi | i ∈ N} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
Wähle z = an bn ∈ L.
Jede gute Zerlegung uvw von z erfüllt
u, v ∈ {a}∗ (weil |uv| ≤ n) und v 6= .
Damit müsste gelten an−|v| bn = uw ∈ L.
82
Satz 3.34
2
L = {0m | m ≥ 0} ist nicht regulär.
83
Satz 3.34
2
L = {0m | m ≥ 0} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
83
Satz 3.34
2
L = {0m | m ≥ 0} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
83
Satz 3.34
2
L = {0m | m ≥ 0} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
2
Wähle z = 0n ∈ L. Jede gute Zerlegung uvw von z erfüllt
1 ≤ |v| ≤ |uv| ≤ n
83
Satz 3.34
2
L = {0m | m ≥ 0} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
2
Wähle z = 0n ∈ L. Jede gute Zerlegung uvw von z erfüllt
1 ≤ |v| ≤ |uv| ≤ n
83
Satz 3.34
2
L = {0m | m ≥ 0} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n eine Pumping-Lemma-Zahl für L.
2
Wähle z = 0n ∈ L. Jede gute Zerlegung uvw von z erfüllt
1 ≤ |v| ≤ |uv| ≤ n
83
Satz 3.35
Die Sprache der wohlgeklammerten Ausdrücke über {(, )} ist nicht
regulär.
Beweis:
Aufgabe.
84
Satz 3.35
Die Sprache der wohlgeklammerten Ausdrücke über {(, )} ist nicht
regulär.
Beweis:
Aufgabe.
Satz 3.36
Die Sprache Arith der arithmetischen Ausdrücken ist nicht regulär.
84
Satz 3.35
Die Sprache der wohlgeklammerten Ausdrücke über {(, )} ist nicht
regulär.
Beweis:
Aufgabe.
Satz 3.36
Die Sprache Arith der arithmetischen Ausdrücken ist nicht regulär.
Beweis:
Angenommen, Arith sei doch regulär.
Dann gibt es einen DFA A mit L(A) = Arith.
Ersetze alle Transitionen von A, die nicht mit ( oder ) beschriftet
sind durch -Transitionen.
Der resultierende -NFA erkennt die Sprache der
wohlgeklammerten Ausdrücke. Widerspruch zu Satz 3.35.
84
Bemerkung
Es gibt nicht-reguläre Sprachen, für die das Pumping-Lemma gilt!
⇒ Pumping-Lemma hinreichend aber nicht notwendig um
Nicht-Regularität zu zeigen.
85
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt
86
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt
86
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt
86
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt
87
Definition 3.37
Sei D ein DFA, NFA, RE, rechtslineare Grammatik . . . .
87
Lemma 3.38
Das Wortproblem ist für ein Wort w und DFA M in Zeit
O(|w| + |M |) entscheidbar.
88
Lemma 3.38
Das Wortproblem ist für ein Wort w und DFA M in Zeit
O(|w| + |M |) entscheidbar.
Lemma 3.39
Das Wortproblem ist für ein Wort w und NFA N in Zeit
O(|Q|2 |w| + |N |) entscheidbar.
88
Lemma 3.38
Das Wortproblem ist für ein Wort w und DFA M in Zeit
O(|w| + |M |) entscheidbar.
Lemma 3.39
Das Wortproblem ist für ein Wort w und NFA N in Zeit
O(|Q|2 |w| + |N |) entscheidbar.
Beweis:
Sei Q = {1, . . . , s}, q0 = 1 und w = a1 . . . an .
S := {1} S
for i := 1 to n do S := j∈S δ(j, ai )
return (S ∩ F 6= ∅)
88
Lemma 3.40
Das Leerheitsproblem ist für NFAs und DFAs entscheidbar
(in Zeit O(|Q|2 |Σ|) bzw O(|Q||Σ|)).
89
Lemma 3.40
Das Leerheitsproblem ist für NFAs und DFAs entscheidbar
(in Zeit O(|Q|2 |Σ|) bzw O(|Q||Σ|)).
Beweis:
L(M ) = ∅ gdw kein Endzustand von q0 erreichbar ist.
Dies ist eine einfache Suche in einem Graphen, die jede Kante
maximal ein Mal benutzen muss.
Ein NFA hat ≤ |Q|2 |Σ| Kanten, ein DFA hat ≤ |Q||Σ| Kanten.
89
Lemma 3.40
Das Leerheitsproblem ist für NFAs und DFAs entscheidbar
(in Zeit O(|Q|2 |Σ|) bzw O(|Q||Σ|)).
Beweis:
L(M ) = ∅ gdw kein Endzustand von q0 erreichbar ist.
Dies ist eine einfache Suche in einem Graphen, die jede Kante
maximal ein Mal benutzen muss.
Ein NFA hat ≤ |Q|2 |Σ| Kanten, ein DFA hat ≤ |Q||Σ| Kanten.
89
Lemma 3.41
Das Endlichkeitsproblem ist für DFAs oder NFAs entscheidbar.
90
Lemma 3.41
Das Endlichkeitsproblem ist für DFAs oder NFAs entscheidbar.
Beweis:
|L(M )| = ∞ gdw von q0 aus eine nicht-leere Schleife erreichbar
ist, von der aus F erreichbar ist.
90
Lemma 3.41
Das Endlichkeitsproblem ist für DFAs oder NFAs entscheidbar.
Beweis:
|L(M )| = ∞ gdw von q0 aus eine nicht-leere Schleife erreichbar
ist, von der aus F erreichbar ist.
Reach(K) = R := ∅; W := K
while W 6= ∅ do
pick and remove some p ∈ W
if p ∈
/ R then S
R := R ∪ {p}; W := W ∪ a∈Σ δ(p, a)
return R
F inite(Q, Σ, δ, q0 , F ) = R := Reach({q0 }) S
C := {p ∈ R | p ∈ Reach( a∈Σ δ(p, a))}
return (Reach(C) ∩ F = ∅)
90
Lemma 3.42
Das Äquivalenzproblem ist für DFAs entscheidbar.
Beweis:
Folgt direkt aus
L1 ⊆ L2 ⇔ L1 ∩ L2 = ∅
L1 = L2 ⇔ L1 ⊆ L2 ∧ L2 ⊆ L1
91
Satz 3.43
Das Äquivalenzproblem für DFAs ist in Zeit O(|Q1 ||Q2 ||Σ|)
entscheidbar.
92
Satz 3.43
Das Äquivalenzproblem für DFAs ist in Zeit O(|Q1 ||Q2 ||Σ|)
entscheidbar.
Beweis:
Gegeben: DFAs M1 mit m und M2 mit n Zuständen.
Mit Hilfe der Produkt-Konstruktion für ∩ folgt:
Anzahl der Zustände
L(M1 ) ∩ L(M2 ) mn
L(M1 ) ∩ L(M2 ) mn
92
Korollar 3.44
Das Äquivalenzproblem für NFAs ist in Zeit O(2|Q1 |+|Q2 | )
entscheidbar (bei fixem Σ).
93
Korollar 3.44
Das Äquivalenzproblem für NFAs ist in Zeit O(2|Q1 |+|Q2 | )
entscheidbar (bei fixem Σ).
Beweis:
2 NFAs mit m und n Zuständen
2 DFAs mit 2m und 2n Zuständen
Äquivalenztest in Zeit O(2m 2n )
93
Korollar 3.44
Das Äquivalenzproblem für NFAs ist in Zeit O(2|Q1 |+|Q2 | )
entscheidbar (bei fixem Σ).
Beweis:
2 NFAs mit m und n Zuständen
2 DFAs mit 2m und 2n Zuständen
Äquivalenztest in Zeit O(2m 2n )
Korollar 3.45
Das Äquivalenzproblem für reguläre Ausdrücke ist entscheidbar.
93
Fazit:
94
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen
95
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen
sondern Lösen:
95
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen
sondern Lösen:
Anwendung:
Automat Gleichungssystem RE
95
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen
sondern Lösen:
Anwendung:
Automat Gleichungssystem RE
95
Beispiel 3.46
Ein Automatenfragment:
q2
b
Li := {w | δ̂(qi , w) ∈ F }
a q1 =⇒
c
L1 = {a}L1 ∪ {b}L2 ∪ {c}L3
q3
96
Beispiel 3.46
Ein Automatenfragment:
q2
b
Li := {w | δ̂(qi , w) ∈ F }
a q1 =⇒
c
L1 = {a}L1 ∪ {b}L2 ∪ {c}L3
q3
96
Satz 3.47 (Ardens Lemma)
Sind A, B und X Sprachen mit ∈
/ A, so gilt
X = AX ∪ B =⇒ X = A∗ B
97
Satz 3.47 (Ardens Lemma)
Sind A, B und X Sprachen mit ∈
/ A, so gilt
X = AX ∪ B =⇒ X = A∗ B
Korollar 3.48
Sind α, β und X reguläre Ausdrücke mit ∈
/ L(α), so gilt
X ≡ αX | β =⇒ X ≡ α∗ β
97
Satz 3.47 (Ardens Lemma)
Sind A, B und X Sprachen mit ∈
/ A, so gilt
X = AX ∪ B =⇒ X = A∗ B
Korollar 3.48
Sind α, β und X reguläre Ausdrücke mit ∈
/ L(α), so gilt
X ≡ αX | β =⇒ X ≡ α∗ β
Bemerkungen
X = {}X ∪ B hat keine eindeutige Lösung:
jede Sprache X ⊇ B ist Lösung.
X ≡ aXb | hat keine reguläre Lösung.
97
Satz 3.47 (Ardens Lemma)
Sind A, B und X Sprachen mit ∈
/ A, so gilt
X = AX ∪ B =⇒ X = A∗ B
Korollar 3.48
Sind α, β und X reguläre Ausdrücke mit ∈
/ L(α), so gilt
X ≡ αX | β =⇒ X ≡ α∗ β
Bemerkungen
X = {}X ∪ B hat keine eindeutige Lösung:
jede Sprache X ⊇ B ist Lösung.
X ≡ aXb | hat keine reguläre Lösung.
97
Satz 3.47 (Ardens Lemma)
Sind A, B und X Sprachen mit ∈
/ A, so gilt
X = AX ∪ B =⇒ X = A∗ B
Korollar 3.48
Sind α, β und X reguläre Ausdrücke mit ∈
/ L(α), so gilt
X ≡ αX | β =⇒ X ≡ α∗ β
Bemerkungen
X = {}X ∪ B hat keine eindeutige Lösung:
jede Sprache X ⊇ B ist Lösung.
X ≡ aXb | hat keine reguläre Lösung.
97
Umwandlung eines DFAs in einen äquivalenten regulären Ausdruck:
Beispiel 3.49
a
1 2 b
a
b a
b
98
Umwandlung eines DFAs in einen äquivalenten regulären Ausdruck:
Beispiel 3.49
a
1 2 b
a
b a
b
3
Äquivalentes Gleichungssystem:
X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 |
X3 ≡ bX1 | aX2 |
98
Lösen des Gleichungssystems:
X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 |
X3 ≡ bX1 | aX2 |
99
Lösen des Gleichungssystems:
X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 |
X3 ≡ bX1 | aX2 |
X2 ≡ b∗ (aX1 | )
99
Lösen des Gleichungssystems:
X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 |
X3 ≡ bX1 | aX2 |
X2 ≡ b∗ (aX1 | )
Zurück einsetzen:
99
Lösen des Gleichungssystems:
X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 |
X3 ≡ bX1 | aX2 |
X2 ≡ b∗ (aX1 | )
Zurück einsetzen:
100
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ |
100
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ |
100
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ |
Nach X1 auflösen:
100
Umwandlung eines FAs in einen äquivalenten regulären Ausdruck:
101
Umwandlung eines FAs in einen äquivalenten regulären Ausdruck:
Wandle FA mit n Zuständen in ein System von n Gleichungen
mit n Variablen um:
Xi ≡ ai1 X1 | · · · | ain Xn | bi
101
Umwandlung eines FAs in einen äquivalenten regulären Ausdruck:
Wandle FA mit n Zuständen in ein System von n Gleichungen
mit n Variablen um:
Xi ≡ ai1 X1 | · · · | ain Xn | bi
c
aij := c1 | · · · | ck falls {c1 , . . . , ck } = {c ∈ Σ | qi → qj }
c
wobei aij := ∅ falls qi → qj für kein c ∈ Σ
101
Umwandlung eines FAs in einen äquivalenten regulären Ausdruck:
Wandle FA mit n Zuständen in ein System von n Gleichungen
mit n Variablen um:
Xi ≡ ai1 X1 | · · · | ain Xn | bi
c
aij := c1 | · · · | ck falls {c1 , . . . , ck } = {c ∈ Σ | qi → qj }
c
wobei aij := ∅ falls qi → qj für kein c ∈ Σ
(
falls qi ∈ F
bi :=
∅ sonst
101
Umwandlung eines FAs in einen äquivalenten regulären Ausdruck:
Wandle FA mit n Zuständen in ein System von n Gleichungen
mit n Variablen um:
Xi ≡ ai1 X1 | · · · | ain Xn | bi
c
aij := c1 | · · · | ck falls {c1 , . . . , ck } = {c ∈ Σ | qi → qj }
c
wobei aij := ∅ falls qi → qj für kein c ∈ Σ
(
falls qi ∈ F
bi :=
∅ sonst
101
Umwandlung eines FAs in einen äquivalenten regulären Ausdruck:
Wandle FA mit n Zuständen in ein System von n Gleichungen
mit n Variablen um:
Xi ≡ ai1 X1 | · · · | ain Xn | bi
c
aij := c1 | · · · | ck falls {c1 , . . . , ck } = {c ∈ Σ | qi → qj }
c
wobei aij := ∅ falls qi → qj für kein c ∈ Σ
(
falls qi ∈ F
bi :=
∅ sonst
X = A(AX ∪ B) ∪ B = A2 X ∪ AB ∪ B
102
Beweis von Ardens Lemma:
Wir nehmen an X = AX ∪ B.
X = A(AX ∪ B) ∪ B = A2 X ∪ AB ∪ B
= A2 (AX ∪ B) ∪ AB ∪ B = A3 X ∪ A2 B ∪ AB ∪ B = . . .
102
Beweis von Ardens Lemma:
Wir nehmen an X = AX ∪ B.
X = A(AX ∪ B) ∪ B = A2 X ∪ AB ∪ B
= A2 (AX ∪ B) ∪ AB ∪ B = A3 X ∪ A2 B ∪ AB ∪ B = . . .
102
Beweis von Ardens Lemma:
Wir nehmen an X = AX ∪ B.
X = A(AX ∪ B) ∪ B = A2 X ∪ AB ∪ B
= A2 (AX ∪ B) ∪ AB ∪ B = A3 X ∪ A2 B ∪ AB ∪ B = . . .
102
Beweis von Ardens Lemma:
Wir nehmen an X = AX ∪ B.
X = A(AX ∪ B) ∪ B = A2 X ∪ AB ∪ B
= A2 (AX ∪ B) ∪ AB ∪ B = A3 X ∪ A2 B ∪ AB ∪ B = . . .
= An+2 X ∪ i≤n+1 Ai B
S
= An+1 X ∪ i≤n Ai B
S
102
Wir zeigen nun X = A∗ B.
103
Wir zeigen nun X = A∗ B.
[
A∗ B ⊆ X: w ∈ A∗ B = Ai B
i∈N
=⇒ ∃n. w ∈ An B
=⇒ w ∈ X
103
Wir zeigen nun X = A∗ B.
[
A∗ B ⊆ X: w ∈ A∗ B = Ai B
i∈N
=⇒ ∃n. w ∈ An B
=⇒ w ∈ X
X⊆ A∗ B:
103
Wir zeigen nun X = A∗ B.
[
A∗ B ⊆ X: w ∈ A∗ B = Ai B
i∈N
=⇒ ∃n. w ∈ An B
=⇒ w ∈ X
X⊆ A∗ B: Sei w ∈ X und n := |w|.
∈
/A
=⇒ ∀u ∈ An+1 . |u| ≥ n + 1
/ An+1 X
=⇒ w ∈
[
=⇒ w ∈ Ai B (wegen (1))
i≤n
iB = A∗ B
S
=⇒ w ∈ i∈N A
103
3.10 Minimierung endlicher Automaten
Wir zeigen, dass jede reguläre Sprache einen einzigen minimalen
Recognizer hat und geben Algorithmen an, die diesen Recognizer
konstruieren.
1 Beispiele
2 Algorithmen
3 Minimalitätsbeweis
104
Algorithmus zur Minimierung eines DFA
1 Entferne alle von q0 aus nicht erreichbaren Zustände.
2 Berechne die äquivalenten Zustände des Automaten.
3 Kollabiere den Automaten durch Zusammenfassung aller
äquivalenten Zustände.
105
Algorithmus zur Minimierung eines DFA
1 Entferne alle von q0 aus nicht erreichbaren Zustände.
2 Berechne die äquivalenten Zustände des Automaten.
3 Kollabiere den Automaten durch Zusammenfassung aller
äquivalenten Zustände.
Zustände p und q sind unterscheidbar wenn es w ∈ Σ∗ gibt mit
δ̂(p, w) ∈ F und δ̂(q, w) ∈
/ F oder umgekehrt.
Zustände sind äquivalent wenn sie nicht unterscheidbar sind, d.h.
wenn für alle w ∈ Σ∗ gilt:
δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F
105
Algorithmus zur Minimierung eines DFA
1 Entferne alle von q0 aus nicht erreichbaren Zustände.
2 Berechne die äquivalenten Zustände des Automaten.
3 Kollabiere den Automaten durch Zusammenfassung aller
äquivalenten Zustände.
Zustände p und q sind unterscheidbar wenn es w ∈ Σ∗ gibt mit
δ̂(p, w) ∈ F und δ̂(q, w) ∈
/ F oder umgekehrt.
Zustände sind äquivalent wenn sie nicht unterscheidbar sind, d.h.
wenn für alle w ∈ Σ∗ gilt:
δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F
Gilt p ∈ F und q ∈
/ F , dann sind p und q unterscheidbar.
Sind δ(p, a) und δ(q, a) unterscheidbar, dann auch p und q.
⇒ Unterscheidbarkeit pflanzt sich rückwärts fort.
105
Berechnung äquivalenter Zustände eines DFA
106
Berechnung äquivalenter Zustände eines DFA
106
Berechnung äquivalenter Zustände eines DFA
106
Berechnung äquivalenter Zustände eines DFA
106
Berechnung äquivalenter Zustände eines DFA
106
Berechnung äquivalenter Zustände eines DFA
106
Berechnung äquivalenter Zustände eines DFA
107
Implementierung von U :
0
1
2
3
107
Implementierung von U :
0
1
2
3
107
Implementierung von U :
0
1
2
3
107
Implementierung von U :
0
1
2
3
Komplexität:
n2 (n−1)2
O n2 + n
|Σ| = O n(n−1)
n
= O(n4 )
2 2 2 + 4 |Σ|
bei fixem Σ.
107
Beispiel 3.51
0
0 1 0
0
1
1 1 2
2 3 3
1 0 4
0 1 5
0 0, 1
4 5
1
108
Beispiel 3.51
0
0 1 0
0
1
1 1 × × 2
2 3 × × 3
1 0 × × 4
0 1 × × × 5
0 0, 1
4 5
1
108
Beispiel 3.51
0
0 1 0
0
1
1 1 × × 2
2 3 × × 3
1 0 × × 4
0 1 × × × × × 5
0 0, 1
4 5
1
108
Beispiel 3.51
0
0 1 0
0
1
1 1 × × 2
2 3 × × 3
1 0 × × 4
0 1 × × × × × 5
0 0, 1
4 5
1
0, 1
01 234 5
1 1
0 0
108
Von O(n4 ) zu O(n2 ) mit Abhängigkeitsanalyse:
109
Von O(n4 ) zu O(n2 ) mit Abhängigkeitsanalyse:
{p0 , q 0 } unterscheidbar =⇒
a
{p, q} unterscheidbar falls {p, q} → {p0 , q 0 }
109
Von O(n4 ) zu O(n2 ) mit Abhängigkeitsanalyse:
{p0 , q 0 } unterscheidbar =⇒
a
{p, q} unterscheidbar falls {p, q} → {p0 , q 0 }
D[{p0 , q 0 }] : Menge der Paare {p, q} wie oben, anfangs leer
109
Von O(n4 ) zu O(n2 ) mit Abhängigkeitsanalyse:
{p0 , q 0 } unterscheidbar =⇒
a
{p, q} unterscheidbar falls {p, q} → {p0 , q 0 }
D[{p0 , q 0 }] : Menge der Paare {p, q} wie oben, anfangs leer
mark({p0 , q 0 }) =
if {p0 , q 0 } unmarkiert then
markiere {p0 , q 0 }
for all {p, q} ∈ D[{p0 , q 0 }] do mark({p, q})
109
Von O(n4 ) zu O(n2 ) mit Abhängigkeitsanalyse:
{p0 , q 0 } unterscheidbar =⇒
a
{p, q} unterscheidbar falls {p, q} → {p0 , q 0 }
D[{p0 , q 0 }] : Menge der Paare {p, q} wie oben, anfangs leer
mark({p0 , q 0 }) =
if {p0 , q 0 } unmarkiert then
markiere {p0 , q 0 }
for all {p, q} ∈ D[{p0 , q 0 }] do mark({p, q})
109
John Hopcroft.
An n log n Algorithm for Minimizing the States in a Finite
Automaton. 1971.
110
Eine weitere Anwendung: Äquivalenztest von DFAs.
111
Eine weitere Anwendung: Äquivalenztest von DFAs.
1 Gegeben DFAs M1 und M2 , bilde disjunkte Vereiningung.
( Male M1 und M2 nebeneinander.“)
”
2 Berechne Menge der äquivalenten Zustände.
3 L(M1 ) = L(M2 ) gdw die beiden Startzustände äquivalent
sind.
111
Bisher: Der Minimierungsalgorithmus (zur Erinnerung).
1 Entferne alle von q0 aus nicht erreichbaren Zustände.
2 Berechne die äquivalenten Zustände des Automaten.
3 Kollabiere den Automaten durch Zusammenfassung aller
äquivalenten Zustände.
112
Formale Definition des “kollabierten Automaten”
Eine Relation ≈ ⊆ A × A ist eine Äquivalenzrelation falls
Reflexivität: ∀a ∈ A. a ≈ a
Symmetrie: ∀a, b ∈ A. a ≈ b =⇒ b ≈ a
Transitivität: ∀a, b, c ∈ A. a ≈ b ∧ b ≈ c =⇒ a ≈ c
113
Formale Definition des “kollabierten Automaten”
Eine Relation ≈ ⊆ A × A ist eine Äquivalenzrelation falls
Reflexivität: ∀a ∈ A. a ≈ a
Symmetrie: ∀a, b ∈ A. a ≈ b =⇒ b ≈ a
Transitivität: ∀a, b, c ∈ A. a ≈ b ∧ b ≈ c =⇒ a ≈ c
Äquivalenzklasse:
[a]≈ := {b | a ≈ b}
Es gilt:
[a]≈ = [b]≈ ⇔ a≈b
113
Formale Definition des “kollabierten Automaten”
Eine Relation ≈ ⊆ A × A ist eine Äquivalenzrelation falls
Reflexivität: ∀a ∈ A. a ≈ a
Symmetrie: ∀a, b ∈ A. a ≈ b =⇒ b ≈ a
Transitivität: ∀a, b, c ∈ A. a ≈ b ∧ b ≈ c =⇒ a ≈ c
Äquivalenzklasse:
[a]≈ := {b | a ≈ b}
Es gilt:
[a]≈ = [b]≈ ⇔ a≈b
Quotientenmenge:
A/≈ := {[a]≈ | a ∈ A}
113
Im Folgenden sei M = (Q, Σ, δ, q0 , F ) ein DFA ohne unerreichbare
Zustände.
Definition 3.52 (Äquivalenz von Zuständen)
p ≡M q ⇔ (∀w ∈ Σ∗ . δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F )
114
Im Folgenden sei M = (Q, Σ, δ, q0 , F ) ein DFA ohne unerreichbare
Zustände.
Definition 3.52 (Äquivalenz von Zuständen)
p ≡M q ⇔ (∀w ∈ Σ∗ . δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F )
Erinnerung:
p ≡M q =⇒ δ(p, a) ≡M δ(q, a)
Algorithmus U liefert die unterscheidbaren Zustände, also 6≡.
In der weiteren Analyse beziehen wir uns direkt auf ≡, nicht mehr
auf den Algorithmus.
114
Die Kollabierung“ von M bzgl. ≡ ist der Quotientenautomat:
”
Definition 3.53 (Quotientenautomat)
115
Die Kollabierung“ von M bzgl. ≡ ist der Quotientenautomat:
”
Definition 3.53 (Quotientenautomat)
115
Die Kollabierung“ von M bzgl. ≡ ist der Quotientenautomat:
”
Definition 3.53 (Quotientenautomat)
Lemma 3.54
M und M/≡ erkennen dieselbe Sprache: L(M/≡) = L(M ).
115
Die Kollabierung“ von M bzgl. ≡ ist der Quotientenautomat:
”
Definition 3.53 (Quotientenautomat)
Lemma 3.54
M und M/≡ erkennen dieselbe Sprache: L(M/≡) = L(M ).
Beweis: Übung.
115
Minimalität des Quotientenautomaten
Eine Beobachtung: Für p := δ̂(q0 , u) und q := δ̂(q0 , v) gilt
p ≡M q ⇔ ∀w ∈ Σ∗ . δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F
⇔ ∀w ∈ Σ∗ . δ̂(q0 , uw) ∈ F ⇔ δ̂(q0 , vw) ∈ F
⇔ ∀w ∈ Σ∗ . uw ∈ L(M ) ⇔ vw ∈ L(M )
116
Minimalität des Quotientenautomaten
Eine Beobachtung: Für p := δ̂(q0 , u) und q := δ̂(q0 , v) gilt
p ≡M q ⇔ ∀w ∈ Σ∗ . δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F
⇔ ∀w ∈ Σ∗ . δ̂(q0 , uw) ∈ F ⇔ δ̂(q0 , vw) ∈ F
⇔ ∀w ∈ Σ∗ . uw ∈ L(M ) ⇔ vw ∈ L(M )
Definition 3.55
Jede Sprache L ⊆ Σ∗ induziert eine Äquivalenzrelation
≡L ⊆ Σ∗ × Σ∗ :
u ≡L v ⇔ ∀w ∈ Σ∗ . uw ∈ L ⇔ vw ∈ L
116
Minimalität des Quotientenautomaten
Eine Beobachtung: Für p := δ̂(q0 , u) und q := δ̂(q0 , v) gilt
p ≡M q ⇔ ∀w ∈ Σ∗ . δ̂(p, w) ∈ F ⇔ δ̂(q, w) ∈ F
⇔ ∀w ∈ Σ∗ . δ̂(q0 , uw) ∈ F ⇔ δ̂(q0 , vw) ∈ F
⇔ ∀w ∈ Σ∗ . uw ∈ L(M ) ⇔ vw ∈ L(M )
Definition 3.55
Jede Sprache L ⊆ Σ∗ induziert eine Äquivalenzrelation
≡L ⊆ Σ∗ × Σ∗ :
u ≡L v ⇔ ∀w ∈ Σ∗ . uw ∈ L ⇔ vw ∈ L
Obige Beobachtung lässt sich nun schreiben als
117
u ≡L(M ) v ⇔ δ̂(q0 , u) ≡M δ̂(q0 , v)
Da alle Zustände von q0 erreichbar sind, gilt sogar: Die Abbildung
118
u ≡L(M ) v ⇔ δ̂(q0 , u) ≡M δ̂(q0 , v)
Da alle Zustände von q0 erreichbar sind, gilt sogar: Die Abbildung
118
u ≡L(M ) v ⇔ δ̂(q0 , u) ≡M δ̂(q0 , v)
Da alle Zustände von q0 erreichbar sind, gilt sogar: Die Abbildung
Beweis:
Sei L := L(M ) und M 0 ein DFA mit L(M 0 ) = L. Dann gilt:
118
Es gilt sogar:
Fakt 3.57
Alle Quotientenautomaten M/≡M für die gleiche Sprache L(M )
haben die gleiche Struktur, d.h. sie unterscheiden sich nur durch
eine Umbenennung der Zustände.
119
Es gilt sogar:
Fakt 3.57
Alle Quotientenautomaten M/≡M für die gleiche Sprache L(M )
haben die gleiche Struktur, d.h. sie unterscheiden sich nur durch
eine Umbenennung der Zustände.
Daher beschriften wir die Zustände des kanonischen
Minimalautomaten für eine Sprache L mit ≡L Äquivalenzklassen.
119
Es gilt sogar:
Fakt 3.57
Alle Quotientenautomaten M/≡M für die gleiche Sprache L(M )
haben die gleiche Struktur, d.h. sie unterscheiden sich nur durch
eine Umbenennung der Zustände.
Daher beschriften wir die Zustände des kanonischen
Minimalautomaten für eine Sprache L mit ≡L Äquivalenzklassen.
Beispiel 3.58
Sei L := {w ∈ {0, 1}∗ | w endet mit 00}.
119
Es gilt sogar:
Fakt 3.57
Alle Quotientenautomaten M/≡M für die gleiche Sprache L(M )
haben die gleiche Struktur, d.h. sie unterscheiden sich nur durch
eine Umbenennung der Zustände.
Daher beschriften wir die Zustände des kanonischen
Minimalautomaten für eine Sprache L mit ≡L Äquivalenzklassen.
Beispiel 3.58
Sei L := {w ∈ {0, 1}∗ | w endet mit 00}.
Die einzigen drei ≡L Äquivalenzklassen sind:
119
Es gilt sogar:
Fakt 3.57
Alle Quotientenautomaten M/≡M für die gleiche Sprache L(M )
haben die gleiche Struktur, d.h. sie unterscheiden sich nur durch
eine Umbenennung der Zustände.
Daher beschriften wir die Zustände des kanonischen
Minimalautomaten für eine Sprache L mit ≡L Äquivalenzklassen.
Beispiel 3.58
Sei L := {w ∈ {0, 1}∗ | w endet mit 00}.
Die einzigen drei ≡L Äquivalenzklassen sind:
119
Es gilt sogar:
Fakt 3.57
Alle Quotientenautomaten M/≡M für die gleiche Sprache L(M )
haben die gleiche Struktur, d.h. sie unterscheiden sich nur durch
eine Umbenennung der Zustände.
Daher beschriften wir die Zustände des kanonischen
Minimalautomaten für eine Sprache L mit ≡L Äquivalenzklassen.
Beispiel 3.58
Sei L := {w ∈ {0, 1}∗ | w endet mit 00}.
Die einzigen drei ≡L Äquivalenzklassen sind:
119
Definition 3.59 (Kanonischer Minimalautomat)
ML := (Σ∗ /≡L , Σ, δL , []≡L , FL )
mit δL ([w]≡L , a) := [wa]≡L und FL := {[w]≡L | w ∈ L}.
120
Definition 3.59 (Kanonischer Minimalautomat)
ML := (Σ∗ /≡L , Σ, δL , []≡L , FL )
mit δL ([w]≡L , a) := [wa]≡L und FL := {[w]≡L | w ∈ L}.
120
Definition 3.59 (Kanonischer Minimalautomat)
ML := (Σ∗ /≡L , Σ, δL , []≡L , FL )
mit δL ([w]≡L , a) := [wa]≡L und FL := {[w]≡L | w ∈ L}.
120
Definition 3.59 (Kanonischer Minimalautomat)
ML := (Σ∗ /≡L , Σ, δL , []≡L , FL )
mit δL ([w]≡L , a) := [wa]≡L und FL := {[w]≡L | w ∈ L}.
Beweis:
=⇒“: Ist L regulär, so wird L von einem DFA M akzeptiert.
”
Daher hat ≡L so viele Äquivalenzklassen wie M/≡M Zustände.
120
Definition 3.59 (Kanonischer Minimalautomat)
ML := (Σ∗ /≡L , Σ, δL , []≡L , FL )
mit δL ([w]≡L , a) := [wa]≡L und FL := {[w]≡L | w ∈ L}.
Beweis:
=⇒“: Ist L regulär, so wird L von einem DFA M akzeptiert.
”
Daher hat ≡L so viele Äquivalenzklassen wie M/≡M Zustände.
⇐=“: Hat ≡L endlich viele Äquivalenzklasse,
”
so ist ML ein DFA mit L(ML ) = L.
120
Wie sieht ML aus wenn L nicht regulär ist?
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
[]
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1
→
[] [1]
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1
→ →
[] [1] [12 ]
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
[] [1] [12 ] ···
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
[0] ← [] [1] [12 ] ···
0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
[02 ] ← [0] ← [] [1] [12 ] ···
0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
··· ← [02 ] ← [0] ← [] [1] [12 ] ···
0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
··· ← [02 ] ← [0] ← [] ← [1] [12 ] ···
0 0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ···
0 0 0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1
→ → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1
→ → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1
→ → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
Endzustände?
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
Endzustände?
[1i ]≡L = {w |
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
Endzustände?
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
Endzustände?
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
Endzustände?
121
Wie sieht ML aus wenn L nicht regulär ist?
Beispiel 3.61
L = {w | w #0 (w) = #1 (w)} (#a (w) = Anzahl der a in w)
↓
1 1 1 1 1 1
→ → → → → →
··· ← [02 ] ← [0] ← [] ← [1] ← [12 ] ← ···
0 0 0 0 0 0
Endzustände?
122
Bemerkung
Eindeutigkeit des minimalen Automaten (modulo Umbenennung
der Zustände) gilt nur bei DFAs, nicht bei NFAs!
122
Rückblick reguläre Sprachen
DFA, NFA, -NFA und RE definieren die gleiche Sprachklasse.
Potenzmengenkonstruktion (exponentiell)
Strukturelle Übersetzung von RE nach -NFA
Übersetzung NFA nach RE, zB über Gleichungssysteme
(exponentiell)
Regularitätserhaltende Konstruktionen auf Sprachen bzw
Automaten:
∪, ∩, . . . , R , . . .
Für welche Darstellung wie teuer?
(Komplement, Produkt, . . . )
NFA kompakt aber oft teuer; DFA oft billiger
Entscheidungsprobleme auf Automaten und REs:
Direkt entscheidbar?
Auf Automat? (Oft mit Erreichbarkeit) Auf RE?
Reduzierbar auf anderes Problem?
ZB L(A) ⊆ L(B) auf L(A) ∩ L(B) = ∅
Für welche Darstellung wie teuer?
123
Pumping-Lemma
Äquivalenzen ≡ zw REs:
Standardregeln: Kommutativität etc, Beweis mit L(.)
α ≡ β entscheidbar da L(α) = L(β) über Automaten
entscheidbar
Auch für REs mit Variablen entscheidbar: betrachte
Variablen als Konstanten
Gleichungssysteme lösbar
durch Variablenelimination mit Ardens Lemma
Minimierung
Algorithmen zur Kollabierung
Relationen ≡M und ≡L
Quotientenautomat M/≡M minimal,
da gleichgroß wie kanonischer minimaler Automat ML(M )
L genau dann regulär wenn ≡L endlich viele Klassen hat,
dh wenn ML endlich ist (Myhill-Nerode).
124
4. Kontextfreie Sprachen
125
4. Kontextfreie Sprachen
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen
<Term>
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor>
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor>
a
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
<Term>
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
<Term>
<Factor>
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
<Term>
<Factor>
a
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
<Term> <Factor>
<Factor>
a
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
<Term> <Factor>
<Factor> a
126
Der Syntaxbaum:
<Expr>
<Term>
<Term> ∗ <Factor>
<Factor> ( <Expr> )
a <Expr> + <Term>
<Term> <Factor>
<Factor> a
a
Die Blätter des Baums, von links nach rechts gelesen,
ergeben das abgeleitete Wort
126
Bemerkungen
Der vollständige Syntaxbaum enthält die gesamte Information
über die Ableitung, bis auf die (irrelevante) Reihenfolge des
Aufbaus.
Kontextfreie Grammatiken dienen zur Spezifikation von
Sprachen. Das Parsen ist:
Die Überprüfung, ob ein Wort von einer Grammatik
abgeleitet werden kann, bzw
Die Erzeugung des Syntaxbaums (parse tree).
127
Definition 4.2
Eine kontextfreie Grammatik G = (V, Σ, P, S) ist ein 4-Tupel:
V ist eine endlichen Menge, die Nichtterminalzeichen
(oder Variablen),
Σ ist ein Alphabet, die Terminalzeichen, disjunkt von V ,
P ⊆ V × (V ∪ Σ)∗ eine endlichen Menge, die Produktionen, und
S ∈ V ist das Startsymbol.
128
Definition 4.2
Eine kontextfreie Grammatik G = (V, Σ, P, S) ist ein 4-Tupel:
V ist eine endlichen Menge, die Nichtterminalzeichen
(oder Variablen),
Σ ist ein Alphabet, die Terminalzeichen, disjunkt von V ,
P ⊆ V × (V ∪ Σ)∗ eine endlichen Menge, die Produktionen, und
S ∈ V ist das Startsymbol.
Konventionen:
A, B, C, . . . sind Nichtterminale,
a, b, c, . . . (und Sonderzeichen wie +, ∗, . . . ) sind Terminale,
α, β, γ, . . . ∈ (V ∪ Σ)∗
Produktionen schreiben wir A → α statt (A, α) ∈ P .
Statt A → α1 , A → α2 , A → α3 schreiben wir einfach
A → α1 | α2 | α3
128
Beispiel 4.3 (Arithmetische Ausdrücke)
V = {E, T, F }
Σ = {a, +, ∗, (, )}
P =
E → T |E+T
T → F |T ∗F
F → a | (E)
S= E
129
Definition 4.4
Eine kontextfreie Grammatik G = (V, Σ, P, S) induziert eine
Ableitungsrelation →G auf Wörtern über V ∪ Σ:
α →G β
Beispiel:
a+T +a →G a+T ∗F +a
130
Definition 4.5 (Reflexive transitive Hülle)
α →0G α
α →n+1
G γ :⇔ ∃β. α →nG β →G γ
α →∗G β :⇔ ∃n. α →nG β
n
α →+
G β :⇔ ∃n > 0. α →G β
Beispiel: E →11 ∗
G a ∗ (a + a) und daher E →G a ∗ (a + a).
131
Definition 4.5 (Reflexive transitive Hülle)
α →0G α
α →n+1
G γ :⇔ ∃β. α →nG β →G γ
α →∗G β :⇔ ∃n. α →nG β
n
α →+
G β :⇔ ∃n > 0. α →G β
Beispiel: E →11 ∗
G a ∗ (a + a) und daher E →G a ∗ (a + a).
Wir nennen
α1 →G α2 →G · · · →G αn
eine Linksableitung gdw in jedem Schritt das linkeste Nichtterminal
in αi ersetzt wird.
131
Definition 4.6 (Kontextfreie Sprache)
Eine kontextfreien Grammatik G = (V, Σ, P, S) erzeugt die Sprache
L(G) := {w ∈ Σ∗ | S →∗G w}
132
Definition 4.6 (Kontextfreie Sprache)
Eine kontextfreien Grammatik G = (V, Σ, P, S) erzeugt die Sprache
L(G) := {w ∈ Σ∗ | S →∗G w}
Abkürzungen:
CFG Kontextfreie Grammatik (context-free grammar)
CFL Kontextfreie Sprache (context-free language)
Konvention:
Ist G aus dem Kontext eindeutig ersichtlich, so schreibt man auch
nur α → β statt α →G β.
132
Beispiel 4.7
Die nicht-reguläre Sprache L = {an bn | n ∈ N} ist kontextfrei, da
sie von der CFG
S → aSb |
erzeugt wird. Genauer: L = L(G) wobei G = (V, Σ, P, S) mit
V = {S}
Σ = {a, b}
P = {S → aSb | }
133
Beispiel 4.8
Die nicht-reguläre Sprache der Palindrome (w = wR ) über {a, b}
wird von folgender CFG erzeugt:
S → | a | b | aSa | bSb
S → | a | b | aSa | bSb
a b aSa bSb
Beispiel 4.8
Die nicht-reguläre Sprache der Palindrome (w = wR ) über {a, b}
wird von folgender CFG erzeugt:
S → | a | b | aSa | bSb
a b aSa bSb
134
Lemma 4.9 (Dekompositionslemma)
α1 α2 →nG β
⇔
∃β1 , β2 , n1 , n2 . β = β1 β2 ∧ n = n1 + n2 ∧ αi →nGi βi (i = 1, 2)
Beweis:
Übung!
135
4.2 Induktive Definitionen, Syntaxbäume und Ableitungen
1 Beispiel: Balancierte Klammern
2 Induktive Definitionen und Syntaxbäume allgemein
3 Äquivalenz von Ableitung, Syntaxbaum und induktiver
Erzeugung
136
Beispiel 4.10
S → | [S] | SS
137
Beispiel 4.10
S → | [S] | SS
137
Beispiel 4.10
S → | [S] | SS
∈ LG (S)
137
Beispiel 4.10
S → | [S] | SS
∈ LG (S)
u ∈ LG (S) =⇒ [u] ∈ LG (S)
137
Beispiel 4.10
S → | [S] | SS
∈ LG (S)
u ∈ LG (S) =⇒ [u] ∈ LG (S)
u ∈ LG (S) ∧ v ∈ LG (S) =⇒ uv ∈ LG (S)
137
Beispiel 4.10
S → | [S] | SS
∈ LG (S)
u ∈ LG (S) =⇒ [u] ∈ LG (S)
u ∈ LG (S) ∧ v ∈ LG (S) =⇒ uv ∈ LG (S)
137
Bemerkungen
Die Produktionen (→) erzeugen Wörter top-down,
d.h. von einem Nichtterminal zu einem Wort hin.
Die induktive Definition ( =⇒ ) erzeugt Wörter bottom-up,
d.h. sie setzt kleinere Wörter zu größeren zusammen.
Die induktive Definition betrachtet nur Wörter aus Σ∗ .
138
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
139
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
P ()
139
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
P ()
P (u) =⇒ P ([u])
139
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
P ()
P (u) =⇒ P ([u])
P (u) ∧ P (v) =⇒ P (uv)
139
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
P ()
P (u) =⇒ P ([u])
P (u) ∧ P (v) =⇒ P (uv)
Induktion über die Erzeugung von u“
”
139
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
P ()
P (u) =⇒ P ([u])
P (u) ∧ P (v) =⇒ P (uv)
Induktion über die Erzeugung von u“
”
Lemma 4.11
Alle u ∈ LG (S) enthalten gleich viele [ wie ].
139
Zur induktiven Definition von LG (S) gehört ein Induktionsprinzip:
Um zu zeigen, dass für alle u ∈ LG (S) eine Eigenschaft P (u) gilt,
dh ∀u ∈ LG (S). P (u), zeige:
P ()
P (u) =⇒ P ([u])
P (u) ∧ P (v) =⇒ P (uv)
Induktion über die Erzeugung von u“
”
Lemma 4.11
Alle u ∈ LG (S) enthalten gleich viele [ wie ].
Beweis:
Mit Induktion über die Erzeugung von u:
enthält 0 [ und ].
Enthält u gleich viele [ wie ], so auch [u].
Enthalten u und v gleich viele [ wie ], so auch uv.
139
Definition 4.12 (Balancierte Klammerausdrücke)
140
Definition 4.12 (Balancierte Klammerausdrücke)
Präfix:
uw :⇔ ∃v. uv = w
Anzahl der Vorkommen:
Seien:
A(w) := #[ (w) B(w) := #] (w)
Wir nennen w ∈ {[, ]}∗ balanciert gdw
140
Definition 4.12 (Balancierte Klammerausdrücke)
Präfix:
uw :⇔ ∃v. uv = w
Anzahl der Vorkommen:
Seien:
A(w) := #[ (w) B(w) := #] (w)
Wir nennen w ∈ {[, ]}∗ balanciert gdw
(1) A(w) = B(w) und
140
Definition 4.12 (Balancierte Klammerausdrücke)
Präfix:
uw :⇔ ∃v. uv = w
Anzahl der Vorkommen:
Seien:
A(w) := #[ (w) B(w) := #] (w)
Wir nennen w ∈ {[, ]}∗ balanciert gdw
(1) A(w) = B(w) und
(2) für alle Präfixe u von w gilt A(u) ≥ B(u)
140
Definition 4.12 (Balancierte Klammerausdrücke)
Präfix:
uw :⇔ ∃v. uv = w
Anzahl der Vorkommen:
Seien:
A(w) := #[ (w) B(w) := #] (w)
Wir nennen w ∈ {[, ]}∗ balanciert gdw
(1) A(w) = B(w) und
(2) für alle Präfixe u von w gilt A(u) ≥ B(u)
Balanciert: [], [[]], [][], [[[][]][]]
140
Definition 4.12 (Balancierte Klammerausdrücke)
Präfix:
uw :⇔ ∃v. uv = w
Anzahl der Vorkommen:
Seien:
A(w) := #[ (w) B(w) := #] (w)
Wir nennen w ∈ {[, ]}∗ balanciert gdw
(1) A(w) = B(w) und
(2) für alle Präfixe u von w gilt A(u) ≥ B(u)
Balanciert: [], [[]], [][], [[[][]][]]
Nicht balanciert: ][, []][[]
140
Satz 4.13
Die Grammatik S → | [S] | SS erzeugt genau die Menge der
balancierten Wörter.
141
Satz 4.13
Die Grammatik S → | [S] | SS erzeugt genau die Menge der
balancierten Wörter.
Beweis:
u ∈ LG (S) =⇒ u balanciert:
Mit Ind. über die Erzeugung von u. (1) bewiesen, wir zeigen (2).
: p =⇒ p = =⇒ A(p) = B(p)
141
Satz 4.13
Die Grammatik S → | [S] | SS erzeugt genau die Menge der
balancierten Wörter.
Beweis:
u ∈ LG (S) =⇒ u balanciert:
Mit Ind. über die Erzeugung von u. (1) bewiesen, wir zeigen (2).
: p =⇒ p = =⇒ A(p) = B(p)
[u]: Sei p [u]
Fall p = : A(p) = B(p)
Fall p = [u]: A(p) = A(u) + 1 = B(u) + 1 = B(p)
Fall p = [q mit q u:
A(p) = A(q) + 1 ≥ B(q) + 1 > B(q) = B(p)
141
Satz 4.13
Die Grammatik S → | [S] | SS erzeugt genau die Menge der
balancierten Wörter.
Beweis:
u ∈ LG (S) =⇒ u balanciert:
Mit Ind. über die Erzeugung von u. (1) bewiesen, wir zeigen (2).
: p =⇒ p = =⇒ A(p) = B(p)
[u]: Sei p [u]
Fall p = : A(p) = B(p)
Fall p = [u]: A(p) = A(u) + 1 = B(u) + 1 = B(p)
Fall p = [q mit q u:
A(p) = A(q) + 1 ≥ B(q) + 1 > B(q) = B(p)
uv: Sei p uv.
Fall p u: A(p) ≥ B(p) mit IA für u
Fall p = uq und q v:
A(p) = A(u) + A(q) = B(u) + A(q) ≥ B(u) + B(q) = B(uq) =
B(p)
141
Beweis (Forts.)
u balanciert =⇒ u ∈ LG (S):
Mit vollständiger Induktion über n := |u|. (dh u = a1 . . . an )
IA: Jedes balancierte Wort < n liegt in LG (S).
Zz: u ∈ LG (S).
142
Beweis (Forts.)
u balanciert =⇒ u ∈ LG (S):
Mit vollständiger Induktion über n := |u|. (dh u = a1 . . . an )
IA: Jedes balancierte Wort < n liegt in LG (S).
Zz: u ∈ LG (S).
Falls n = 0, so u = ∈ LG (S).
142
Beweis (Forts.)
u balanciert =⇒ u ∈ LG (S):
Mit vollständiger Induktion über n := |u|. (dh u = a1 . . . an )
IA: Jedes balancierte Wort < n liegt in LG (S).
Zz: u ∈ LG (S).
Falls n = 0, so u = ∈ LG (S).
Sei n > 0.
Betrachte Werteverlauf von h(w) := A(w) − B(w):
h(), h(a1 ), h(a1 a2 ),. . . , h(a1 . . . an ) (alle ≥ 0!).
Insb. gilt a1 = [ und an = ]. Wir betrachten zwei Fälle:
142
Beweis (Forts.)
u balanciert =⇒ u ∈ LG (S):
Mit vollständiger Induktion über n := |u|. (dh u = a1 . . . an )
IA: Jedes balancierte Wort < n liegt in LG (S).
Zz: u ∈ LG (S).
Falls n = 0, so u = ∈ LG (S).
Sei n > 0.
Betrachte Werteverlauf von h(w) := A(w) − B(w):
h(), h(a1 ), h(a1 a2 ),. . . , h(a1 . . . an ) (alle ≥ 0!).
Insb. gilt a1 = [ und an = ]. Wir betrachten zwei Fälle:
Es gibt nur die Nullstellen h() und h(a1 . . . an ).
142
Beweis (Forts.)
u balanciert =⇒ u ∈ LG (S):
Mit vollständiger Induktion über n := |u|. (dh u = a1 . . . an )
IA: Jedes balancierte Wort < n liegt in LG (S).
Zz: u ∈ LG (S).
Falls n = 0, so u = ∈ LG (S).
Sei n > 0.
Betrachte Werteverlauf von h(w) := A(w) − B(w):
h(), h(a1 ), h(a1 a2 ),. . . , h(a1 . . . an ) (alle ≥ 0!).
Insb. gilt a1 = [ und an = ]. Wir betrachten zwei Fälle:
Es gibt nur die Nullstellen h() und h(a1 . . . an ).
Dann ist v := a2 . . . an−1 balanciert:
(1) A(v) = A([v]) − 1 = B([v]) − 1 = B(v)
(2) p v: h([p) = A([p) − B([p) > 0 =⇒
A(p) = A([p) − 1 > B([p) − 1 = B(p) − 1 =⇒
A(p) ≥ B(p)
=⇒ v ∈ LG (S) (nach IA) =⇒ u = [v] ∈ LG (S)
142
Beweis (Forts.):
Es gibt noch eine Nullstelle h(a1 . . . ak ).
143
Beweis (Forts.):
Es gibt noch eine Nullstelle h(a1 . . . ak ).
Sei u1 := a1 . . . ak , u2 := ak+1 . . . an
Dann sind u1 und u2 balanciert:
(1) A(u1 ) = B(u1 ) da h(u1 ) = 0;
A(u2 ) = A(u) − A(u1 ) = B(u) − B(u1 ) = B(u2 )
(2) p u1 =⇒ p u =⇒ A(p) ≥ B(p)
p u2 : A(p) = A(u1 p) − A(u1 ) ≥ B(u1 p) − B(u1 ) = B(p)
=⇒ u1 , u2 ∈ LG (S) (nach IA, da |ui | < n)
=⇒ u = u1 u2 ∈ LG (S)
143
Moral:
w ∈ LG (S) =⇒ P (w)“ beweist man immer schematisch
”
mit Induktion über die Erzeugung von w.
P (w) =⇒ w ∈ LG (S)“ beweist man oft mit Induktion über
”
|w|. Erfordert meist Kreativität.
144
Wir übertragen die Idee der induktiven Erzeugung auf beliebige
CFGs G = (V, Σ, P, S). Sei V = {A1 , . . . , Ak }. Damit ist jede
Produktion von der Form
145
Wir übertragen die Idee der induktiven Erzeugung auf beliebige
CFGs G = (V, Σ, P, S). Sei V = {A1 , . . . , Ak }. Damit ist jede
Produktion von der Form
145
Wir übertragen die Idee der induktiven Erzeugung auf beliebige
CFGs G = (V, Σ, P, S). Sei V = {A1 , . . . , Ak }. Damit ist jede
Produktion von der Form
146
Beispiel 4.14
Grammatik:
A → | aB B → Aa
Induktive Definition:
∈ LG (A)
w ∈ LG (B) =⇒ aw ∈ LG (A)
w ∈ LG (A) =⇒ wa ∈ LG (B)
Beim induktiven Beweis von
(w ∈ LG (A) =⇒ #a (w) ist gerade) ∧
(w ∈ LG (B) =⇒ #a (w) ist ungerade)
147
Definition 4.15 (Syntaxbaum)
Ein Syntaxbaum für eine Ableitung mit einer Grammatik
G = (V, Σ, P, S) ist ein Baum, so dass
jedes Blatt mit einem Zeichen aus Σ ∪ {} beschriftet ist,
jeder innere Knoten mit einem A ∈ V beschriftet ist,
und falls die Nachfolger (von links nach rechts) mit
X1 , . . . , Xn ∈ V ∪ Σ ∪ {} beschriftet sind,
dann ist A → X1 . . . Xn eine Produktion in P ,
ein Blatt der einzige Nachfolger seines Vorgängers ist.
147
Satz 4.17
Für eine CFG und ein w ∈ Σ∗ sind folgende Bedingungen
äquivalent:
1 A →∗G w
2 w ∈ LG (A) (gemäß der induktiven Definition)
3 Es gibt einen Syntaxbaum mit Wurzel A, dessen Rand
(Blätter von links nach rechts gelesen) das Wort w ist.
Beweis:
Skizze (Details: [HMU]) 1 ⇒ 2: Sei A →nG w. Wir konstruieren
dazu einen Beweis für w ∈ LG (A) mit Induktion über n. Die
Ableitung muss von folgender Form sein:
A →G w0 A1 w1 . . . Am wm →n−1
G w
Nach dem Dekompositionslemma muss es ui und ni ≤ n − 1 geben
mit Ai →nGi ui und w = w0 u1 w1 . . . um wm . Nach IA (da ni < n)
gilt ui ∈ LG (Ai ) und daher (mit einem weiteren
Erzeugungsschritt) auch w ∈ LG (A).
148
2 ⇒ 3: Parallel zur induktiven Erzeugung von w ∈ LG (A) kann
man einen Syntaxbaum mit Rand w erzeugen. Formal: Induktion
über die Erzeugung von w.
3 ⇒ 1: Jeder Baum lässt sich in eine Ableitung, sogar eine
Linksableitung(!) umformen. Induktion über die Höhe des Baums:
Transformiere die Unterbäume ti mit Beschriftung Ai in
Ableitungen Ai →∗G ui und füge diese mit dem
Dekompositionslemma zu einer grossen Ableitung
A →G w0 A1 w1 . . . Am wm →∗G w0 u1 w1 . . . um wm zusammen.
149
Definition 4.18
Eine CFG G heißt mehrdeutig gdw es ein w ∈ L(G) gibt, das
zwei verschiedene Syntaxbäume hat, also zwei verschiedene
Syntaxbäume mit Wurzel S und Rand w.
Eine CFL L heißt inhärent mehrdeutig gdw jede CFG G mit
L(G) = L mehrdeutig ist.
150
Definition 4.18
Eine CFG G heißt mehrdeutig gdw es ein w ∈ L(G) gibt, das
zwei verschiedene Syntaxbäume hat, also zwei verschiedene
Syntaxbäume mit Wurzel S und Rand w.
Eine CFL L heißt inhärent mehrdeutig gdw jede CFG G mit
L(G) = L mehrdeutig ist.
Beispiel 4.19
Die Grammatik E → E + E | E ∗ E | (E) | a ist mehrdeutig —
betrachte a + a ∗ a. Die erzeugte Sprache ist aber nicht inhärent
mehrdeutig (siehe Beispiel Arithmetische Ausdrücke).
150
Definition 4.18
Eine CFG G heißt mehrdeutig gdw es ein w ∈ L(G) gibt, das
zwei verschiedene Syntaxbäume hat, also zwei verschiedene
Syntaxbäume mit Wurzel S und Rand w.
Eine CFL L heißt inhärent mehrdeutig gdw jede CFG G mit
L(G) = L mehrdeutig ist.
Beispiel 4.19
Die Grammatik E → E + E | E ∗ E | (E) | a ist mehrdeutig —
betrachte a + a ∗ a. Die erzeugte Sprache ist aber nicht inhärent
mehrdeutig (siehe Beispiel Arithmetische Ausdrücke).
Satz 4.20
Die Sprache {ai bj ck | i = j ∨ j = k} ist inhärent mehrdeutig.
150
4.3 Die Chomsky-Normalform
Definition 4.21
Eine kontextfreie Grammatik G ist in Chomsky-Normalform gdw
alle Produktionen eine der Formen
A → a oder A → BC
haben.
151
4.3 Die Chomsky-Normalform
Definition 4.21
Eine kontextfreie Grammatik G ist in Chomsky-Normalform gdw
alle Produktionen eine der Formen
A → a oder A → BC
haben.
Wir konstruieren und beweisen nun schrittweise:
Satz 4.22
Zu jeder CFG G kann man eine CFG G0 in Chomsky-Normalform
konstruieren mit L(G0 ) = L(G) \ {}.
151
4.3 Die Chomsky-Normalform
Definition 4.21
Eine kontextfreie Grammatik G ist in Chomsky-Normalform gdw
alle Produktionen eine der Formen
A → a oder A → BC
haben.
Wir konstruieren und beweisen nun schrittweise:
Satz 4.22
Zu jeder CFG G kann man eine CFG G0 in Chomsky-Normalform
konstruieren mit L(G0 ) = L(G) \ {}.
151
Wir nennen A → eine -Produktion.
152
Wir nennen A → eine -Produktion.
Lemma 4.23
Zu jeder CFG G = (V, Σ, P, S) kann man eine CFG G0
konstruieren, die keine -Produktionen enthält, so dass gilt
L(G0 ) = L(G) \ {}
152
Wir nennen A → eine -Produktion.
Lemma 4.23
Zu jeder CFG G = (V, Σ, P, S) kann man eine CFG G0
konstruieren, die keine -Produktionen enthält, so dass gilt
L(G0 ) = L(G) \ {}
Beweis:
Wir erweitern P induktiv zu eine Obermenge P̂ :
1 Jede Produktion aus P ist in P̂
2 Sind B → und A → αBβ in P̂ , so füge auch A → αβ hinzu.
Offensichtlich gilt L(Ĝ) = L(G): Jede neue Produktion kann von 2
alten simuliert werden.
152
Wir nennen A → eine -Produktion.
Lemma 4.23
Zu jeder CFG G = (V, Σ, P, S) kann man eine CFG G0
konstruieren, die keine -Produktionen enthält, so dass gilt
L(G0 ) = L(G) \ {}
Beweis:
Wir erweitern P induktiv zu eine Obermenge P̂ :
1 Jede Produktion aus P ist in P̂
2 Sind B → und A → αBβ in P̂ , so füge auch A → αβ hinzu.
Offensichtlich gilt L(Ĝ) = L(G): Jede neue Produktion kann von 2
alten simuliert werden.
Wir definieren G0 als Ĝ ohne die -Produktionen.
Denn diese sind nun überflüssig:
152
Beweis (Forts.):
Sei S →∗Ĝ w, w 6= , eine Ableitung minimaler Länge.
Käme darin B → vor, also
153
Beweis (Forts.):
Sei S →∗Ĝ w, w 6= , eine Ableitung minimaler Länge.
Käme darin B → vor, also
153
Beweis (Forts.):
Sei S →∗Ĝ w, w 6= , eine Ableitung minimaler Länge.
Käme darin B → vor, also
153
Beispiel 4.24
154
Wir nennen A → B eine Kettenproduktion.
155
Wir nennen A → B eine Kettenproduktion.
Lemma 4.25
Zu jeder CFG G = (V, Σ, P, S) kann man eine CFG G0
konstruieren, die keine Kettenproduktionen enthält, so dass gilt
L(G0 ) = L(G).
155
Wir nennen A → B eine Kettenproduktion.
Lemma 4.25
Zu jeder CFG G = (V, Σ, P, S) kann man eine CFG G0
konstruieren, die keine Kettenproduktionen enthält, so dass gilt
L(G0 ) = L(G).
Beweis:
Wir erweitern P induktiv zu eine Obermenge P̂ :
1 Jede Produktion aus P ist in P̂
2 Sind A → B und B → α in P̂ mit α 6= A,
so füge auch A → α hinzu.
Das Ergebnis G0 ist Ĝ ohne die (nun überflüssigen)
Kettenproduktionen.
Rest des Beweises analog zur Elimination von -Produktionen.
155
Beispiel 4.26
A → a | B, B → b | C | aBB, C → A | AB
156
Konstruktion einer Chomsky-Normalform
Eingabe: Eine kontextfreie Grammatik G = (V, Σ, P, S)
157
Konstruktion einer Chomsky-Normalform
Eingabe: Eine kontextfreie Grammatik G = (V, Σ, P, S)
1 Füge für jedes a ∈ Σ, das in einer rechten Seite der Länge ≥ 2
vorkommt, ein neues Nichtterminal Aa zu V hinzu,
ersetze a in allen rechten Seiten der Länge ≥ 2 durch Aa ,
und füge Aa → a zu P hinzu.
2 Ersetze jede Produktion der Form
A → B1 B2 · · · Bk (k ≥ 3)
durch
A → B1 C2 , C2 → B2 C3 , . . . , Ck−1 → Bk−1 Bk
157
Aufgabe:
Zeige: Mit diesem Algorithmus ist das Ergebnis höchstens
quadratisch größer als G.
Zeige: die Reihenfolge der Schritte ist wichtig!
Finde eine andere Reihenfolge, die inkorrekt ist: Das
resultierende Verfahren ergibt nicht immer eine Grammatik in
CNF.
Finde eine andere Reihenfolge, die zwar zu einem korrekten
Verfahren führt, aber eine Grammatik in CNF produzieren
kann, die exponentiell größer als G ist.
158
Definition 4.27
Eine CFG ist in Greibach-Normalform (benannt nach Sheila
Greibach, UCLA), falls jede Produktion von der Form
A → aA1 . . . An
ist.
159
Definition 4.27
Eine CFG ist in Greibach-Normalform (benannt nach Sheila
Greibach, UCLA), falls jede Produktion von der Form
A → aA1 . . . An
ist.
Satz 4.28
Zu jeder CFG G gibt es eine CFG G0 in Greibach-Normalform mit
L(G0 ) = L(G) \ {}.
159
4.4 Das Pumping-Lemma für kontextfreie Sprachen
Zur Erinnerung: Das Pumping-Lemma für reguläre Sprachen: Für
jede reguläre Sprache L gibt es ein n ∈ N, so dass sich jedes Wort
z ∈ L mit |z| ≥ n zerlegen lässt in z = uvw mit |uv| ≤ n, v 6=
und uv ∗ w ⊆ L.
160
4.4 Das Pumping-Lemma für kontextfreie Sprachen
Zur Erinnerung: Das Pumping-Lemma für reguläre Sprachen: Für
jede reguläre Sprache L gibt es ein n ∈ N, so dass sich jedes Wort
z ∈ L mit |z| ≥ n zerlegen lässt in z = uvw mit |uv| ≤ n, v 6=
und uv ∗ w ⊆ L.
160
4.4 Das Pumping-Lemma für kontextfreie Sprachen
Zur Erinnerung: Das Pumping-Lemma für reguläre Sprachen: Für
jede reguläre Sprache L gibt es ein n ∈ N, so dass sich jedes Wort
z ∈ L mit |z| ≥ n zerlegen lässt in z = uvw mit |uv| ≤ n, v 6=
und uv ∗ w ⊆ L.
160
Satz 4.29 (Pumping-Lemma)
Für jede kontextfreie Sprache L gibt es ein n ≥ 1, so dass sich
jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in
z = uvwxy,
mit
161
Satz 4.29 (Pumping-Lemma)
Für jede kontextfreie Sprache L gibt es ein n ≥ 1, so dass sich
jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in
z = uvwxy,
mit
vx 6= ,
161
Satz 4.29 (Pumping-Lemma)
Für jede kontextfreie Sprache L gibt es ein n ≥ 1, so dass sich
jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in
z = uvwxy,
mit
vx 6= ,
|vwx| ≤ n, und
161
Satz 4.29 (Pumping-Lemma)
Für jede kontextfreie Sprache L gibt es ein n ≥ 1, so dass sich
jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in
z = uvwxy,
mit
vx 6= ,
|vwx| ≤ n, und
∀i ∈ N. uv i wxi y ∈ L.
161
Satz 4.29 (Pumping-Lemma)
Für jede kontextfreie Sprache L gibt es ein n ≥ 1, so dass sich
jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in
z = uvwxy,
mit
vx 6= ,
|vwx| ≤ n, und
∀i ∈ N. uv i wxi y ∈ L.
161
Beweis:
Sei G = (V, Σ, P, S) eine CFG in Chomsky-Normalform mit
L(G) = L \ {}. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n.
162
Beweis:
Sei G = (V, Σ, P, S) eine CFG in Chomsky-Normalform mit
L(G) = L \ {}. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n.
162
Beweis:
Sei G = (V, Σ, P, S) eine CFG in Chomsky-Normalform mit
L(G) = L \ {}. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n.
Dann hat der Syntaxbaum für z (ohne die letzte Stufe für die
Terminale) mindestens einen Pfad der Länge ≥ |V |, da er wegen
der Chomsky-Normalform ein Binärbaum ist: Wir betrachten einen
solchen Pfad maximaler Länge.
162
Beweis:
Sei G = (V, Σ, P, S) eine CFG in Chomsky-Normalform mit
L(G) = L \ {}. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n.
Dann hat der Syntaxbaum für z (ohne die letzte Stufe für die
Terminale) mindestens einen Pfad der Länge ≥ |V |, da er wegen
der Chomsky-Normalform ein Binärbaum ist: Wir betrachten einen
solchen Pfad maximaler Länge.
Auf diesem Pfad der Länge ≥ |V | kommen ≥ |V | + 1
Nichtterminale vor, also mindestens eins doppelt. Nennen wir es A.
162
Beweis:
Sei G = (V, Σ, P, S) eine CFG in Chomsky-Normalform mit
L(G) = L \ {}. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n.
Dann hat der Syntaxbaum für z (ohne die letzte Stufe für die
Terminale) mindestens einen Pfad der Länge ≥ |V |, da er wegen
der Chomsky-Normalform ein Binärbaum ist: Wir betrachten einen
solchen Pfad maximaler Länge.
Auf diesem Pfad der Länge ≥ |V | kommen ≥ |V | + 1
Nichtterminale vor, also mindestens eins doppelt. Nennen wir es A.
Die zwischen zwei Vorkommen von A liegende Teilableitung kann
nun beliebig oft wiederholt werden.
162
Sq
@
q @
@
q @
@ @
@ @
@ @@ @
u v w x y
z
Sq Sq
@ @
q @ q @
@ @
q @
@ @ @ @
w @ @
q @ @ y@
@ @ @
@
@ @
u y u @@ @@
v2 w x2
Dieser Ableitungsbaum zeigt Dieser Ableitungsbaum zeigt
uwy ∈ L uv 2 wx2 y ∈ L
Die Bedingungen 1 und 2 sind hierbei ebenso erfüllt. Warum? → ÜA. 163
Beweis (Forts.):
Die Bedingung vx 6= folgt, da das obere der beiden A’s mit
A → BC abgeleitet werden muss.
164
Beweis (Forts.):
Die Bedingung vx 6= folgt, da das obere der beiden A’s mit
A → BC abgeleitet werden muss.
Um |vwx| ≤ n zu erreichen, darf das obere A maximal |V | + 1
Schritte von jedem Blatt entfernt sein. Da der ausgewählte Pfad
maximale Länge hat, genügt es, dass das obere A vom Blatt dieses
Pfads |V | + 1 Schritte entfernt ist. Da es nur |V | Nichtterminale
gibt, muss ein solches doppeltes A existieren.
164
Beispiel 4.30
Wir zeigen, dass die Sprache
L := {ai bi ci | i ∈ N}
165
Beispiel 4.30
Wir zeigen, dass die Sprache
L := {ai bi ci | i ∈ N}
165
Beispiel 4.30
Wir zeigen, dass die Sprache
L := {ai bi ci | i ∈ N}
165
Beispiel 4.30
Wir zeigen, dass die Sprache
L := {ai bi ci | i ∈ N}
165
Beispiel 4.31
Mit dem Pumping-Lemma kann man zeigen, dass die Sprache
{ww | w ∈ {a, b}∗ } nicht kontextfrei ist.
166
Beispiel 4.31
Mit dem Pumping-Lemma kann man zeigen, dass die Sprache
{ww | w ∈ {a, b}∗ } nicht kontextfrei ist.
Dies zeigt, dass Kontextbedingungen in Programmiersprachen,
etwa Deklaration vor Benutzung“, nicht durch kontextfreie
”
Grammatiken ausgedrückt werden können.
166
4.5 Abschlusseigenschaften
Satz 4.32
Seien kontextfreie Grammatiken G1 = (V1 , Σ1 , P1 , S1 ) und
G2 = (V2 , Σ2 , P2 , S2 ) gegeben. Dann kann man in linearer Zeit
kontextfreie Grammatiken für
1 L(G1 ) ∪ L(G2 )
2 L(G1 )L(G2 )
3 (L(G1 ))∗
4 (L(G1 ))R
konstruieren.
Die Klasse der kontextfreien Sprachen ist also unter Vereinigung,
Konkatenation, Stern und Spiegelung abgeschlossen.
167
Beweis:
OE nehmen wir an, dass V1 ∩ V2 = ∅.
1 V = V1 ∪ V2 ∪ {S}; S neu
P = P1 ∪ P2 ∪ {S → S1 | S2 }
2 V = V1 ∪ V2 ∪ {S}; S neu
P = P1 ∪ P2 ∪ {S → S1 S2 }
3 V = V1 ∪ {S}; S neu
P = P1 ∪ {S → | S1 S}
4 P = {A → αR | (A → α) ∈ P1 }
168
Beweis:
OE nehmen wir an, dass V1 ∩ V2 = ∅.
1 V = V1 ∪ V2 ∪ {S}; S neu
P = P1 ∪ P2 ∪ {S → S1 | S2 }
2 V = V1 ∪ V2 ∪ {S}; S neu
P = P1 ∪ P2 ∪ {S → S1 S2 }
3 V = V1 ∪ {S}; S neu
P = P1 ∪ {S → | S1 S}
4 P = {A → αR | (A → α) ∈ P1 }
168
Satz 4.33
Die Menge der kontextfreien Sprachen ist nicht abgeschlossen
unter Durchschnitt oder Komplement.
169
Satz 4.33
Die Menge der kontextfreien Sprachen ist nicht abgeschlossen
unter Durchschnitt oder Komplement.
Beweis:
169
Satz 4.33
Die Menge der kontextfreien Sprachen ist nicht abgeschlossen
unter Durchschnitt oder Komplement.
Beweis:
169
4.6 Algorithmen für kontextfreie Grammatiken
Wie üblich: G = (V, Σ, P, S) ist eine CFG.
170
4.6 Algorithmen für kontextfreie Grammatiken
Wie üblich: G = (V, Σ, P, S) ist eine CFG.
Ein Symbol X ∈ V ∪ Σ ist
nützlich gdw es eine Ableitung S →∗G w ∈ Σ∗ gibt, in der X
vorkommt.
erzeugend gdw es eine Ableitung X →∗G w ∈ Σ∗ gibt.
erreichbar gdw es eine Ableitung S →∗G αXβ gibt.
170
4.6 Algorithmen für kontextfreie Grammatiken
Wie üblich: G = (V, Σ, P, S) ist eine CFG.
Ein Symbol X ∈ V ∪ Σ ist
nützlich gdw es eine Ableitung S →∗G w ∈ Σ∗ gibt, in der X
vorkommt.
erzeugend gdw es eine Ableitung X →∗G w ∈ Σ∗ gibt.
erreichbar gdw es eine Ableitung S →∗G αXβ gibt.
Fakt 4.34
Nützliche Symbole sind erzeugend und erreichbar.
Aber nicht notwendigerweise umgekehrt:
S → AB | a, A→b
170
4.6 Algorithmen für kontextfreie Grammatiken
Wie üblich: G = (V, Σ, P, S) ist eine CFG.
Ein Symbol X ∈ V ∪ Σ ist
nützlich gdw es eine Ableitung S →∗G w ∈ Σ∗ gibt, in der X
vorkommt.
erzeugend gdw es eine Ableitung X →∗G w ∈ Σ∗ gibt.
erreichbar gdw es eine Ableitung S →∗G αXβ gibt.
Fakt 4.34
Nützliche Symbole sind erzeugend und erreichbar.
Aber nicht notwendigerweise umgekehrt:
S → AB | a, A→b
170
Beispiel 4.35
S → AB | a, A→b
171
Beispiel 4.35
S → AB | a, A→b
171
Beispiel 4.35
S → AB | a, A→b
Umgekehrte Reihenfolge:
1 Elimination unerreichbarer Symbole:
S → AB | a, A→b
171
Satz 4.36
Eliminiert man aus einer Grammatik G
1 alle nicht erzeugenden Symbole, mit Resultat G1 , und
2 aus G1 alle unerreichbaren Symbole, mit Resultat G2 ,
dann enthält G2 nur noch nützliche Symbole und L(G2 ) = L(G).
172
Satz 4.36
Eliminiert man aus einer Grammatik G
1 alle nicht erzeugenden Symbole, mit Resultat G1 , und
2 aus G1 alle unerreichbaren Symbole, mit Resultat G2 ,
dann enthält G2 nur noch nützliche Symbole und L(G2 ) = L(G).
Beweis:
Wir zeigen zuerst L(G2 ) = L(G).
Da P2 ⊆ P gilt L(G2 ) ⊆ L(G).
Umgekehrt, sei w ∈ L(G), dh S →∗G w.
Jedes Symbol in dieser Ableitung ist erreichbar und erzeugend.
Also gilt auch S →∗G2 w, dh w ∈ L(G2 ).
172
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh
173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh
173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh
173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh
173
Satz 4.37
Die Menge der erzeugenden Symbole einer CFG sind berechenbar.
174
Satz 4.37
Die Menge der erzeugenden Symbole einer CFG sind berechenbar.
Beweis:
Wir berechnen die erzeugenden Symbole induktiv:
Alle Symbole in Σ sind erzeugend.
Falls (A → α) ∈ P und alle Symbole in α sind erzeugend,
dann ist auch A erzeugend.
174
Satz 4.37
Die Menge der erzeugenden Symbole einer CFG sind berechenbar.
Beweis:
Wir berechnen die erzeugenden Symbole induktiv:
Alle Symbole in Σ sind erzeugend.
Falls (A → α) ∈ P und alle Symbole in α sind erzeugend,
dann ist auch A erzeugend.
Beispiel 4.38
174
Satz 4.37
Die Menge der erzeugenden Symbole einer CFG sind berechenbar.
Beweis:
Wir berechnen die erzeugenden Symbole induktiv:
Alle Symbole in Σ sind erzeugend.
Falls (A → α) ∈ P und alle Symbole in α sind erzeugend,
dann ist auch A erzeugend.
Beispiel 4.38
Beweis:
175
Satz 4.40
Die Menge der erreichbaren Symbole einer CFG ist berechenbar.
Beweis:
Wir berechnen die erreichbaren Symbole induktiv:
S ist erreichbar.
Ist A erreichbar und (A → αXβ) ∈ P ,
so ist auch X erreichbar.
175
Satz 4.41
Das Wortproblem (w ∈ L(G)?) ist für eine CFG G entscheidbar.
176
Satz 4.41
Das Wortproblem (w ∈ L(G)?) ist für eine CFG G entscheidbar.
Beweis:
OE sei w 6= . Wir eliminieren zuerst alle -Produktionen aus G
(wie in Lemma 4.23).
Dann berechnen wir induktiv die Menge R aller von S ableitbaren
Wörter ∈ (V ∪ Σ)∗ , die nicht länger als w sind:
S∈R
Wenn αBγ ∈ R und (B → β) ∈ P und |αβγ| ≤ |w|,
dann auch αβγ ∈ R.
176
Satz 4.41
Das Wortproblem (w ∈ L(G)?) ist für eine CFG G entscheidbar.
Beweis:
OE sei w 6= . Wir eliminieren zuerst alle -Produktionen aus G
(wie in Lemma 4.23).
Dann berechnen wir induktiv die Menge R aller von S ableitbaren
Wörter ∈ (V ∪ Σ)∗ , die nicht länger als w sind:
S∈R
Wenn αBγ ∈ R und (B → β) ∈ P und |αβγ| ≤ |w|,
dann auch αβγ ∈ R.
Es gilt:
w ∈ LV (G) ⇔ w∈R
wobei LV (G) := {w ∈ (V ∪ Σ)∗ | S →∗G w}.
Da R endlich ist (|R| ≤ |V ∪ Σ||w| ), ist w ∈ R entscheidbar, und
damit auch w ∈ LV (G), und damit auch w ∈ L(G).
176
4.7 Der Cocke-Younger-Kasami-Algorithmus
Der CYK-Algorithmus entscheidet das Wortproblem für
kontextfreie Grammatiken in Chomsky-Normalform.
177
4.7 Der Cocke-Younger-Kasami-Algorithmus
Der CYK-Algorithmus entscheidet das Wortproblem für
kontextfreie Grammatiken in Chomsky-Normalform.
Eingabe: Grammatik G = (V, Σ, P, S) in Chomsky-Normalform,
w = a1 . . . an ∈ Σ∗ .
177
4.7 Der Cocke-Younger-Kasami-Algorithmus
Der CYK-Algorithmus entscheidet das Wortproblem für
kontextfreie Grammatiken in Chomsky-Normalform.
Eingabe: Grammatik G = (V, Σ, P, S) in Chomsky-Normalform,
w = a1 . . . an ∈ Σ∗ .
Definition 4.42
Damit gilt:
w ∈ L(G) ⇔ S ∈ V1n
177
Der CYK-Algorithmus berechnet die Vij rekursiv nach wachsendem
j − i:
Vii = {A ∈ V | (A → ai ) ∈ P }
∃i ≤ k < j, B ∈ Vik , C ∈ Vk+1,j .
Vij = A∈V | für i < j
(A → BC) ∈ P
178
Der CYK-Algorithmus berechnet die Vij rekursiv nach wachsendem
j − i:
Vii = {A ∈ V | (A → ai ) ∈ P }
∃i ≤ k < j, B ∈ Vik , C ∈ Vk+1,j .
Vij = A∈V | für i < j
(A → BC) ∈ P
178
Der CYK-Algorithmus berechnet die Vij rekursiv nach wachsendem
j − i:
Vii = {A ∈ V | (A → ai ) ∈ P }
∃i ≤ k < j, B ∈ Vik , C ∈ Vk+1,j .
Vij = A∈V | für i < j
(A → BC) ∈ P
14
13 24
12 23 34
11 22 33 44
a1 a2 a3 a4
178
Beispiel 4.43
S → AB | BC
A → BA | a
B → CC | b
C → AB | a
15
14 25
13 24 35
12 23 34 45
11 22 33 44 55
b a a b a
179
Satz 4.44
Der CYK-Algorithmus entscheidet das Wortproblem w ∈ L(G) für
eine fixe CFG G in Chomsky-Normalform in Zeit O(|w|3 ).
Beweis:
n(n−1)
Sei n := |w|. Es werden 2 ∈ O(n2 ) Mengen Vij berechnet.
∃i ≤ k < j, B ∈ Vik , C ∈ Vk+1,j .
Vij = A∈V | (i < j)
(A → BC) ∈ P
180
Satz 4.44
Der CYK-Algorithmus entscheidet das Wortproblem w ∈ L(G) für
eine fixe CFG G in Chomsky-Normalform in Zeit O(|w|3 ).
Beweis:
n(n−1)
Sei n := |w|. Es werden 2 ∈ O(n2 ) Mengen Vij berechnet.
∃i ≤ k < j, B ∈ Vik , C ∈ Vk+1,j .
Vij = A∈V | (i < j)
(A → BC) ∈ P
180
Satz 4.44
Der CYK-Algorithmus entscheidet das Wortproblem w ∈ L(G) für
eine fixe CFG G in Chomsky-Normalform in Zeit O(|w|3 ).
Beweis:
n(n−1)
Sei n := |w|. Es werden 2 ∈ O(n2 ) Mengen Vij berechnet.
∃i ≤ k < j, B ∈ Vik , C ∈ Vk+1,j .
Vij = A∈V | (i < j)
(A → BC) ∈ P
180
Erweiterung Der CYK-Algorithmus kann so erweitert werden, dass
er nicht nur das Wortproblem entscheidet, sondern auch die Menge
der Syntaxbäume für die Eingabe berechnet.
181
Erweiterung Der CYK-Algorithmus kann so erweitert werden, dass
er nicht nur das Wortproblem entscheidet, sondern auch die Menge
der Syntaxbäume für die Eingabe berechnet.
Realisierung:
Vij ist die Menge der Syntaxbäume mit Rand ai . . . aj .
Statt A enthält Vij die Syntaxbäume, dessen Wurzel mit A
beschriftet ist.
181
Vorschau
Für CFGs sind folgende Probleme nicht entscheidbar:
Äquivalenz: L(G1 ) = L(G2 )?
Schnittproblem: L(G1 ) ∩ L(G2 ) = ∅?
Regularität: L(G) regulär?
Mehrdeutigkeit: Ist G mehrdeutig?
182
4.8 Kellerautomaten
e i n g a b e
183
Definition 4.45
Ein (nichtdeterministischer) Kellerautomat
M = (Q, Σ, Γ, q0 , Z0 , δ, F ) besteht aus
einer endlichen Menge von Zuständen Q,
einem endlichen Eingabealphabet Σ,
einem endlichen Kelleralphabet Γ,
einem Anfangszustand q0 ,
einem untersten Kellerzeichen Z0 ,
einer Übergangsfunktion δ : Q × (Σ ∪ {}) × Γ → Pe (Q × Γ∗ ),
(Hierbei bedeutet Pe die Menge aller endlichen Teilmengen)
einer Menge F ⊆ Q von Endzuständen.
184
Definition 4.45
Ein (nichtdeterministischer) Kellerautomat
M = (Q, Σ, Γ, q0 , Z0 , δ, F ) besteht aus
einer endlichen Menge von Zuständen Q,
einem endlichen Eingabealphabet Σ,
einem endlichen Kelleralphabet Γ,
einem Anfangszustand q0 ,
einem untersten Kellerzeichen Z0 ,
einer Übergangsfunktion δ : Q × (Σ ∪ {}) × Γ → Pe (Q × Γ∗ ),
(Hierbei bedeutet Pe die Menge aller endlichen Teilmengen)
einer Menge F ⊆ Q von Endzuständen.
Intuitive Bedeutung von (q 0 , α) ∈ δ(q, a, Z):
Wenn sich M in Zustand q befindet, das Eingabezeichen
a liest, und Z das oberste Kellerzeichen ist,
so kann M im nächsten Schritt in q 0 übergehen und Z
durch α ersetzen.
184
Intuitive Bedeutung von (q 0 , α) ∈ δ(q, a, Z):
Wenn sich M in Zustand q befindet, das Eingabezeichen
a liest, und Z das oberste Kellerzeichen ist,
so kann M im nächsten Schritt in q 0 übergehen und Z
durch α ersetzen.
185
Intuitive Bedeutung von (q 0 , α) ∈ δ(q, a, Z):
Wenn sich M in Zustand q befindet, das Eingabezeichen
a liest, und Z das oberste Kellerzeichen ist,
so kann M im nächsten Schritt in q 0 übergehen und Z
durch α ersetzen.
Spezialfälle:
POP-Operation: α = .
Das oberste kellerzeichen Z wird entfernt.
PUSH-Operation: α = Z 0 Z.
Z 0 wird als neues oberstes Kellerzeichen gePUSHt.
-Übergang a = .
Ohne Lesen eines Eingabezeichens.
185
Intuitive Bedeutung von (q 0 , α) ∈ δ(q, a, Z):
Wenn sich M in Zustand q befindet, das Eingabezeichen
a liest, und Z das oberste Kellerzeichen ist,
so kann M im nächsten Schritt in q 0 übergehen und Z
durch α ersetzen.
Spezialfälle:
POP-Operation: α = .
Das oberste kellerzeichen Z wird entfernt.
PUSH-Operation: α = Z 0 Z.
Z 0 wird als neues oberstes Kellerzeichen gePUSHt.
-Übergang a = .
Ohne Lesen eines Eingabezeichens.
Aufgabe: Jeder Schritt kann durch eine Sequenz von diesen drei
Operationen simuliert werden. (Hilfszustände verwenden.)
185
Definition 4.46
Eine Konfiguration eines Kellerautomaten M ist ein Tripel
(q, w, α) mit q ∈ Q, w ∈ Σ∗ und α ∈ Γ∗ .
Die Anfangskonfiguration von M für die Eingabe w ∈ Σ∗ ist
(q0 , w, Z0 ).
186
Definition 4.46
Eine Konfiguration eines Kellerautomaten M ist ein Tripel
(q, w, α) mit q ∈ Q, w ∈ Σ∗ und α ∈ Γ∗ .
Die Anfangskonfiguration von M für die Eingabe w ∈ Σ∗ ist
(q0 , w, Z0 ).
186
Definition 4.47
Auf der Menge aller Konfigurationen definieren wir eine binäre
Relation →M wie folgt:
(
(q 0 , w, βα) falls (q 0 , β) ∈ δ(q, a, Z)
(q, aw, Zα) →M
(q 0 , aw, βα) falls (q 0 , β) ∈ δ(q, , Z)
187
Definition 4.47
Auf der Menge aller Konfigurationen definieren wir eine binäre
Relation →M wie folgt:
(
(q 0 , w, βα) falls (q 0 , β) ∈ δ(q, a, Z)
(q, aw, Zα) →M
(q 0 , aw, βα) falls (q 0 , β) ∈ δ(q, , Z)
187
Definition 4.48
Ein PDA M akzeptiert w ∈ Σ∗ mit Endzustand gdw
188
Definition 4.48
Ein PDA M akzeptiert w ∈ Σ∗ mit Endzustand gdw
188
Definition 4.48
Ein PDA M akzeptiert w ∈ Σ∗ mit Endzustand gdw
188
Beispiel 4.49
Die Sprache L = {wwR | w ∈ {0, 1}∗ } wird vom PDA
189
Ziel:
190
Ziel:
190
Ziel:
Ziel:
190
Beweisskizze:
M 0 (mit leerem Keller) simuliert M (mit Endzustand). Zusätzlich:
Sobald M einen Endzustand erreicht, darf M 0 den Keller
leeren (im neuen Zustand q̄).
Um zu verhindern, dass der Keller von M 0 leer wird, ohne dass
M in einem Endzustand ist, führen wir ein neues Kellersymbol
Z00 ein.
191
Beweisskizze:
M 0 (mit leerem Keller) simuliert M (mit Endzustand). Zusätzlich:
Sobald M einen Endzustand erreicht, darf M 0 den Keller
leeren (im neuen Zustand q̄).
Um zu verhindern, dass der Keller von M 0 leer wird, ohne dass
M in einem Endzustand ist, führen wir ein neues Kellersymbol
Z00 ein.
Q0 := Q ] {q̄, q00 }
Γ0 := Γ ] {Z00 }
Wir erweitern δ zu δ 0 :
δ 0 (q00 , , Z00 ) = {(q0 , Z0 Z00 )}
δ 0 (q, b, Z) = δ(q, b, Z) für q ∈ Q \ F , b ∈ Σ ∪ {}, Z ∈ Γ
δ 0 (f, a, Z) = δ(f, a, Z) für f ∈ F , a ∈ Σ, Z ∈ Γ
δ 0 (f, , Z) = δ(f, , Z) ∪ {(q̄, )} für f ∈ F, Z ∈ Γ0
δ 0 (q̄, , Z) = {(q̄, )} für Z ∈ Γ0
191
Satz 4.51 (Leerer Keller → Endzustand)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ) kann man in linearer Zeit
einen PDA M 0 = (Q0 , Σ, Γ0 , q00 , Z00 , δ 0 , F ) konstruieren mit
L (M ) = LF (M 0 ).
192
Satz 4.51 (Leerer Keller → Endzustand)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ) kann man in linearer Zeit
einen PDA M 0 = (Q0 , Σ, Γ0 , q00 , Z00 , δ 0 , F ) konstruieren mit
L (M ) = LF (M 0 ).
Beweisskizze:
M 0 (mit Endzustand) simuliert M (mit leerem Keller). Zusätzlich:
M 0 schreibt am Anfang ein neues Zeichen Z00 auf den Keller.
Sobald M auf dem Keller Z00 findet, ist der Keller eigentlich
leer, und M 0 geht in den (neuen) Endzustand f .
192
Satz 4.51 (Leerer Keller → Endzustand)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ) kann man in linearer Zeit
einen PDA M 0 = (Q0 , Σ, Γ0 , q00 , Z00 , δ 0 , F ) konstruieren mit
L (M ) = LF (M 0 ).
Beweisskizze:
M 0 (mit Endzustand) simuliert M (mit leerem Keller). Zusätzlich:
M 0 schreibt am Anfang ein neues Zeichen Z00 auf den Keller.
Sobald M auf dem Keller Z00 findet, ist der Keller eigentlich
leer, und M 0 geht in den (neuen) Endzustand f .
Q0 := Q ] {q00 , f }
Γ0 := Γ ] {Z00 }
F := {f }
δ 0 (q00 , , Z00 ) = {(q0 , Z0 Z00 )}
δ 0 (q, b, Z) = δ(q, b, Z) für q ∈ Q, b ∈ Σ ∪ {}, Z ∈ Γ
δ 0 (q, , Z00 ) = {(f, Z00 )} für q ∈ Q
192
Die folgenden Sätze erleichtern Beweise über Berechnungen von
PDAs.
193
Die folgenden Sätze erleichtern Beweise über Berechnungen von
PDAs.
Lemma 4.52 (Erweiterungslemma)
(q, u, α) →nM (q 0 , u0 , α0 ) =⇒ (q, uv, αβ) →nM (q 0 , u0 v, α0 β)
193
Die folgenden Sätze erleichtern Beweise über Berechnungen von
PDAs.
Lemma 4.52 (Erweiterungslemma)
(q, u, α) →nM (q 0 , u0 , α0 ) =⇒ (q, uv, αβ) →nM (q 0 , u0 v, α0 β)
Beweis:
Nach Definition von →M gilt
193
Die folgenden Sätze erleichtern Beweise über Berechnungen von
PDAs.
Lemma 4.52 (Erweiterungslemma)
(q, u, α) →nM (q 0 , u0 , α0 ) =⇒ (q, uv, αβ) →nM (q 0 , u0 v, α0 β)
Beweis:
Nach Definition von →M gilt
193
Keller
−
Z1
−
Z2
−
Z3
−
Z4
Schritte
194
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
195
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
Beweis: Mit Induktion über n. Basis trivial.
195
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
Beweis: Mit Induktion über n. Basis trivial.
Schritt: Eine Berechnung der Länge n + 1 hat die Form
(q, bw0 , Z1...k ) →M (p, w0 , Y1...l Z2...k ) →nM (q 0 , , )
195
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
Beweis: Mit Induktion über n. Basis trivial.
Schritt: Eine Berechnung der Länge n + 1 hat die Form
(q, bw0 , Z1...k ) →M (p, w0 , Y1...l Z2...k ) →nM (q 0 , , )
IA ⇒ ∃vj , rj , mj (j = 1, . . . , l), ∃ui , pi , ni (i = 2, . . . , k) mit
m
(rj−1 , vj , Yj ) →Mj (rj , , ) (pi−1 , ui , Zi ) →nMi (pi , , )
und w0 = v1...l u2...k , r0 = p, rl = p1 , pk = q 0 ,
P P
mj + ni = n.
195
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
Beweis: Mit Induktion über n. Basis trivial.
Schritt: Eine Berechnung der Länge n + 1 hat die Form
(q, bw0 , Z1...k ) →M (p, w0 , Y1...l Z2...k ) →nM (q 0 , , )
IA ⇒ ∃vj , rj , mj (j = 1, . . . , l), ∃ui , pi , ni (i = 2, . . . , k) mit
m
(rj−1 , vj , Yj ) →Mj (rj , , ) (pi−1 , ui , Zi ) →nMi (pi , , )
und w0 = v1...l u2...k , r0 = p, rl = p1 , pk = q 0 ,
P P
mj + ni = n.
m
Mit Erweiterungslemma: (rj−1 , vj...l , Yj...l ) →Mj (rj , vj+1...l , Yj+1...l )
n1 −1 P
⇒ (r0 , v1...l , Y1...l ) →M (rl , , ) wobei n1 := 1 + mj .
195
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
Beweis: Mit Induktion über n. Basis trivial.
Schritt: Eine Berechnung der Länge n + 1 hat die Form
(q, bw0 , Z1...k ) →M (p, w0 , Y1...l Z2...k ) →nM (q 0 , , )
IA ⇒ ∃vj , rj , mj (j = 1, . . . , l), ∃ui , pi , ni (i = 2, . . . , k) mit
m
(rj−1 , vj , Yj ) →Mj (rj , , ) (pi−1 , ui , Zi ) →nMi (pi , , )
und w0 = v1...l u2...k , r0 = p, rl = p1 , pk = q 0 ,
P P
mj + ni = n.
m
Mit Erweiterungslemma: (rj−1 , vj...l , Yj...l ) →Mj (rj , vj+1...l , Yj+1...l )
n1 −1 P
⇒ (r0 , v1...l , Y1...l ) →M (rl , , ) wobei n1 := 1 + mj .
Aus (q, bv1...l , Z1 ) →M (p, v1...l , Y1...l ) folgt (p0 , u1 , Z1 ) →nM1 (p1 , , )
wobei p0 := q, u1 := bv1...l , p1 := rl .
195
Satz 4.53 (Zerlegungssatz)
Wenn (q, w, Z1...k ) →nM (q 0 , , )
dann gibt es ui , pi , ni , so dass
(pi−1 , ui , Zi ) →nMi (pi , , ) (i = 1, . . . , k)
und w = u1 . . . uk , p0 = q, pk = q 0 ,
P
ni = n.
Beweis: Mit Induktion über n. Basis trivial.
Schritt: Eine Berechnung der Länge n + 1 hat die Form
(q, bw0 , Z1...k ) →M (p, w0 , Y1...l Z2...k ) →nM (q 0 , , )
IA ⇒ ∃vj , rj , mj (j = 1, . . . , l), ∃ui , pi , ni (i = 2, . . . , k) mit
m
(rj−1 , vj , Yj ) →Mj (rj , , ) (pi−1 , ui , Zi ) →nMi (pi , , )
und w0 = v1...l u2...k , r0 = p, rl = p1 , pk = q 0 ,
P P
mj + ni = n.
m
Mit Erweiterungslemma: (rj−1 , vj...l , Yj...l ) →Mj (rj , vj+1...l , Yj+1...l )
n1 −1 P
⇒ (r0 , v1...l , Y1...l ) →M (rl , , ) wobei n1 := 1 + mj .
Aus (q, bv1...l , Z1 ) →M (p, v1...l , Y1...l ) folgt (p0 , u1 , Z1 ) →nM1 (p1 , , )
wobei p0 := q, u1 := bv1...l , p1 := rl .
Damit auch w = bw0 = bv1...l u2...k = u1...k und
P
ni = n + 1.
195
4.9 Äquivalenz von PDAs und CFGs
196
4.9 Äquivalenz von PDAs und CFGs
A → bB1 . . . Bk
wobei b ∈ Σ ∪ {}.
196
4.9 Äquivalenz von PDAs und CFGs
A → bB1 . . . Bk
wobei b ∈ Σ ∪ {}.
Methode: Für jedes a ∈ Σ
1 füge ein neues Aa zu V hinzu,
2 ersetze a rechts in P durch Aa (außer am Kopfende),
3 füge eine neue Produkion Aa → a hinzu.
196
Alle Produktionen in G = (V, Σ, P, S) haben jetzt die Form
A → bB1 . . . Bk
M := ({q}, Σ, V, q, S, δ)
wobei
(A → bβ) ∈ P =⇒ δ(q, b, A) 3 (q, β)
also für alle b ∈ Σ ∪ {} und A ∈ V :
197
Lemma 4.55
Für alle u, v ∈ Σ∗ und γ ∈ V ∗ und A ∈ V gilt:
198
Lemma 4.55
Für alle u, v ∈ Σ∗ und γ ∈ V ∗ und A ∈ V gilt:
198
Lemma 4.55
Für alle u, v ∈ Σ∗ und γ ∈ V ∗ und A ∈ V gilt:
198
A →nG uγ mit Linksableitung gdw (q, uv, A) →nM (q, v, γ)
Satz 4.56
L(G) = L (M )
199
A →nG uγ mit Linksableitung gdw (q, uv, A) →nM (q, v, γ)
Satz 4.56
L(G) = L (M )
Beweis:
u ∈ L(G)
⇔ S →∗G u mit Linksableitung
⇔ (q, u, S) →∗M (q, , )
⇔ u ∈ L (M )
199
Satz 4.57 (PDA → CFG)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ), der mit leerem Keller
akzeptiert, kann man eine CFG G konstruieren mit L(G) = L (M ).
200
Satz 4.57 (PDA → CFG)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ), der mit leerem Keller
akzeptiert, kann man eine CFG G konstruieren mit L(G) = L (M ).
200
Satz 4.57 (PDA → CFG)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ), der mit leerem Keller
akzeptiert, kann man eine CFG G konstruieren mit L(G) = L (M ).
200
Satz 4.57 (PDA → CFG)
Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ), der mit leerem Keller
akzeptiert, kann man eine CFG G konstruieren mit L(G) = L (M ).
201
Lemma 4.58
[q, Z, p] →nG w gdw (q, w, Z) →nM (p, , )
Beweis:
(⇒): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
201
Lemma 4.58
[q, Z, p] →nG w gdw (q, w, Z) →nM (p, , )
Beweis:
(⇒): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Ableitung [q, Z, p] →nG w muss von folgender Form sein:
201
Lemma 4.58
[q, Z, p] →nG w gdw (q, w, Z) →nM (p, , )
Beweis:
(⇒): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Ableitung [q, Z, p] →nG w muss von folgender Form sein:
201
Lemma 4.58
[q, Z, p] →nG w gdw (q, w, Z) →nM (p, , )
Beweis:
(⇒): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Ableitung [q, Z, p] →nG w muss von folgender Form sein:
202
Beweis (Forts.):
(⇐): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
202
Beweis (Forts.):
(⇐): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Berechnung (q, w, Z) →nM (p, , ) muss von dieser Form sein:
202
Beweis (Forts.):
(⇐): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Berechnung (q, w, Z) →nM (p, , ) muss von dieser Form sein:
und w0 = u1 . . . uk ,
P
ni = n − 1.
202
Beweis (Forts.):
(⇐): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Berechnung (q, w, Z) →nM (p, , ) muss von dieser Form sein:
und w0 = u1 . . . uk ,
P
ni = n − 1.
IA ⇒ [ri−1 , Zi , ri ] →nGi ui
202
Beweis (Forts.):
(⇐): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über n.
IA: Beh. gilt für alle Werte < n. Zz: Beh. gilt für n.
Die Berechnung (q, w, Z) →nM (p, , ) muss von dieser Form sein:
und w0 = u1 . . . uk ,
P
ni = n − 1.
IA ⇒ [ri−1 , Zi , ri ] →nGi ui
⇒ [q, Z, p] →G b[r0 , Z1 , r1 ] . . . [rk−1 , Zk , rk ]
→n−1
G bu1 . . . uk = w
202
Damit haben wir bewiesen:
Satz 4.59
Eine Sprache ist kontextfrei gdw sie von einem Kellerautomaten
akzeptiert wird.
203
4.10 Deterministische Kellerautomaten
Definition 4.60
Ein PDA heißt deterministisch (DPDA) gdw für alle q ∈ Q, a ∈ Σ
und Z ∈ Γ
|δ(q, a, Z)| + |δ(q, , Z)| ≤ 1
204
4.10 Deterministische Kellerautomaten
Definition 4.60
Ein PDA heißt deterministisch (DPDA) gdw für alle q ∈ Q, a ∈ Σ
und Z ∈ Γ
|δ(q, a, Z)| + |δ(q, , Z)| ≤ 1
Beispiel 4.61
Der folgende DPDA mit Σ = {0, 1, $}, Γ = {Z0 , 0, 1} akzeptiert
die Sprache {w$wR | w ∈ {0, 1}∗ }.
204
Definition 4.62
Eine CFL heißt deterministisch (DCFL) gdw sie von einem DPDA
akzeptiert wird.
Man kann zeigen: Die CFL {wwR | w ∈ {0, 1}∗ } ist nicht
deterministisch.
205
Definition 4.62
Eine CFL heißt deterministisch (DCFL) gdw sie von einem DPDA
akzeptiert wird.
Man kann zeigen: Die CFL {wwR | w ∈ {0, 1}∗ } ist nicht
deterministisch.
205
Eine Sprache erfüllt die Präfix Bedingung gdw wenn sie keine zwei
Wörter enthält, so dass das eine ein echtes Präfix des anderen ist.
Beispiel 4.64
Die Sprache a∗ erfüllt die Präfix Bedingung nicht.
Die Sprache {w$wR | w ∈ {0, 1}∗ } erfüllt die Präfix
Bedingung.
206
Eine Sprache erfüllt die Präfix Bedingung gdw wenn sie keine zwei
Wörter enthält, so dass das eine ein echtes Präfix des anderen ist.
Beispiel 4.64
Die Sprache a∗ erfüllt die Präfix Bedingung nicht.
Die Sprache {w$wR | w ∈ {0, 1}∗ } erfüllt die Präfix
Bedingung.
Lemma 4.65
∃DPDA M. L = L (M ) ⇔
∃DPDA M. L = LF (M ) und L erfüllt die Präfix Bedingung
Beweis: Übung!
206
Eine Sprache erfüllt die Präfix Bedingung gdw wenn sie keine zwei
Wörter enthält, so dass das eine ein echtes Präfix des anderen ist.
Beispiel 4.64
Die Sprache a∗ erfüllt die Präfix Bedingung nicht.
Die Sprache {w$wR | w ∈ {0, 1}∗ } erfüllt die Präfix
Bedingung.
Lemma 4.65
∃DPDA M. L = L (M ) ⇔
∃DPDA M. L = LF (M ) und L erfüllt die Präfix Bedingung
Beweis: Übung!
206
Satz 4.66
Die Klasse der DCFLs ist unter Komplement abgeschlossen.
Beweis: Komplex. Siehe zB Erk&Priese oder Kozen.
Da die CFLs nicht unter Komplement abgeschlossen sind:
Korollar 4.67
Die DCFLs sind eine echte Teilklasse der CFLs.
207
Satz 4.66
Die Klasse der DCFLs ist unter Komplement abgeschlossen.
Beweis: Komplex. Siehe zB Erk&Priese oder Kozen.
Da die CFLs nicht unter Komplement abgeschlossen sind:
Korollar 4.67
Die DCFLs sind eine echte Teilklasse der CFLs.
Hier ist eine konkrete Sprache in CFL\DCFL:
Sei Lww := {ww | w ∈ {a, b}∗ }.
207
Satz 4.66
Die Klasse der DCFLs ist unter Komplement abgeschlossen.
Beweis: Komplex. Siehe zB Erk&Priese oder Kozen.
Da die CFLs nicht unter Komplement abgeschlossen sind:
Korollar 4.67
Die DCFLs sind eine echte Teilklasse der CFLs.
Hier ist eine konkrete Sprache in CFL\DCFL:
Sei Lww := {ww | w ∈ {a, b}∗ }.
Dann ist L := {a, b}∗ \ Lww eine CFL aber keine DCFL.
L wird von folgender CFG erzeugt (ohne Beweis):
S → AB | BA | A | B
A → CAC | a B → CBC | b C→a|b
208
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.
Beweis:
Erinnerung: CFLs nicht unter Schnitt abgeschlossen:
208
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.
Beweis:
Erinnerung: CFLs nicht unter Schnitt abgeschlossen:
208
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.
Beweis:
Erinnerung: CFLs nicht unter Schnitt abgeschlossen:
208
Lemma 4.69
Jede DCFL ist nicht inhärent mehrdeutig, dh sie wird von einer
nicht-mehrdeutigen Grammatik erzeugt.
Beweisidee: Die Konversion PDA → CFG erzeugt aus einem DPDA
eine nicht-mehrdeutige CFG. [HMU]
209
Lemma 4.69
Jede DCFL ist nicht inhärent mehrdeutig, dh sie wird von einer
nicht-mehrdeutigen Grammatik erzeugt.
Beweisidee: Die Konversion PDA → CFG erzeugt aus einem DPDA
eine nicht-mehrdeutige CFG. [HMU]
Satz 4.70
Das Wortproblem für DCFLs ist in linearer Zeit lösbar.
209
Lemma 4.69
Jede DCFL ist nicht inhärent mehrdeutig, dh sie wird von einer
nicht-mehrdeutigen Grammatik erzeugt.
Beweisidee: Die Konversion PDA → CFG erzeugt aus einem DPDA
eine nicht-mehrdeutige CFG. [HMU]
Satz 4.70
Das Wortproblem für DCFLs ist in linearer Zeit lösbar.
209
4.11 Tabellarischer Überblick
Abschlusseigenschaften
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem
DFA
DPDA
CFG
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem
DFA O(n)
DPDA O(n)
CFG O(n3 )
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem Leerheit
DFA O(n)
DPDA O(n)
CFG O(n3 )
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem Leerheit
DFA O(n) ja
DPDA O(n) ja
CFG O(n3 ) ja
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem Leerheit Äquivalenz
DFA O(n) ja
DPDA O(n) ja
CFG O(n3 ) ja
210
4.11 Tabellarischer Überblick
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem Leerheit Äquivalenz
DFA O(n) ja ja
DPDA O(n) ja ja
CFG O(n3 ) ja nein(*)
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem Leerheit Äquivalenz Schnittproblem
DFA O(n) ja ja
DPDA O(n) ja ja
CFG O(n3 ) ja nein(*)
Abschlusseigenschaften
Entscheidbarkeit
Wortproblem Leerheit Äquivalenz Schnittproblem
DFA O(n) ja ja ja
DPDA O(n) ja ja nein(*)
CFG O(n3 ) ja nein(*) nein(*)
211
5. Berechenbarkeit, Entscheidbarkeit
Überblick:
Was kann man berechnen? Dh:
Welche Funktionen kann man in endlicher Zeit berechnen?
Welche Eigenschaften von Objekten können in endlicher Zeit
entschieden werden?
Mit welchen Sprachen/Maschinen?
Was kann man in polynomieller Zeit berechnen?
211
5.1 Der Begriff der Berechenbarkeit
Eine Funktion f : Nk → N ist intuitiv berechenbar, wenn es einen
Algorithmus gibt, der bei Eingabe (n1 , . . . , nk ) ∈ Nk
nach endlich vielen Schritten mit Ergebnis f (n1 , . . . , nk ) hält,
falls f (n1 , . . . , nk ) definiert ist,
und nicht terminiert, falls f (n1 , . . . , nk ) nicht definiert ist.
212
Terminologie: Eine Funktion f : A → B ist
total gdw f (a) für alle a ∈ A definiert ist.
partiell gdw f (a) auch undefiniert sein kann.
echt partiell gdw sie nicht total ist.
213
Terminologie: Eine Funktion f : A → B ist
total gdw f (a) für alle a ∈ A definiert ist.
partiell gdw f (a) auch undefiniert sein kann.
echt partiell gdw sie nicht total ist.
Beispiel 5.1
Jeder Algorithmus berechnet eine partielle Funktion.
Der Algorithmus
input(n);
while true do ;
berechnet die überall undefinierte Funktion, dh ∅ ⊂ N → N.
213
Beispiel 5.2
Ist die Funktion
1
falls n als Ziffernfolge Anfangsstück der
f1 (n) := Dezimalbruchentwicklung von π ist
0
sonst
214
Beispiel 5.2
Ist die Funktion
1
falls n als Ziffernfolge Anfangsstück der
f1 (n) := Dezimalbruchentwicklung von π ist
0
sonst
214
Beispiel 5.3
Ist die Funktion
1 falls n als Ziffernfolge irgendwo in der
f2 (n) := Dezimalbruchentwicklung von π vorkommt
0 sonst
215
Beispiel 5.3
Ist die Funktion
1 falls n als Ziffernfolge irgendwo in der
f2 (n) := Dezimalbruchentwicklung von π vorkommt
0 sonst
215
Beispiel 5.3
Ist die Funktion
1 falls n als Ziffernfolge irgendwo in der
f2 (n) := Dezimalbruchentwicklung von π vorkommt
0 sonst
berechenbar?
216
Beispiel 5.4
Ist die Funktion
1 falls 00
| .{z. . 00}
109 Nullen
f3 (n) :=
in der Dezimalbruchentwicklung von π vorkommt
0 sonst
berechenbar?
Ja, denn f3 ist entweder die konstante Funktion, die 1 für alle
n ≥ 0 zurückgibt, oder die konstante Funktion, die 0 für alle n ≥ 0
zurückgibt. Beide sind berechenbar.
216
Beispiel 5.4
Ist die Funktion
1 falls 00
| .{z. . 00}
109 Nullen
f3 (n) :=
in der Dezimalbruchentwicklung von π vorkommt
0 sonst
berechenbar?
Ja, denn f3 ist entweder die konstante Funktion, die 1 für alle
n ≥ 0 zurückgibt, oder die konstante Funktion, die 0 für alle n ≥ 0
zurückgibt. Beide sind berechenbar.
Dies ist ein nicht-konstruktiver Beweis:
Wir wissen, es gibt einen Algorithmus, der f3 berechnet,
aber wir wissen nicht, welcher.
216
Beispiel 5.5
Ist die Funktion
1 falls mindestens n mal hintereinander irgendwo in der
f4 (n) := Dezimalbruchentwicklung von π eine 0 vorkommt
0 sonst
berechenbar?
217
Beispiel 5.5
Ist die Funktion
1 falls mindestens n mal hintereinander irgendwo in der
f4 (n) := Dezimalbruchentwicklung von π eine 0 vorkommt
0 sonst
berechenbar?
Ja, denn
entweder kommt 0n für beliebig große n vor, dann ist
f3 (n) = 1 für alle n,
oder es gibt eine längste vorkommende Sequenz 0m , dann ist
f3 (n) = 1 für n ≤ m und f3 (n) = 0 sonst.
Beide Funktionen sind berechenbar.
217
Beispiel 5.5
Ist die Funktion
1 falls mindestens n mal hintereinander irgendwo in der
f4 (n) := Dezimalbruchentwicklung von π eine 0 vorkommt
0 sonst
berechenbar?
Ja, denn
entweder kommt 0n für beliebig große n vor, dann ist
f3 (n) = 1 für alle n,
oder es gibt eine längste vorkommende Sequenz 0m , dann ist
f3 (n) = 1 für n ≤ m und f3 (n) = 0 sonst.
Beide Funktionen sind berechenbar.
Wieder ein nicht-konstruktiver Beweis.
217
Satz 5.6
Es gibt nicht-berechenbare Funktionen N → {0, 1}.
218
Satz 5.6
Es gibt nicht-berechenbare Funktionen N → {0, 1}.
Beweis:
Es gibt nur abzählbar viele Algorithmen, aber überabzählbar viele
Funktionen in N → {0, 1}.
218
Erinnerung: Eine Menge M ist abzählbar falls es eine injektive
Funktion M → N gibt.
Äquivalente Definitionen :
Entweder gibt es eine Bijektion M → {0, . . . , n} für ein
n ∈ N, oder eine Bijektion M → N.
Es gibt eine Nummerierung der Elemente von M .
Eine Menge ist überabzählbar wenn sie nicht abzählbar ist.
219
Lemma 5.7
Σ∗ ist abzählbar (falls Σ endlich).
220
Lemma 5.7
Σ∗ ist abzählbar (falls Σ endlich).
Beweis:
Durch Beispiel:
220
Lemma 5.7
Σ∗ ist abzählbar (falls Σ endlich).
Beweis:
Durch Beispiel:
Annahme:
Ein Algorithmus ist ein Wort über einem endlichen Alphabet.
220
Lemma 5.7
Σ∗ ist abzählbar (falls Σ endlich).
Beweis:
Durch Beispiel:
Annahme:
Ein Algorithmus ist ein Wort über einem endlichen Alphabet.
220
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
f0
f1
f2
f3
..
.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0
f1
f2
f3
..
.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1
f2
f3
..
.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1 1 0 0 0 ...
f2
f3
..
.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1 1 0 0 0 ...
f2 0 0 1 0 ...
f3
..
.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1 1 0 0 0 ...
f2 0 0 1 0 ...
f3 0 0 1 0 ...
..
.
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1 1 0 0 0 ...
f2 0 0 1 0 ...
f3 0 0 1 0 ...
.. .. .. .. .. ..
. . . . . .
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1 1 0 0 0 ...
f2 0 0 1 0 ...
f3 0 0 1 0 ...
.. .. .. .. .. ..
. . . . . .
Eine Funktion f , die nicht in der Tabelle ist: ¬Diagonale!
f 1 1 0 0 ...
Widerspruch!
221
Satz 5.8
Die Menge aller Funktionen N → {0, 1} ist überabzählbar.
Beweis:
Indirekt. Nimm an, die Menge der Funktionen sei abzählbar.
0 1 2 3 ...
f0 0 1 1 0 ...
f1 1 0 0 0 ...
f2 0 0 1 0 ...
f3 0 0 1 0 ...
.. .. .. .. .. ..
. . . . . .
Eine Funktion f , die nicht in der Tabelle ist: ¬Diagonale!
f 1 1 0 0 ...
Widerspruch!
Formal: Sei f (i) := 1 − fi (i). Dann f 6= fi für alle i, da
f (i) 6= fi (i).
221
Satz 5.9
Wenn Algorithmen als endliche Wörter kodiert werden können,
dann gibt es unberechenbare Funktionen N → {0, 1}.
222
Satz 5.9
Wenn Algorithmen als endliche Wörter kodiert werden können,
dann gibt es unberechenbare Funktionen N → {0, 1}.
Beweis:
Sei F die Menge aller Funktionen N → {0, 1}.
Sei A die Menge der Wörter, die Algorithmen kodieren.
Beweis durch Widerspruch.
222
Satz 5.9
Wenn Algorithmen als endliche Wörter kodiert werden können,
dann gibt es unberechenbare Funktionen N → {0, 1}.
Beweis:
Sei F die Menge aller Funktionen N → {0, 1}.
Sei A die Menge der Wörter, die Algorithmen kodieren.
Beweis durch Widerspruch.
Annahme: Alle Funktionen von F sind berechenbar.
222
Satz 5.9
Wenn Algorithmen als endliche Wörter kodiert werden können,
dann gibt es unberechenbare Funktionen N → {0, 1}.
Beweis:
Sei F die Menge aller Funktionen N → {0, 1}.
Sei A die Menge der Wörter, die Algorithmen kodieren.
Beweis durch Widerspruch.
Annahme: Alle Funktionen von F sind berechenbar.
Da A abzählbar ist (Lemma 5.7), gibt es eine injektive Funktion
anum : A → N.
Definiere fnum : F → N durch
222
Satz 5.9
Wenn Algorithmen als endliche Wörter kodiert werden können,
dann gibt es unberechenbare Funktionen N → {0, 1}.
Beweis:
Sei F die Menge aller Funktionen N → {0, 1}.
Sei A die Menge der Wörter, die Algorithmen kodieren.
Beweis durch Widerspruch.
Annahme: Alle Funktionen von F sind berechenbar.
Da A abzählbar ist (Lemma 5.7), gibt es eine injektive Funktion
anum : A → N.
Definiere fnum : F → N durch
223
Es wurde bewiesen: Alle diese Beschreibungsmethoden sind in ihrer
Mächtigkeit äquivalent.
224
Es wurde bewiesen: Alle diese Beschreibungsmethoden sind in ihrer
Mächtigkeit äquivalent.
224
Tape
··· c a b b a c a ···
Read/write head
225
Definition 5.10
Eine Turingmaschine (TM) ist ein 7-Tupel
M = (Q, Σ, Γ, δ, q0 , , F ) so dass
Q ist eine endliche Menge von Zuständen.
Σ ist eine endliche Menge, das Eingabealphabet.
Γ ist eine endliche Menge, das Bandalphabet, mit Σ ⊂ Γ
δ : Q × Γ → Q × Γ × {L, R, N } ist die Übergangsfunktion.
δ darf partiell sein.
q0 ∈ Q ist der Startzustand.
∈ Γ \ Σ ist das Leerzeichen.
F ⊆ Q ist die Menge der akzeptierenden oder Endzustände.
226
Definition 5.10
Eine Turingmaschine (TM) ist ein 7-Tupel
M = (Q, Σ, Γ, δ, q0 , , F ) so dass
Q ist eine endliche Menge von Zuständen.
Σ ist eine endliche Menge, das Eingabealphabet.
Γ ist eine endliche Menge, das Bandalphabet, mit Σ ⊂ Γ
δ : Q × Γ → Q × Γ × {L, R, N } ist die Übergangsfunktion.
δ darf partiell sein.
q0 ∈ Q ist der Startzustand.
∈ Γ \ Σ ist das Leerzeichen.
F ⊆ Q ist die Menge der akzeptierenden oder Endzustände.
226
Definition 5.10
Eine Turingmaschine (TM) ist ein 7-Tupel
M = (Q, Σ, Γ, δ, q0 , , F ) so dass
Q ist eine endliche Menge von Zuständen.
Σ ist eine endliche Menge, das Eingabealphabet.
Γ ist eine endliche Menge, das Bandalphabet, mit Σ ⊂ Γ
δ : Q × Γ → Q × Γ × {L, R, N } ist die Übergangsfunktion.
δ darf partiell sein.
q0 ∈ Q ist der Startzustand.
∈ Γ \ Σ ist das Leerzeichen.
F ⊆ Q ist die Menge der akzeptierenden oder Endzustände.
226
Intuitiv bedeutet δ(q, a) = (q 0 , b, D):
Wenn sich M im Zustand q befindet,
und auf dem Band a liest,
so geht M im nächsten Schritt in den Zustand q 0 über,
überschreibt a mit b,
und bewegt danach den Schreib-/Lesekopf nach rechts (falls
D = R), nach links (falls D = L), oder nicht (falls D = N ).
227
Definition 5.11
Eine Konfiguration einer Turingmaschine ist ein Tripel
(α, q, β) ∈ Γ∗ × Q × Γ∗ .
Dies modelliert
Bandinhalt: . . . αβ . . .
Zustand: q
Kopf auf dem ersten Zeichen von β
228
Definition 5.11
Eine Konfiguration einer Turingmaschine ist ein Tripel
(α, q, β) ∈ Γ∗ × Q × Γ∗ .
Dies modelliert
Bandinhalt: . . . αβ . . .
Zustand: q
Kopf auf dem ersten Zeichen von β
228
Die Berechnung der TM M wird als Relation →M auf
Konfigurationen formalisiert. Falls δ(q, first(β)) = (q 0 , c, D):
(α, q 0 , c rest(β)) falls D = N
(α, q, β) →M (αc, q 0 , rest(β)) falls D = R
(butlast(α), q 0 , last(α) c rest(β)) falls D = L
wobei
first(aw) = a first() =
rest(aw) = w rest() =
last(wa) = a last() =
butlast(wa) = w butlast() =
für a ∈ Γ und w ∈ Γ∗ .
229
Beispiel 5.12 (Unär +1)
δ(q, ) = (f, 1, N )
δ(q, 1) = (q, 1, R)
230
Beispiel 5.12 (Unär +1)
δ(q, ) = (f, 1, N )
δ(q, 1) = (q, 1, R)
Beispiellauf:
230
Beispiel 5.13 (Binär +1)
ZB 1011 7→ 1100
231
Beispiel 5.13 (Binär +1)
ZB 1011 7→ 1100
wobei
δ(q0 , 0) = (q0 , 0, R) δ(q1 , 1) = (q1 , 0, L) δ(q2 , 0) = (q2 , 0, L)
δ(q0 , 1) = (q0 , 1, R) δ(q1 , 0) = (q2 , 1, L) δ(q2 , 1) = (q2 , 1, L)
δ(q0 , ) = (q1 , , L) δ(q1 , ) = (qf , 1, N ) δ(q2 , ) = (qf , , R)
231
Beispiel 5.13 (Binär +1)
ZB 1011 7→ 1100
wobei
δ(q0 , 0) = (q0 , 0, R) δ(q1 , 1) = (q1 , 0, L) δ(q2 , 0) = (q2 , 0, L)
δ(q0 , 1) = (q0 , 1, R) δ(q1 , 0) = (q2 , 1, L) δ(q2 , 1) = (q2 , 1, L)
δ(q0 , ) = (q1 , , L) δ(q1 , ) = (qf , 1, N ) δ(q2 , ) = (qf , , R)
Beispiellauf:
231
Definition 5.14
Eine Turingmaschine M akzeptiert die Sprache
232
Definition 5.14
Eine Turingmaschine M akzeptiert die Sprache
f (n1 , . . . , nk ) = m ⇔
∃r ∈ F. (, q0 , bin(n1 )#bin(n2 )# . . . #bin(nk ))
→∗M ( . . . , r, bin(m) . . . )
232
Definition 5.14
Eine Turingmaschine M akzeptiert die Sprache
f (n1 , . . . , nk ) = m ⇔
∃r ∈ F. (, q0 , bin(n1 )#bin(n2 )# . . . #bin(nk ))
→∗M ( . . . , r, bin(m) . . . )
232
Zum Halten/Terminieren von TM
233
Zum Halten/Terminieren von TM
Eine TM hält wenn sie eine Konfiguration (α, q, aβ) erreicht und
δ(q, a) nicht definiert oder (bei nichdetermistische TM)
δ(q, a) = ∅.
233
Zum Halten/Terminieren von TM
Eine TM hält wenn sie eine Konfiguration (α, q, aβ) erreicht und
δ(q, a) nicht definiert oder (bei nichdetermistische TM)
δ(q, a) = ∅.
Nach Annahme hält eine TM immer, wenn sie einen Endzustand
erreicht. Damit ist die von einer TM berechnete Funktion
wohldefiniert.
233
Zum Halten/Terminieren von TM
Eine TM hält wenn sie eine Konfiguration (α, q, aβ) erreicht und
δ(q, a) nicht definiert oder (bei nichdetermistische TM)
δ(q, a) = ∅.
Nach Annahme hält eine TM immer, wenn sie einen Endzustand
erreicht. Damit ist die von einer TM berechnete Funktion
wohldefiniert.
Eine TM kann auch halten, bevor sie einen Endzustand erreicht.
233
Satz 5.15
Zu jeder nichtdeterministischen TM N gibt es eine
deterministische TM M mit L(N ) = L(M ).
234
Satz 5.15
Zu jeder nichtdeterministischen TM N gibt es eine
deterministische TM M mit L(N ) = L(M ).
Beweis:
M durchsucht den Baum der Berechnungen von N in
Breitensuche, beginnend mit der Startkonfiguration (, q0 , w), eine
Ebene nach der anderen.
234
Satz 5.15
Zu jeder nichtdeterministischen TM N gibt es eine
deterministische TM M mit L(N ) = L(M ).
Beweis:
M durchsucht den Baum der Berechnungen von N in
Breitensuche, beginnend mit der Startkonfiguration (, q0 , w), eine
Ebene nach der anderen.
Gibt es in dem Baum (auf Ebene n) eine Konfigurationen mit
Endzustand, so wird diese (nach Zeit O(cn )) gefunden.
234
Satz 5.16
Die von Turingmaschinen akzeptierten Sprachen sind genau die
Typ-0-Sprachen der Chomsky Hierarchie.
235
Satz 5.16
Die von Turingmaschinen akzeptierten Sprachen sind genau die
Typ-0-Sprachen der Chomsky Hierarchie.
Beweis:
Wir beschreiben nur die Beweisidee. (Mehr Details: [Schöning]).
235
Satz 5.16
Die von Turingmaschinen akzeptierten Sprachen sind genau die
Typ-0-Sprachen der Chomsky Hierarchie.
Beweis:
Wir beschreiben nur die Beweisidee. (Mehr Details: [Schöning]).
=⇒“: Grammatikregeln können direkt die Rechenregeln einer TM
”
simulieren.
235
Satz 5.16
Die von Turingmaschinen akzeptierten Sprachen sind genau die
Typ-0-Sprachen der Chomsky Hierarchie.
Beweis:
Wir beschreiben nur die Beweisidee. (Mehr Details: [Schöning]).
=⇒“: Grammatikregeln können direkt die Rechenregeln einer TM
”
simulieren.
⇐=“: Die (nichtdeterministische) TM versucht von ihrer Eingabe
”
aus das Startsymbol der Grammatik zu erreichen, indem sie die
Produktionen der Grammatik von rechts nach links anwendet,
(nichtdeterministisch) an jeder möglichen Stelle.
235
Eine beliebte Modellvariante ist die k-Band-Turingmaschine:
M
... b abaabaab aa ...
236
Eine beliebte Modellvariante ist die k-Band-Turingmaschine:
M
... b abaabaab aa ...
δ : Q × Γk → Q × Γk × {L, R, N }k
236
Satz 5.17
Jede k-Band-Turingmaschine kann effektiv durch eine 1-Band-TM
simuliert werden.
237
Satz 5.17
Jede k-Band-Turingmaschine kann effektiv durch eine 1-Band-TM
simuliert werden.
Beweisidee: Aus
... abaa#aabba ...
M
... b abaabaab aa ...
237
Satz 5.17
Jede k-Band-Turingmaschine kann effektiv durch eine 1-Band-TM
simuliert werden.
Beweisidee: Aus
... abaa#aabba ...
M
... b abaabaab aa ...
wird
... abaa#aabba ...
... ...
M’ *
... b abaabaab aa ...
... ...
*
237
Beweisskizze:
Γ0 := (Γ × {?, })k
M 0 simuliert einen M -Schritt durch mehrere Schritte: M 0
startet mit Kopf links von allen ?.
geht nach rechts bis alle ? überschritten sind,
und merkt sich dabei (in Q0 ) die Zeichen über jedem ?.
hat jetzt alle Information, um δM anzuwenden.
geht nach links über alle ? hinweg und führt dabei δM
aus.
238
Beweisskizze:
Γ0 := (Γ × {?, })k
M 0 simuliert einen M -Schritt durch mehrere Schritte: M 0
startet mit Kopf links von allen ?.
geht nach rechts bis alle ? überschritten sind,
und merkt sich dabei (in Q0 ) die Zeichen über jedem ?.
hat jetzt alle Information, um δM anzuwenden.
geht nach links über alle ? hinweg und führt dabei δM
aus.
Beobachtung:
Band i := Band i + 1
Band i := Band i − 1
Band i := 0
Band i := Band j
239
Seien Mi = (Qi , Σ, Γi , δi , qi , , Fi ), i = 1, 2.
Die sequentielle Komposition (Hintereinanderschaltung) von M1
und M2 bezeichnen wir mit
−→ M1 −→ M2 −→
M := (Q1 ∪ Q2 , Σ, Γ1 ∪ Γ2 , δ, q1 , , F2 )
δ := δ1 ∪ δ2 ∪ {(f1 , a) 7→ (q2 , a, N ) | f1 ∈ F1 , a ∈ Γ1 }
240
Sind f1 und f2 Endzustände von M so bezeichnet
f1
−→ M −→ M1 −→
↓ f2
M2
↓
241
Sind f1 und f2 Endzustände von M so bezeichnet
f1
−→ M −→ M1 −→
↓ f2
M2
↓
241
Analog zur Fallunterscheidung kann man auch eine TM für eine
Schleife konstruieren
ja
−→ Band i = 0? −→
↑ ↓ nein
M
242
Analog zur Fallunterscheidung kann man auch eine TM für eine
Schleife konstruieren
ja
−→ Band i = 0? −→
↑ ↓ nein
M
242
WHILE ≡ strukturierte Programme
mit while-Schleifen
GOTO ≡ Assembler
Wir definieren WHILE- und GOTO-Berechenbarkeit und zeigen
ihre Äquivalenz mit Turing-Berechenbarkeit.
243
WHILE ≡ strukturierte Programme
mit while-Schleifen
GOTO ≡ Assembler
Wir definieren WHILE- und GOTO-Berechenbarkeit und zeigen
ihre Äquivalenz mit Turing-Berechenbarkeit.
Syntax von WHILE-Programmen:
P → X := X + C
| X := X - C
| P ;P
| IF X = 0 DO P ELSE Q END
| WHILE X 6= 0 DO P END
243
WHILE ≡ strukturierte Programme
mit while-Schleifen
GOTO ≡ Assembler
Wir definieren WHILE- und GOTO-Berechenbarkeit und zeigen
ihre Äquivalenz mit Turing-Berechenbarkeit.
Syntax von WHILE-Programmen:
P → X := X + C
| X := X - C
| P ;P
| IF X = 0 DO P ELSE Q END
| WHILE X 6= 0 DO P END
244
(
m−n falls m ≥ n
Die modifizierte Differenz ist m −̇ n :=
0 sonst
244
(
m−n falls m ≥ n
Die modifizierte Differenz ist m −̇ n :=
0 sonst
245
Definition 5.20
Eine totale Funktion f : Nk → N ist WHILE-berechenbar gdw es
ein WHILE-Programm P gibt, so dass für alle n1 , . . . , nk ∈ N:
P , gestartet mit n1 , . . . , nk in x1 , . . . , xk (0 in den anderen Var.)
terminiert mit f (n1 , . . . , nk ) in x0 .
246
Definition 5.20
Eine totale Funktion f : Nk → N ist WHILE-berechenbar gdw es
ein WHILE-Programm P gibt, so dass für alle n1 , . . . , nk ∈ N:
P , gestartet mit n1 , . . . , nk in x1 , . . . , xk (0 in den anderen Var.)
terminiert mit f (n1 , . . . , nk ) in x0 .
Definition 5.21
Eine partielle Funktion f : Nk → N ist WHILE-berechenbar gdw es
ein WHILE-Programm P gibt, so dass für alle n1 , . . . , nk ∈ N:
P , gestartet mit n1 , . . . , nk in x1 , . . . , xk (0 in den anderen Var.)
terminiert mit f (n1 , . . . , nk ) in x0 ,
falls f (n1 , . . . , nk ) definiert ist,
terminiert nicht, falls f (n1 , . . . , nk ) undefiniert ist.
246
Turingmaschinen können WHILE-Programme simulieren:
Satz 5.22 (WHILE → TM)
Jede WHILE-berechenbare Funktion ist auch Turing-berechenbar.
Beweis:
Jede Programmvariable wird auf einem eigenen Band gespeichert.
Wir haben bereits gezeigt: Alle Konstrukte der WHILE-Sprache
können von einer Mehrband-TM simuliert werden, und eine
Mehrband-TM kann von einer 1-Band TM simuliert werden.
247
GOTO TM
%
WHILE
Übersetzungen
248
Ein GOTO-Programm ist eine Sequenzen von markierten
Anweisungen
M1 : A1 ; M2 : A2 ; . . . ; Mk : Ak
xi := xj + n
xi := xj - n
GOTO Mi
IF xi = n GOTO Mj
HALT
Die Semantik ist wie erwartet.
249
Ein GOTO-Programm ist eine Sequenzen von markierten
Anweisungen
M1 : A1 ; M2 : A2 ; . . . ; Mk : Ak
xi := xj + n
xi := xj - n
GOTO Mi
IF xi = n GOTO Mj
HALT
Die Semantik ist wie erwartet.
Fakt 5.23 (WHILE → GOTO)
Jedes WHILE-Programm kann durch ein GOTO-Programm
simuliert werden.
249
Satz 5.24 (GOTO → WHILE)
Jedes GOTO-Programm kann durch ein WHILE-Programm
simuliert werden.
250
Satz 5.24 (GOTO → WHILE)
Jedes GOTO-Programm kann durch ein WHILE-Programm
simuliert werden.
Beweis: Simuliere M1 : A1 ; M2 : A2 ; . . . ; Mk : Ak durch
pc := 1;
WHILE pc 6= 0 DO
IF pc = 1 THEN P1 ELSE
.
.
.
IF pc = k THEN Pk ELSE pc := 0
END
wobei Ai 7→ Pi wie folgt definiert ist:
xi := xj +/- n 7→ xi := xj +/- n; pc := pc + 1
GOTO Mi 7→ pc := i
IF xj = 0 GOTO Mi 7→ IF xj = 0
THEN pc := i ELSE pc := pc + 1 END
HALT 7→ pc := 0
250
Korollar 5.25
WHILE- und GOTO-Berechenbarkeit sind äquivalent.
251
Korollar 5.25
WHILE- und GOTO-Berechenbarkeit sind äquivalent.
251
GOTO TM
-& %
WHILE
Übersetzungen
252
Satz 5.27 (TM → GOTO)
Jede TM kann durch ein GOTO-Programm simuliert werden.
253
Satz 5.27 (TM → GOTO)
Jede TM kann durch ein GOTO-Programm simuliert werden.
Übersetzung: TM (Q, Σ, Γ, δ, q0 , , F ) → GOTO-Programm.
253
Satz 5.27 (TM → GOTO)
Jede TM kann durch ein GOTO-Programm simuliert werden.
Übersetzung: TM (Q, Σ, Γ, δ, q0 , , F ) → GOTO-Programm.
253
Satz 5.27 (TM → GOTO)
Jede TM kann durch ein GOTO-Programm simuliert werden.
Übersetzung: TM (Q, Σ, Γ, δ, q0 , , F ) → GOTO-Programm.
253
Der Kern des GOTO-Programms ist die iterierte Simulation von δ:
M: IF z ∈ F GOTO Mend ;
a := y MOD b;
IF z = 0 AND a = 0 GOTO M00 ;
IF z = 0 AND a = 1 GOTO M01 ;
...
IF z = k AND a = n GOTO Mkn ;
M00 : P00 ; GOTO M ;
M01 : P01 ; GOTO M ;
...
Mkn : Pkn ; GOTO M
254
Der Kern des GOTO-Programms ist die iterierte Simulation von δ:
M: IF z ∈ F GOTO Mend ;
a := y MOD b;
IF z = 0 AND a = 0 GOTO M00 ;
IF z = 0 AND a = 1 GOTO M01 ;
...
IF z = k AND a = n GOTO Mkn ;
M00 : P00 ; GOTO M ;
M01 : P01 ; GOTO M ;
...
Mkn : Pkn ; GOTO M
Übersetzungen
255
5.2 Unentscheidbarkeit des Halteproblems
Definition 5.28
Eine Menge A (⊆ N oder Σ∗ ) heißt entscheidbar gdw ihre
charakteristische Funktion
(
1 falls x ∈ A
χA (x) :=
0 falls x ∈
/A
berechenbar ist.
256
5.2 Unentscheidbarkeit des Halteproblems
Definition 5.28
Eine Menge A (⊆ N oder Σ∗ ) heißt entscheidbar gdw ihre
charakteristische Funktion
(
1 falls x ∈ A
χA (x) :=
0 falls x ∈
/A
berechenbar ist.
Eine Eigenschaft/Problem P (x) heißt entscheidbar gdw {x | P (x)}
entscheidbar ist.
256
5.2 Unentscheidbarkeit des Halteproblems
Definition 5.28
Eine Menge A (⊆ N oder Σ∗ ) heißt entscheidbar gdw ihre
charakteristische Funktion
(
1 falls x ∈ A
χA (x) :=
0 falls x ∈
/A
berechenbar ist.
Eine Eigenschaft/Problem P (x) heißt entscheidbar gdw {x | P (x)}
entscheidbar ist.
Fakt 5.29
Ist A ⊆ Σ∗ entscheidbar, dann gibt es eine TM M mit
L(M ) = A (aber nicht umgekehrt).
Die entscheidbaren Mengen sind abgeschlossen unter
Komplement: Ist A entscheidbar, dann auch A.
256
Kodierung einer TM als Wort über Σ = {0, 1}, exemplarisch:
Sei Γ = {a0 , . . . , ak } und Q = {q0 , . . . , qn }.
δ(qi , aj ) = (qi0 , aj 0 , d) wird kodiert als
wobei bin : N → {0, 1}∗ die Binärkodierung einer Zahl ist und
m = 0/1/2 falls d = L/R/N .
Kodierung von δ: Konkatenation der Kodierungen aller
δ(., .) = (., ., .), in beliebiger Reihenfolge.
Kodierung von {0, 1, #}∗ in {0, 1}∗ :
0 7→ 00
1 7→ 01
# 7→ 11
257
Die Kodierung TM → {0, 1}∗ ist nicht surjektiv, dh nicht jedes
Wort über {0, 1}∗ kodiert eine TM.
Sie kann jedoch ohne Probleme zu einer surjektiven Kodierung
erweitert werden.
258
Die Kodierung TM → {0, 1}∗ ist nicht surjektiv, dh nicht jedes
Wort über {0, 1}∗ kodiert eine TM.
Sie kann jedoch ohne Probleme zu einer surjektiven Kodierung
erweitert werden.
Sei M̂ eine beliebige feste TM.
Definition 5.30
Die zu einem Wort w ∈ {0, 1}∗ gehörige TM Mw ist
(
M falls w Kodierung von M ist
Mw :=
M̂ sonst
258
Definition 5.31
M [w] ist Abk. für Maschine M mit Eingabe w“
”
M [w]↓ bedeutet, dass M [w] terminiert/hält.
259
Definition 5.31
M [w] ist Abk. für Maschine M mit Eingabe w“
”
M [w]↓ bedeutet, dass M [w] terminiert/hält.
259
Definition 5.31
M [w] ist Abk. für Maschine M mit Eingabe w“
”
M [w]↓ bedeutet, dass M [w] terminiert/hält.
Als Menge:
K := {w ∈ {0, 1}∗ | Mw [w]↓}
259
Satz 5.33
Das spezielle Halteproblem ist nicht entscheidbar.
260
Satz 5.33
Das spezielle Halteproblem ist nicht entscheidbar.
Beweis:
Angenommen, K sei entscheidbar, dh χK ist berechenbar.
260
Satz 5.33
Das spezielle Halteproblem ist nicht entscheidbar.
Beweis:
Angenommen, K sei entscheidbar, dh χK ist berechenbar.
Dann ist auch folgende Funktion f berechenbar:
(
0 falls χK (w) = 0
f (w) :=
⊥ falls χK (w) = 1
260
Satz 5.33
Das spezielle Halteproblem ist nicht entscheidbar.
Beweis:
Angenommen, K sei entscheidbar, dh χK ist berechenbar.
Dann ist auch folgende Funktion f berechenbar:
(
0 falls χK (w) = 0
f (w) :=
⊥ falls χK (w) = 1
M’ ja
w Band=0? stop
M nein
260
Satz 5.33
Das spezielle Halteproblem ist nicht entscheidbar.
Beweis:
Angenommen, K sei entscheidbar, dh χK ist berechenbar.
Dann ist auch folgende Funktion f berechenbar:
(
0 falls χK (w) = 0
f (w) :=
⊥ falls χK (w) = 1
M’ ja
w Band=0? stop
M nein
260
Beweis (Forts.):
(Forts.)
M’ ja
w Band=0? stop
M nein
261
Definition 5.34 ((Allgemeines) Halteproblem)
Gegeben: Wörter w, x ∈ {0, 1}∗ .
Problem: Hält Mw bei Eingabe x ?
Als Menge:
H := {w#x | Mw [x]↓}
Satz 5.35
Das Halteproblem H ist nicht entscheidbar.
Beweis:
Wäre H entscheidbar, dann trivialerweise auch K:
χK (w) = χH (w, w)
262
Definition 5.36 (Reduktion)
Eine Menge A ⊆ Σ∗ ist reduzierbar auf eine Menge B ⊆ Γ∗
gdw es eine totale und berechenbare Funktion f : Σ∗ → Γ∗ gibt
mit
∀w ∈ Σ∗ . w ∈ A ⇔ f (w) ∈ B
Wir schreiben dann A ≤ B.
263
Definition 5.36 (Reduktion)
Eine Menge A ⊆ Σ∗ ist reduzierbar auf eine Menge B ⊆ Γ∗
gdw es eine totale und berechenbare Funktion f : Σ∗ → Γ∗ gibt
mit
∀w ∈ Σ∗ . w ∈ A ⇔ f (w) ∈ B
Wir schreiben dann A ≤ B.
Intuition:
B ist mindestens so schwer zu lösen wie A.
Ist A unlösbar, dann auch B.
Ist B lösbar, dann erst recht A.
263
Lemma 5.37
Falls A ≤ B und B ist entscheidbar, so ist auch A entscheidbar.
264
Lemma 5.37
Falls A ≤ B und B ist entscheidbar, so ist auch A entscheidbar.
Beweis:
Es gelte A ≤ B mittels f und χB sei berechenbar.
Dann ist χB ◦ f berechenbar und χA = χB ◦ f :
1, x ∈ A 1, f (x) ∈ B
χA (x) = = = χB (f (x))
0, x 6∈ A 0, f (x) 6∈ B
264
Lemma 5.37
Falls A ≤ B und B ist entscheidbar, so ist auch A entscheidbar.
Beweis:
Es gelte A ≤ B mittels f und χB sei berechenbar.
Dann ist χB ◦ f berechenbar und χA = χB ◦ f :
1, x ∈ A 1, f (x) ∈ B
χA (x) = = = χB (f (x))
0, x 6∈ A 0, f (x) 6∈ B
Korollar 5.38
Falls A ≤ B und A ist unentscheidbar, dann ist auch B
unentscheidbar.
264
Lemma 5.37
Falls A ≤ B und B ist entscheidbar, so ist auch A entscheidbar.
Beweis:
Es gelte A ≤ B mittels f und χB sei berechenbar.
Dann ist χB ◦ f berechenbar und χA = χB ◦ f :
1, x ∈ A 1, f (x) ∈ B
χA (x) = = = χB (f (x))
0, x 6∈ A 0, f (x) 6∈ B
Korollar 5.38
Falls A ≤ B und A ist unentscheidbar, dann ist auch B
unentscheidbar.
Beispiel 5.39
Da K ≤ H (mit Reduktion f (w) := w#w) und K unentscheidbar
ist, ist auch H unentscheidbar.
264
Satz 5.40
Das Halteproblem auf leerem Band, H0 , ist unentscheidbar.
265
Satz 5.40
Das Halteproblem auf leerem Band, H0 , ist unentscheidbar.
Beweis:
Wir zeigen K ≤ H0 mit einer Funktion f : {0, 1}∗ → {0, 1}∗
f (w) ist die Kodierung folgender TM:
265
Satz 5.40
Das Halteproblem auf leerem Band, H0 , ist unentscheidbar.
Beweis:
Wir zeigen K ≤ H0 mit einer Funktion f : {0, 1}∗ → {0, 1}∗
f (w) ist die Kodierung folgender TM:
265
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.
267
5.3 Semi-Entscheidbarkeit
Definition 5.41
Eine Menge A (⊆ N oder Σ∗ ) heißt semi-entscheidbar (s-e) gdw
(
1 falls x ∈ A
χ0A (x) :=
⊥ falls x ∈/A
berechenbar ist.
267
Satz 5.42
Eine Menge A ist entscheidbar gdw sowohl A als auch A s-e sind.
268
Satz 5.42
Eine Menge A ist entscheidbar gdw sowohl A als auch A s-e sind.
Beweis:
⇒“: Wandle TM für χA in TM für χ0A und χ0A um:
”
χA’ ja ja
w χA nein
loop
χ’ ja
A
χA loop
w nein ja
268
Beweis (Forts.):
⇐“:
”
Wandle TM M1 für χ0A und TM M2 für χA
0 in TM für χ um:
A
input(x);
for s := 0, 1, 2, . . . do
if M1 [x] hält in s Schritten then output(1); halt fi ;
if M2 [x] hält in s Schritten then output(0); halt fi
269
Beweis (Forts.):
⇐“:
”
Wandle TM M1 für χ0A und TM M2 für χA
0 in TM für χ um:
A
input(x);
for s := 0, 1, 2, . . . do
if M1 [x] hält in s Schritten then output(1); halt fi ;
if M2 [x] hält in s Schritten then output(0); halt fi
269
Beweis (Forts.):
⇐“:
”
Wandle TM M1 für χ0A und TM M2 für χA
0 in TM für χ um:
A
input(x);
for s := 0, 1, 2, . . . do
if M1 [x] hält in s Schritten then output(1); halt fi ;
if M2 [x] hält in s Schritten then output(0); halt fi
Lemma 5.43
Ist A ≤ B und ist B s-e, so ist auch A s-e.
Beweis: Übung
269
Definition 5.44
Eine Menge A heißt rekursiv aufzählbar (recursively enumerable)
gdw A = ∅ oder es eine berechenbare totale Funktion f : N → A
gibt, so dass
A = {f (0), f (1), f (2), . . .}
270
Definition 5.44
Eine Menge A heißt rekursiv aufzählbar (recursively enumerable)
gdw A = ∅ oder es eine berechenbare totale Funktion f : N → A
gibt, so dass
A = {f (0), f (1), f (2), . . .}
Bemerkung:
Es dürfen Elemente doppelt auftreten (f (i) = f (j) für i 6= j)
Die Reihenfolge ist beliebig.
270
Definition 5.44
Eine Menge A heißt rekursiv aufzählbar (recursively enumerable)
gdw A = ∅ oder es eine berechenbare totale Funktion f : N → A
gibt, so dass
A = {f (0), f (1), f (2), . . .}
Bemerkung:
Es dürfen Elemente doppelt auftreten (f (i) = f (j) für i 6= j)
Die Reihenfolge ist beliebig.
270
Lemma 5.45
Eine Menge A ist rekursiv aufzählbar gdw sie semi-entscheidbar ist.
271
Lemma 5.45
Eine Menge A ist rekursiv aufzählbar gdw sie semi-entscheidbar ist.
Beweis:
Der Fall A = ∅ ist trivial. Sei A 6= ∅.
271
Lemma 5.45
Eine Menge A ist rekursiv aufzählbar gdw sie semi-entscheidbar ist.
Beweis:
Der Fall A = ∅ ist trivial. Sei A 6= ∅.
⇒“: Sei A rekursiv aufzählbar mit f . Dann ist A
”
semi-entscheidbar:
input(x);
for i := 0, 1, 2, . . . do
if f (i) = x then output(1); halt fi
271
Lemma 5.45
Eine Menge A ist rekursiv aufzählbar gdw sie semi-entscheidbar ist.
Beweis:
Der Fall A = ∅ ist trivial. Sei A 6= ∅.
⇒“: Sei A rekursiv aufzählbar mit f . Dann ist A
”
semi-entscheidbar:
input(x);
for i := 0, 1, 2, . . . do
if f (i) = x then output(1); halt fi
271
Beweis (Forts.):
Idee: Wir benutzen eine geeignete bijektion c : N × N ↔ N.
Seien p1 : N → N und p2 : N → N mit
input(n);
if P [p1 (n)] hält nach p2 (n) Schritten then output(p1 (n))
else output(d) fi
272
Beweis (Forts.):
Idee: Wir benutzen eine geeignete bijektion c : N × N ↔ N.
Seien p1 : N → N und p2 : N → N mit
input(n);
if P [p1 (n)] hält nach p2 (n) Schritten then output(p1 (n))
else output(d) fi
272
Beweis (Forts.):
Idee: Wir benutzen eine geeignete bijektion c : N × N ↔ N.
Seien p1 : N → N und p2 : N → N mit
input(n);
if P [p1 (n)] hält nach p2 (n) Schritten then output(p1 (n))
else output(d) fi
273
Folgende Aussagen sind äquivalent:
A ist semi-entscheidbar
A ist rekursiv aufzählbar
273
Folgende Aussagen sind äquivalent:
A ist semi-entscheidbar
A ist rekursiv aufzählbar
χ0A ist berechenbar
273
Folgende Aussagen sind äquivalent:
A ist semi-entscheidbar
A ist rekursiv aufzählbar
χ0A ist berechenbar
A = L(M ) für eine TM M
273
Folgende Aussagen sind äquivalent:
A ist semi-entscheidbar
A ist rekursiv aufzählbar
χ0A ist berechenbar
A = L(M ) für eine TM M
A ist Definitionsbereich einer berechenbaren Funktion
273
Folgende Aussagen sind äquivalent:
A ist semi-entscheidbar
A ist rekursiv aufzählbar
χ0A ist berechenbar
A = L(M ) für eine TM M
A ist Definitionsbereich einer berechenbaren Funktion
A ist Wertebereich einer berechenbaren Funktion
273
Satz 5.46
Die Menge K = {w | Mw [w]↓} ist semi-entscheidbar.
274
Satz 5.46
Die Menge K = {w | Mw [w]↓} ist semi-entscheidbar.
Beweis:
Die Funktion χ0K ist wie folgt Turing-berechenbar:
Bei Eingabe w simuliere die Ausführung von Mw [w];
gib 1 aus.
274
Satz 5.46
Die Menge K = {w | Mw [w]↓} ist semi-entscheidbar.
Beweis:
Die Funktion χ0K ist wie folgt Turing-berechenbar:
Bei Eingabe w simuliere die Ausführung von Mw [w];
gib 1 aus.
Korollar 5.47
K ist nicht semi-entscheidbar.
274
Satz 5.46
Die Menge K = {w | Mw [w]↓} ist semi-entscheidbar.
Beweis:
Die Funktion χ0K ist wie folgt Turing-berechenbar:
Bei Eingabe w simuliere die Ausführung von Mw [w];
gib 1 aus.
Korollar 5.47
K ist nicht semi-entscheidbar.
274
5.4 Die Sätze von Rice und Shapiro
Die von der TM Mw berechnete Funktion bezeichnen wir mit ϕw .
Wir betrachten implizit nur einstellige Funktionen.
275
5.4 Die Sätze von Rice und Shapiro
Die von der TM Mw berechnete Funktion bezeichnen wir mit ϕw .
Wir betrachten implizit nur einstellige Funktionen.
Satz 5.48 (Rice)
Sei F eine Menge berechenbarer Funktionen.
Es gelte weder F = ∅ noch F = alle ber. Funkt. ( F nicht trivial“)
”
Dann ist unentscheidbar, ob die von einer gegebenen TM Mw
berechnete Funktion Element F ist, dh ob ϕw ∈ F .
275
5.4 Die Sätze von Rice und Shapiro
Die von der TM Mw berechnete Funktion bezeichnen wir mit ϕw .
Wir betrachten implizit nur einstellige Funktionen.
Satz 5.48 (Rice)
Sei F eine Menge berechenbarer Funktionen.
Es gelte weder F = ∅ noch F = alle ber. Funkt. ( F nicht trivial“)
”
Dann ist unentscheidbar, ob die von einer gegebenen TM Mw
berechnete Funktion Element F ist, dh ob ϕw ∈ F .
Alle nicht-triviale semantische Eigenschaften von Programmen sind
unentscheidbar.
275
5.4 Die Sätze von Rice und Shapiro
Die von der TM Mw berechnete Funktion bezeichnen wir mit ϕw .
Wir betrachten implizit nur einstellige Funktionen.
Satz 5.48 (Rice)
Sei F eine Menge berechenbarer Funktionen.
Es gelte weder F = ∅ noch F = alle ber. Funkt. ( F nicht trivial“)
”
Dann ist unentscheidbar, ob die von einer gegebenen TM Mw
berechnete Funktion Element F ist, dh ob ϕw ∈ F .
Alle nicht-triviale semantische Eigenschaften von Programmen sind
unentscheidbar.
Beispiel 5.49
Es ist unentscheidbar, ob ein Programm
für mindestens eine Eingabe hält.
(F = {ϕw | ∃x. Mw [x]↓})
für alle Eingaben hält. (F = {ϕw | ∀x. Mw [x]↓})
bei Eingabe 42 Ausgabe 42 produziert.
275
Warnung
Es ist entscheidbar, ob ein Programm
länger als 5 Zeilen ist.
eine Zuweisung an die Variable x17 enhält.
276
Beweis:
Wir zeigen CF := {w ∈ {0, 1}∗ | ϕw ∈ F } ist unentscheidbar.
277
Beweis:
Wir zeigen CF := {w ∈ {0, 1}∗ | ϕw ∈ F } ist unentscheidbar.
Fall 1: Ω := (x 7→ ⊥) ∈
/ F.
Wähle h ∈ F 6= ∅ beliebig; sei u Kodierung einer TM mit ϕu = h.
277
Beweis:
Wir zeigen CF := {w ∈ {0, 1}∗ | ϕw ∈ F } ist unentscheidbar.
Fall 1: Ω := (x 7→ ⊥) ∈
/ F.
Wähle h ∈ F 6= ∅ beliebig; sei u Kodierung einer TM mit ϕu = h.
Reduziere K auf CF (K ≤ CF ) mit f : {0, 1}∗ → {0, 1}∗ und
f (w) die Kodierung folgender TM:
Speichere die Eingabe x auf einem getrennten Band;
schreibe w#w auf die Eingabe; führe die universelle TM
U auf w#w aus; führe Mu auf x aus.
277
Beweis:
Wir zeigen CF := {w ∈ {0, 1}∗ | ϕw ∈ F } ist unentscheidbar.
Fall 1: Ω := (x 7→ ⊥) ∈
/ F.
Wähle h ∈ F 6= ∅ beliebig; sei u Kodierung einer TM mit ϕu = h.
Reduziere K auf CF (K ≤ CF ) mit f : {0, 1}∗ → {0, 1}∗ und
f (w) die Kodierung folgender TM:
Speichere die Eingabe x auf einem getrennten Band;
schreibe w#w auf die Eingabe; führe die universelle TM
U auf w#w aus; führe Mu auf x aus.
(
h falls Mw [w]↓
Es gilt ϕf (w) = und damit
Ω sonst
(∗)
w ∈ K ⇔ Mw [w]↓ ⇔ ϕf (w) ∈ F ⇔ f (w) ∈ CF
277
Beweis:
Wir zeigen CF := {w ∈ {0, 1}∗ | ϕw ∈ F } ist unentscheidbar.
Fall 1: Ω := (x 7→ ⊥) ∈
/ F.
Wähle h ∈ F 6= ∅ beliebig; sei u Kodierung einer TM mit ϕu = h.
Reduziere K auf CF (K ≤ CF ) mit f : {0, 1}∗ → {0, 1}∗ und
f (w) die Kodierung folgender TM:
Speichere die Eingabe x auf einem getrennten Band;
schreibe w#w auf die Eingabe; führe die universelle TM
U auf w#w aus; führe Mu auf x aus.
(
h falls Mw [w]↓
Es gilt ϕf (w) = und damit
Ω sonst
(∗)
w ∈ K ⇔ Mw [w]↓ ⇔ ϕf (w) ∈ F ⇔ f (w) ∈ CF
(
Mw [w]↓ ⇒ ϕf (w) = h ∈ F
(∗) :
ϕf (w) ∈ F ⇒ ϕf (w) = h ⇒ Mw [w]↓
277
Beweis (Forts.):
Fall 2: Ω ∈ F .
Wähle berechenbares h ∈
/ F.
Zeige analog, dass K ≤ CF .
278
Satz 5.50 (Rice-Shapiro)
Sei F eine Menge berechenbarer Funktionen.
Ist CF := {w | ϕw ∈ F } semi-entscheidbar,
so gilt für alle berechenbaren f :
f ∈ F ⇔ es gibt eine endliche Teilfunktion g ⊆ f mit g ∈ F .
279
Satz 5.50 (Rice-Shapiro)
Sei F eine Menge berechenbarer Funktionen.
Ist CF := {w | ϕw ∈ F } semi-entscheidbar,
so gilt für alle berechenbaren f :
f ∈ F ⇔ es gibt eine endliche Teilfunktion g ⊆ f mit g ∈ F .
Beweis:
⇒“ mit Widerspruch.
”
Sei f ∈ F , so dass für alle endlichen g ⊆ f gilt g ∈
/ F.
Wir zeigen K ≤ CF womit CF nicht semi-entscheidbar ist.
279
Beweis (Forts.):
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
280
Beweis (Forts.):
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t simuliere t Schritte von Mw [w].
Hält diese Berechnung in ≤ t Schritten, gehe in eine endlos Schleife,
sonst berechne f (t).
280
Beweis (Forts.):
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t simuliere t Schritte von Mw [w].
Hält diese Berechnung in ≤ t Schritten, gehe in eine endlos Schleife,
sonst berechne f (t).
Wir zeigen
w ∈ K ⇔ h(w) ∈ CF
280
Beweis (Forts.):
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t simuliere t Schritte von Mw [w].
Hält diese Berechnung in ≤ t Schritten, gehe in eine endlos Schleife,
sonst berechne f (t).
Wir zeigen
w ∈ K ⇔ h(w) ∈ CF
280
Beweis (Forts.):
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t simuliere t Schritte von Mw [w].
Hält diese Berechnung in ≤ t Schritten, gehe in eine endlos Schleife,
sonst berechne f (t).
Wir zeigen
w ∈ K ⇔ h(w) ∈ CF
280
Beweis (Forts.):
⇐“ mit Widerspruch.
”
281
Beweis (Forts.):
⇐“ mit Widerspruch.
”
Sei f berechenbar, sei g ⊆ f endlich mit g ∈ F , aber sei f ∈
/ F.
Wir zeigen K ≤ CF womit CF nicht semi-entscheidbar ist.
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
281
Beweis (Forts.):
⇐“ mit Widerspruch.
”
Sei f berechenbar, sei g ⊆ f endlich mit g ∈ F , aber sei f ∈
/ F.
Wir zeigen K ≤ CF womit CF nicht semi-entscheidbar ist.
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t, teste ob t im endlichen Def. ber. von g ist.
Wenn ja, berechne f (t),
sonst simuliere Mw [w] und berechne dann f (t).
281
Beweis (Forts.):
⇐“ mit Widerspruch.
”
Sei f berechenbar, sei g ⊆ f endlich mit g ∈ F , aber sei f ∈
/ F.
Wir zeigen K ≤ CF womit CF nicht semi-entscheidbar ist.
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t, teste ob t im endlichen Def. ber. von g ist.
Wenn ja, berechne f (t),
sonst simuliere Mw [w] und berechne dann f (t).
Wir zeigen
w ∈ K ⇔ h(w) ∈ CF
281
Beweis (Forts.):
⇐“ mit Widerspruch.
”
Sei f berechenbar, sei g ⊆ f endlich mit g ∈ F , aber sei f ∈
/ F.
Wir zeigen K ≤ CF womit CF nicht semi-entscheidbar ist.
Reduktion K ≤ CF mit h : {0, 1}∗ → {0, 1}∗ :
h(w) ist die Kodierung folgender TM:
Bei Eingabe t, teste ob t im endlichen Def. ber. von g ist.
Wenn ja, berechne f (t),
sonst simuliere Mw [w] und berechne dann f (t).
Wir zeigen
w ∈ K ⇔ h(w) ∈ CF
281
Rice-Shapiro (in Kurzform): CF := {w | ϕw ∈ F } s-e =⇒
f ∈ F ⇔ es gibt endliche Funkt. g ⊆ f mit g ∈ F .
282
Rice-Shapiro (in Kurzform): CF := {w | ϕw ∈ F } s-e =⇒
f ∈ F ⇔ es gibt endliche Funkt. g ⊆ f mit g ∈ F .
Ein Programm heißt terminierend gdw es für alle Eingaben hält.
Korollar 5.51
Die Menge der terminierenden Programme ist nicht
semi-entscheidbar.
Die Menge der nicht-terminierenden Programme ist nicht
semi-entscheidbar.
282
Rice-Shapiro (in Kurzform): CF := {w | ϕw ∈ F } s-e =⇒
f ∈ F ⇔ es gibt endliche Funkt. g ⊆ f mit g ∈ F .
Ein Programm heißt terminierend gdw es für alle Eingaben hält.
Korollar 5.51
Die Menge der terminierenden Programme ist nicht
semi-entscheidbar.
Die Menge der nicht-terminierenden Programme ist nicht
semi-entscheidbar.
Beweis:
F := Menge aller berechenbaren totalen Funktionen.
Sei f ∈ F . Jede endliche g ⊆ f ist echt partiell, dh g ∈
/ F.
Also kann CF nicht semi-entscheidbar sein.
282
Rice-Shapiro (in Kurzform): CF := {w | ϕw ∈ F } s-e =⇒
f ∈ F ⇔ es gibt endliche Funkt. g ⊆ f mit g ∈ F .
Ein Programm heißt terminierend gdw es für alle Eingaben hält.
Korollar 5.51
Die Menge der terminierenden Programme ist nicht
semi-entscheidbar.
Die Menge der nicht-terminierenden Programme ist nicht
semi-entscheidbar.
Beweis:
F := Menge aller berechenbaren totalen Funktionen.
Sei f ∈ F . Jede endliche g ⊆ f ist echt partiell, dh g ∈
/ F.
Also kann CF nicht semi-entscheidbar sein.
F := Menge aller berechenbaren nicht-totalen Funktionen.
Sei f total und berechenbar. Damit f ∈
/ F.
Aber jede endliche g ⊆ f ist in F .
Also kann CF nicht semi-entscheidbar sein.
282
Grenzen automatischer Terminationsanalyse von Programmen
283
Grenzen automatischer Terminationsanalyse von Programmen
283
Grenzen automatischer Terminationsanalyse von Programmen
283
Grenzen automatischer Terminationsanalyse von Programmen
283
Grenzen automatischer Terminationsanalyse von Programmen
283
5.5 Das Postsche Korrespondenzproblem
Gegeben beliebig viele Kopien der 3 Spielkarten“
”
001 10 0
00 11 010
284
5.5 Das Postsche Korrespondenzproblem
Gegeben beliebig viele Kopien der 3 Spielkarten“
”
001 10 0
00 11 010
... ...
···
... ...
284
5.5 Das Postsche Korrespondenzproblem
Gegeben beliebig viele Kopien der 3 Spielkarten“
”
001 10 0
00 11 010
... ...
···
... ...
001 10 001 0
00 11 00 010
Kurz: 1,2,1,3.
284
Definition 5.52 (Postsche Korrespondenzproblem, Post’s
Correspondence Problem, PCP)
Gegeben: Eine endliche Folge (x1 , y1 ), . . . , (xk , yk ), wobei
xi , yi ∈ Σ+ .
Problem: Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k},
n > 0, mit xi1 . . . xin = yi1 . . . yin ?
Dann nennen wir i1 , . . . , in eine Lösung des Problems
(x1 , y1 ), . . . , (xk , yk ).
285
Definition 5.52 (Postsche Korrespondenzproblem, Post’s
Correspondence Problem, PCP)
Gegeben: Eine endliche Folge (x1 , y1 ), . . . , (xk , yk ), wobei
xi , yi ∈ Σ+ .
Problem: Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k},
n > 0, mit xi1 . . . xin = yi1 . . . yin ?
Dann nennen wir i1 , . . . , in eine Lösung des Problems
(x1 , y1 ), . . . , (xk , yk ).
Beispiel 5.53
Hat (1, 111), (10111, 10), (10, 0) eine Lösung? 2,1,1,3
285
Definition 5.52 (Postsche Korrespondenzproblem, Post’s
Correspondence Problem, PCP)
Gegeben: Eine endliche Folge (x1 , y1 ), . . . , (xk , yk ), wobei
xi , yi ∈ Σ+ .
Problem: Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k},
n > 0, mit xi1 . . . xin = yi1 . . . yin ?
Dann nennen wir i1 , . . . , in eine Lösung des Problems
(x1 , y1 ), . . . , (xk , yk ).
Beispiel 5.53
Hat (1, 111), (10111, 10), (10, 0) eine Lösung? 2,1,1,3
Hat (b, ca), (a, ab), (ca, a), (abc, c) eine Lösung? 2,1,3,2,4
285
Definition 5.52 (Postsche Korrespondenzproblem, Post’s
Correspondence Problem, PCP)
Gegeben: Eine endliche Folge (x1 , y1 ), . . . , (xk , yk ), wobei
xi , yi ∈ Σ+ .
Problem: Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k},
n > 0, mit xi1 . . . xin = yi1 . . . yin ?
Dann nennen wir i1 , . . . , in eine Lösung des Problems
(x1 , y1 ), . . . , (xk , yk ).
Beispiel 5.53
Hat (1, 111), (10111, 10), (10, 0) eine Lösung? 2,1,1,3
Hat (b, ca), (a, ab), (ca, a), (abc, c) eine Lösung? 2,1,3,2,4
Hat (101, 01), (101, 010), (010, 10) eine Lösung? Nein!
285
Definition 5.52 (Postsche Korrespondenzproblem, Post’s
Correspondence Problem, PCP)
Gegeben: Eine endliche Folge (x1 , y1 ), . . . , (xk , yk ), wobei
xi , yi ∈ Σ+ .
Problem: Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k},
n > 0, mit xi1 . . . xin = yi1 . . . yin ?
Dann nennen wir i1 , . . . , in eine Lösung des Problems
(x1 , y1 ), . . . , (xk , yk ).
Beispiel 5.53
Hat (1, 111), (10111, 10), (10, 0) eine Lösung? 2,1,1,3
Hat (b, ca), (a, ab), (ca, a), (abc, c) eine Lösung? 2,1,3,2,4
Hat (101, 01), (101, 010), (010, 10) eine Lösung? Nein!
Hat (10, 101), (011, 11), (101, 011) eine Lösung? [HMU]
285
Definition 5.52 (Postsche Korrespondenzproblem, Post’s
Correspondence Problem, PCP)
Gegeben: Eine endliche Folge (x1 , y1 ), . . . , (xk , yk ), wobei
xi , yi ∈ Σ+ .
Problem: Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k},
n > 0, mit xi1 . . . xin = yi1 . . . yin ?
Dann nennen wir i1 , . . . , in eine Lösung des Problems
(x1 , y1 ), . . . , (xk , yk ).
Beispiel 5.53
Hat (1, 111), (10111, 10), (10, 0) eine Lösung? 2,1,1,3
Hat (b, ca), (a, ab), (ca, a), (abc, c) eine Lösung? 2,1,3,2,4
Hat (101, 01), (101, 010), (010, 10) eine Lösung? Nein!
Hat (10, 101), (011, 11), (101, 011) eine Lösung? [HMU]
Hat (1000, 10), (1, 0011), (0, 111), (11, 0) eine Lösung?
Ja, mit Länge 495.
285
Emil Post.
A Variant of a Recursively Unsolvable Problem.
Bulletin American Mathematical Society, 1946.
286
Lemma 5.54
Das PCP ist semi-entscheidbar.
287
Lemma 5.54
Das PCP ist semi-entscheidbar.
Beweis:
Zähle die möglichen Lösungen der Länge nach auf, und probiere
jeweils, ob es eine wirkliche Lösung ist.
287
Lemma 5.54
Das PCP ist semi-entscheidbar.
Beweis:
Zähle die möglichen Lösungen der Länge nach auf, und probiere
jeweils, ob es eine wirkliche Lösung ist.
287
Satz 5.56
M P CP ≤ P CP
Beweis:
Für w = a1 . . . an :
288
Satz 5.57
H ≤ M P CP
Beweis:
(#, #q0 u#)
(a, a) für alle a ∈ Γ ∪ {#}
(qa, q 0 a0 ) falls δ(q, a) = (q 0 , a0 , N )
(qa, a0 q 0 ) falls δ(q, a) = (q 0 , a0 , R)
(bqa, q ba ) falls δ(q, a) = (q 0 , a0 , L), für alle b ∈ Γ
0 0
289
Aus H ≤ P CP folgt direkt
Korollar 5.58
Das PCP ist unentscheidbar.
290
Aus H ≤ P CP folgt direkt
Korollar 5.58
Das PCP ist unentscheidbar.
Korollar 5.59
Das PCP ist auch für Σ = {0, 1} unentscheidbar
Beweis:
Wir nennen dies das 01-PCP und zeigen PCP ≤ 01-PCP.
Sei Σ = {a1 , . . . , am } das Alphabet des gegebenen PCPs.
290
Aus H ≤ P CP folgt direkt
Korollar 5.58
Das PCP ist unentscheidbar.
Korollar 5.59
Das PCP ist auch für Σ = {0, 1} unentscheidbar
Beweis:
Wir nennen dies das 01-PCP und zeigen PCP ≤ 01-PCP.
Sei Σ = {a1 , . . . , am } das Alphabet des gegebenen PCPs.
abj := 01j
Abbildung auf ein 01-PCP:
aj1\
. . . ajn := acj1 . . . ac
jn
290
Aus H ≤ P CP folgt direkt
Korollar 5.58
Das PCP ist unentscheidbar.
Korollar 5.59
Das PCP ist auch für Σ = {0, 1} unentscheidbar
Beweis:
Wir nennen dies das 01-PCP und zeigen PCP ≤ 01-PCP.
Sei Σ = {a1 , . . . , am } das Alphabet des gegebenen PCPs.
abj := 01j
Abbildung auf ein 01-PCP:
aj1\
. . . ajn := acj1 . . . ac
jn
Dann hat (x1 , y1 ), . . . , (xk , yk ) eine Lösung gdw
(c
x1 , yb1 ), . . . , (c
xk , ybk ) eine Lösung hat.
⇒“ klar, ⇐“ folgt da ˆ· : Σ∗ → {0, 1}∗ injektive ist:
” ”
xc
i1 . . . x
c in = y
ci1 . . . yc
in =⇒
xi1\. . . xin = yi1\ . . . yin =⇒ xi1 . . . xin = yi1 . . . yin
290
Bemerkungen
Das PCP ist entscheidbar falls |Σ| = 1
291
Bemerkungen
Das PCP ist entscheidbar falls |Σ| = 1
Das PCP ist entscheidbar falls k ≤ 2.
291
Bemerkungen
Das PCP ist entscheidbar falls |Σ| = 1
Das PCP ist entscheidbar falls k ≤ 2.
Das PCP ist unentscheidbar falls k ≥ 7.
291
Bemerkungen
Das PCP ist entscheidbar falls |Σ| = 1
Das PCP ist entscheidbar falls k ≤ 2.
Das PCP ist unentscheidbar falls k ≥ 7.
Für k = 3, . . . , 6 ist noch offen, ob das PCP unentscheidbar
ist.
291
5.6 Unentscheidbare CFG-Probleme
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅,
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅,
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
Satz 5.60
Für CFGs G1 , G2 sind folgende Probleme unentscheidbar:
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
Satz 5.60
Für CFGs G1 , G2 sind folgende Probleme unentscheidbar:
1 Ist L(G1 ) ∩ L(G2 ) = ∅?
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
Satz 5.60
Für CFGs G1 , G2 sind folgende Probleme unentscheidbar:
1 Ist L(G1 ) ∩ L(G2 ) = ∅?
2 Ist |L(G1 ) ∩ L(G2 )| = ∞ ?
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
Satz 5.60
Für CFGs G1 , G2 sind folgende Probleme unentscheidbar:
1 Ist L(G1 ) ∩ L(G2 ) = ∅?
2 Ist |L(G1 ) ∩ L(G2 )| = ∞ ?
3 Ist L(G1 ) ∩ L(G2 ) kontextfrei?
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
Satz 5.60
Für CFGs G1 , G2 sind folgende Probleme unentscheidbar:
1 Ist L(G1 ) ∩ L(G2 ) = ∅?
2 Ist |L(G1 ) ∩ L(G2 )| = ∞ ?
3 Ist L(G1 ) ∩ L(G2 ) kontextfrei?
4 Ist L(G1 ) ⊆ L(G2 )?
292
5.6 Unentscheidbare CFG-Probleme
Für DFAs ist fast alles entscheidbar:
L(A) = ∅, L(A) = L(B), . . .
Für TMs ist fast nichts entscheidbar:
L(M ) = ∅, L(M1 ) = L(M2 ), . . .
Für CFGs ist manches entscheidbar (L(G) = ∅),
und manches unentscheidbar: L(G1 ) = L(G2 ), . . .
Satz 5.60
Für CFGs G1 , G2 sind folgende Probleme unentscheidbar:
1 Ist L(G1 ) ∩ L(G2 ) = ∅?
2 Ist |L(G1 ) ∩ L(G2 )| = ∞ ?
3 Ist L(G1 ) ∩ L(G2 ) kontextfrei?
4 Ist L(G1 ) ⊆ L(G2 )?
5 Ist L(G1 ) = L(G2 )?
292
Beweis:
K = (x1 , y1 ), . . . , (xk , yk ) wird abgebildet auf G1
S → A$B
A → a1 Ax1 | · · · | ak Axk
A → a1 x1 | · · · | ak xk
B → y1R Ba1 | · · · | ykR Bak
B → y1R a1 | · · · | ykR ak
und G2 :
S → a1 Sa1 | · · · | ak Sak | T
T → 0T 0 | 1T 1 | $
293
Beweis (Forts.):
294
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig:
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch:
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗ ⇒ L(G4 ) reg/det.
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗ ⇒ L(G4 ) reg/det.
P CP lösbar
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗ ⇒ L(G4 ) reg/det.
P CP lösbar ⇒ L(G1 ) ∩ L(G2 ) nicht CFL
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗ ⇒ L(G4 ) reg/det.
P CP lösbar ⇒ L(G1 ) ∩ L(G2 ) nicht CFL ⇒ L(G4 ) nicht reg/det
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗ ⇒ L(G4 ) reg/det.
P CP lösbar ⇒ L(G1 ) ∩ L(G2 ) nicht CFL ⇒ L(G4 ) nicht reg/det
⇒ L(G4 ) nicht reg/det.
295
Satz 5.61
Für eine CFG G sind folgende Probleme unentscheidbar:
1 Ist G mehrdeutig?
2 Ist L(G) regulär?
3 Ist L(G) deterministisch (DCFL)?
Beweis:
1. G mehrdeutig: Sei G3 := G1 ∪ G2“.
”
P CP lösbar ⇔ L(G1 ) ∩ L(G2 ) 6= ∅ ⇔ L(G3 ) ist mehrdeutig
⇒“: Syntaxbäume von G1 und G2 disjunkt
”
⇐“: G1 und G2 sind DCFG und damit nicht mehrdeutig
”
Damit ist P CP 7→ G3 Reduktion für P CP ≤ Mehrdeutigkeit.
2/3. L(G) regulär/deterministisch: Sei G4 := G1 ∪ G2“.
”
P CP unlösbar ⇒ L(G1 ) ∩ L(G2 ) = ∅ ⇒ L(G4 ) = Σ∗ ⇒ L(G4 ) reg/det.
P CP lösbar ⇒ L(G1 ) ∩ L(G2 ) nicht CFL ⇒ L(G4 ) nicht reg/det
⇒ L(G4 ) nicht reg/det.
Damit ist P CP 7→ G4 Reduktion für P CP ≤ L(G) reg/det.
295
Satz 5.62
Für eine CFG G und einen RE α ist L(G) = L(α) unentscheidbar.
296
Satz 5.62
Für eine CFG G und einen RE α ist L(G) = L(α) unentscheidbar.
Beweis:
Im Beweis des vorherigen Satzes hatten wir eine Reduktion
P CP 7→ G4 mit
P CP unlösbar ⇔ L(G4 ) = Σ∗ .
296
Satz 5.62
Für eine CFG G und einen RE α ist L(G) = L(α) unentscheidbar.
Beweis:
Im Beweis des vorherigen Satzes hatten wir eine Reduktion
P CP 7→ G4 mit
P CP unlösbar ⇔ L(G4 ) = Σ∗ .
Sei Σ = {a1 , . . . , an }.
296
Satz 5.62
Für eine CFG G und einen RE α ist L(G) = L(α) unentscheidbar.
Beweis:
Im Beweis des vorherigen Satzes hatten wir eine Reduktion
P CP 7→ G4 mit
P CP unlösbar ⇔ L(G4 ) = Σ∗ .
296
6. Komplexitätstheorie
297
6. Komplexitätstheorie
297
6. Komplexitätstheorie
297
6. Komplexitätstheorie
297
6. Komplexitätstheorie
297
6. Komplexitätstheorie
297
6. Komplexitätstheorie
297
Polynomielle und exponentielle Komplexität
Taktfrequenz: 1GHz
Problemgröße n
Zeit 10 20 30 40 50 60
n .01 µs .02 µs .03 µs .04 µs .05 µs .06 µs
n2 .1 µs .4 µs .9 µs 1.6 µs 2.5 µs 3.6 µs
n5 100 µs .003 s .02 s .1 s .3 s .7 s
2n 1 µs .001 s 1s 18 m 13 T 36 J
3n 59 µs 3 s 2T 385 J 2 · 107 J 1012 J
µs=Mikrosek., s=Sek., m=Minute, T=Tag, J=Jahr
298
Polynomielle und exponentielle Komplexität
Taktfrequenz: 1GHz
Problemgröße n
Zeit 10 20 30 40 50 60
n .01 µs .02 µs .03 µs .04 µs .05 µs .06 µs
n2 .1 µs .4 µs .9 µs 1.6 µs 2.5 µs 3.6 µs
n5 100 µs .003 s .02 s .1 s .3 s .7 s
2n 1 µs .001 s 1s 18 m 13 T 36 J
3n 59 µs 3 s 2T 385 J 2 · 107 J 1012 J
µs=Mikrosek., s=Sek., m=Minute, T=Tag, J=Jahr
298
Zwei zentrale Komplexitätsklassen:
299
Zwei zentrale Komplexitätsklassen:
299
Zwei zentrale Komplexitätsklassen:
Zentrale Frage:
¿ P = NP ?
299
Zwei zentrale Komplexitätsklassen:
Zentrale Frage:
¿ P = NP ?
Ist wichtig
299
Zwei zentrale Komplexitätsklassen:
Zentrale Frage:
¿ P = NP ?
Ist wichtig
weil viele praktisch relevante Such- und Optimierungsprobleme
in NP liegen
und alle schnell lösbar wären wenn P = NP.
299
Überblick:
1 Die Komplexitätsklassen P und NP
300
Überblick:
1 Die Komplexitätsklassen P und NP
2 NP-Vollständigkeit
300
Überblick:
1 Die Komplexitätsklassen P und NP
2 NP-Vollständigkeit
3 SAT: Ein NP-vollständiges Problem
300
Überblick:
1 Die Komplexitätsklassen P und NP
2 NP-Vollständigkeit
3 SAT: Ein NP-vollständiges Problem
4 Weitere NP-vollständige Probleme
300
6.1 Die Komplexitätsklasse P
Berechnungsmodelle:
DTM = deterministische Mehrband-TM
NTM = nichtdeterministische Mehrband-TM
301
6.1 Die Komplexitätsklasse P
Berechnungsmodelle:
DTM = deterministische Mehrband-TM
NTM = nichtdeterministische Mehrband-TM
Definition 6.1
timeM (w) := Anzahl der Schritte bis die DTM M [w] hält
∈ N ∪ {∞}
301
6.1 Die Komplexitätsklasse P
Berechnungsmodelle:
DTM = deterministische Mehrband-TM
NTM = nichtdeterministische Mehrband-TM
Definition 6.1
timeM (w) := Anzahl der Schritte bis die DTM M [w] hält
∈ N ∪ {∞}
Sei f : N → N eine totale Funktion.
Die Klasse der in Zeit f (n) entscheidbaren Sprachen:
301
6.1 Die Komplexitätsklasse P
Berechnungsmodelle:
DTM = deterministische Mehrband-TM
NTM = nichtdeterministische Mehrband-TM
Definition 6.1
timeM (w) := Anzahl der Schritte bis die DTM M [w] hält
∈ N ∪ {∞}
Sei f : N → N eine totale Funktion.
Die Klasse der in Zeit f (n) entscheidbaren Sprachen:
p(n) = ak nk + · · · + a1 n + a0
302
Wir betrachten Polynome mit Koeffizienten ak , . . . a0 ∈ N:
p(n) = ak nk + · · · + a1 n + a0
Definition 6.2
[
P := TIME(p(n))
p P olynom
302
Wir betrachten Polynome mit Koeffizienten ak , . . . a0 ∈ N:
p(n) = ak nk + · · · + a1 n + a0
Definition 6.2
[
P := TIME(p(n))
p P olynom
wobei [
TIME(O(f )) := TIME(g)
g∈O(f )
302
Beispiel 6.3
{wwR | w ∈ Σ∗ } ∈ TIME(O(n2 )) ⊆ P
303
Beispiel 6.3
{wwR | w ∈ Σ∗ } ∈ TIME(O(n2 )) ⊆ P
{(G, w) | G ist CFG ∧ w ∈ L(G)} ∈ P
303
Beispiel 6.3
{wwR | w ∈ Σ∗ } ∈ TIME(O(n2 )) ⊆ P
{(G, w) | G ist CFG ∧ w ∈ L(G)} ∈ P
{(G, w) | G ist Graph ∧ w ist Pfad in G} ∈ P
303
Beispiel 6.3
{wwR | w ∈ Σ∗ } ∈ TIME(O(n2 )) ⊆ P
{(G, w) | G ist CFG ∧ w ∈ L(G)} ∈ P
{(G, w) | G ist Graph ∧ w ist Pfad in G} ∈ P
{bin(p) | p Primzahl} ∈ P
303
Beispiel 6.3
{wwR | w ∈ Σ∗ } ∈ TIME(O(n2 )) ⊆ P
{(G, w) | G ist CFG ∧ w ∈ L(G)} ∈ P
{(G, w) | G ist Graph ∧ w ist Pfad in G} ∈ P
{bin(p) | p Primzahl} ∈ P
Beweis durch Angabe eines Algorithmus mit Komplexität O(nk ).
303
Beispiel 6.3
{wwR | w ∈ Σ∗ } ∈ TIME(O(n2 )) ⊆ P
{(G, w) | G ist CFG ∧ w ∈ L(G)} ∈ P
{(G, w) | G ist Graph ∧ w ist Pfad in G} ∈ P
{bin(p) | p Primzahl} ∈ P
Beweis durch Angabe eines Algorithmus mit Komplexität O(nk ).
Bemerkungen
O(n log n) ⊂ O(n2 )
nlog n , 2n ∈
/ O(nk ) für alle k
Beweis A ∈
/ P meist schwierig
303
Warum P und nicht (zB) O(n17 )?
304
Warum P und nicht (zB) O(n17 )?
304
Warum P und nicht (zB) O(n17 )?
Warum TM?
304
Warum P und nicht (zB) O(n17 )?
304
Warum P und nicht (zB) O(n17 )?
304
Warum P und nicht (zB) O(n17 )?
304
6.2 Die Komplexitätsklasse NP
In Worten:
NP ist die Klasse der Sprachen, die von einer NTM in
polynomieller Zeit akzeptiert werden.
305
6.2 Die Komplexitätsklasse NP
In Worten:
NP ist die Klasse der Sprachen, die von einer NTM in
polynomieller Zeit akzeptiert werden.
Dh: Eine Sprache A liegt in NP gdw
es ein Polynom p(n) und eine NTM M gibt, so dass
1 L(M ) = A und
305
Definition 6.4
minimale Anzahl der Schritte
falls w ∈ L(M )
ntimeM (w) := bis NTM M [w] akzeptiert
0 falls w ∈
/ L(M )
306
Definition 6.4
minimale Anzahl der Schritte
falls w ∈ L(M )
ntimeM (w) := bis NTM M [w] akzeptiert
0 falls w ∈
/ L(M )
306
Definition 6.4
minimale Anzahl der Schritte
falls w ∈ L(M )
ntimeM (w) := bis NTM M [w] akzeptiert
0 falls w ∈
/ L(M )
Bemerkungen:
P ⊆ NP
Seit etwa 1970 ist offen ob P = NP.
306
Bemerkungen zur Definition von NP:
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
Äquivalente Definition NP’ von NP: Die NTM M [w] muss nach
maximal p(|w|) Schritten halten.
NP’ ⊆ NP: Klar.
NP ⊆ NP’: Falls A ∈ NP mit Polynom p und NTM M ,
so kann man NTM M 0 konstruieren mit L(M 0 ) = A,
so dass M 0 [w] immer innerhalb von polynomieller Zeit hält.
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
Äquivalente Definition NP’ von NP: Die NTM M [w] muss nach
maximal p(|w|) Schritten halten.
NP’ ⊆ NP: Klar.
NP ⊆ NP’: Falls A ∈ NP mit Polynom p und NTM M ,
so kann man NTM M 0 konstruieren mit L(M 0 ) = A,
so dass M 0 [w] immer innerhalb von polynomieller Zeit hält.
1 Eingabe w
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
Äquivalente Definition NP’ von NP: Die NTM M [w] muss nach
maximal p(|w|) Schritten halten.
NP’ ⊆ NP: Klar.
NP ⊆ NP’: Falls A ∈ NP mit Polynom p und NTM M ,
so kann man NTM M 0 konstruieren mit L(M 0 ) = A,
so dass M 0 [w] immer innerhalb von polynomieller Zeit hält.
1 Eingabe w
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
Äquivalente Definition NP’ von NP: Die NTM M [w] muss nach
maximal p(|w|) Schritten halten.
NP’ ⊆ NP: Klar.
NP ⊆ NP’: Falls A ∈ NP mit Polynom p und NTM M ,
so kann man NTM M 0 konstruieren mit L(M 0 ) = A,
so dass M 0 [w] immer innerhalb von polynomieller Zeit hält.
1 Eingabe w
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
Äquivalente Definition NP’ von NP: Die NTM M [w] muss nach
maximal p(|w|) Schritten halten.
NP’ ⊆ NP: Klar.
NP ⊆ NP’: Falls A ∈ NP mit Polynom p und NTM M ,
so kann man NTM M 0 konstruieren mit L(M 0 ) = A,
so dass M 0 [w] immer innerhalb von polynomieller Zeit hält.
1 Eingabe w
307
Bemerkungen zur Definition von NP:
Akzeptierende NTM M
braucht für w ∈
/ L(M ) nicht zu halten.
kann für w ∈ L(M ) auch beliebig lange Berechnunsgfolgen
haben.
Äquivalente Definition NP’ von NP: Die NTM M [w] muss nach
maximal p(|w|) Schritten halten.
NP’ ⊆ NP: Klar.
NP ⊆ NP’: Falls A ∈ NP mit Polynom p und NTM M ,
so kann man NTM M 0 konstruieren mit L(M 0 ) = A,
so dass M 0 [w] immer innerhalb von polynomieller Zeit hält.
1 Eingabe w
nicht-Endzustand ( timeout“)
”
307
Beispiel 6.5
Ein Euler-Kreis ist ein geschlossener Pfad in einem
(ungerichteten) Graphen, der jede Kante genau einmal
enthält.
Ein Graph hat einen Euler-Kreis gdw er zusammenhängend
ist, und jeder Knoten geraden Grad hat. Beide Eigenschaften
sind in polynomieller Zeit von einer DTM überprüfbar.
=⇒ {G | G hat Euler-Kreis} ∈ P
308
Beispiel 6.6
Ein Hamilton-Kreis ist ein geschlossener Pfad in einem
(ungerichteten) Graphen, der jeden Knoten genau einmal
enthält.
309
Beispiel 6.6
Ein Hamilton-Kreis ist ein geschlossener Pfad in einem
(ungerichteten) Graphen, der jeden Knoten genau einmal
enthält.
HAMILTON := {G | G hat Hamilton-Kreis} ∈ NP
mit folgendem Algorithmus der Art Rate und prüfe“:
”
1 Rate eine Permutation der Knoten des Graphen.
309
Beispiel 6.6
Ein Hamilton-Kreis ist ein geschlossener Pfad in einem
(ungerichteten) Graphen, der jeden Knoten genau einmal
enthält.
HAMILTON := {G | G hat Hamilton-Kreis} ∈ NP
mit folgendem Algorithmus der Art Rate und prüfe“:
”
1 Rate eine Permutation der Knoten des Graphen.
309
Beispiel 6.6
Ein Hamilton-Kreis ist ein geschlossener Pfad in einem
(ungerichteten) Graphen, der jeden Knoten genau einmal
enthält.
HAMILTON := {G | G hat Hamilton-Kreis} ∈ NP
mit folgendem Algorithmus der Art Rate und prüfe“:
”
1 Rate eine Permutation der Knoten des Graphen.
309
Viele Probleme sind von der Art dass
schwer ist, zu entscheiden, ob sie lösbar sind,
leicht ist, zu entscheiden, ob eine Lösungsvorschlag eine
Lösung ist.
310
Viele Probleme sind von der Art dass
schwer ist, zu entscheiden, ob sie lösbar sind,
leicht ist, zu entscheiden, ob eine Lösungsvorschlag eine
Lösung ist.
Definition 6.7
Sei M eine DTM mit L(M ) ⊆ {w#c | w ∈ Σ∗ , c ∈ ∆∗ }.
Falls w#c ∈ L(M ), so heißt c Zertifikat für w.
M ist ein polynomiell beschränkter Verifikator für die Sprache
{w ∈ Σ∗ | ∃c ∈ ∆∗ . w#c ∈ L(M )}
falls es ein Polynom p gibt, so dass timeM (w#c) ≤ p(|w|).
310
Viele Probleme sind von der Art dass
schwer ist, zu entscheiden, ob sie lösbar sind,
leicht ist, zu entscheiden, ob eine Lösungsvorschlag eine
Lösung ist.
Definition 6.7
Sei M eine DTM mit L(M ) ⊆ {w#c | w ∈ Σ∗ , c ∈ ∆∗ }.
Falls w#c ∈ L(M ), so heißt c Zertifikat für w.
M ist ein polynomiell beschränkter Verifikator für die Sprache
{w ∈ Σ∗ | ∃c ∈ ∆∗ . w#c ∈ L(M )}
falls es ein Polynom p gibt, so dass timeM (w#c) ≤ p(|w|).
NB: In Zeit p(n) kann M maximal die ersten p(n) Zeichen von c
lesen. Daher genügt für w ein Zertifikat der Länge ≤ p(|w|).
310
Viele Probleme sind von der Art dass
schwer ist, zu entscheiden, ob sie lösbar sind,
leicht ist, zu entscheiden, ob eine Lösungsvorschlag eine
Lösung ist.
Definition 6.7
Sei M eine DTM mit L(M ) ⊆ {w#c | w ∈ Σ∗ , c ∈ ∆∗ }.
Falls w#c ∈ L(M ), so heißt c Zertifikat für w.
M ist ein polynomiell beschränkter Verifikator für die Sprache
{w ∈ Σ∗ | ∃c ∈ ∆∗ . w#c ∈ L(M )}
falls es ein Polynom p gibt, so dass timeM (w#c) ≤ p(|w|).
NB: In Zeit p(n) kann M maximal die ersten p(n) Zeichen von c
lesen. Daher genügt für w ein Zertifikat der Länge ≤ p(|w|).
Beispiel 6.8 (HAMILTON)
Zertifikat: Knotenpermutation. In polynomieller Zeit verifizierbar.
310
Beispiel 6.9 (RUCKSACK)
Gegeben: Zahlen a1 , . . . an ∈ N und c ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = c?
311
Beispiel 6.9 (RUCKSACK)
Gegeben: Zahlen a1 , . . . an ∈ N und c ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = c?
RUCKSACK ∈ NP:
Zertifikat: Indexmenge R. In polynomieller Zeit verifizierbar.
311
Beispiel 6.9 (RUCKSACK)
Gegeben: Zahlen a1 , . . . an ∈ N und c ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = c?
RUCKSACK ∈ NP:
Zertifikat: Indexmenge R. In polynomieller Zeit verifizierbar.
311
Satz 6.10
A ∈ NP gdw es gibt polynomiell beschränkten Verifikator für A.
312
Satz 6.10
A ∈ NP gdw es gibt polynomiell beschränkten Verifikator für A.
Beweis:
⇒“:
”
312
Satz 6.10
A ∈ NP gdw es gibt polynomiell beschränkten Verifikator für A.
Beweis:
⇒“:
”
Sei A ∈ NP. Dh es gibt NTM N , die A in Zeit p(n) akzeptiert.
312
Satz 6.10
A ∈ NP gdw es gibt polynomiell beschränkten Verifikator für A.
Beweis:
⇒“:
”
Sei A ∈ NP. Dh es gibt NTM N , die A in Zeit p(n) akzeptiert.
Ein Zertifikat für w ∈ A ist die Folge der benutzten Transitionen
δ(q, a) 3 (q 0 , a0 , d) einer akzeptierenden Berechnunsgfolge von
N [w] mit ≤ p(n) Schritten.
312
Satz 6.10
A ∈ NP gdw es gibt polynomiell beschränkten Verifikator für A.
Beweis:
⇒“:
”
Sei A ∈ NP. Dh es gibt NTM N , die A in Zeit p(n) akzeptiert.
Ein Zertifikat für w ∈ A ist die Folge der benutzten Transitionen
δ(q, a) 3 (q 0 , a0 , d) einer akzeptierenden Berechnunsgfolge von
N [w] mit ≤ p(n) Schritten.
Ein polynomiell beschränkter Verifikator für L(N ):
1 Eingabe w#c
2 Simuliere N [w], gesteuert durch die Transitionen in c.
3 Überprüfe dabei, ob die Transition in c jeweils zu N und zur
augenblicklichen Konfiguration von N passt.
4 Akzeptiere, falls c in einen Endzustand führt.
312
Beweis (Forts.):
⇐“:
”
Sei M ein polynomiell (durch p) beschränkter Verifikator für A.
Wir bauen eine polynomiell beschränkte NTM N mit L(M ) = A:
313
Beweis (Forts.):
⇐“:
”
Sei M ein polynomiell (durch p) beschränkter Verifikator für A.
Wir bauen eine polynomiell beschränkte NTM N mit L(M ) = A:
1 Eingabe w.
2 Schreibe hinter w zuerst # und dann ein nichtdeterministisch
gewähltes Wort c ∈ ∆∗
313
Beweis (Forts.):
⇐“:
”
Sei M ein polynomiell (durch p) beschränkter Verifikator für A.
Wir bauen eine polynomiell beschränkte NTM N mit L(M ) = A:
1 Eingabe w.
2 Schreibe hinter w zuerst # und dann ein nichtdeterministisch
gewähltes Wort c ∈ ∆∗ , |c| = p(|w|):
for i := 1, . . . , p(|w|) do
schreibe ein Zeichen aus ∆ und gehe nach rechts
3 Führe M aus (mit Eingabe w#c).
313
Beweis (Forts.):
⇐“:
”
Sei M ein polynomiell (durch p) beschränkter Verifikator für A.
Wir bauen eine polynomiell beschränkte NTM N mit L(M ) = A:
1 Eingabe w.
2 Schreibe hinter w zuerst # und dann ein nichtdeterministisch
gewähltes Wort c ∈ ∆∗ , |c| = p(|w|):
for i := 1, . . . , p(|w|) do
schreibe ein Zeichen aus ∆ und gehe nach rechts
3 Führe M aus (mit Eingabe w#c).
Nach Annahme gilt timeM (w#c) ≤ p(|w|).
Damit braucht N [w] O(p(|w|)) Schritte.
313
Fazit:
P sind die Sprachen, bei denen w ∈ L schnell entschieden
werden kann.
NP sind die Sprachen, bei denen ein Zertifkat für w ∈ L schnell
verifiziert/überprüft werden kann.
314
Fazit:
P sind die Sprachen, bei denen w ∈ L schnell entschieden
werden kann.
NP sind die Sprachen, bei denen ein Zertifkat für w ∈ L schnell
verifiziert/überprüft werden kann.
Intuition:
Es ist leichter, eine Lösung zu verifizieren als zu finden.
314
Fazit:
P sind die Sprachen, bei denen w ∈ L schnell entschieden
werden kann.
NP sind die Sprachen, bei denen ein Zertifkat für w ∈ L schnell
verifiziert/überprüft werden kann.
Intuition:
Es ist leichter, eine Lösung zu verifizieren als zu finden.
Aber:
Noch wurde von keiner Sprache bewiesen, dass sie in NP\P liegt.
314
6.3 NP-Vollständigkeit
1 Polynomielle Reduzierbarkeit ≤p
2 NP-vollständige Probleme = härteste Probleme in NP,
315
6.3 NP-Vollständigkeit
1 Polynomielle Reduzierbarkeit ≤p
2 NP-vollständige Probleme = härteste Probleme in NP,
alle anderen Probleme in NP darauf polynomiell reduzierbar
3 Satz: SAT ist NP-vollständig
315
Definition 6.11
Sei A ⊆ Σ∗ und B ⊆ Γ∗ .
Dann heißt A polynomiell reduzierbar auf B, A ≤p B,
gdw es eine totale und von einer DTM in polynomieller Zeit
berechenbare Funktion f : Σ∗ → Γ∗ gibt, so dass für alle w ∈ Σ∗
w ∈ A ⇐⇒ f (w) ∈ B
316
Definition 6.11
Sei A ⊆ Σ∗ und B ⊆ Γ∗ .
Dann heißt A polynomiell reduzierbar auf B, A ≤p B,
gdw es eine totale und von einer DTM in polynomieller Zeit
berechenbare Funktion f : Σ∗ → Γ∗ gibt, so dass für alle w ∈ Σ∗
w ∈ A ⇐⇒ f (w) ∈ B
316
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
Mf [w] macht ≤ p(|w|) Schritte.
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
Mf [w] macht ≤ p(|w|) Schritte.
Ausgabe f (w) von Mf hat Länge ≤ |w| + p(|w|).
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
Mf [w] macht ≤ p(|w|) Schritte.
Ausgabe f (w) von Mf hat Länge ≤ |w| + p(|w|).
M macht ≤ q(|f (w)|) ≤ q(|w|+p(|w|)) Schritte
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
Mf [w] macht ≤ p(|w|) Schritte.
Ausgabe f (w) von Mf hat Länge ≤ |w| + p(|w|).
M macht ≤ q(|f (w)|) ≤ q(|w|+p(|w|)) Schritte (q monoton)
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
Mf [w] macht ≤ p(|w|) Schritte.
Ausgabe f (w) von Mf hat Länge ≤ |w| + p(|w|).
M macht ≤ q(|f (w)|) ≤ q(|w|+p(|w|)) Schritte (q monoton)
Daher macht (Mf ; M )[w] maximal p(|w|) + q(|w| + p(|w|))
Schritte, ein Polynom in |w|.
317
Lemma 6.13
Die Klassen P und NP sind unter polynomieller Reduzierbarkeit
nach unten abgeschlossen:
A ≤p B ∈ P/NP =⇒ A ∈ P/NP
Beweis:
Sei A ≤p B mittels f , die von DTM Mf berechnet wird.
Polynom p begrenzt Rechenzeit von Mf .
Sei B ∈ P mittels DTM M .
Polynom q begrenzt Rechenzeit von M .
Damit ist Mf ; M polynomiell zeitbeschränkt in |w|:
Mf [w] macht ≤ p(|w|) Schritte.
Ausgabe f (w) von Mf hat Länge ≤ |w| + p(|w|).
M macht ≤ q(|f (w)|) ≤ q(|w|+p(|w|)) Schritte (q monoton)
Daher macht (Mf ; M )[w] maximal p(|w|) + q(|w| + p(|w|))
Schritte, ein Polynom in |w|.
Analog: A ≤p B ∈ NP =⇒ A ∈ NP
317
Ein Problem ist NP-hart,
wenn es mindestens so hart wie alles in NP ist:
Definition 6.14
Eine Sprache L heißt NP-hart gdw A ≤p L für alle A ∈ NP.
318
Ein Problem ist NP-hart,
wenn es mindestens so hart wie alles in NP ist:
Definition 6.14
Eine Sprache L heißt NP-hart gdw A ≤p L für alle A ∈ NP.
Definition 6.15
Eine Sprache L heißt NP-vollständig gdw
L NP-hart ist und L ∈ NP.
318
Ein Problem ist NP-hart,
wenn es mindestens so hart wie alles in NP ist:
Definition 6.14
Eine Sprache L heißt NP-hart gdw A ≤p L für alle A ∈ NP.
Definition 6.15
Eine Sprache L heißt NP-vollständig gdw
L NP-hart ist und L ∈ NP.
NP-vollständige Probleme sind die “schwierigsten” Probleme in
NP:
alle Probleme in NP sind polynomiell auf sie reduzierbar.
318
' $
NP
& %
319
' $
NP
& %
319
' $
NP
& %
319
NP-hart
' $
NP
& %
319
NP-hart
' $
NP-vollständig
NP
& %
319
?
Wie man P=NP lösen kann:
Lemma 6.16
Es gilt P=NP gdw ein NP-vollständiges Problem in P liegt.
320
?
Wie man P=NP lösen kann:
Lemma 6.16
Es gilt P=NP gdw ein NP-vollständiges Problem in P liegt.
Beweis:
⇒“: Falls P=NP, so liegt jedes NP-vollständige Problem in P.
”
320
?
Wie man P=NP lösen kann:
Lemma 6.16
Es gilt P=NP gdw ein NP-vollständiges Problem in P liegt.
Beweis:
⇒“: Falls P=NP, so liegt jedes NP-vollständige Problem in P.
”
⇐“: Sei L ein NP-vollständiges Problem in P.
”
Dann gilt P ⊇ NP:
Ist A ∈ NP, so gilt A ≤p L (da L NP-hart)
und nach Lemma 6.13 A ∈ P (da L ∈ P).
320
?
Wie man P=NP lösen kann:
Lemma 6.16
Es gilt P=NP gdw ein NP-vollständiges Problem in P liegt.
Beweis:
⇒“: Falls P=NP, so liegt jedes NP-vollständige Problem in P.
”
⇐“: Sei L ein NP-vollständiges Problem in P.
”
Dann gilt P ⊇ NP:
Ist A ∈ NP, so gilt A ≤p L (da L NP-hart)
und nach Lemma 6.13 A ∈ P (da L ∈ P).
Starke Vermutung:
P 6= NP
dh kein NP-vollständiges Problem ist in P.
320
?
Wie man P=NP lösen kann:
Lemma 6.16
Es gilt P=NP gdw ein NP-vollständiges Problem in P liegt.
Beweis:
⇒“: Falls P=NP, so liegt jedes NP-vollständige Problem in P.
”
⇐“: Sei L ein NP-vollständiges Problem in P.
”
Dann gilt P ⊇ NP:
Ist A ∈ NP, so gilt A ≤p L (da L NP-hart)
und nach Lemma 6.13 A ∈ P (da L ∈ P).
Starke Vermutung:
P 6= NP
dh kein NP-vollständiges Problem ist in P.
320
Aussagenlogik
321
Aussagenlogik
Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...
321
Aussagenlogik
Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...
321
Aussagenlogik
Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...
321
Aussagenlogik
Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...
321
Aussagenlogik
Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...
322
SAT
Gegeben: Eine aussagenlogische Formel F .
Problem: Ist F erfüllbar?
Praktische Bedeutung von SAT:
Äquivalenztest von Schaltungen
322
SAT
Gegeben: Eine aussagenlogische Formel F .
Problem: Ist F erfüllbar?
Praktische Bedeutung von SAT:
Äquivalenztest von Schaltungen (und vieles mehr)
Fakt 6.17
Zwei Formeln F1 und F2 sind genau dann äquivalent (F1 ↔ F2 ),
wenn (F1 ∧ ¬F2 ) ∨ (¬F1 ∧ F2 ) nicht erfüllbar ist.
322
SAT
Gegeben: Eine aussagenlogische Formel F .
Problem: Ist F erfüllbar?
Praktische Bedeutung von SAT:
Äquivalenztest von Schaltungen (und vieles mehr)
Fakt 6.17
Zwei Formeln F1 und F2 sind genau dann äquivalent (F1 ↔ F2 ),
wenn (F1 ∧ ¬F2 ) ∨ (¬F1 ∧ F2 ) nicht erfüllbar ist.
Lemma 6.18
SAT ∈ NP
322
SAT
Gegeben: Eine aussagenlogische Formel F .
Problem: Ist F erfüllbar?
Praktische Bedeutung von SAT:
Äquivalenztest von Schaltungen (und vieles mehr)
Fakt 6.17
Zwei Formeln F1 und F2 sind genau dann äquivalent (F1 ↔ F2 ),
wenn (F1 ∧ ¬F2 ) ∨ (¬F1 ∧ F2 ) nicht erfüllbar ist.
Lemma 6.18
SAT ∈ NP
Beweis:
Belegungen sind Zertifikate, die in polynomieller Zeit geprüft
werden können: Es gibt eine DTM, die bei Eingabe einer Formel F
und einer Belegung σ für die Variablen in F , in polynomieller Zeit
σ(F ) berechnet.
322
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
Da A ∈ NP gibt es NTM M mit A = L(M ) und
Polynom p mit ntimeM (w) ≤ p(|w|).
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
Da A ∈ NP gibt es NTM M mit A = L(M ) und
Polynom p mit ntimeM (w) ≤ p(|w|).
Reduktion bildet w = x1 . . . xn ∈ Σ∗ auf eine Formel F ab.
In polynomieller Zeit. So dass w ∈ L(M ) ⇔ F ∈ SAT .
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
Da A ∈ NP gibt es NTM M mit A = L(M ) und
Polynom p mit ntimeM (w) ≤ p(|w|).
Reduktion bildet w = x1 . . . xn ∈ Σ∗ auf eine Formel F ab.
In polynomieller Zeit. So dass w ∈ L(M ) ⇔ F ∈ SAT .
Die Variablen beschreiben das mögliche Verhalten von M [w]:
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
Da A ∈ NP gibt es NTM M mit A = L(M ) und
Polynom p mit ntimeM (w) ≤ p(|w|).
Reduktion bildet w = x1 . . . xn ∈ Σ∗ auf eine Formel F ab.
In polynomieller Zeit. So dass w ∈ L(M ) ⇔ F ∈ SAT .
Die Variablen beschreiben das mögliche Verhalten von M [w]:
zustt,q t = 0, . . . , p(n) zustt,q = 1 ⇔
q∈Q Zustand nach t Schritten ist q
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
Da A ∈ NP gibt es NTM M mit A = L(M ) und
Polynom p mit ntimeM (w) ≤ p(|w|).
Reduktion bildet w = x1 . . . xn ∈ Σ∗ auf eine Formel F ab.
In polynomieller Zeit. So dass w ∈ L(M ) ⇔ F ∈ SAT .
Die Variablen beschreiben das mögliche Verhalten von M [w]:
zustt,q t = 0, . . . , p(n) zustt,q = 1 ⇔
q∈Q Zustand nach t Schritten ist q
post,i t = 0, . . . , p(n) post,i = 1 ⇔
i = −p(n), . . . p(n) Kopfposition nach t Schritten ist i
323
Satz 6.19 (Cook 1971)
SAT ist NP-vollständig.
Beweis:
Da SAT ∈ NP, bleibt noch zu zeigen, SAT ist NP-hart.
Sei A ∈ NP. Wir zeigen A ≤p SAT.
Da A ∈ NP gibt es NTM M mit A = L(M ) und
Polynom p mit ntimeM (w) ≤ p(|w|).
Reduktion bildet w = x1 . . . xn ∈ Σ∗ auf eine Formel F ab.
In polynomieller Zeit. So dass w ∈ L(M ) ⇔ F ∈ SAT .
Die Variablen beschreiben das mögliche Verhalten von M [w]:
zustt,q t = 0, . . . , p(n) zustt,q = 1 ⇔
q∈Q Zustand nach t Schritten ist q
post,i t = 0, . . . , p(n) post,i = 1 ⇔
i = −p(n), . . . p(n) Kopfposition nach t Schritten ist i
t = 0, . . . , p(n) bandt,i,a = 1 ⇔
bandt,i,a i = −p(n), . . . , p(n) Bandinhalt nach t Schritten
a∈Γ auf Bandposition i ist Zeichen a
323
Beweis (Forts.):
Sei Q = {q1 , . . . , qk } und Γ = {a1 , . . . , al }.
324
Beweis (Forts.):
Sei Q = {q1 , . . . , qk } und Γ = {a1 , . . . , al }.
F := R ∧ A ∧ T1 ∧ T2 ∧ E
324
Beweis (Forts.):
Sei Q = {q1 , . . . , qk } und Γ = {a1 , . . . , al }.
F := R ∧ A ∧ T1 ∧ T2 ∧ E
^
R := [G(zustt,q1 , . . . , zustt,qk ) ∧ G(post,−p(n) , . . . , post,p(n) ) ∧
t
^
G(bandt,i,a1 , . . . , bandt,i,al )]
i
324
Beweis (Forts.):
Sei Q = {q1 , . . . , qk } und Γ = {a1 , . . . , al }.
F := R ∧ A ∧ T1 ∧ T2 ∧ E
^
R := [G(zustt,q1 , . . . , zustt,qk ) ∧ G(post,−p(n) , . . . , post,p(n) ) ∧
t
^
G(bandt,i,a1 , . . . , bandt,i,al )]
i
A := zust0,q1
324
Beweis (Forts.):
Sei Q = {q1 , . . . , qk } und Γ = {a1 , . . . , al }.
F := R ∧ A ∧ T1 ∧ T2 ∧ E
^
R := [G(zustt,q1 , . . . , zustt,qk ) ∧ G(post,−p(n) , . . . , post,p(n) ) ∧
t
^
G(bandt,i,a1 , . . . , bandt,i,al )]
i
A := zust0,q1 ∧ pos0,1
324
Beweis (Forts.):
Sei Q = {q1 , . . . , qk } und Γ = {a1 , . . . , al }.
F := R ∧ A ∧ T1 ∧ T2 ∧ E
^
R := [G(zustt,q1 , . . . , zustt,qk ) ∧ G(post,−p(n) , . . . , post,p(n) ) ∧
t
^
G(bandt,i,a1 , . . . , bandt,i,al )]
i
n
^
A := zust0,q1 ∧ pos0,1 ∧ band0,j,xj ∧
j=1
0 p(n)
^ ^
band0,j, ∧ band0,j,
j=−p(n) j=n+1
324
Beweis (Forts.):
^
T1 := [zustt,q ∧ post,i ∧ bandt,i,a
t,q,i,a
325
Beweis (Forts.):
^
T1 := [zustt,q ∧ post,i ∧ bandt,i,a
t,q,i,a
_
→ (zustt+1,q0 ∧ post+1,i+y ∧ bandt+1,i,a0 )]
(q 0 ,a0 ,y)∈δ(q,a)
325
Beweis (Forts.):
^
T1 := [zustt,q ∧ post,i ∧ bandt,i,a
t,q,i,a
_
→ (zustt+1,q0 ∧ post+1,i+y ∧ bandt+1,i,a0 )]
(q 0 ,a0 ,y)∈δ(q,a)
^
T2 := ((¬post,i ∧ bandt,i,a ) → bandt+1,i,a )
t,i,a
325
Beweis (Forts.):
^
T1 := [zustt,q ∧ post,i ∧ bandt,i,a
t,q,i,a
_
→ (zustt+1,q0 ∧ post+1,i+y ∧ bandt+1,i,a0 )]
(q 0 ,a0 ,y)∈δ(q,a)
^
T2 := ((¬post,i ∧ bandt,i,a ) → bandt+1,i,a )
t,i,a
__
E := zustt,q
t q∈F
325
Beweis (Forts.):
^
T1 := [zustt,q ∧ post,i ∧ bandt,i,a
t,q,i,a
_
→ (zustt+1,q0 ∧ post+1,i+y ∧ bandt+1,i,a0 )]
(q 0 ,a0 ,y)∈δ(q,a)
^
T2 := ((¬post,i ∧ bandt,i,a ) → bandt+1,i,a )
t,i,a
__
E := zustt,q
t q∈F
r
_ r−1
^ r
^
G(v1 , . . . , vr ) := ( vi ) ∧ ¬(vi ∧ vj )
i=1 i=1 j=i+1
325
Von der Lösbarkeit zur Lösung
326
Von der Lösbarkeit zur Lösung
Wenn man SAT lösen kann, dann kostet es nicht viel mehr, dazu
eine erfüllenden Belegung zu berechnen:
326
Von der Lösbarkeit zur Lösung
Wenn man SAT lösen kann, dann kostet es nicht viel mehr, dazu
eine erfüllenden Belegung zu berechnen:
Sei F eine Formel mit den Variablen x1 , . . . , xk :
if F ∈
/ SAT then output(“nicht lösbar”)
else
for i := 1 to k do
if F [xi := 0] ∈ SAT then b := 0 else b := 1
output(xi “=” b)
F := F [xi := b]
wobei F [x := b] = F mit x ersetzt durch b.
326
Von der Lösbarkeit zur Lösung
Wenn man SAT lösen kann, dann kostet es nicht viel mehr, dazu
eine erfüllenden Belegung zu berechnen:
Sei F eine Formel mit den Variablen x1 , . . . , xk :
if F ∈
/ SAT then output(“nicht lösbar”)
else
for i := 1 to k do
if F [xi := 0] ∈ SAT then b := 0 else b := 1
output(xi “=” b)
F := F [xi := b]
wobei F [x := b] = F mit x ersetzt durch b.
Entscheidung von SAT in Zeit O(f (n))
326
Von der Lösbarkeit zur Lösung
Wenn man SAT lösen kann, dann kostet es nicht viel mehr, dazu
eine erfüllenden Belegung zu berechnen:
Sei F eine Formel mit den Variablen x1 , . . . , xk :
if F ∈
/ SAT then output(“nicht lösbar”)
else
for i := 1 to k do
if F [xi := 0] ∈ SAT then b := 0 else b := 1
output(xi “=” b)
F := F [xi := b]
wobei F [x := b] = F mit x ersetzt durch b.
Entscheidung von SAT in Zeit O(f (n))
=⇒ Berechnung einer erf. Bel. in Zeit O(n · (f (n) + n))
(falls es eine gibt.)
326
Von der Lösbarkeit zur Lösung
Wenn man SAT lösen kann, dann kostet es nicht viel mehr, dazu
eine erfüllenden Belegung zu berechnen:
Sei F eine Formel mit den Variablen x1 , . . . , xk :
if F ∈
/ SAT then output(“nicht lösbar”)
else
for i := 1 to k do
if F [xi := 0] ∈ SAT then b := 0 else b := 1
output(xi “=” b)
F := F [xi := b]
wobei F [x := b] = F mit x ersetzt durch b.
Entscheidung von SAT in Zeit O(f (n))
=⇒ Berechnung einer erf. Bel. in Zeit O(n · (f (n) + n))
(falls es eine gibt.)
f (n) polynomiell =⇒ n · (f (n) + n) polynomiell
f (n) exponentiell =⇒ n · (f (n) + n) exponentiell
326
Bemerkungen:
Die Reduzierung der Lösungsberechnung auf SAT ist eine rein
theoretische Konstruktion.
Sie zeigt, dass man sich auf SAT beschränken kann, wenn
man nur an polynomiell/exponentiell interessiert ist.
Alle bekannten Entscheidungsverfahren für SAT berechnen
auch eine Lösung.
327
Von NP-hart zu NP-leicht“
”
328
Von NP-hart zu NP-leicht“
”
Vor dem Jahr 2000:
NP-vollständig = Todesurteil
328
Von NP-hart zu NP-leicht“
”
Vor dem Jahr 2000:
NP-vollständig = Todesurteil
In den letzten Jahren:
Spektakuläre Fortschritte bei Implementierung von
SAT-Lösern (SAT-solver): http://satcompetition.org
Stand der Kunst:
Erfüllbar: bis 105 Variablen Unerfüllbar: bis 103 Variablen
328
Von NP-hart zu NP-leicht“
”
Vor dem Jahr 2000:
NP-vollständig = Todesurteil
In den letzten Jahren:
Spektakuläre Fortschritte bei Implementierung von
SAT-Lösern (SAT-solver): http://satcompetition.org
Stand der Kunst:
Erfüllbar: bis 105 Variablen Unerfüllbar: bis 103 Variablen
Jetzt:
NP-vollständig = Hoffnung durch SAT
Paradigma:
SAT (Logik!) als universelle Sprache
zur Kodierung kombinatorischer Probleme
Reduktion auf SAT manchmal schneller als problemspezifische
Löser! Und fast immer einfacher.
328
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
329
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
3COL
Gegeben: Ein ungerichteter Graph
Problem: Gibt es eine Färbung der Knoten mit 3 Farben, so dass
keine benachbarten Knoten gleich gefärbt sind?
329
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
3COL
Gegeben: Ein ungerichteter Graph
Problem: Gibt es eine Färbung der Knoten mit 3 Farben, so dass
keine benachbarten Knoten gleich gefärbt sind?
329
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
3COL
Gegeben: Ein ungerichteter Graph
Problem: Gibt es eine Färbung der Knoten mit 3 Farben, so dass
keine benachbarten Knoten gleich gefärbt sind?
329
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
3COL
Gegeben: Ein ungerichteter Graph
Problem: Gibt es eine Färbung der Knoten mit 3 Farben, so dass
keine benachbarten Knoten gleich gefärbt sind?
329
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
3COL
Gegeben: Ein ungerichteter Graph
Problem: Gibt es eine Färbung der Knoten mit 3 Farben, so dass
keine benachbarten Knoten gleich gefärbt sind?
329
Beispiel: Reduktion von 3-Färbbarkeit (3COL) auf SAT.
3COL
Gegeben: Ein ungerichteter Graph
Problem: Gibt es eine Färbung der Knoten mit 3 Farben, so dass
keine benachbarten Knoten gleich gefärbt sind?
Bemerkungen
Zeigt 3COL ≤p SAT und damit 3COL ∈ NP.
Zeigt nicht, dass 3COL NP-vollständig ist.
329
Ähnlich direkt polynomiell auf SAT reduzierbar:
HAMILTON
SUDOKU
...
330
Eine Anwendung von k-Färbbarkeit: Registerverteilung
Kann man in einem Programmstück n Variablen so auf
k Register verteilen, dass jede Variable so lange in einem
Register bleibt, wie sie lebendig ist?
331
Eine Anwendung von k-Färbbarkeit: Registerverteilung
Kann man in einem Programmstück n Variablen so auf
k Register verteilen, dass jede Variable so lange in einem
Register bleibt, wie sie lebendig ist?
Variable ist an einem Punkt lebendig
gdw sie später noch gelesen wird, ohne vorher überschrieben
worden zu sein.
331
Eine Anwendung von k-Färbbarkeit: Registerverteilung
Kann man in einem Programmstück n Variablen so auf
k Register verteilen, dass jede Variable so lange in einem
Register bleibt, wie sie lebendig ist?
Variable ist an einem Punkt lebendig
gdw sie später noch gelesen wird, ohne vorher überschrieben
worden zu sein.
Reduktion auf k-Färbbarkeit:
Variable = Knoten
u und v verbunden = u 6= v und es gibt einen Programmpunkt,
an dem u und v lebendig sind
Farbe = Register
k-Färbung = Zuordnung eines Registers zu jeder Variablen
331
Eine Anwendung von k-Färbbarkeit: Registerverteilung
Kann man in einem Programmstück n Variablen so auf
k Register verteilen, dass jede Variable so lange in einem
Register bleibt, wie sie lebendig ist?
Variable ist an einem Punkt lebendig
gdw sie später noch gelesen wird, ohne vorher überschrieben
worden zu sein.
Reduktion auf k-Färbbarkeit:
Variable = Knoten
u und v verbunden = u 6= v und es gibt einen Programmpunkt,
an dem u und v lebendig sind
Farbe = Register
k-Färbung = Zuordnung eines Registers zu jeder Variablen
Sowohl k-Färbbarkeit als auch Registerverteilung ist für k ≥ 3
NP-vollständig.
Mehr Information: Vorlesung Programmoptimierung
331
Weitere Anwendungen von SAT:
332
Weitere Anwendungen von SAT:
332
Weitere Anwendungen von SAT:
332
Weitere Anwendungen von SAT:
332
6.4 Weitere NP-vollständige Probleme
333
6.4 Weitere NP-vollständige Probleme
333
6.4 Weitere NP-vollständige Probleme
333
6.4 Weitere NP-vollständige Probleme
Lemma 6.20
Ist A NP-vollständig, so ist B ∈ NP ebenfalls NP-vollständig,
falls A ≤p B.
333
6.4 Weitere NP-vollständige Probleme
Lemma 6.20
Ist A NP-vollständig, so ist B ∈ NP ebenfalls NP-vollständig,
falls A ≤p B.
Beweis:
Folgt direkt aus der Transitivität von ≤p :
B ist NP-hart, denn für C ∈ NP gilt C ≤p A ≤p B.
333
Warum will man wissen, dass ein Problem B NP-vollständig ist?
334
Warum will man wissen, dass ein Problem B NP-vollständig ist?
Um sicher zu sein, dass
ein polynomieller Algorithmus für B ein Durchbruch wäre
und daher wahrscheinlich nicht existiert.
Praktische Instanzen von B könnten trotzdem (zB mit SAT)
effizient“ lösbar sein.
”
334
Definition 6.21
Eine Formel ist in Konjunktiver Normalform (KNF) gdw sie
eine Konjunktion von Klauseln ist: K1 ∧ · · · ∧ Kn
Eine Klausel ist eine Disjunktion von Literalen: L1 ∨ · · · ∨ Lm
Ein Literal ist eine (evtl. negierte) Variable.
Eine Formel ist in 3KNF gdw jede Klausel ≤ 3 Literale enthält.
335
Definition 6.21
Eine Formel ist in Konjunktiver Normalform (KNF) gdw sie
eine Konjunktion von Klauseln ist: K1 ∧ · · · ∧ Kn
Eine Klausel ist eine Disjunktion von Literalen: L1 ∨ · · · ∨ Lm
Ein Literal ist eine (evtl. negierte) Variable.
Eine Formel ist in 3KNF gdw jede Klausel ≤ 3 Literale enthält.
Dh eine KNF ist ein Konjunktion von Disjunktionen von
(evtl negierten) Variablen.
Bsp: (x9 ∨ ¬x2 ) ∧ (¬x7 ∨ x1 ∨ x6 )
335
Definition 6.21
Eine Formel ist in Konjunktiver Normalform (KNF) gdw sie
eine Konjunktion von Klauseln ist: K1 ∧ · · · ∧ Kn
Eine Klausel ist eine Disjunktion von Literalen: L1 ∨ · · · ∨ Lm
Ein Literal ist eine (evtl. negierte) Variable.
Eine Formel ist in 3KNF gdw jede Klausel ≤ 3 Literale enthält.
Dh eine KNF ist ein Konjunktion von Disjunktionen von
(evtl negierten) Variablen.
Bsp: (x9 ∨ ¬x2 ) ∧ (¬x7 ∨ x1 ∨ x6 )
3KNF-SAT
Gegeben: Ein Formel in 3KNF
Problem: Ist die Formel erfüllbar?
335
Definition 6.21
Eine Formel ist in Konjunktiver Normalform (KNF) gdw sie
eine Konjunktion von Klauseln ist: K1 ∧ · · · ∧ Kn
Eine Klausel ist eine Disjunktion von Literalen: L1 ∨ · · · ∨ Lm
Ein Literal ist eine (evtl. negierte) Variable.
Eine Formel ist in 3KNF gdw jede Klausel ≤ 3 Literale enthält.
Dh eine KNF ist ein Konjunktion von Disjunktionen von
(evtl negierten) Variablen.
Bsp: (x9 ∨ ¬x2 ) ∧ (¬x7 ∨ x1 ∨ x6 )
3KNF-SAT
Gegeben: Ein Formel in 3KNF
Problem: Ist die Formel erfüllbar?
336
Satz 6.22
3KNF-SAT ist NP-vollständig.
Beweis:
Wir zeigen SAT ≤p 3KNF-SAT . Wir geben eine polynomielle
Reduktion F 7→ F 0 an, so dass F 0 in 3KNF ist und
336
Satz 6.22
3KNF-SAT ist NP-vollständig.
Beweis:
Wir zeigen SAT ≤p 3KNF-SAT . Wir geben eine polynomielle
Reduktion F 7→ F 0 an, so dass F 0 in 3KNF ist und
336
Satz 6.22
3KNF-SAT ist NP-vollständig.
Beweis:
Wir zeigen SAT ≤p 3KNF-SAT . Wir geben eine polynomielle
Reduktion F 7→ F 0 an, so dass F 0 in 3KNF ist und
336
Satz 6.22
3KNF-SAT ist NP-vollständig.
Beweis:
Wir zeigen SAT ≤p 3KNF-SAT . Wir geben eine polynomielle
Reduktion F 7→ F 0 an, so dass F 0 in 3KNF ist und
¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
336
Satz 6.22
3KNF-SAT ist NP-vollständig.
Beweis:
Wir zeigen SAT ≤p 3KNF-SAT . Wir geben eine polynomielle
Reduktion F 7→ F 0 an, so dass F 0 in 3KNF ist und
¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
¬¬A = A
336
Satz 6.22
3KNF-SAT ist NP-vollständig.
Beweis:
Wir zeigen SAT ≤p 3KNF-SAT . Wir geben eine polynomielle
Reduktion F 7→ F 0 an, so dass F 0 in 3KNF ist und
¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
¬¬A = A
¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
¬¬A = A
337
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.
337
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.
337
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.
337
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar
338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar
338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar
Ergebnis ist F 0 .
338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar
Ergebnis ist F 0 .
338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar
Ergebnis ist F 0 .
ab.
Daher erreicht man die NNF in ≤ |F |2 Schritten.
338
Da jede Formel in 3KNF auch in KNF ist:
Korollar 6.23
KNF-SAT ist NP-vollständig.
339
Da jede Formel in 3KNF auch in KNF ist:
Korollar 6.23
KNF-SAT ist NP-vollständig.
339
Da jede Formel in 3KNF auch in KNF ist:
Korollar 6.23
KNF-SAT ist NP-vollständig.
Satz 6.24
2KNF-SAT ∈ P
Ohne Beweis
339
MENGENÜBERDECKUNG (MÜ)
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
und eine Zahl k ≤ n.
Problem: Gibt es i1 , . . . , ik ∈ {1, . . . , n} mit M = Ti1 ∪ · · · ∪ Tik ?
340
MENGENÜBERDECKUNG (MÜ)
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
und eine Zahl k ≤ n.
Problem: Gibt es i1 , . . . , ik ∈ {1, . . . , n} mit M = Ti1 ∪ · · · ∪ Tik ?
Beispiel 6.25
T1 = {1, 2} T2 = {1, 3}
T3 = {3, 4} T4 = {3, 5}
M = {1, 2, 3, 4, 5} k = 3
Lösung: Ja
Anwendung: Zulieferer
M Menge der Teile, die eine Firma einkaufen muss
Ti Menge der Teile, die Zulieferer i anbietet
Kann die Firma ihre Bedürfnisse mit k Zulieferern abdecken?
340
MENGENÜBERDECKUNG (MÜ)
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
und eine Zahl k ≤ n.
Problem: Gibt es i1 , . . . , ik ∈ {1, . . . , n} mit M = Ti1 ∪ · · · ∪ Tik ?
Beispiel 6.25
T1 = {1, 2} T2 = {1, 3}
T3 = {3, 4} T4 = {3, 5}
M = {1, 2, 3, 4, 5} k = 3
Lösung: Ja
Anwendung: Zulieferer
M Menge der Teile, die eine Firma einkaufen muss
Ti Menge der Teile, die Zulieferer i anbietet
Kann die Firma ihre Bedürfnisse mit k Zulieferern abdecken?
Fakt 6.26
MÜ ∈ NP.
340
Satz 6.27
MÜ ist NP-vollständig.
341
Satz 6.27
MÜ ist NP-vollständig.
Beweis:
Wir zeigen KNF-SAT ≤p MÜ.
341
Satz 6.27
MÜ ist NP-vollständig.
Beweis:
Wir zeigen KNF-SAT ≤p MÜ.
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xk .
341
Satz 6.27
MÜ ist NP-vollständig.
Beweis:
Wir zeigen KNF-SAT ≤p MÜ.
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xk .
M := {1, . . . , m, m + 1, . . . , m + k}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
341
Satz 6.27
MÜ ist NP-vollständig.
Beweis:
Wir zeigen KNF-SAT ≤p MÜ.
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xk .
M := {1, . . . , m, m + 1, . . . , m + k}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
F ist erfülbar
gdw
M wird durch k der Teilmengen T1 , . . . , Tk , T10 , . . . , Tk0 überdeckt
341
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
342
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
343
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
343
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
343
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
343
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
343
Beweis (Forts.):
Sei F = K1 ∧ · · · ∧ Km in KNF, mit Variablen x1 , . . . , xl .
M := {1, . . . , m} ∪ {m + 1, . . . , m + l}
Ti := {j | xi kommt in Kj positiv vor} ∪ {m + i}
Ti0 := {j | xi kommt in Kj negativ vor} ∪ {m + i}
343
Das Minimierungsproblem
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
Problem: Finde das kleinste k, so dass M von k der Teilmengen
überdeckt wird.
kann auf das Entscheidungsproblem reduziert werden:
344
Das Minimierungsproblem
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
Problem: Finde das kleinste k, so dass M von k der Teilmengen
überdeckt wird.
kann auf das Entscheidungsproblem reduziert werden:
Finde kleinstes k durch binäre Suche im Intervall [1, n]
mit O(log n) Aufrufen von MÜ.
344
Das Minimierungsproblem
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
Problem: Finde das kleinste k, so dass M von k der Teilmengen
überdeckt wird.
kann auf das Entscheidungsproblem reduziert werden:
Finde kleinstes k durch binäre Suche im Intervall [1, n]
mit O(log n) Aufrufen von MÜ.
344
Das Minimierungsproblem
Gegeben: Teilmengen T1 , . . . , Tn ⊆ M einer endlichen Menge M
Problem: Finde das kleinste k, so dass M von k der Teilmengen
überdeckt wird.
kann auf das Entscheidungsproblem reduziert werden:
Finde kleinstes k durch binäre Suche im Intervall [1, n]
mit O(log n) Aufrufen von MÜ.
344
Die Berechnung einer Lösung
Gegeben: Teilmengen T~ := T1 , . . . , Tn ⊆ M einer endlichen
Menge M , und eine Zahl k ≤ n.
Problem: Finde eine Überdeckung von M durch k der Teilmengen.
kann auf das Entscheidungsproblem reduziert werden:
345
Die Berechnung einer Lösung
Gegeben: Teilmengen T~ := T1 , . . . , Tn ⊆ M einer endlichen
Menge M , und eine Zahl k ≤ n.
Problem: Finde eine Überdeckung von M durch k der Teilmengen.
kann auf das Entscheidungsproblem reduziert werden:
345
CLIQUE
Gegeben: Ungerichteter Graph G = (V, E) und Zahl k ∈ N.
Problem: Besitzt G eine Clique“ der Größe mindestens k?
”
346
CLIQUE
Gegeben: Ungerichteter Graph G = (V, E) und Zahl k ∈ N.
Problem: Besitzt G eine Clique“ der Größe mindestens k?
”
Dh eine Teilmenge V 0 ⊆ V mit |V 0 | ≥ k
und alle u, v ∈ V 0 mit u 6= v sind benachbart.
346
CLIQUE
Gegeben: Ungerichteter Graph G = (V, E) und Zahl k ∈ N.
Problem: Besitzt G eine Clique“ der Größe mindestens k?
”
Dh eine Teilmenge V 0 ⊆ V mit |V 0 | ≥ k
und alle u, v ∈ V 0 mit u 6= v sind benachbart.
Beispiel mit 5-Clique:
346
CLIQUE
Gegeben: Ungerichteter Graph G = (V, E) und Zahl k ∈ N.
Problem: Besitzt G eine Clique“ der Größe mindestens k?
”
Dh eine Teilmenge V 0 ⊆ V mit |V 0 | ≥ k
und alle u, v ∈ V 0 mit u 6= v sind benachbart.
Beispiel mit 5-Clique:
346
CLIQUE
Gegeben: Ungerichteter Graph G = (V, E) und Zahl k ∈ N.
Problem: Besitzt G eine Clique“ der Größe mindestens k?
”
Dh eine Teilmenge V 0 ⊆ V mit |V 0 | ≥ k
und alle u, v ∈ V 0 mit u 6= v sind benachbart.
Beispiel mit 5-Clique:
346
CLIQUE
Gegeben: Ungerichteter Graph G = (V, E) und Zahl k ∈ N.
Problem: Besitzt G eine Clique“ der Größe mindestens k?
”
Dh eine Teilmenge V 0 ⊆ V mit |V 0 | ≥ k
und alle u, v ∈ V 0 mit u 6= v sind benachbart.
Beispiel mit 5-Clique:
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
E = {{(i, j), (p, q)} | i 6= p und zij 6= ¬zpq }
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
E = {{(i, j), (p, q)} | i 6= p und zij 6= ¬zpq }
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
E = {{(i, j), (p, q)} | i 6= p und zij 6= ¬zpq }
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
E = {{(i, j), (p, q)} | i 6= p und zij 6= ¬zpq }
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
E = {{(i, j), (p, q)} | i 6= p und zij 6= ¬zpq }
347
Satz 6.29
CLIQUE ist NP-vollständig.
Beweis: 3KNF-SAT ≤p CLIQUE:
Eine Formel F in 3KNF-SAT (oE: genau 3 Literale/Klausel)
F = (z11 ∨ z12 ∨ z13 ) ∧ . . . ∧ (zk1 ∨ zk2 ∨ zk3 )
wird auf einen Graphen abgebildet:
V = {(1, 1), (1, 2), (1, 3), . . . , (k, 1), (k, 2), (k, 3)}
E = {{(i, j), (p, q)} | i 6= p und zij 6= ¬zpq }
348
RUCKSACK
Gegeben: Zahlen a1 , . . . an ∈ N und b ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = b ?
Satz 6.30
RUCKSACK ist NP-vollständig.
348
RUCKSACK
Gegeben: Zahlen a1 , . . . an ∈ N und b ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = b ?
Satz 6.30
RUCKSACK ist NP-vollständig.
348
RUCKSACK
Gegeben: Zahlen a1 , . . . an ∈ N und b ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = b ?
Satz 6.30
RUCKSACK ist NP-vollständig.
348
Beweis (Forts.):
Wir geben Zahlen vi0 , vi1 für jede variable xi , Zahlen kj1 , kj2 für
jede Klausel Kj , und eine Zahl b an.
349
Beweis (Forts.):
Wir geben Zahlen vi0 , vi1 für jede variable xi , Zahlen kj1 , kj2 für
jede Klausel Kj , und eine Zahl b an.
Alle Zahlen haben genau m + n Stellen im Dezimalsystem.
Die j-te Stelle, 1 ≤ j ≤ m, nennen wir
“Stelle (der Klausel) Kj ”.
Die m + i Stelle, 1 ≤ i ≤ n, nennen wir
“Stelle (der Variable) xi ”.
349
Beweis (Forts.):
Wir geben Zahlen vi0 , vi1 für jede variable xi , Zahlen kj1 , kj2 für
jede Klausel Kj , und eine Zahl b an.
Alle Zahlen haben genau m + n Stellen im Dezimalsystem.
Die j-te Stelle, 1 ≤ j ≤ m, nennen wir
“Stelle (der Klausel) Kj ”.
Die m + i Stelle, 1 ≤ i ≤ n, nennen wir
“Stelle (der Variable) xi ”.
b = |44 . {z
. . 444} 11
| .{z
. . 11}
m n
349
Beweis (Forts.):
Wir geben Zahlen vi0 , vi1 für jede variable xi , Zahlen kj1 , kj2 für
jede Klausel Kj , und eine Zahl b an.
Alle Zahlen haben genau m + n Stellen im Dezimalsystem.
Die j-te Stelle, 1 ≤ j ≤ m, nennen wir
“Stelle (der Klausel) Kj ”.
Die m + i Stelle, 1 ≤ i ≤ n, nennen wir
“Stelle (der Variable) xi ”.
b = |44 . {z
. . 444} 11
| .{z
. . 11}
m n
An der Stelle xi haben vi0 , vi1 eine 1, und die Zahlen und
kj1 , kj2 eine 0.
→ genau eine von vi0 , vi1 muss in den Rucksack
→ modelliert die Wahl einer Belegung.
349
Beweis (Forts.):
Beschreibung der Zahlen vi0 , vi1 , kj1 , kj2 :
vi0 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die ¬xi enthalten, sonst 0en.
vi1 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die xi enthalten, sonst 0en.
350
Beweis (Forts.):
Beschreibung der Zahlen vi0 , vi1 , kj1 , kj2 :
vi0 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die ¬xi enthalten, sonst 0en.
vi1 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die xi enthalten, sonst 0en.
kj1 hat eine 1 an der Stelle Kj , sonst 0en.
kj2 hat eine 2 an der Stelle Kj , sonst 0en.
350
Beweis (Forts.):
Beschreibung der Zahlen vi0 , vi1 , kj1 , kj2 :
vi0 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die ¬xi enthalten, sonst 0en.
vi1 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die xi enthalten, sonst 0en.
kj1 hat eine 1 an der Stelle Kj , sonst 0en.
kj2 hat eine 2 an der Stelle Kj , sonst 0en.
Wenn die Summe einer Untermenge R die Zahl b ergibt, dann
erfüllt die Belegung σ mit σ(xi ) = 1 gdw vi1 ∈ R die Formel F .
350
Beweis (Forts.):
Beschreibung der Zahlen vi0 , vi1 , kj1 , kj2 :
vi0 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die ¬xi enthalten, sonst 0en.
vi1 hat eine 1 an der Stelle xi sowie an den Stellen der
Klauseln, die xi enthalten, sonst 0en.
kj1 hat eine 1 an der Stelle Kj , sonst 0en.
kj2 hat eine 2 an der Stelle Kj , sonst 0en.
Wenn die Summe einer Untermenge R die Zahl b ergibt, dann
erfüllt die Belegung σ mit σ(xi ) = 1 gdw vi1 ∈ R die Formel F .
Wenn F erfüllbar ist, dann wähle R so:
Nehme eine erfüllende Belegung σ von F .
Für jede Variable xi : Füge vi1 zu R wenn σ(xi ) = 1, sonst
füge vi0 .
Für jede Klausel Kj : Füge kj1 oder kj2 hinzu, um eine 4 an
der Stelle Kj zu gewinnen.
350
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
351
PARTITION
Gegeben: Zahlen a1 , . . . an ∈ N.
P P
Problem: Gibt es I ⊆ {1, . . . , n} mit i∈I ai = i∈I
/ ai ?
Satz 6.31
PARTITION ist NP-vollständig.
352
BIN PACKING
Gegeben: Eine Behältergröße“ b ∈ N, die Anzahl der Behälter
”
k ∈ N und Objekte“ a1 , a2 , . . . an .
”
Problem: Können die Objekte so auf die k Behälter verteilt
werden, dass kein Behälter überläuft?
352
BIN PACKING
Gegeben: Eine Behältergröße“ b ∈ N, die Anzahl der Behälter
”
k ∈ N und Objekte“ a1 , a2 , . . . an .
”
Problem: Können die Objekte so auf die k Behälter verteilt
werden, dass kein Behälter überläuft?
Satz 6.32
BIN PACKING ist NP-vollständig.
352
BIN PACKING
Gegeben: Eine Behältergröße“ b ∈ N, die Anzahl der Behälter
”
k ∈ N und Objekte“ a1 , a2 , . . . an .
”
Problem: Können die Objekte so auf die k Behälter verteilt
werden, dass kein Behälter überläuft?
Satz 6.32
BIN PACKING ist NP-vollständig.
352
BIN PACKING
Gegeben: Eine Behältergröße“ b ∈ N, die Anzahl der Behälter
”
k ∈ N und Objekte“ a1 , a2 , . . . an .
”
Problem: Können die Objekte so auf die k Behälter verteilt
werden, dass kein Behälter überläuft?
Satz 6.32
BIN PACKING ist NP-vollständig.
352
HAMILTON
Gegeben: Ungerichteter Graph G
Problem: Enthält G einen Hamilton-Kreis, dh einen geschlossenen
Pfad, der jeden Knoten genau einmal enthält?
353
HAMILTON
Gegeben: Ungerichteter Graph G
Problem: Enthält G einen Hamilton-Kreis, dh einen geschlossenen
Pfad, der jeden Knoten genau einmal enthält?
Satz 6.33
HAMILTON ist NP-vollständig.
353
TRAVELLING SALESMAN (TSP)
Gegeben: Eine n × n Matrix Mij ∈ N von Entfernungen“
”
und eine Zahl k ∈ N
354
TRAVELLING SALESMAN (TSP)
Gegeben: Eine n × n Matrix Mij ∈ N von Entfernungen“
”
und eine Zahl k ∈ N
Problem: Gibt es eine Rundreise“ (Hamilton-Kreis) der Länge
”
≤ k?
354
TRAVELLING SALESMAN (TSP)
Gegeben: Eine n × n Matrix Mij ∈ N von Entfernungen“
”
und eine Zahl k ∈ N
Problem: Gibt es eine Rundreise“ (Hamilton-Kreis) der Länge
”
≤ k?
Satz 6.34
TSP ist NP-vollständig.
354
TRAVELLING SALESMAN (TSP)
Gegeben: Eine n × n Matrix Mij ∈ N von Entfernungen“
”
und eine Zahl k ∈ N
Problem: Gibt es eine Rundreise“ (Hamilton-Kreis) der Länge
”
≤ k?
Satz 6.34
TSP ist NP-vollständig.
354
TRAVELLING SALESMAN (TSP)
Gegeben: Eine n × n Matrix Mij ∈ N von Entfernungen“
”
und eine Zahl k ∈ N
Problem: Gibt es eine Rundreise“ (Hamilton-Kreis) der Länge
”
≤ k?
Satz 6.34
TSP ist NP-vollständig.
354
FÄRBBARKEIT (COL)
Gegeben: Ein ungerichteter Graph (V, E) und eine Zahl k.
355
FÄRBBARKEIT (COL)
Gegeben: Ein ungerichteter Graph (V, E) und eine Zahl k.
Problem: Gibt es eine Färbung der Knoten V mit k Farben,
so dass keine zwei benachbarten Knoten die gleiche
Farbe haben?
355
FÄRBBARKEIT (COL)
Gegeben: Ein ungerichteter Graph (V, E) und eine Zahl k.
Problem: Gibt es eine Färbung der Knoten V mit k Farben,
so dass keine zwei benachbarten Knoten die gleiche
Farbe haben?
Satz 6.35
FÄRBBARKEIT ist NP-vollständig für k ≥ 3.
355
FÄRBBARKEIT (COL)
Gegeben: Ein ungerichteter Graph (V, E) und eine Zahl k.
Problem: Gibt es eine Färbung der Knoten V mit k Farben,
so dass keine zwei benachbarten Knoten die gleiche
Farbe haben?
Satz 6.35
FÄRBBARKEIT ist NP-vollständig für k ≥ 3.
Beweis:
3KNF-SAT ≤p 3FÄRBBARKEIT
355
FÄRBBARKEIT (COL)
Gegeben: Ein ungerichteter Graph (V, E) und eine Zahl k.
Problem: Gibt es eine Färbung der Knoten V mit k Farben,
so dass keine zwei benachbarten Knoten die gleiche
Farbe haben?
Satz 6.35
FÄRBBARKEIT ist NP-vollständig für k ≥ 3.
Beweis:
3KNF-SAT ≤p 3FÄRBBARKEIT
Satz 6.36
2FÄRBBARKEIT ∈ P
355
Die NP-Bibel, der NP-Klassiker:
Michael Garey and David Johnson.
Computers and Intractability: A Guide to the Theory of
NP-Completeness. 1979.
356
Die NP-Bibel, der NP-Klassiker:
Michael Garey and David Johnson.
Computers and Intractability: A Guide to the Theory of
NP-Completeness. 1979.
356
Man weiß nicht ob P = NP.
357
Man weiß nicht ob P = NP. Aber man weiß (Ladner 1975)
P 6= NP =⇒
357
Man weiß nicht ob P = NP. Aber man weiß (Ladner 1975)
' $
P 6= NP =⇒ NP =
& %
357
Man weiß nicht ob P = NP. Aber man weiß (Ladner 1975)
' $
NP-vollständig
P 6= NP =⇒ NP =
& %
357
Man weiß nicht ob P = NP. Aber man weiß (Ladner 1975)
' $
NP-vollständig
P 6= NP =⇒ NP =
& %
357
Kurt Gödel.
Über formal unentscheidbare Sätze der Principia Mathematica
und verwandter Systeme I. Monatshefte für Mathematik, 1931.
358
Kurt Gödel.
Über formal unentscheidbare Sätze der Principia Mathematica
und verwandter Systeme I. Monatshefte für Mathematik, 1931.
Kurt Gödel
1906 (Brünn) –
1978 (Princeton)
358
6.5 Die Unvollständigkeit der Arithmetik
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
Zahlen: N 0 1 2 ...
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
Zahlen: N 0 1 2 ...
Terme: T V N (T + T ) (T ∗ T )
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
Zahlen: N 0 1 2 ...
Terme: T V N (T + T ) (T ∗ T )
Formeln: F (T = T ) ¬F (F ∧ F ) (F ∨ F )
∃V. F
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
Zahlen: N 0 1 2 ...
Terme: T V N (T + T ) (T ∗ T )
Formeln: F (T = T ) ¬F (F ∧ F ) (F ∨ F )
∃V. F
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
Zahlen: N 0 1 2 ...
Terme: T V N (T + T ) (T ∗ T )
Formeln: F (T = T ) ¬F (F ∧ F ) (F ∨ F )
∃V. F
359
6.5 Die Unvollständigkeit der Arithmetik
Syntax der Arithmetik:
Variablen: V x y z ...
Zahlen: N 0 1 2 ...
Terme: T V N (T + T ) (T ∗ T )
Formeln: F (T = T ) ¬F (F ∧ F ) (F ∨ F )
∃V. F
359
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
360
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
Sind n1 , . . . , nk N so ist F (n1 , . . . , nk ) das Ergebnis der
Substitution von n1 , . . . , nk für die freien Vorkommen von
x1 , . . . , x k .
360
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
Sind n1 , . . . , nk N so ist F (n1 , . . . , nk ) das Ergebnis der
Substitution von n1 , . . . , nk für die freien Vorkommen von
x1 , . . . , x k .
Beispiel 6.38
F (x, y) = (x = y ∧ ∃x. x = y)
360
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
Sind n1 , . . . , nk N so ist F (n1 , . . . , nk ) das Ergebnis der
Substitution von n1 , . . . , nk für die freien Vorkommen von
x1 , . . . , x k .
Beispiel 6.38
F (x, y) = (x = y ∧ ∃x. x = y)
F (5, 7) = (5 = 7 ∧ ∃x. x = 7)
360
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
Sind n1 , . . . , nk N so ist F (n1 , . . . , nk ) das Ergebnis der
Substitution von n1 , . . . , nk für die freien Vorkommen von
x1 , . . . , x k .
Beispiel 6.38
F (x, y) = (x = y ∧ ∃x. x = y)
F (5, 7) = (5 = 7 ∧ ∃x. x = 7)
360
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
Sind n1 , . . . , nk N so ist F (n1 , . . . , nk ) das Ergebnis der
Substitution von n1 , . . . , nk für die freien Vorkommen von
x1 , . . . , x k .
Beispiel 6.38
F (x, y) = (x = y ∧ ∃x. x = y)
F (5, 7) = (5 = 7 ∧ ∃x. x = 7)
360
Notation: F (x1 , . . . , xk ) bezeichnet eine Formel F , in der
höchstens x1 , . . . , xk frei vorkommen.
Sind n1 , . . . , nk N so ist F (n1 , . . . , nk ) das Ergebnis der
Substitution von n1 , . . . , nk für die freien Vorkommen von
x1 , . . . , x k .
Beispiel 6.38
F (x, y) = (x = y ∧ ∃x. x = y)
F (5, 7) = (5 = 7 ∧ ∃x. x = 7)
360
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
(F ∨ G) W gdw F W oder G W
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
(F ∨ G) W gdw F W oder G W
∃x. F (x) gdw es n N gibt, so dass F (n) W
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
(F ∨ G) W gdw F W oder G W
∃x. F (x) gdw es n N gibt, so dass F (n) W
Fakt 6.41
Für jeden Satz F gilt entweder F W oder ¬F W
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
(F ∨ G) W gdw F W oder G W
∃x. F (x) gdw es n N gibt, so dass F (n) W
Fakt 6.41
Für jeden Satz F gilt entweder F W oder ¬F W
NB Ob eine Formel mit freien Variablen wahr ist, kann vom Wert
der freien Variablen abhängen:
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
(F ∨ G) W gdw F W oder G W
∃x. F (x) gdw es n N gibt, so dass F (n) W
Fakt 6.41
Für jeden Satz F gilt entweder F W oder ¬F W
NB Ob eine Formel mit freien Variablen wahr ist, kann vom Wert
der freien Variablen abhängen:
∃x. x + x = y
361
Die Menge der wahren Sätze der Arithmetik nennen wir W :
Definition 6.40
(t1 = t2 ) W gdw t1 und t2 den selben Wert haben.
¬F W gdw F W
(F ∧ G) W gdw F W und G W
(F ∨ G) W gdw F W oder G W
∃x. F (x) gdw es n N gibt, so dass F (n) W
Fakt 6.41
Für jeden Satz F gilt entweder F W oder ¬F W
NB Ob eine Formel mit freien Variablen wahr ist, kann vom Wert
der freien Variablen abhängen:
∃x. x + x = y
362
Definition 6.42
Eine partielle Funktion f : Nk → N ist arithmetisch repräsentierbar
gdw es eine Formel F (x1 , . . . , xk , y) gibt, so dass für alle
n1 , . . . , nk , m N gilt:
Satz 6.43
Jede WHILE-berechenbare Funktion ist arithmetisch
repräsentierbar.
362
Satz 6.44
W ist nicht entscheidbar.
Korollar 6.45
W ist nicht semi-entscheidbar.
363
Wir kodieren Beweise als Zahlen.
Definition 6.46
Ein Beweissystem für die Arithmetik ist ein entscheidbares Prädikat
Bew : N × S → {0, 1}
wobei wir Bew(b, F ) lesen als b ist Beweis für Formel F“.
”
Ein Beweissystem Bew ist korrekt gdw
Bew(b, F ) =⇒ F W.
364
Satz 6.47 (Gödel)
Es gibt kein korrektes und vollständiges Beweissystem für die
Arithmetik.
Beweis:
Denn mit jedem korrekten und vollständigen Beweissystem kann
man χ0W (F ) programmieren:
b := 0
while Bew(b, F ) = 0 do b := b + 1
output(1)
365
6.6 Die Entscheidbarkeit der Presburger Arithmetik
366
6.6 Die Entscheidbarkeit der Presburger Arithmetik
Syntax der Presburger Arithmetik:
Variablen: V → x | y | z | ...
Zahlen: N → 0 | 1 | 2 | ...
Terme: T → V |N |T +T
Formeln: F → (T = T ) | ¬F | (F ∧ F ) | (F ∨ F )
| ∃V. F
366
6.6 Die Entscheidbarkeit der Presburger Arithmetik
Syntax der Presburger Arithmetik:
Variablen: V → x | y | z | ...
Zahlen: N → 0 | 1 | 2 | ...
Terme: T → V |N |T +T
Formeln: F → (T = T ) | ¬F | (F ∧ F ) | (F ∨ F )
| ∃V. F
366
6.6 Die Entscheidbarkeit der Presburger Arithmetik
Syntax der Presburger Arithmetik:
Variablen: V → x | y | z | ...
Zahlen: N → 0 | 1 | 2 | ...
Terme: T → V |N |T +T
Formeln: F → (T = T ) | ¬F | (F ∧ F ) | (F ∨ F )
| ∃V. F
366
Mojzesz Presburger.
Über die Vollständigkeit eines gewissen Systems der
Arithmetik ganzer Zahlen, in welchem die Addition als einzige
Operation hervortritt. 1929.
367
Mojzesz Presburger.
Über die Vollständigkeit eines gewissen Systems der
Arithmetik ganzer Zahlen, in welchem die Addition als einzige
Operation hervortritt. 1929.
Mojzesz Presburger 1904 – 1943
367
Mojzesz Presburger.
Über die Vollständigkeit eines gewissen Systems der
Arithmetik ganzer Zahlen, in welchem die Addition als einzige
Operation hervortritt. 1929.
Mojzesz Presburger 1904 – 1943
367
Presburger Arithmetik == normale Arithmetik
ohne Multiplikation
368
Vereinfachte Presburger Formeln:
φ :: = x+y =z | x=n |
φ1 ∧ φ2 | ¬φ |
∃ x. φ
369
Vereinfachte Presburger Formeln:
φ :: = x+y =z | x=n |
φ1 ∧ φ2 | ¬φ |
∃ x. φ
Bemerkungen
Durch sukzessive Addition kann man Multiplikation mit
Konstanten simulieren.
(Wie?)
369
Vereinfachte Presburger Formeln:
φ :: = x+y =z | x=n |
φ1 ∧ φ2 | ¬φ |
∃ x. φ
Bemerkungen
Durch sukzessive Addition kann man Multiplikation mit
Konstanten simulieren.
(Wie?)
Das Rucksackproblem lässt sich in PA ausdrücken.
(Wie?)
369
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
370
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
370
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
370
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
371
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
372
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
373
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
374
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
375
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
376
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
377
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
378
Allgemeineres Ziel: PSAT
Finde Werte in N für die freien Variablen , so dass φ gilt ...
Bemerkung:
Ganzzahlige Optimierung lässt sich als PSAT-Problem ausdrücken.
(Wie?)
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
379
Beobachtung:
380
Beobachtung:
380
Beobachtung:
380
Beobachtung:
380
Weg-Projizierung der x-Komponente:
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
381
Weg-Projizierung der x-Komponente:
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
382
Weg-Projizierung der x-Komponente:
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
382
Weg-Projizierung der x-Komponente:
213 t 1 0 1 0 1 0 1 1
42 z 0 1 0 1 0 1 0 0
89 y 1 0 0 1 1 0 1 0
17 x 1 0 0 0 1 0 0 0
382
Automaten für Basis-Prädikate:
x=5
1 0 1
0 1 2 3 0
383
Automaten für Basis-Prädikate:
x+x = y
10
00 0 1 11
01
384
Automaten für Basis-Prädikate:
x+y = z
110
000 111
011 0 1 010
101 100
001
385
Ergebnisse:
c·n
Ferrante, Rackoff,1973 : PSAT ≤ DSPACE(22 )
386
Ergebnisse:
c·n
Ferrante, Rackoff,1973 : PSAT ≤ DSPACE(22 )
c·n
Fischer, Rabin,1974 : PSAT ≥ NTIME(22 )
386
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
Java 7
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
Reguläre Sprachen
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387
Informatik im Jahr 2100: Eine Vorhersage
387