0% fanden dieses Dokument nützlich (0 Abstimmungen)
56 Ansichten1.298 Seiten

Skript Theoretische Informatik

Das Dokument führt in formale Sprachen und Grammatiken ein. Es erklärt grundlegende Begriffe wie Alphabete, Wörter und formale Sprachen. Außerdem werden Beispiele für formale Sprachen und Regeln gegeben, die die Struktur von Programmiersprachen und Sätzen beschreiben.

Hochgeladen von

xcntffpbmz
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
56 Ansichten1.298 Seiten

Skript Theoretische Informatik

Das Dokument führt in formale Sprachen und Grammatiken ein. Es erklärt grundlegende Begriffe wie Alphabete, Wörter und formale Sprachen. Außerdem werden Beispiele für formale Sprachen und Regeln gegeben, die die Struktur von Programmiersprachen und Sätzen beschreiben.

Hochgeladen von

xcntffpbmz
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Einführung in die

Theoretische Informatik

Tobias Nipkow + Helmut Seidl + Javier Esparza

Fakultät für Informatik


TU München

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

John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman.


Introduction to Automata Theory, Languages, and
Computation.
Dexter Kozen.
Automata and Computability.
Michael Sipser.
Introduction to the Theory of Computation.
Katrin Erk, Lutz Priese.
Theoretische Informatik: Eine umfassende Einführung.
Uwe Schöning.
Theoretische Informatik — kurzgefasst.

4
Kapitel II Formale Sprachen
1. Einleitung: Kommunikation mit Rechnern

5
Kapitel II Formale Sprachen
1. Einleitung: Kommunikation mit Rechnern

Abbildung: Rechenmaschinen für arithmetische Operationen, XVII-XX Jh.


(Addition, Substraktion, Multiplikation, Division)
(By Ezrdr (Own work), via Wikipedia)

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:

Satz → Nominalphrase Verbalphrase


Verbalphrase → Verb Nominalphrase
Nominalphrase → Artikel Nomen
Satz → Präpositionalphrase Verbalphrase

11
Beispiele von Regeln für den Bau von Sätzen:

Satz → Nominalphrase Verbalphrase


Verbalphrase → Verb Nominalphrase
Nominalphrase → Artikel Nomen
Satz → Präpositionalphrase Verbalphrase

Beispiele von Regeln für den Bau von Programmen:

keyword item → identifier “=” expression


identifier → letter identifier2
identifier2 → letter identifier2
identifier2 → “”

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

Achtung: i.A. gilt A(B ∩ C) = AB ∩ AC nicht.

16
Einige Rechenregeln:
Lemma 2.4
∅A = ∅
{}A = A

Lemma 2.5
A(B ∪ C) = AB ∪ AC
(A ∪ B)C = AC ∪ BC

Achtung: i.A. gilt A(B ∩ C) = AB ∩ AC nicht.


Lemma 2.6
A∗ A∗ = A∗

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

gdw es eine Regel β → β 0 in P und Wörter α1 , α2 gibt, so dass

α = α1 βα2 und α0 = α1 β 0 α2

Beispiel : Für die Grammatik der arithmetischen Ausdrücken gilt


a + hTermi + b →G a + hTermi ∗ hFactori + b

19
Definition 2.9
Eine Grammatik G = (V, Σ, P, S) induziert eine Ableitungsrelation
→G auf Wörtern über V ∪ Σ:

α →G α0

gdw es eine Regel β → β 0 in P und Wörter α1 , α2 gibt, so dass

α = α1 βα2 und α0 = α1 β 0 α2

Beispiel : Für die Grammatik der arithmetischen Ausdrücken gilt


a + hTermi + b →G a + hTermi ∗ hFactori + b

Eine Sequenz α1 →G α2 →G · · · →G αn ist eine Ableitung von αn


aus α1 .
Wenn α1 = S und αn ∈ Σ∗ , dann erzeugt G das Wort αn .
Die Sprache von G ist die Menge aller Wörter, die von G erzeugt
werden. Sie wird mit L(G) bezeichnet.
19
Beispiel 2.10 (Arithmetische Ausdrücke)
hExpri → hTermi
hExpri → hExpri + hTermi
hTermi → hFactori
hTermi → hTermi ∗ hFactori
hFactori → a|b|c
hFactori → (hExpri)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori

→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori

→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori

→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori

→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori

→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori

→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + hTermi)
→ a ∗ (b + 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + hTermi)
→ a ∗ (b + 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + hTermi)
→ a ∗ (b + hTermi) → a ∗ (b + hFactori)
→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + hTermi)
→ a ∗ (b + hTermi) → a ∗ (b + hFactori)
→ 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)

Das Startsymbol ist hExpri.


Eine Ableitung von a ∗ (b + c) :

hExpri → hTermi → hTermi ∗ hFactori


→ hFactori ∗ hFactori → a ∗ hFactori
→ a ∗ (hExpri) → a ∗ (hExpri + hTermi)
→ a ∗ (hTermi + hTermi) → a ∗ (hFactori + hTermi)
→ a ∗ (b + hTermi) → a ∗ (b + hFactori)
→ a ∗ (b + c)

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc → aBaBScc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc → aBaBScc → aBaBcc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc → aBaBScc → aBaBcc → aaBBcc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc → aBaBScc → aBaBcc → aaBBcc → aaBbcc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc → aBaBScc → aBaBcc → aaBBcc → aaBbcc →
aabBcc

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

Es gilt L(G1 ) 6= M weil S → abcS → abcabcS → abcabc


Aber M ⊆ L(G1 ). Ableitung von aabbcc aus S:
S → abcS → abcabcS → abcabc → abacbc → aabcbc → aabbcc

Es gilt: L(G2 ) = M . Ableitung von aabbcc aus S:


S → aBSc → aBaBScc → aBaBcc → aaBBcc → aaBbcc →
aabBcc → aabbcc

21
Definition 2.12 (Reflexive transitive Hülle)

α →0G α
α →n+1
G γ :⇔ ∃β. α →nG β →G γ
α →∗G β :⇔ ∃n. α →nG β
n
α →+
G β :⇔ ∃n > 0. α →G β

Beispiel: hExpri →11 ∗


G a ∗ (b + c) und so hExpri →G a ∗ (b + c).

Es gilt: L(G) = {w ∈ Σ∗ | S →∗G w}

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:

Typ 3 ⊂ Typ 2 ⊂ Typ 1 ⊂ Typ 0

23
Grammatiken und Sprachklassen:

Typ 3 Rechtslineare Grammatik Reguläre Sprachen

24
Grammatiken und Sprachklassen:

Typ 3 Rechtslineare Grammatik Reguläre Sprachen


Typ 2 Kontextfreie Grammatik Kontextfreie Sprachen

24
Grammatiken und Sprachklassen:

Typ 3 Rechtslineare Grammatik Reguläre Sprachen


Typ 2 Kontextfreie Grammatik Kontextfreie Sprachen
Typ 1 Kontextsensitive Grammatik Kontextsens. Sprachen

24
Grammatiken und Sprachklassen:

Typ 3 Rechtslineare Grammatik Reguläre Sprachen


Typ 2 Kontextfreie Grammatik Kontextfreie Sprachen
Typ 1 Kontextsensitive Grammatik Kontextsens. Sprachen
Typ 0 Phrasenstrukturgrammatik Rekursiv aufzählbare Sprachen

24
Grammatiken und Sprachklassen:

Typ 3 Rechtslineare Grammatik Reguläre Sprachen


Typ 2 Kontextfreie Grammatik Kontextfreie Sprachen
Typ 1 Kontextsensitive Grammatik Kontextsens. Sprachen
Typ 0 Phrasenstrukturgrammatik Rekursiv aufzählbare Sprachen

Satz 2.13
L(Typ 3) ⊂ L(Typ 2) ⊂ L(Typ 1) ⊂ L(Typ 0)

24
Grammatiken und Sprachklassen:

Typ 3 Rechtslineare Grammatik Reguläre Sprachen


Typ 2 Kontextfreie Grammatik Kontextfreie Sprachen
Typ 1 Kontextsensitive Grammatik Kontextsens. Sprachen
Typ 0 Phrasenstrukturgrammatik Rekursiv aufzählbare Sprachen

Satz 2.13
L(Typ 3) ⊂ L(Typ 2) ⊂ L(Typ 1) ⊂ L(Typ 0)

Bemerkung Wir benutzen später eine etwas liberalere Definition


von kontextfreien Grammatiken, die aber die gleiche Klasse von
kontextfreien Sprachen erzeugt.

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

Rechtslineare Endliche Reguläre


Grammatiken Automaten Ausdrücke

26
3.1 Deterministische endliche Automaten
b a a, b

a b
0 1 2

Eingabewort baba Zustandsfolge 0,0,1,2,2.

Erkannte Sprache: Menge der Wörter, die vom Startzustand in


einen Endzustand führen.

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 } ,

wobei δ̂ : Q × Σ∗ → Q induktiv definiert ist durch

δ̂(q, ) = q
δ̂(q, aw) = δ̂(δ(q, a), w) für a ∈ Σ, w ∈ Σ∗ .

( δ̂(q, w) bezeichnet den Zustand, den man aus q mit w erreicht. )


Eine Sprache ist regulär gdw sie von einem DFA akzeptiert wird.

Eigenschaften von δ̂:


δ̂(q, a) = δ(q, a).
δ̂(q, wa) = δ(δ̂(q, w), a).

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 ·

Ein DFA für die Dezimalzahlen

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

Wort wird akzeptiert gdw es einen Weg zum Endzustand gibt.


Intuitive Vorstellung: Der Automat “rät” den richtigen Weg.
Nicht nutzlich als Recognizer, aber doch als Zwischenschritt (oder
als Datenstruktur).

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

Es folgt: δ̄ˆ : P(Q) × Σ∗ → P(Q)

38
Erweiterung von δ : Q × Σ → P(Q)
auf δ̄ : P(Q) × Σ → P(Q) definiert durch
[
δ̄(S, a) := δ(q, a)
q∈S

Es folgt: δ̄ˆ : P(Q) × Σ∗ → P(Q)

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

Es folgt: δ̄ˆ : P(Q) × Σ∗ → P(Q)

Intuition:
δ̄ˆ(S, w) ist Menge aller Zustände,
die sich von einem Zustand in S aus mit w erreichen lassen.

Die von N = (Q, Σ, δ, q0 , F ) akzeptierte Sprache ist

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

Es folgt: δ̄ˆ : P(Q) × Σ∗ → P(Q)

Intuition:
δ̄ˆ(S, w) ist Menge aller Zustände,
die sich von einem Zustand in S aus mit w erreichen lassen.

Die von N = (Q, Σ, δ, q0 , F ) akzeptierte Sprache ist

L(N ) := {w ∈ Σ∗ | δ̄ˆ({q0 }, w) ∩ F 6= ∅}

Oft schreiben wir nur δ statt δ̄ und δ̂ statt δ̄ˆ


(vgl. overloading in Programmiersprachen).

38
Beispiel
0, 1

1 0, 1
p q r

δ̄ˆ({p, q}, 10)


= δ̄ˆ(δ̄({p, q}, 1), 0)
= δ̄ˆ(δ(p, 1) ∪ δ(q, 1), 0)
= δ̄ˆ({p, q, r}, 0)
= δ̄({p, q, r}, 0)
= δ(p, 0) ∪ δ(q, 0) ∪ δ(r, 0)
= {p} ∪ {r} ∪ ∅ = {p, 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

Aufgabe: Und wenn S → aX | aY | ?


40
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 }

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 }

Es gilt (Induktion über n):

S → a1 X1 →G a1 a2 X2 →G · · · →G a1 . . . an−1 Xn−1 →G a1 . . . an

ist eine Ableitung von G gdw

qf ∈ δ(S, a1 . . . an ) .

Damit gilt L(G) = L(A). (Fall mit S → : Aufgabe)


41
Lösung der Aufgabe: Wenn die Grammatik die Produktion S → 
enthält, dann setze F = {S, qf }.

Aufgabe: Sei G = (V, T, P, S) eine rechtslineare Grammatik, die


die Produktion S →  nicht enthält. Definiere die Grammatik
G0 = (V, T, P ∪ {S → }, S) (d.h., wir fügen S →  zu P hinzu).
Gilt immer L(G0 ) = L(G) ∪ {} ?
Geben Sie eine Grammatik G00 mit L(G00 ) = L(G) ∪ {} 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

Lk := {w ∈ {0, 1}∗ | das k-letzte Bit von w ist 1}

45
Beispiel 3.11

Lk := {w ∈ {0, 1}∗ | das k-letzte Bit von w ist 1}


Ein NFA für diese Sprache:

0, 1

q0 1 q1 0, 1 q2 0, 1 ··· 0, 1 qk

45
Beispiel 3.11

Lk := {w ∈ {0, 1}∗ | das k-letzte Bit von w ist 1}


Ein NFA für diese Sprache:

0, 1

q0 1 q1 0, 1 q2 0, 1 ··· 0, 1 qk

Die Potenzmengenkonstruktion liefert einen DFA für Lk mit 2k


Zuständen. Geht es kompakter?

45
Beispiel 3.11

Lk := {w ∈ {0, 1}∗ | das k-letzte Bit von w ist 1}


Ein NFA für diese Sprache:

0, 1

q0 1 q1 0, 1 q2 0, 1 ··· 0, 1 qk

Die Potenzmengenkonstruktion liefert einen DFA für Lk mit 2k


Zuständen. Geht es kompakter?

Lemma 3.12
Jeder DFA M mit L(M ) = Lk hat mindestens 2k Zuständen.

Im schlimmsten Fall ist ein exponentieller Sprung unvermeidlich.

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 .

Zuerst zeigen wir für alle w1 , w2 ∈ {0, 1}k :


wenn w1 6= w2 dann δ̂(q0 , w1 ) 6= δ̂(q0 , w2 ).
Annahme: Es gibt w1 , w2 ∈ {0, 1}k mit w1 6= w2 aber
δ̂(q0 , w1 ) = δ̂(q0 , w2 ). Wir leiten einen Widerspruch ab:

46
Beweis:
Indirekt. Sei M ein DFA mit < 2k Zuständen, so dass L(M ) = Lk .

Zuerst zeigen wir für alle w1 , w2 ∈ {0, 1}k :


wenn w1 6= w2 dann δ̂(q0 , w1 ) 6= δ̂(q0 , w2 ).
Annahme: Es gibt w1 , w2 ∈ {0, 1}k mit w1 6= w2 aber
δ̂(q0 , w1 ) = δ̂(q0 , w2 ). Wir leiten einen Widerspruch ab:
Sei w1 = wai . . . ak und w2 = wbi . . . bk mit ai 6= bi
OE sei ai = 1, bi = 0.
Es gilt einerseits: w1 0i−1 = wai . . . ak 0i−1 ∈ Lk
w2 0i−1 = wbi . . . bk 0i−1 ∈
/ Lk
Aber es gilt auch: δ̂(q0 , w1 0i−1 ) = δ̂(δ̂(q0 , w1 ), 0i−1 ) =
δ̂(δ̂(q0 , w2 ), 0i−1 ) = δ̂(q0 , w2 0i−1 )

46
Beweis:
Indirekt. Sei M ein DFA mit < 2k Zuständen, so dass L(M ) = Lk .

Zuerst zeigen wir für alle w1 , w2 ∈ {0, 1}k :


wenn w1 6= w2 dann δ̂(q0 , w1 ) 6= δ̂(q0 , w2 ).
Annahme: Es gibt w1 , w2 ∈ {0, 1}k mit w1 6= w2 aber
δ̂(q0 , w1 ) = δ̂(q0 , w2 ). Wir leiten einen Widerspruch ab:
Sei w1 = wai . . . ak und w2 = wbi . . . bk mit ai 6= bi
OE sei ai = 1, bi = 0.
Es gilt einerseits: w1 0i−1 = wai . . . ak 0i−1 ∈ Lk
w2 0i−1 = wbi . . . bk 0i−1 ∈
/ Lk
Aber es gilt auch: δ̂(q0 , w1 0i−1 ) = δ̂(δ̂(q0 , w1 ), 0i−1 ) =
δ̂(δ̂(q0 , w2 ), 0i−1 ) = δ̂(q0 , w2 0i−1 )
Es folgt: M hat mindestens 2k Zustände.

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

Wir suchen Recognizer für Typ 3 Grammatiken, die auch solche


Produktionen enthalten.

48
Definition 3.15
Ein NFA mit -Übergängen (auch -NFA) ist ein NFA mit einem
speziellen Symbol  ∈
/ Σ und mit

δ : Q × (Σ ∪ {}) → P(Q) .

Ein -Übergang darf ausgeführt werden, ohne dass ein


Eingabezeichen gelesen wird.

49
Definition 3.15
Ein NFA mit -Übergängen (auch -NFA) ist ein NFA mit einem
speziellen Symbol  ∈
/ Σ und mit

δ : Q × (Σ ∪ {}) → P(Q) .

Ein -Übergang darf ausgeführt werden, ohne dass ein


Eingabezeichen gelesen wird.

0 1 0

q0  q1  q2

Akzeptiert: , 00, 11, . . . Nicht akzeptiert: 101, . . .

49
Definition 3.15
Ein NFA mit -Übergängen (auch -NFA) ist ein NFA mit einem
speziellen Symbol  ∈
/ Σ und mit

δ : Q × (Σ ∪ {}) → P(Q) .

Ein -Übergang darf ausgeführt werden, ohne dass ein


Eingabezeichen gelesen wird.

0 1 0

q0  q1  q2

Akzeptiert: , 00, 11, . . . Nicht akzeptiert: 101, . . .


Bemerkung:  6= ;  ist ein einzelnes Symbol,  das leere Wort.

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

Falls N das leere Wort  akzeptiert, also falls

∃i ≥ 0. δ̂({q0 }, i ) ∩ F 6= ∅

dann setze F 0 := F ∪ {q0 }, sonst setze F 0 := F .

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

Falls N das leere Wort  akzeptiert, also falls

∃i ≥ 0. δ̂({q0 }, i ) ∩ F 6= ∅

dann setze F 0 := F ∪ {q0 }, sonst setze F 0 := F .

Ab jetzt: “-Übergang” und “-NFA”.


50
Beispiel 3.17

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.

∗ ist die Kleene’sche Iteration (Kleene iteration, Kleene star).


Bindungsstärke: ∗ bindet stärker als Konkatenation stärker als |
ab∗ = a(b∗ ) 6= (ab)∗
ab | c = (ab) | c 6= a(b | c)
54
Definition 3.20
Zu einem regulären Ausdruck γ ist die zugehörige Sprache L(γ)
rekursiv definiert:
L(∅) = ∅
L() = {}
L(a) = {a}
L(αβ) = L(α)L(β)
L(α | β) = L(α) ∪ L(β)
L(α∗ ) = L(α)∗

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, .}

(+ | − | )(DD∗ | DD∗ .D∗ | D∗ .DD∗ )

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 γ.

Die Basisfälle γ = ∅, γ = , und γ = a ∈ Σ sind offensichtlich.

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(β).


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 einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .

63
Fall γ = α∗ :
Nach Induktionsannahme können wir einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .


Fall γ = α∗ :
Nach Induktionsannahme können wir einen -NFA Nα konstruieren
mit
L(Nα ) = L(α) .


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 }

Behauptung: Für alle i, j ∈ {1, . . . , n} und k ∈ {0, . . . , n} können


k konstruieren mit L(αk ) = Rk .
wir einen RE αij ij ij

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

weil man jede Folge von Zahlen ≤ k + 1 schreiben kann als

F1 , k + 1, F2 , k + 1, . . . , k + 1, Fm

wobei jede Fl Folge von Zahlen ≤ k ist.

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

weil man jede Folge von Zahlen ≤ k + 1 schreiben kann als

F1 , k + 1, F2 , k + 1, . . . , k + 1, Fm

wobei jede Fl Folge von Zahlen ≤ k ist.


Wir definieren rekursiv
k+1 k k k
αij = αij | αi(k+1) (α(k+1)(k+1) )∗ α(k+1)j
k

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

weil man jede Folge von Zahlen ≤ k + 1 schreiben kann als

F1 , k + 1, F2 , k + 1, . . . , k + 1, Fm

wobei jede Fl Folge von Zahlen ≤ k ist.


Wir definieren rekursiv
k+1 k k k
αij = αij | αi(k+1) (α(k+1)(k+1) )∗ α(k+1)j
k

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

RE → -NFA: RE der Länge n O(n) Zustände

67
Unsere Konversionen auf einen Blick:
DFA NFA ← -NFA
%
RE

RE → -NFA: RE der Länge n O(n) Zustände


-NFA → NFA: Q Q

67
Unsere Konversionen auf einen Blick:
DFA ← NFA ← -NFA
%
RE

RE → -NFA: RE der Länge n O(n) Zustände


-NFA → NFA: Q Q
NFA → DFA: n Zustände O(2n ) Zustände

67
Unsere Konversionen auf einen Blick:
DFA ← NFA ← -NFA
& ↓ %
RE

RE → -NFA: RE der Länge n O(n) Zustände


-NFA → NFA: Q Q
NFA → DFA: n Zustände O(2n ) Zustände
FA → RE: n Zustände RE der Länge O(n4n )

67
Unsere Konversionen auf einen Blick:
DFA ← NFA ← -NFA
& ↓ %
RE

RE → -NFA: RE der Länge n O(n) Zustände


-NFA → NFA: Q Q
NFA → DFA: n Zustände O(2n ) Zustände
FA → RE: n Zustände RE der Länge O(n4n )
k
Beweis FA→RE: mk := maximale Länge von αij
m0 = c1 |Σ|
mk+1 = 4 ∗ mk + c2
mk ∈ O(4k )
Länge des Gesamtausdrucks: O(n4n )

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:

Komplementierung erzwingt Determinierung.


Komplementierung ist (potenziell) teuer.

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.

Parallelismus = Kreuzprodukt der Zustandsräume

70
Die Produkt-Konstruktion: Durchschnitt direkt auf DFAs, ohne
Umweg über de Morgan.
Beide DFAs laufen synchron parallel, Wort wird akzeptiert wenn
beide akzeptieren.

Parallelismus = Kreuzprodukt der Zustandsräume

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))

ein DFA der L(M1 ) ∩ L(M2 ) akzeptiert.

70
Die Produkt-Konstruktion: Durchschnitt direkt auf DFAs, ohne
Umweg über de Morgan.
Beide DFAs laufen synchron parallel, Wort wird akzeptiert wenn
beide akzeptieren.

Parallelismus = Kreuzprodukt der Zustandsräume

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))

ein DFA der L(M1 ) ∩ L(M2 ) akzeptiert.

Erinnerung: |Q1 × Q2 | = |Q1 ||Q2 |.

70
Beweis:
Durch Induktion über w läßt sich zeigen:

δ̂((q1 , q2 ), w) = (δ̂1 (q1 , w), δ̂2 (q2 , w)).

71
Beweis:
Durch Induktion über w läßt sich zeigen:

δ̂((q1 , q2 ), w) = (δ̂1 (q1 , w), δ̂2 (q2 , w)).

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:

δ̂((q1 , q2 ), w) = (δ̂1 (q1 , w), δ̂2 (q2 , w)).

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 )

Funktioniert Durchschnitt durch Produkt auch für NFAs?

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(β)

Beispiel zum Unterschied von = (syntaktische Identität) und ≡


(Bedeutungsäquivalenz):
(α | β) ≡ (β | α) aber (α | β) 6= (β | α).

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?

Satz 3.31 (Redko 1964)


Es gibt keine endliche Menge von gültigen Äquivalenzen aus denen
sich alle gültigen Äquivalenzen herleiten lassen.

76
Lässt sich jede gültige Äquivalenz α ≡ β aus den obigen Lemmas
für ≡ herleiten?

Satz 3.31 (Redko 1964)


Es gibt keine endliche Menge von gültigen Äquivalenzen aus denen
sich alle gültigen Äquivalenzen herleiten lassen.

Wenn man mehr als nur Äquivalenzen zulässt:


Arto Salomaa.
Two Complete Axiom Systems for the Algebra of Regular
Events. Journal of the ACM, 1966.

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?

Satz 3.32 (Pumping Lemma für reguläre Sprachen)


Sei R ⊆ Σ∗ regulär. Dann gibt es ein n > 0, so dass sich jedes
z ∈ R mit |z| ≥ n so in z = uvw zerlegen lässt, dass
v 6= ,
|uv| ≤ n, und
∀i ≥ 0. uv i w ∈ R.

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

Dann muss es 0 ≤ i < j ≤ n geben mit pi = pj .

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

Dann muss es 0 ≤ i < j ≤ n geben mit pi = pj .


Wir teilen z wie folgt auf: a1 . . . ai ai+1 . . . aj aj+1 . . . a|z|
| {z } | {z } | {z }
u v w

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

Dann muss es 0 ≤ i < j ≤ n geben mit pi = pj .


Wir teilen z wie folgt auf: a1 . . . ai ai+1 . . . aj aj+1 . . . a|z|
| {z } | {z } | {z }
u v w
Damit gilt:
|uv| ≤ n,
v 6= , und
∀l ≥ 0. uv l w ∈ R.

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

Dann muss es 0 ≤ i < j ≤ n geben mit pi = pj .


Wir teilen z wie folgt auf: a1 . . . ai ai+1 . . . aj aj+1 . . . a|z|
| {z } | {z } | {z }
u v w
Damit gilt:
|uv| ≤ n,
v 6= , und
∀l ≥ 0. uv l w ∈ R.

[Darf A NFA sein?]


79
Logische Struktur: für jede reguläre Sprache R
∃n > 0.

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.

Pumping-Lemma-Zahl für L(ab∗ c)? Und für {aaaaaa}?

81
Falls L(M ) = R so ist |QM | eine Pumping-Lemma-Zahl für R.

Pumping-Lemma-Zahl für L(ab∗ c)? Und für {aaaaaa}?


Ist |QM | + 1 auch eine Pumping-Lemma-Zahl für R?

Anwendung des Pumping Lemmas:


Um zu beweisen, dass R nicht regulär ist, zeige, dass Spieler I
keine Gewinnstrategie hat.
Durch Widerspruch
Äquivalent: Zeige, dass Spieler II eine Gewinnstrategie hat
(Regeln, um z in Abhängigkeit von R und n zu wählen).

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.

“Endliche Automaten können nicht unbegrenzt zählen”

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.

“Endliche Automaten können nicht unbegrenzt zählen”

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.

“Endliche Automaten können nicht unbegrenzt zählen”

Ist die Sprache {an bn | n ≤ 106 } regulär?

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

und uv l w ∈ L für alle l ∈ N. D.h. insb. |uv 2 w| ist Quadratzahl.

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

und uv l w ∈ L für alle l ∈ N. D.h. insb. |uv 2 w| ist Quadratzahl.


Dies führt zu einem Widerspruch:

n2 = |z| = |uvw| < |uv 2 w| ≤ n2 + n < n2 + 2n + 1 = (n + 1)2

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

und uv l w ∈ L für alle l ∈ N. D.h. insb. |uv 2 w| ist Quadratzahl.


Dies führt zu einem Widerspruch:

n2 = |z| = |uvw| < |uv 2 w| ≤ n2 + n < n2 + 2n + 1 = (n + 1)2

Denn zwischen n2 und (n + 1)2 liegt keine Quadratzahl.

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.

regulär ⊂ Pumping-Lemma gilt ⊂ alle Sprachen

85
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt

Eingabe: Ein oder mehrere Objekte, die reguläre Sprachen


beschreiben (DFA, NFA, RE Typ 3 Gram., . . . )
Frage: Haben diese Objekte eine Eigenschaft X?

86
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt

Eingabe: Ein oder mehrere Objekte, die reguläre Sprachen


beschreiben (DFA, NFA, RE Typ 3 Gram., . . . )
Frage: Haben diese Objekte eine Eigenschaft X?

Ein (Entscheidungs)Problem ist entscheidbar, wenn es einen


Algorithmus gibt, der bei jeder Eingabe in endlicher Zeit die
richtige Antwort auf die Frage festellt.

86
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt

Eingabe: Ein oder mehrere Objekte, die reguläre Sprachen


beschreiben (DFA, NFA, RE Typ 3 Gram., . . . )
Frage: Haben diese Objekte eine Eigenschaft X?

Ein (Entscheidungs)Problem ist entscheidbar, wenn es einen


Algorithmus gibt, der bei jeder Eingabe in endlicher Zeit die
richtige Antwort auf die Frage festellt.
In der zweiten Hälfte der Vorlesung wird gezeigt, dass nicht alle
Entscheidungsprobleme für Grammatiken entscheidbar sind!

86
3.8 Entscheidungsverfahren
Wir untersuchen Entscheidungsprobleme für reguläre Sprachen,
d.h., Probleme der Gestalt

Eingabe: Ein oder mehrere Objekte, die reguläre Sprachen


beschreiben (DFA, NFA, RE Typ 3 Gram., . . . )
Frage: Haben diese Objekte eine Eigenschaft X?

Ein (Entscheidungs)Problem ist entscheidbar, wenn es einen


Algorithmus gibt, der bei jeder Eingabe in endlicher Zeit die
richtige Antwort auf die Frage festellt.
In der zweiten Hälfte der Vorlesung wird gezeigt, dass nicht alle
Entscheidungsprobleme für Grammatiken entscheidbar sind!
Welche Entscheidungsprobleme sind für rechtslineare Grammatiken
(oder DFA; NFA; RE . . . ) entscheidbar?
Wie hängt die Laufzeit des Algorithmus mit der Beschreibung
zusammen?
86
Definition 3.37
Sei D ein DFA, NFA, RE, rechtslineare Grammatik . . . .

87
Definition 3.37
Sei D ein DFA, NFA, RE, rechtslineare Grammatik . . . .

Wortproblem: Gegeben w und D, gilt w ∈ L(D)?


Leerheitsproblem: Gegeben D, gilt L(D) = ∅?
Endlichkeitsproblem: Gegeben D, ist L(D) endlich?
Äquivalenzproblem: Gegeben D1 , D2 , gilt L(D1 ) = L(D2 )?

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.

Ist Σ fix, z.B. ASCII, so wird daraus O(|Q|2 ) bzw O(|Q|).

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

da für DFAs Komplement und Durchschnitt wieder endliche


Automaten liefern und das Leerheitsproblem für endliche
Automaten entscheidbar ist.

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:

Die Kodierung der Eingabe (DFA, NFA, RE, . . . ) kann


entscheidend für die Komplexität eines Problems sein.

94
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen

Gilt XX ∗ ≡ X ∗ X für alle X?

95
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen

Gilt XX ∗ ≡ X ∗ X für alle X?

sondern Lösen:

Für welches X gilt X ≡ aX | b ?

95
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen

Gilt XX ∗ ≡ X ∗ X für alle X?

sondern Lösen:

Für welches X gilt X ≡ aX | b ?

Anwendung:

Automat Gleichungssystem RE

95
3.9 Automaten und Gleichungssysteme
Nicht mehr Beweisen von Äquivalenzen

Gilt XX ∗ ≡ X ∗ X für alle X?

sondern Lösen:

Für welches X gilt X ≡ aX | b ?

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

Da die Li regulär sein müssen, arbeiten wir direkt mit REs:

X1 ≡ aX1 | bX2 | cX3

96
Beispiel 3.46
Ein Automatenfragment:

q2
b
Li := {w | δ̂(qi , w) ∈ F }
a q1 =⇒
c
L1 = {a}L1 ∪ {b}L2 ∪ {c}L3
q3

Da die Li regulär sein müssen, arbeiten wir direkt mit REs:

X1 ≡ aX1 | bX2 | cX3

Lösung Xi ist RE für die von qi aus akzeptierte Sprache.

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:

Xi ist ein RE für die von qi aus akzeptierte Sprache.

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 | 

Löse X2 ≡ bX2 | (aX1 | ) nach X2 auf:

X2 ≡ b∗ (aX1 | )

99
Lösen des Gleichungssystems:

X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 | 
X3 ≡ bX1 | aX2 | 

Löse X2 ≡ bX2 | (aX1 | ) nach X2 auf:

X2 ≡ b∗ (aX1 | )

Zurück einsetzen:

X1 ≡ a(b∗ (aX1 | )) | bX3


X3 ≡ bX1 | a(b∗ (aX1 | )) | 

99
Lösen des Gleichungssystems:

X1 ≡ aX2 | bX3
X2 ≡ aX1 | bX2 | 
X3 ≡ bX1 | aX2 | 

Löse X2 ≡ bX2 | (aX1 | ) nach X2 auf:

X2 ≡ b∗ (aX1 | )

Zurück einsetzen:

X1 ≡ a(b∗ (aX1 | )) | bX3


X3 ≡ bX1 | a(b∗ (aX1 | )) | 

Ausmultiplizieren und Xi ausklammern:

X1 ≡ ab∗ aX1 | ab∗ | bX3


X3 ≡ (b | ab∗ a)X1 | ab∗ | 
99
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ | 

100
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ | 

X3 ist gelöst, in 1. Gleichung einsetzen:

X1 ≡ ab∗ aX1 | b((b | ab∗ a)X1 | ab∗ | ) | ab∗

100
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ | 

X3 ist gelöst, in 1. Gleichung einsetzen:

X1 ≡ ab∗ aX1 | b((b | ab∗ a)X1 | ab∗ | ) | ab∗

Ausmultiplizieren und X1 ausklammern:

X1 ≡ (ab∗ a | bb | bab∗ a)X1 | bab∗ | b | ab∗

100
X1 ≡ ab∗ aX1 | bX3 | ab∗
X3 ≡ (b | ab∗ a)X1 | ab∗ | 

X3 ist gelöst, in 1. Gleichung einsetzen:

X1 ≡ ab∗ aX1 | b((b | ab∗ a)X1 | ab∗ | ) | ab∗

Ausmultiplizieren und X1 ausklammern:

X1 ≡ (ab∗ a | bb | bab∗ a)X1 | bab∗ | b | ab∗

Nach X1 auflösen:

X1 ≡ (ab∗ a | bb | bab∗ a)∗ (bab∗ | b | ab∗ )

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

Löse das System durch schrittweise Elimination von Variablen


mit Hilfe von Ardens Lemma für REs (Korollar 3.48).

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

Löse das System durch schrittweise Elimination von Variablen


mit Hilfe von Ardens Lemma für REs (Korollar 3.48).
Ist k der Startzustand, so beschreibt Xk die vom Automaten
akzeptierte Sprache.
101
Beweis von Ardens Lemma:
Wir nehmen an X = AX ∪ B.

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 = . . .

Mit Induktion zeigt man für alle n ∈ N:


[
X = An+1 X ∪ Ai B (1)
i≤n

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 = . . .

Mit Induktion zeigt man für alle n ∈ N:


[
X = An+1 X ∪ Ai B (1)
i≤n

0: Behauptung wird zu X = AX ∪ B, der Annahme.

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 = . . .

Mit Induktion zeigt man für alle n ∈ N:


[
X = An+1 X ∪ Ai B (1)
i≤n

0: Behauptung wird zu X = AX ∪ B, der Annahme.


n + 1: X = An+1 X ∪ i≤n Ai B
S

= An+1 (AX ∪ B) ∪ i≤n Ai+1 B


S

= An+2 X ∪ An+1 B ∪ i≤n Ai B


S

= 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

Eingabe: DFA A = (Q, Σ, δ, q0 , F )


Ausgabe: Äquivalenzrelation auf Q.

106
Berechnung äquivalenter Zustände eines DFA

Eingabe: DFA A = (Q, Σ, δ, q0 , F )


Ausgabe: Äquivalenzrelation auf Q.
Datenstruktur: Eine Menge U ungeordneter Paare {p, q} ⊆ Q.

106
Berechnung äquivalenter Zustände eines DFA

Eingabe: DFA A = (Q, Σ, δ, q0 , F )


Ausgabe: Äquivalenzrelation auf Q.
Datenstruktur: Eine Menge U ungeordneter Paare {p, q} ⊆ Q.
Algorithmus U:
1 U := {{p, q} | p ∈ F ∧ q ∈
/ F}
2 while ∃{p, q} ∈
/ U. ∃a ∈ Σ. {δ(p, a), δ(q, a)} ∈ U
do U := U ∪ {{p, q}}

106
Berechnung äquivalenter Zustände eines DFA

Eingabe: DFA A = (Q, Σ, δ, q0 , F )


Ausgabe: Äquivalenzrelation auf Q.
Datenstruktur: Eine Menge U ungeordneter Paare {p, q} ⊆ Q.
Algorithmus U:
1 U := {{p, q} | p ∈ F ∧ q ∈
/ F}
2 while ∃{p, q} ∈
/ U. ∃a ∈ Σ. {δ(p, a), δ(q, a)} ∈ U
do U := U ∪ {{p, q}}
Invariante: {p, q} ∈ U =⇒ p und q unterscheidbar

106
Berechnung äquivalenter Zustände eines DFA

Eingabe: DFA A = (Q, Σ, δ, q0 , F )


Ausgabe: Äquivalenzrelation auf Q.
Datenstruktur: Eine Menge U ungeordneter Paare {p, q} ⊆ Q.
Algorithmus U:
1 U := {{p, q} | p ∈ F ∧ q ∈
/ F}
2 while ∃{p, q} ∈
/ U. ∃a ∈ Σ. {δ(p, a), δ(q, a)} ∈ U
do U := U ∪ {{p, q}}
Invariante: {p, q} ∈ U =⇒ p und q unterscheidbar
Lemma 3.50
Am Ende gilt: U ist Menge aller unterscheidbaren Zustandspaare.

106
Berechnung äquivalenter Zustände eines DFA

Eingabe: DFA A = (Q, Σ, δ, q0 , F )


Ausgabe: Äquivalenzrelation auf Q.
Datenstruktur: Eine Menge U ungeordneter Paare {p, q} ⊆ Q.
Algorithmus U:
1 U := {{p, q} | p ∈ F ∧ q ∈
/ F}
2 while ∃{p, q} ∈
/ U. ∃a ∈ Σ. {δ(p, a), δ(q, a)} ∈ U
do U := U ∪ {{p, q}}
Invariante: {p, q} ∈ U =⇒ p und q unterscheidbar
Lemma 3.50
Am Ende gilt: U ist Menge aller unterscheidbaren Zustandspaare.
Beweis:
{p, q} ∈ U =⇒ p und q unterscheidbar:
Invariante p und q unterscheidbar =⇒ {p, q} ∈ U :
Induktion über die Länge eines unterscheidenden Worts.
106
Implementierung von U :

Tabelle von anfangs unmarkierten Paaren {p, q}, p 6= q.

107
Implementierung von U :

Tabelle von anfangs unmarkierten Paaren {p, q}, p 6= q.

0
1
2
3

107
Implementierung von U :

Tabelle von anfangs unmarkierten Paaren {p, q}, p 6= q.

0
1
2
3

for all p ∈ F , q ∈ Q \ F do markiere {p, q}


while ∃ unmarkiertes {p, q}

107
Implementierung von U :

Tabelle von anfangs unmarkierten Paaren {p, q}, p 6= q.

0
1
2
3

for all p ∈ F , q ∈ Q \ F do markiere {p, q}


while ∃ unmarkiertes {p, q} ∃a ∈ Σ. {δ(p, a), δ(q, a)} ist markiert
do markiere {p, q}

107
Implementierung von U :

Tabelle von anfangs unmarkierten Paaren {p, q}, p 6= q.

0
1
2
3

for all p ∈ F , q ∈ Q \ F do markiere {p, q}


while ∃ unmarkiertes {p, q} ∃a ∈ Σ. {δ(p, a), δ(q, a)} ist markiert
do markiere {p, q}

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

for all {p, q} ⊆ Q mit p 6= q, a ∈ Σ do


p0 := δ(p, a); q 0 := δ(q, a)
if p0 6= q 0 then D[{p0 , q 0 }] := D[{p0 , q 0 }] ∪ {{p, q}}
for all p0 ∈ F , q 0 ∈ Q \ F do mark({p0 , q 0 })

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

for all {p, q} ⊆ Q mit p 6= q, a ∈ Σ do


p0 := δ(p, a); q 0 := δ(q, a)
if p0 6= q 0 then D[{p0 , q 0 }] := D[{p0 , q 0 }] ∪ {{p, q}}
for all p0 ∈ F , q 0 ∈ Q \ F do mark({p0 , q 0 })

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})

Komplexität: O(n2 + n2 ) = O(n2 ).

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 )

(Intuition: Zwei Zustände sind äquivalent wenn sie dieselbe


Sprache erkennen.)
Fakt: ≡M ist eine Äquivalenzrelation.
Wir schreiben ≡ statt ≡M wenn M klar ist.

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 )

(Intuition: Zwei Zustände sind äquivalent wenn sie dieselbe


Sprache erkennen.)
Fakt: ≡M ist eine Äquivalenzrelation.
Wir schreiben ≡ statt ≡M wenn M klar ist.

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)

M/≡ := (Q/≡, Σ, δ 0 , [q0 ]≡ , F/≡)


δ 0 ([p]≡ , a) := [δ(p, a)]≡

115
Die Kollabierung“ von M bzgl. ≡ ist der Quotientenautomat:

Definition 3.53 (Quotientenautomat)

M/≡ := (Q/≡, Σ, δ 0 , [q0 ]≡ , F/≡)


δ 0 ([p]≡ , a) := [δ(p, a)]≡

Die Definition von δ 0 ist wohlgeformt da unabhängig von der Wahl


des Repräsentanten p:

[p]≡ = [p0 ]≡ =⇒ p ≡ p0 =⇒ δ(p, a) ≡ δ(p0 , a)


=⇒ [δ(p, a)]≡ = [δ(p0 , a)]≡

115
Die Kollabierung“ von M bzgl. ≡ ist der Quotientenautomat:

Definition 3.53 (Quotientenautomat)

M/≡ := (Q/≡, Σ, δ 0 , [q0 ]≡ , F/≡)


δ 0 ([p]≡ , a) := [δ(p, a)]≡

Die Definition von δ 0 ist wohlgeformt da unabhängig von der Wahl


des Repräsentanten p:

[p]≡ = [p0 ]≡ =⇒ p ≡ p0 =⇒ δ(p, a) ≡ δ(p0 , a)


=⇒ [δ(p, a)]≡ = [δ(p0 , a)]≡

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)

M/≡ := (Q/≡, Σ, δ 0 , [q0 ]≡ , F/≡)


δ 0 ([p]≡ , a) := [δ(p, a)]≡

Die Definition von δ 0 ist wohlgeformt da unabhängig von der Wahl


des Repräsentanten p:

[p]≡ = [p0 ]≡ =⇒ p ≡ p0 =⇒ δ(p, a) ≡ δ(p0 , a)


=⇒ [δ(p, a)]≡ = [δ(p0 , a)]≡

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

δ̂(q0 , u) ≡M δ̂(q0 , v) ⇔ u ≡L(M ) v

(Zwei Wörter sind äquivalent gdw sie zu äquivalenten Zuständen


führen)
116
Achtung
p ≡M q ist eine Relation auf Zuständen von M
u ≡L v ist eine Relation auf Wörtern

117
u ≡L(M ) v ⇔ δ̂(q0 , u) ≡M δ̂(q0 , v)
Da alle Zustände von q0 erreichbar sind, gilt sogar: Die Abbildung

[u]≡L(M ) 7→ [δ̂(q0 , u)]≡M

ist eine Bijektion zwischen den ≡L(M ) und ≡M Äquivalenzklassen.

118
u ≡L(M ) v ⇔ δ̂(q0 , u) ≡M δ̂(q0 , v)
Da alle Zustände von q0 erreichbar sind, gilt sogar: Die Abbildung

[u]≡L(M ) 7→ [δ̂(q0 , u)]≡M

ist eine Bijektion zwischen den ≡L(M ) und ≡M Äquivalenzklassen.


Satz 3.56
Ist M ein DFA ohne unerreichbare Zustände, so ist der von
Algorithmus U berechnete Quotientenautomat M/≡ ein minimaler
DFA für L(M ).

118
u ≡L(M ) v ⇔ δ̂(q0 , u) ≡M δ̂(q0 , v)
Da alle Zustände von q0 erreichbar sind, gilt sogar: Die Abbildung

[u]≡L(M ) 7→ [δ̂(q0 , u)]≡M

ist eine Bijektion zwischen den ≡L(M ) und ≡M Äquivalenzklassen.


Satz 3.56
Ist M ein DFA ohne unerreichbare Zustände, so ist der von
Algorithmus U berechnete Quotientenautomat M/≡ ein minimaler
DFA für L(M ).

Beweis:
Sei L := L(M ) und M 0 ein DFA mit L(M 0 ) = L. Dann gilt:

|Q0 | ≥ |Q0 /≡M 0 | = |Σ∗ /≡L | = |Q/≡M |

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:

[]≡L = {w | w endet nicht mit 0}

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:

[]≡L = {w | w endet nicht mit 0}


[0]≡L = {w | w endet mit 0, aber nicht 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:

[]≡L = {w | w endet nicht mit 0}


[0]≡L = {w | w endet mit 0, aber nicht mit 00}
[00]≡L = {w | w endet mit 00}

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}.

Man sieht: δL ist wohldefiniert und δ̂L ([]≡L , w) = [w]≡L .


Dann gilt offensichtlich L(ML ) = 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}.

Man sieht: δL ist wohldefiniert und δ̂L ([]≡L , w) = [w]≡L .


Dann gilt offensichtlich L(ML ) = L.

Satz 3.60 (Myhill-Nerode)


Eine Sprache L ⊆ Σ∗ ist genau dann regulär, wenn ≡L endlich
viele Äquivalenzklassen hat.

120
Definition 3.59 (Kanonischer Minimalautomat)
ML := (Σ∗ /≡L , Σ, δL , []≡L , FL )
mit δL ([w]≡L , a) := [wa]≡L und FL := {[w]≡L | w ∈ L}.

Man sieht: δL ist wohldefiniert und δ̂L ([]≡L , w) = [w]≡L .


Dann gilt offensichtlich L(ML ) = L.

Satz 3.60 (Myhill-Nerode)


Eine Sprache L ⊆ Σ∗ ist genau dann regulär, wenn ≡L endlich
viele Äquivalenzklassen hat.

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}.

Man sieht: δL ist wohldefiniert und δ̂L ([]≡L , w) = [w]≡L .


Dann gilt offensichtlich L(ML ) = L.

Satz 3.60 (Myhill-Nerode)


Eine Sprache L ⊆ Σ∗ ist genau dann regulär, wenn ≡L endlich
viele Äquivalenzklassen hat.

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?

[1i ]≡L = {w | #1 (w) = #0 (w) + i}

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 | #1 (w) = #0 (w) + i}

Warum 1i 6≡L 1j falls i 6= j?

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 | #1 (w) = #0 (w) + i}

Warum 1i 6≡L 1j falls i 6= j?

Vollständige Methode um Nichtregularität von L zu zeigen:

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 | #1 (w) = #0 (w) + i}

Warum 1i 6≡L 1j falls i 6= j?

Vollständige Methode um Nichtregularität von L zu zeigen:

Gib unendliche Menge w1 , w2 , . . . an mit wi 6≡L wj falls i 6= j.


121
Bemerkung
Eindeutigkeit des minimalen Automaten (modulo Umbenennung
der Zustände) gilt nur bei DFAs, nicht bei NFAs!

122
Bemerkung
Eindeutigkeit des minimalen Automaten (modulo Umbenennung
der Zustände) gilt nur bei DFAs, nicht bei NFAs!

Aufgabe: Finde Gegenbeispiel für 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

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)

125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> →

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> →

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term>

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor>

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor>

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>)

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)

→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)
→ a ∗ (<Term> + <Term>)
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)
→ a ∗ (<Term> + <Term>)
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)
→ a ∗ (<Term> + <Term>) → a ∗ (<Factor> + <Term>)
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)
→ a ∗ (<Term> + <Term>) → a ∗ (<Factor> + <Term>)
→ a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)
→ a ∗ (<Term> + <Term>) → a ∗ (<Factor> + <Term>)
→ a ∗ (a + <Term>) → a ∗ (a + a)
125
4. Kontextfreie Sprachen

4.1 Kontextfreie Grammatiken

Beispiel 4.1 (Arithmetische Ausdrücke)


<Expr> → <Term>
<Expr> → <Expr> + <Term>
<Term> → <Factor>
<Term> → <Term> ∗ <Factor>
<Factor> → a
<Factor> → (<Expr>)
Eine (Links)Ableitung:
<Expr> → <Term> → <Term> ∗ <Factor>
→ <Factor> ∗ <Factor> → a ∗ <Factor>
→ a ∗ (<Expr>) → a ∗ (<Expr> + <Term>)
→ a ∗ (<Term> + <Term>) → a ∗ (<Factor> + <Term>)
→ a ∗ (a + <Term>) → a ∗ (a + <Factor>) → a ∗ (a + a)
125
Der Syntaxbaum:
<Expr>
Der Syntaxbaum:
<Expr>

<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).

Parsen ist die Transformation eines Worts in einen Syntaxbaum.

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 β

gdw es eine Regel A → γ in P gibt, und Wörter α1 , α2 , so dass

α = α1 Aα2 und β = α1 γα2

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}

Eine Sprache L ⊆ Σ∗ heißt kontextfrei gdw es eine kontextfreie


Grammatik G gibt mit L = L(G).

132
Definition 4.6 (Kontextfreie Sprache)
Eine kontextfreien Grammatik G = (V, Σ, P, S) erzeugt die Sprache

L(G) := {w ∈ Σ∗ | S →∗G w}

Eine Sprache L ⊆ Σ∗ heißt kontextfrei gdw es eine kontextfreie


Grammatik G gibt mit L = L(G).

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 | }

Der unendliche Baum aller möglichen (Links-)Ableitungen:

S → aSb → a2 Sb2 → a3 Sb3 → . . .


& & & &
 ab a2 b2 a3 b3

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

Der Anfang des unendlichen Baums aller (Links-)Ableitungen


(Achtung, dies ist kein Syntaxbaum!):
S
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

Der Anfang des unendlichen Baums aller (Links-)Ableitungen


(Achtung, dies ist kein Syntaxbaum!):
S

 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

Der Anfang des unendlichen Baums aller (Links-)Ableitungen


(Achtung, dies ist kein Syntaxbaum!):
S

 a b aSa bSb

aa aaa aba aaSaa abSba bb bab bbb baSab bbSbb

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

Um zu zeigen, dass diese Grammatik die Menge aller balancierten


Klammerwörter in {[, ]}∗ erzeugt, betrachten wir die Grammatik
als induktive Definition einer Sprache LG (S):

137
Beispiel 4.10

S →  | [S] | SS

Um zu zeigen, dass diese Grammatik die Menge aller balancierten


Klammerwörter in {[, ]}∗ erzeugt, betrachten wir die Grammatik
als induktive Definition einer Sprache LG (S):

137
Beispiel 4.10

S →  | [S] | SS

Um zu zeigen, dass diese Grammatik die Menge aller balancierten


Klammerwörter in {[, ]}∗ erzeugt, betrachten wir die Grammatik
als induktive Definition einer Sprache LG (S):

 ∈ LG (S)

137
Beispiel 4.10

S →  | [S] | SS

Um zu zeigen, dass diese Grammatik die Menge aller balancierten


Klammerwörter in {[, ]}∗ erzeugt, betrachten wir die Grammatik
als induktive Definition einer Sprache LG (S):

 ∈ LG (S)
u ∈ LG (S) =⇒ [u] ∈ LG (S)

137
Beispiel 4.10

S →  | [S] | SS

Um zu zeigen, dass diese Grammatik die Menge aller balancierten


Klammerwörter in {[, ]}∗ erzeugt, betrachten wir die Grammatik
als induktive Definition einer Sprache LG (S):

 ∈ LG (S)
u ∈ LG (S) =⇒ [u] ∈ LG (S)
u ∈ LG (S) ∧ v ∈ LG (S) =⇒ uv ∈ LG (S)

137
Beispiel 4.10

S →  | [S] | SS

Um zu zeigen, dass diese Grammatik die Menge aller balancierten


Klammerwörter in {[, ]}∗ erzeugt, betrachten wir die Grammatik
als induktive Definition einer Sprache LG (S):

 ∈ LG (S)
u ∈ LG (S) =⇒ [u] ∈ LG (S)
u ∈ LG (S) ∧ v ∈ LG (S) =⇒ uv ∈ LG (S)

Damit gilt zB:


 ∈ LG (S) =⇒ [] ∈ LG (S) =⇒ [[]] ∈ LG (S)
=⇒ [[]][] ∈ 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:

#a (w) := Anzahl der Vorkommen von a in w

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:

#a (w) := Anzahl der Vorkommen von a in w

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:

#a (w) := Anzahl der Vorkommen von a in w

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:

#a (w) := Anzahl der Vorkommen von a in w

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:

#a (w) := Anzahl der Vorkommen von a in w

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

Ai → w0 Ai1 w1 . . . wn−1 Ain wn

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

Ai → w0 Ai1 w1 . . . wn−1 Ain wn

Man kann G als eine (simultane) induktive Definition von


Sprachen LG (Ai ) für all Ai ∈ V sehen. Jede Produktion
korrespondiert zu einer Erzeugungsregel

u1 ∈ LG (Ai1 )∧· · ·∧un ∈ LG (Ain ) =⇒ w0 u1 w1 . . . un wn ∈ LG (Ai )

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

Ai → w0 Ai1 w1 . . . wn−1 Ain wn

Man kann G als eine (simultane) induktive Definition von


Sprachen LG (Ai ) für all Ai ∈ V sehen. Jede Produktion
korrespondiert zu einer Erzeugungsregel

u1 ∈ LG (Ai1 )∧· · ·∧un ∈ LG (Ain ) =⇒ w0 u1 w1 . . . un wn ∈ LG (Ai )

Aussagen der Form

(u ∈ LG (A1 ) =⇒ P1 (u)) ∧ · · · ∧ (u ∈ LG (Ak ) =⇒ Pk (u))

werden durch simultane Induktion über die Erzeugung von u


bewiesen, indem man für jede Produktion zeigt:

Pi1 (u1 ) ∧ · · · ∧ Pin (un ) =⇒ Pi (w0 u1 w1 . . . wn−1 un wn )


145
Beispiel 4.14
Grammatik:
A →  | aB B → Aa
Induktive Definition:
 ∈ LG (A)
w ∈ LG (B) =⇒ aw ∈ LG (A)
w ∈ LG (A) =⇒ wa ∈ LG (B)

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)

muss man zeigen


#a () ist gerade
#a (w) ist ungerade =⇒ #a (aw) ist gerade
#a (w) ist gerade =⇒ #a (wa) ist ungerade
146
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
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.

Beispiel 4.16 (Syntaxbäume für S →  | [S] | SS)


S
S
S S
 [ S ] 
 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.

Beispiel 4.16 (Syntaxbäume für S →  | [S] | SS)


S
S S
S S
 [ S ]  S [ S

 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) \ {}.

Wer auf  ∈ L(G0 ) nicht verzichten möchte:


Füge am Ende S 0 → S, S 0 →  hinzu und setze S 0 als Startsymbol.

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

S →∗Ĝ γBδ →Ĝ γδ →∗Ĝ w

so wäre γ oder δ nichtleer, dh B muss durch eine Produktion


A → αBβ eingeführt worden sein:

S →kĜ α0 Aβ 0 →Ĝ α0 αBββ 0 →m



γBδ →Ĝ γδ →nĜ w

153
Beweis (Forts.):
Sei S →∗Ĝ w, w 6= , eine Ableitung minimaler Länge.
Käme darin B →  vor, also

S →∗Ĝ γBδ →Ĝ γδ →∗Ĝ w

so wäre γ oder δ nichtleer, dh B muss durch eine Produktion


A → αBβ eingeführt worden sein:

S →kĜ α0 Aβ 0 →Ĝ α0 αBββ 0 →m



γBδ →Ĝ γδ →nĜ w

Dann wäre aber folgende Ableitung mit (A → αβ) ∈ P̂ kürzer:

S →kĜ α0 Aβ 0 →Ĝ α0 αββ 0 →m



γδ →nĜ w

153
Beweis (Forts.):
Sei S →∗Ĝ w, w 6= , eine Ableitung minimaler Länge.
Käme darin B →  vor, also

S →∗Ĝ γBδ →Ĝ γδ →∗Ĝ w

so wäre γ oder δ nichtleer, dh B muss durch eine Produktion


A → αBβ eingeführt worden sein:

S →kĜ α0 Aβ 0 →Ĝ α0 αBββ 0 →m



γBδ →Ĝ γδ →nĜ w

Dann wäre aber folgende Ableitung mit (A → αβ) ∈ P̂ kürzer:

S →kĜ α0 Aβ 0 →Ĝ α0 αββ 0 →m



γδ →nĜ w

Also kommen in Ableitungen minimaler Länge keine


-Produktionen vor. Letztere sind also überflüssig.

153
Beispiel 4.24

S → AB, A → aAA | B, B → bBS | 

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

wobei C2 , . . . , Ck−1 neue Nichtterminale sind.


3 Eliminiere alle -Produktionen.
4 Eliminiere alle Kettenproduktionen.

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.

Zum Beweis haben wir n = |Q| gewählt, wobei Q die


Zustandsmenge eines L erkennenden DFA war. Das Argument war
dann, dass beim Erkennen von z (mindestens) ein Zustand zweimal
besucht werden muss und damit der dazwischen liegende Weg im
Automaten beliebig oft wiederholt werden kann.

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.

Zum Beweis haben wir n = |Q| gewählt, wobei Q die


Zustandsmenge eines L erkennenden DFA war. Das Argument war
dann, dass beim Erkennen von z (mindestens) ein Zustand zweimal
besucht werden muss und damit der dazwischen liegende Weg im
Automaten beliebig oft wiederholt werden kann.

Ein ähnliches Argument kann auch auf kontextfreie Grammatiken


angewendet werden.

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.

Jeder Binärbaum mit ≥ 2k Blättern hat die Höhe ≥ k

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.

Jeder Binärbaum mit ≥ 2k Blättern hat die Höhe ≥ k

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.

Jeder Binärbaum mit ≥ 2k Blättern hat die Höhe ≥ k

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.

Jeder Binärbaum mit ≥ 2k Blättern hat die Höhe ≥ k

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}

nicht kontextfrei ist.

165
Beispiel 4.30
Wir zeigen, dass die Sprache

L := {ai bi ci | i ∈ N}

nicht kontextfrei ist.


Wäre L kontextfrei, so gäbe es eine dazugehörige Pumping-Lemma
Zahl n und wir könnten jedes z ∈ L mit |z| ≥ n, insb. z = an bn cn ,
zerlegen und aufpumpen, ohne aus der Sprache herauszufallen.

165
Beispiel 4.30
Wir zeigen, dass die Sprache

L := {ai bi ci | i ∈ N}

nicht kontextfrei ist.


Wäre L kontextfrei, so gäbe es eine dazugehörige Pumping-Lemma
Zahl n und wir könnten jedes z ∈ L mit |z| ≥ n, insb. z = an bn cn ,
zerlegen und aufpumpen, ohne aus der Sprache herauszufallen.
Eine Zerlegung z = uvwxy mit |vwx| ≤ n bedeutet aber, dass
vwx nicht a’s und c’s enthalten kann. OE nehmen wir an, vwx
enhält nur a’s und b’s. Da vx 6= , muss vx mindestens ein a oder
ein b enthalten.

165
Beispiel 4.30
Wir zeigen, dass die Sprache

L := {ai bi ci | i ∈ N}

nicht kontextfrei ist.


Wäre L kontextfrei, so gäbe es eine dazugehörige Pumping-Lemma
Zahl n und wir könnten jedes z ∈ L mit |z| ≥ n, insb. z = an bn cn ,
zerlegen und aufpumpen, ohne aus der Sprache herauszufallen.
Eine Zerlegung z = uvwxy mit |vwx| ≤ n bedeutet aber, dass
vwx nicht a’s und c’s enthalten kann. OE nehmen wir an, vwx
enhält nur a’s und b’s. Da vx 6= , muss vx mindestens ein a oder
ein b enthalten.
Damit gilt aber #a (uv 2 wx2 y) > #c (uv 2 wx2 y) oder
#b (uv 2 wx2 y) > #c (uv 2 wx2 y). Also uv 2 wx2 y ∈
/ L.

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 }

Es folgt: Verallgemeinerte kontextfreie Grammatiken mit


Produktionen der Gestalt X → r, wobei r ein regulärer Ausdruck
über (V ∪ T ) ist, erzeugen kontextfreie Sprachen.

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:

L1 :={ai bi cj | i, j ∈ N} ist kontextfrei


L2 := {ai bj cj | i, j ∈ N} ist kontextfrei
L1 ∩ L2 = {ai bi ci | i ∈ N} ist nicht kontextfrei

169
Satz 4.33
Die Menge der kontextfreien Sprachen ist nicht abgeschlossen
unter Durchschnitt oder Komplement.

Beweis:

L1 :={ai bi cj | i, j ∈ N} ist kontextfrei


L2 := {ai bj cj | i, j ∈ N} ist kontextfrei
L1 ∩ L2 = {ai bi ci | i ∈ N} ist nicht kontextfrei

Wegen de Morgan (1806–1871) können die CFLs daher auch nicht


unter Komplement abgeschlossen sein.

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

Ziel: Elimination der unnützen Symbole und der Produktionen, in


denen sie vorkommen.

170
Beispiel 4.35
S → AB | a, A→b

171
Beispiel 4.35
S → AB | a, A→b

1 Elimination nicht erzeugender Symbole:


S → a, A→b

2 Elimination unerreichbarer Symbole:


S→a

171
Beispiel 4.35
S → AB | a, A→b

1 Elimination nicht erzeugender Symbole:


S → a, A→b

2 Elimination unerreichbarer Symbole:


S→a

Umgekehrte Reihenfolge:
1 Elimination unerreichbarer Symbole:
S → AB | a, A→b

2 Elimination nicht erzeugender Symbole:


S → 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

S →∗G2 ...X ... →∗G2 . . . ∈ Σ∗2

173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh

S →∗G2 ...X ... →∗G2 . . . ∈ Σ∗2

X muss in G1 erreichbar sein, dh S →∗G1 αXβ.


Da alle Symbole in der Ableitung erreichbar sind: S →∗G2 αXβ.

173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh

S →∗G2 ...X ... →∗G2 . . . ∈ Σ∗2

X muss in G1 erreichbar sein, dh S →∗G1 αXβ.


Da alle Symbole in der Ableitung erreichbar sind: S →∗G2 αXβ.
Alle Symbole in αXβ müssen in G erzeugend sein:
∀Y ∈ αXβ. ∃u ∈ Σ∗ . Y →∗G u
Da alle Symbole in den Ableitungen Y →∗G u erzeugend sind:
∀Y ∈ αXβ. ∃u ∈ Σ∗1 . Y →∗G1 u
Also gibt es w ∈ Σ∗1 mit αXβ →∗G1 w.

173
Beweis (Forts.): [G1 : erzeugend in G, G2 : erreichbar in G1 ]
Wir zeigen: Alle X ∈ V2 ∪ Σ2 sind nützlich in G2 , dh

S →∗G2 ...X ... →∗G2 . . . ∈ Σ∗2

X muss in G1 erreichbar sein, dh S →∗G1 αXβ.


Da alle Symbole in der Ableitung erreichbar sind: S →∗G2 αXβ.
Alle Symbole in αXβ müssen in G erzeugend sein:
∀Y ∈ αXβ. ∃u ∈ Σ∗ . Y →∗G u
Da alle Symbole in den Ableitungen Y →∗G u erzeugend sind:
∀Y ∈ αXβ. ∃u ∈ Σ∗1 . Y →∗G1 u
Also gibt es w ∈ Σ∗1 mit αXβ →∗G1 w.
Die Ableitung αXβ →∗G1 w enthält nur Symbole, die in G1
erreichbar sind. Daher auch αXβ →∗G2 w.

S →∗G2 αXβ →∗G2 w

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

S → SAB, A → BC, B → C, C→c


Erzeugend: {c, C, B, A}.

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

S → SAB, A → BC, B → C, C→c


Erzeugend: {c, C, B, A}.
Korollar 4.39
Für eine kontextfreie Grammatik G ist entscheidbar, ob L(G) = ∅.
Beweis:
L(G) = ∅ ⇐⇒ S ist nicht erzeugend.
174
Satz 4.40
Die Menge der erreichbaren Symbole einer CFG ist berechenbar.

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

Vij := {A ∈ V | A →∗G ai . . . aj } für i ≤ j

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

Korrektheitsbeweis: Induktion nach j − i.

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

Korrektheitsbeweis: Induktion nach j − i.


Die Vij als Tabelle (mit ij statt Vij ):

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

Für jede dieser Mengen werden


j − i < n Werte für k betrachtet,
für jedes k wird für alle Produktionen A → BC untersucht,
ob B ∈ Vik und C ∈ Vk+1,j , wobei |Vik |, |Vk+1,j | ≤ |V |.

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

Für jede dieser Mengen werden


j − i < n Werte für k betrachtet,
für jedes k wird für alle Produktionen A → BC untersucht,
ob B ∈ Vik und C ∈ Vk+1,j , wobei |Vik |, |Vk+1,j | ≤ |V |.
Gesamtzeit: O(n3 ), denn |P | und |V | sind Konstanten unabhängig
von n. [Konstruktion jeder Menge Vii : O(1). Für alle Vii also
O(n).]

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

finite control unit


with state ∈ Q S
T
A
C
K

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 ).

Intuitiv stellt eine Konfiguration (q, w, α) eine “Momentaufnahme”


des Kellerautomaten dar:
Der momentane Zustand ist q.
Der noch zu lesende Teil der Eingabe ist w.
Der aktuelle Kellerinhalt ist α (das oberste Kellerzeichen ganz
links stehend).

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)

Die reflexive und transitive Hülle von →M wird mit →∗M


bezeichnet.

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)

Die reflexive und transitive Hülle von →M wird mit →∗M


bezeichnet.
Intuitive Bedeutung von (q, w, α) →M (q 0 , w0 , α0 ):
Wenn M sich in der Konfiguration (q, w, α) befindet, dann
kann er in einen Schritt in die Nachfolgerkonfiguration
(q 0 , w0 , α0 ) übergehen.

Achtung: eine Konfiguration kann mehrere Nachfolger haben


(Nichtdeterminismus!)

187
Definition 4.48
Ein PDA M akzeptiert w ∈ Σ∗ mit Endzustand gdw

(q0 , w, Z0 ) →∗M (f, , γ) für ein f ∈ F, γ ∈ Γ∗ .

LF (M ) := {w | ∃f ∈ F, γ ∈ Γ∗ . (q0 , w, Z0 ) →∗M (f, , γ)}

188
Definition 4.48
Ein PDA M akzeptiert w ∈ Σ∗ mit Endzustand gdw

(q0 , w, Z0 ) →∗M (f, , γ) für ein f ∈ F, γ ∈ Γ∗ .

LF (M ) := {w | ∃f ∈ F, γ ∈ Γ∗ . (q0 , w, Z0 ) →∗M (f, , γ)}


Ein PDA M akzeptiert w ∈ Σ∗ mit leeren Keller gdw

(q0 , w, Z0 ) →∗M (q, , ) für ein q ∈ Q.

L (M ) := {w | ∃q ∈ Q. (q0 , w, Z0 ) →∗M (q, , )}

188
Definition 4.48
Ein PDA M akzeptiert w ∈ Σ∗ mit Endzustand gdw

(q0 , w, Z0 ) →∗M (f, , γ) für ein f ∈ F, γ ∈ Γ∗ .

LF (M ) := {w | ∃f ∈ F, γ ∈ Γ∗ . (q0 , w, Z0 ) →∗M (f, , γ)}


Ein PDA M akzeptiert w ∈ Σ∗ mit leeren Keller gdw

(q0 , w, Z0 ) →∗M (q, , ) für ein q ∈ Q.

L (M ) := {w | ∃q ∈ Q. (q0 , w, Z0 ) →∗M (q, , )}

Konvention: Wir blenden die F -Komponente von M aus, wenn wir


nur an L (M ) interessiert sind.

188
Beispiel 4.49
Die Sprache L = {wwR | w ∈ {0, 1}∗ } wird vom PDA

M = ({p, q, r}, {0, 1}, {0, 1, Z0 }, p, Z0 , δ, {r})

δ(p, a, Z) = {(p, aZ)} für a ∈ {0, 1}, Z ∈ {0, 1, Z0 }


δ(p, , Z) = {(q, Z)} für Z ∈ {0, 1, Z0 }
δ(q, a, a) = {(q,  )} für a ∈ {0, 1}
δ(q, , Z0 ) = {(r, )}
sowohl mit Endzustand als auch mit leerem Keller akzeptiert.
Bsp: (p, 110011, Z0 ) →∗M (r, , ).

189
Ziel:

Akzeptanz durch Endzustände und leeren Keller gleich mächtig.

190
Ziel:

Akzeptanz durch Endzustände und leeren Keller gleich mächtig.

Satz 4.50 (Endzustand → leerer Keller)


Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ, F ) kann man in linearer
Zeit einen PDA M 0 = (Q0 , Σ, Γ0 , q00 , Z00 , δ 0 ) konstruieren mit
LF (M ) = L (M 0 ).

190
Ziel:

Akzeptanz durch Endzustände und leeren Keller gleich mächtig.

Satz 4.50 (Endzustand → leerer Keller)


Zu jedem PDA M = (Q, Σ, Γ, q0 , Z0 , δ, F ) kann man in linearer
Zeit einen PDA M 0 = (Q0 , Σ, Γ0 , q00 , Z00 , δ 0 ) konstruieren mit
LF (M ) = L (M 0 ).

Ziel:

(q0 , w, Z0 ) →∗M (f, , γ) ⇔ (q00 , w, Z00 ) →∗M 0 (q, , )

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

(qi , ui , αi ) →M (qi+1 , ui+1 , αi+1 ) =⇒


(qi , ui v, αi β) →M (qi+1 , ui+1 v, αi+1 β)

Mit Induktion über n folgt die Behauptung.

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

(qi , ui , αi ) →M (qi+1 , ui+1 , αi+1 ) =⇒


(qi , ui v, αi β) →M (qi+1 , ui+1 v, αi+1 β)

Mit Induktion über n folgt die Behauptung.


Gilt die Umkehrung, zB

(q1 , aa, XZ) →∗M (q3 , , Y Z) =⇒ (q1 , aa, X) →∗M (q3 , , Y ) ?

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

Satz 4.54 (CFG → PDA)


Zu jeder CFG G kann man einen PDA M konstruieren, der mit
leerem Stack akzeptiert, so dass L (M ) = L(G).

196
4.9 Äquivalenz von PDAs und CFGs

Satz 4.54 (CFG → PDA)


Zu jeder CFG G kann man einen PDA M konstruieren, der mit
leerem Stack akzeptiert, so dass L (M ) = L(G).
Konstruktion:
Zuerst bringen wir alle Produktionen von G in die Form

A → bB1 . . . Bk

wobei b ∈ Σ ∪ {}.

196
4.9 Äquivalenz von PDAs und CFGs

Satz 4.54 (CFG → PDA)


Zu jeder CFG G kann man einen PDA M konstruieren, der mit
leerem Stack akzeptiert, so dass L (M ) = L(G).
Konstruktion:
Zuerst bringen wir alle Produktionen von G in die Form

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

Der PDA wird wie folgt definiert:

M := ({q}, Σ, V, q, S, δ)

wobei
(A → bβ) ∈ P =⇒ δ(q, b, A) 3 (q, β)
also für alle b ∈ Σ ∪ {} und A ∈ V :

δ(q, b, A) := {(q, β) | (A → bβ) ∈ P }

197
Lemma 4.55
Für alle u, v ∈ Σ∗ und γ ∈ V ∗ und A ∈ V gilt:

A →nG uγ mit Linksableitung gdw (q, uv, A) →nM (q, v, γ)

198
Lemma 4.55
Für alle u, v ∈ Σ∗ und γ ∈ V ∗ und A ∈ V gilt:

A →nG uγ mit Linksableitung gdw (q, uv, A) →nM (q, v, γ)


Beweis:
Mit Induktion über n. Basis n = 0 trivial.

198
Lemma 4.55
Für alle u, v ∈ Σ∗ und γ ∈ V ∗ und A ∈ V gilt:

A →nG uγ mit Linksableitung gdw (q, uv, A) →nM (q, v, γ)


Beweis:
Mit Induktion über n. Basis n = 0 trivial. Schritt:
A →n+1
G uγ

∃(B → bβ) ∈ P, w, α. A →nG wBα →G wbβα = uγ
(dh wb = u,βα = γ)

(q, wbv, A) →nM (q, bv, Bα) ∧ (q, bv, Bα) →M (q, v, βα)

(q, uv, A) →n+1
M (q, v, γ)

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 ).

Konstruktion: G := (V, Σ, P, S) mit

V := Q × Γ × Q ∪ {S} wobei wir die Tripel mit [., ., .] notieren

und P die folgenden Produktionen enthält:

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 ).

Konstruktion: G := (V, Σ, P, S) mit

V := Q × Γ × Q ∪ {S} wobei wir die Tripel mit [., ., .] notieren

und P die folgenden Produktionen enthält:


S → [q0 , Z0 , q] für alle q ∈ Q
Für alle δ(q, b, Z) 3 (r0 , Z1 . . . Zk ) und für alle r1 , . . . , rk ∈ Q:

[q, Z, rk ] → b[r0 , Z1 , r1 ][r1 , Z2 , r2 ] . . . [rk−1 , Zk , rk ]

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 ).

Konstruktion: G := (V, Σ, P, S) mit

V := Q × Γ × Q ∪ {S} wobei wir die Tripel mit [., ., .] notieren

und P die folgenden Produktionen enthält:


S → [q0 , Z0 , q] für alle q ∈ Q
Für alle δ(q, b, Z) 3 (r0 , Z1 . . . Zk ) und für alle r1 , . . . , rk ∈ Q:

[q, Z, rk ] → b[r0 , Z1 , r1 ][r1 , Z2 , r2 ] . . . [rk−1 , Zk , rk ]

Idee: [q, Z, rk ] →∗G w gdw (q, w, Z) →∗M (rk , , )


Die r1 , . . . , rk sind potenzielle Zwischenzustände beim Akzeptieren
der Teilwörter von bu1 . . . uk = w, die zu Z1 , . . . , Zk gehören.
(Zerlegungssatz!)
200
Lemma 4.58
[q, Z, p] →nG w gdw (q, w, Z) →nM (p, , )

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:

[q, Z, rk ] →G b[r0 , Z1 , r1 ] . . . [rk−1 , Zk , rk ]


→n−1
G bu1 . . . uk = w

mit rk = p, (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z), P


[ri−1 , Zi , ri ] →nGi ui (i = 1, . . . , k) und ni = n − 1.

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:

[q, Z, rk ] →G b[r0 , Z1 , r1 ] . . . [rk−1 , Zk , rk ]


→n−1
G bu1 . . . uk = w

mit rk = p, (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z), P


[ri−1 , Zi , ri ] →nGi ui (i = 1, . . . , k) und ni = n − 1.
IA ⇒ (ri−1 , ui , Zi ) →nMi (ri , , )

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:

[q, Z, rk ] →G b[r0 , Z1 , r1 ] . . . [rk−1 , Zk , rk ]


→n−1
G bu1 . . . uk = w

mit rk = p, (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z), P


[ri−1 , Zi , ri ] →nGi ui (i = 1, . . . , k) und ni = n − 1.
IA ⇒ (ri−1 , ui , Zi ) →nMi (ri , , )
Erweiterungslemma
⇒ (ri−1 , ui . . . uk , Zi . . . Zk ) →nMi (ri , ui+1 . . . uk , Zi+1 . . . Zk )
⇒ (q, w, Z) →M (r0 , u1 . . . uk , Z1 . . . Zk ) →n−1
M (rk , , )
201
Beweis (Forts.):
(⇐): Wenn [q, Z, p] →nG w dann (q, w, Z) →nM (p, , ).
Mit Induktion über 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.

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:

(q, w, Z) →M (r0 , w0 , Z1 . . . Zk ) →n−1


M (p, , )

mit w = bw0 , (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z).

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:

(q, w, Z) →M (r0 , w0 , Z1 . . . Zk ) →n−1


M (p, , )

mit w = bw0 , (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z).


Nach dem Zerlegungssatz muss es ri , ui und ni geben mit

(ri−1 , ui , Zi ) →nMi (ri , , ) (i = 1, . . . , k)

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:

(q, w, Z) →M (r0 , w0 , Z1 . . . Zk ) →n−1


M (p, , )

mit w = bw0 , (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z).


Nach dem Zerlegungssatz muss es ri , ui und ni geben mit

(ri−1 , ui , Zi ) →nMi (ri , , ) (i = 1, . . . , k)

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:

(q, w, Z) →M (r0 , w0 , Z1 . . . Zk ) →n−1


M (p, , )

mit w = bw0 , (r0 , Z1 . . . Zk ) ∈ δ(q, b, Z).


Nach dem Zerlegungssatz muss es ri , ui und ni geben mit

(ri−1 , ui , Zi ) →nMi (ri , , ) (i = 1, . . . , k)

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.

Da man jeden DFA leicht mit einem DPDA simulieren kann:


Fakt 4.63
Jede reguläre Sprache ist eine DCFL.

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!

Es gibt also einen DPDA M mit LF (M ) = L(a∗ ) aber keinen


DPDA mit L (M ) = L(a∗ ).
Im Folgenden: Akzeptanz durch Endzustand.

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

Wäre L eine DCFL, dann auch L = Lww (wegen Satz 4.66).


Aber mit dem Pumping Lemma kann man zeigen, dass Lww keine
CFL ist, und daher erst recht keine DCFL.
207
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.

208
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.

Beweis:
Erinnerung: CFLs nicht unter Schnitt abgeschlossen:

L1 := {ai bi cj | i, j ∈ N} ist kontextfrei


L2 := {ai bj cj | i, j ∈ N} ist kontextfrei

208
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.

Beweis:
Erinnerung: CFLs nicht unter Schnitt abgeschlossen:

L1 := {ai bi cj | i, j ∈ N} ist kontextfrei


L2 := {ai bj cj | i, j ∈ N} ist kontextfrei
L1 ∩ L2 = {ai bi ci | i ∈ N} ist nicht kontextfrei

Aber L1 und L2 sind sogar DCFLs.

208
Lemma 4.68
Die Klasse der DCFLs ist weder unter Schnitt noch unter
Vereinigung abgeschlossen.

Beweis:
Erinnerung: CFLs nicht unter Schnitt abgeschlossen:

L1 := {ai bi cj | i, j ∈ N} ist kontextfrei


L2 := {ai bj cj | i, j ∈ N} ist kontextfrei
L1 ∩ L2 = {ai bi ci | i ∈ N} ist nicht kontextfrei

Aber L1 und L2 sind sogar DCFLs.


Da L1 ∩ L2 = L1 ∪ L2 können die DCFLs auch nicht unter
Vereinigung abgeschlossen sein.

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.

Mehr Information: Vorlesungen zum Übersetzerbau

209
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem
DFA
DPDA
CFG

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem
DFA O(n)
DPDA O(n)
CFG O(n3 )

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem Leerheit
DFA O(n)
DPDA O(n)
CFG O(n3 )

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem Leerheit
DFA O(n) ja
DPDA O(n) ja
CFG O(n3 ) ja

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem Leerheit Äquivalenz
DFA O(n) ja
DPDA O(n) ja
CFG O(n3 ) ja

210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem Leerheit Äquivalenz
DFA O(n) ja ja
DPDA O(n) ja ja
CFG O(n3 ) ja nein(*)

Sénizergues (1997), Stirling (2001)


(*) Vorschau
210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem Leerheit Äquivalenz Schnittproblem
DFA O(n) ja ja
DPDA O(n) ja ja
CFG O(n3 ) ja nein(*)

Sénizergues (1997), Stirling (2001)


(*) Vorschau
210
4.11 Tabellarischer Überblick

Abschlusseigenschaften

Schnitt Vereinigung Komplement Produkt Stern


Regulär ja ja ja ja ja
DCFL nein nein ja nein nein
CFL nein ja nein ja ja

Entscheidbarkeit
Wortproblem Leerheit Äquivalenz Schnittproblem
DFA O(n) ja ja ja
DPDA O(n) ja ja nein(*)
CFG O(n3 ) ja nein(*) nein(*)

Sénizergues (1997), Stirling (2001)


(*) Vorschau
210
5. Berechenbarkeit, Entscheidbarkeit

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.

Was bedeutet Algorithmus“? Assembler? C? Java? OCaml?



Macht es einen Unterschied?

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

berechenbar? (Bsp: f1 (31415) = 1 aber f1 (315) = 0)

214
Beispiel 5.2
Ist die Funktion

1
 falls n als Ziffernfolge Anfangsstück der
f1 (n) := Dezimalbruchentwicklung von π ist
0

sonst

berechenbar? (Bsp: f1 (31415) = 1 aber f1 (315) = 0)


Ja, denn es Algorithmen gibt, die π iterativ auf beliebig viele
Dezimalstellen genau berechnet werden.

214
Beispiel 5.3
Ist die Funktion

1 falls n als Ziffernfolge irgendwo in der

f2 (n) := Dezimalbruchentwicklung von π vorkommt
0 sonst

berechenbar? (Bsp: f2 (415) = 1)

215
Beispiel 5.3
Ist die Funktion

1 falls n als Ziffernfolge irgendwo in der

f2 (n) := Dezimalbruchentwicklung von π vorkommt
0 sonst

berechenbar? (Bsp: f2 (415) = 1)


Unbekannt!
Durch schrittweise Approximation und Suche in der Dezimal-
bruchentwicklung von π kann man feststellen, dass n vorkommt.
Aber wie stellt man fest, dass n nicht vorkommt? Nichttermination
statt 0!

215
Beispiel 5.3
Ist die Funktion

1 falls n als Ziffernfolge irgendwo in der

f2 (n) := Dezimalbruchentwicklung von π vorkommt
0 sonst

berechenbar? (Bsp: f2 (415) = 1)


Unbekannt!
Durch schrittweise Approximation und Suche in der Dezimal-
bruchentwicklung von π kann man feststellen, dass n vorkommt.
Aber wie stellt man fest, dass n nicht vorkommt? Nichttermination
statt 0!
Vielleicht gibt es aber einen (noch zu findenden) mathematischen
Satz, der genaue Aussagen über die in π vorkommenden
Ziffernfolgen macht.
215
Beispiel 5.4
Ist die Funktion


1 falls 00
| .{z. . 00}


109 Nullen
f3 (n) :=

 in der 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:

{0, 1}∗ = {, 0, 1, 00, 01, 10, 11, 000, . . . }


N = {0, 1, 2, 3, 4, 5, 6, 7, . . . }

220
Lemma 5.7
Σ∗ ist abzählbar (falls Σ endlich).

Beweis:
Durch Beispiel:

{0, 1}∗ = {, 0, 1, 00, 01, 10, 11, 000, . . . }


N = {0, 1, 2, 3, 4, 5, 6, 7, . . . }

Annahme:
Ein Algorithmus ist ein Wort über einem endlichen Alphabet.

Gilt für alle bekannten Programmiersprachen.

220
Lemma 5.7
Σ∗ ist abzählbar (falls Σ endlich).

Beweis:
Durch Beispiel:

{0, 1}∗ = {, 0, 1, 00, 01, 10, 11, 000, . . . }


N = {0, 1, 2, 3, 4, 5, 6, 7, . . . }

Annahme:
Ein Algorithmus ist ein Wort über einem endlichen Alphabet.

Gilt für alle bekannten Programmiersprachen.


=⇒ Die Menge der Algorithmen ist abzählbar.

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

fnum(f ) = min{anum(a) | a berechnet f }

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

fnum(f ) = min{anum(a) | a berechnet f }

fnum is injektiv: Wenn fnum(f1 ) = fnum(f2 ) dann gibt es einen


Algorithmus der sowohl f1 wie auch f2 berechnet und so f1 = f2 .
Aber dann ist F abzählbar. Widerspruch zu Satz 5.8
222
Verschiedene Formalisierungen des Begriffs der Berechenbarkeit:
Turing-Maschinen (Turing 1936)
λ-Kalkül (Church 1936)
µ-rekursive Funktionen
Markov-Algorithmen
Registermaschinen
Awk, Basic, C, Dylan, Eiffel, Fortran, Java, Lisp, Modula,
Oberon, Pascal, Python, Ruby, Simula, TEX, . . . -Programme
while-Programme
goto-Programme
DNA-Algorithmen
Quantenalgorithmen
...

223
Es wurde bewiesen: Alle diese Beschreibungsmethoden sind in ihrer
Mächtigkeit äquivalent.

Churchsche These / Church-Turing These


Der formale Begriff der Berechenbarkeit mit Turing-Maschinen
(bzw λ-Kalkül etc) stimmt mit dem intuitiven
Berechenbarkeitsbegriff überein.

224
Es wurde bewiesen: Alle diese Beschreibungsmethoden sind in ihrer
Mächtigkeit äquivalent.

Churchsche These / Church-Turing These


Der formale Begriff der Berechenbarkeit mit Turing-Maschinen
(bzw λ-Kalkül etc) stimmt mit dem intuitiven
Berechenbarkeitsbegriff überein.

Die Church-Turing-These ist keine formale Aussage und so nicht


beweisbar. Sie wird jedoch allgemein akzeptiert.

224
Tape

···   c a b b a c a   ···

Read/write head

finite control unit


with state ∈ Q

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.

Annahme: δ(q, a) is nicht definiert für alle q ∈ F und a ∈ Γ.

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.

Annahme: δ(q, a) is nicht definiert für alle q ∈ F und a ∈ Γ.


Eine nichtdeterministische Turingmaschine hat eine
Übergangsfunktion δ : Q × Γ → P(Q × Γ × {L, R, N }).

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 β

Die Startkonfiguration der Turingmaschine bei Eingabe w ∈ Σ∗ ist


(, q0 , w).

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 ∈ Γ∗ .

Falls M nichtdeterministisch ist: δ(q, first(β)) 3 (q 0 , c, D)

229
Beispiel 5.12 (Unär +1)

M = ({q, f }, {1}, {1, }, δ, q, , {f })

δ(q, ) = (f, 1, N )
δ(q, 1) = (q, 1, R)

230
Beispiel 5.12 (Unär +1)

M = ({q, f }, {1}, {1, }, δ, q, , {f })

δ(q, ) = (f, 1, N )
δ(q, 1) = (q, 1, R)

Beispiellauf:

(, q, 11) →M (1, q, 1) →M (11, q, ) →M (11, f, 1)

230
Beispiel 5.13 (Binär +1)
ZB 1011 7→ 1100

231
Beispiel 5.13 (Binär +1)
ZB 1011 7→ 1100

M = ({q0 , q1 , q2 , qf }, {0, 1}, {0, 1, }, δ, q0 , , {qf }}

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

M = ({q0 , q1 , q2 , qf }, {0, 1}, {0, 1, }, δ, q0 , , {qf }}

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:

(, q0 , 101) →M (1, q0 , 01) →M (10, q0 , 1) →M (101, q0 , ) →M


(10, q1 , 1) →M (1, q1 , 00) →M
(, q2 , 110) →M (, q2 , 110) →M
(, qf , 110)

231
Definition 5.14
Eine Turingmaschine M akzeptiert die Sprache

L(M ) = {w ∈ Σ∗ | ∃q ∈ F, α, β ∈ Γ∗ . (, q0 , w) →∗M (α, q, β)}

232
Definition 5.14
Eine Turingmaschine M akzeptiert die Sprache

L(M ) = {w ∈ Σ∗ | ∃q ∈ F, α, β ∈ Γ∗ . (, q0 , w) →∗M (α, q, β)}

Eine Funktion f : Nk → N heißt Turing-berechenbar gdw es eine


Turingmaschine M gibt, so dass für alle n1 , . . . nk , m ∈ N gilt

f (n1 , . . . , nk ) = m ⇔
∃r ∈ F. (, q0 , bin(n1 )#bin(n2 )# . . . #bin(nk ))
→∗M ( . . . , r, bin(m) . . . )

wobei bin(n) die Binärdarstellung der Zahl n ist.

232
Definition 5.14
Eine Turingmaschine M akzeptiert die Sprache

L(M ) = {w ∈ Σ∗ | ∃q ∈ F, α, β ∈ Γ∗ . (, q0 , w) →∗M (α, q, β)}

Eine Funktion f : Nk → N heißt Turing-berechenbar gdw es eine


Turingmaschine M gibt, so dass für alle n1 , . . . nk , m ∈ N gilt

f (n1 , . . . , nk ) = m ⇔
∃r ∈ F. (, q0 , bin(n1 )#bin(n2 )# . . . #bin(nk ))
→∗M ( . . . , r, bin(m) . . . )

wobei bin(n) die Binärdarstellung der Zahl n ist.

Eine Funktion f : Σ∗ → Σ∗ heißt Turing-berechenbar gdw es eine


Turingmaschine M gibt, so dass für alle u, v ∈ Σ∗ gilt

f (u) = v ⇔ ∃r ∈ F. (, q0 , u) →∗M ( . . . , r, v . . . )

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:

... abaa#aabba ...

M
... b abaabaab aa ...

236
Eine beliebte Modellvariante ist die k-Band-Turingmaschine:

... abaa#aabba ...

M
... b abaabaab aa ...

Die k Köpfe sind völlig unabhängig voneinander:

δ : 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:

n Schritte von M lassens sich durch


O(n2 ) Schritte von M 0 simulieren.

Denn nach n Schritten von M trennen ≤ 2n Felder linkesten und


rechtesten Kopf. Obige Simulation eines M -Schritts braucht daher
O(n) M 0 -Schritte. Simulation von n Schritten: O(n2 ) Schritte.
238
Die folgenden Basismaschinen sind leicht programmierbar:

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 −→

Sie ist wie folgt definiert:

M := (Q1 ∪ Q2 , Σ, Γ1 ∪ Γ2 , δ, q1 , , F2 )

wobei (oE) Q1 ∩ Q2 = ∅ und

δ := δ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

eine Fallunterscheidung, dh eine TM, die vom Endzustand f1 von


M nach M1 übergeht, und von f2 aus nach M2 .

241
Sind f1 und f2 Endzustände von M so bezeichnet

f1
−→ M −→ M1 −→
↓ f2
M2

eine Fallunterscheidung, dh eine TM, die vom Endzustand f1 von


M nach M1 übergeht, und von f2 aus nach M2 .

Die folgende TM nennen wir Band=0?“ (bzw Band i = 0?“):


” ”
δ(q0 , 0) = (q0 , 0, R)
δ(q0 , ) = (ja, , L)
δ(q0 , a) = (nein, a, N ) für a 6= 0, 

wobei ja und nein Endzustände sind.

241
Analog zur Fallunterscheidung kann man auch eine TM für eine
Schleife konstruieren
ja
−→ Band i = 0? −→
↑ ↓ nein
M

die sich wie while Band i 6= 0 do M verhält.

242
Analog zur Fallunterscheidung kann man auch eine TM für eine
Schleife konstruieren
ja
−→ Band i = 0? −→
↑ ↓ nein
M

die sich wie while Band i 6= 0 do M verhält.

Moral: Mit TM kann man imperativ programmieren:


:=
;
if
while

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

wobei X eine der Variablen x0 , x1 , . . . und C eine der Konstanten


0, 1, . . . sein kann.

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

wobei X eine der Variablen x0 , x1 , . . . und C eine der Konstanten


0, 1, . . . sein kann.
Beispiel 5.18
WHILE x2 6= 0 DO x1 := x0 +1 END
243
(
m−n falls m ≥ n
Die modifizierte Differenz ist m −̇ n :=
0 sonst

Semantik von WHILE-Programmen (informell):


xi := xj + n Neuer Wert von xi ist xj + n.
xi := xj - n Neuer Wert von xi ist xj −̇ n.
P1 ; P2 Führe zuerst P1 und dann P2 aus.
WHILE xi 6= 0 DO P END Führe P bis die Variable xi (wenn je)
den Wert 0 annimmt.

244
(
m−n falls m ≥ n
Die modifizierte Differenz ist m −̇ n :=
0 sonst

Semantik von WHILE-Programmen (informell):


xi := xj + n Neuer Wert von xi ist xj + n.
xi := xj - n Neuer Wert von xi ist xj −̇ n.
P1 ; P2 Führe zuerst P1 und dann P2 aus.
WHILE xi 6= 0 DO P END Führe P bis die Variable xi (wenn je)
den Wert 0 annimmt.
Beispiel 5.19
WHILE x1 =6 0 DO x2 := x2 + 1; x1 := x1 - 1 END
simuliert
x2 := x2 + x1

244
(
m−n falls m ≥ n
Die modifizierte Differenz ist m −̇ n :=
0 sonst

Semantik von WHILE-Programmen (informell):


xi := xj + n Neuer Wert von xi ist xj + n.
xi := xj - n Neuer Wert von xi ist xj −̇ n.
P1 ; P2 Führe zuerst P1 und dann P2 aus.
WHILE xi 6= 0 DO P END Führe P bis die Variable xi (wenn je)
den Wert 0 annimmt.
Beispiel 5.19
WHILE x1 =6 0 DO x2 := x2 + 1; x1 := x1 - 1 END
simuliert
x2 := x2 + x1

Zu Beginn der Ausführung stehen die Eingaben in x1 , . . . , xk .


Alle anderen Variablen sind 0. Die Ausgabe wird in x0 berechnet.
244
Syntaktische Abkürzungen ( Zucker“):

xi := xj ≡ xi := xj + 0
xi := n ≡ xi := xj + n
(wobei an xj nirgends zugewiesen wird)
xi := xj + xk ≡ xi := xj ;
(mit i 6= k) WHILE xk 6= 0 DO
xi := xi + 1; xk := xk - 1
END
xi := xj * xk ≡ xi := 0;
(mit i 6= j, k) WHILE xk 6= 0 DO
xi := xi + xj ; xk := xk - 1
END
DIV, MOD, IF x = n THEN P END . . .

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

(wobei alle Marken verschieden und optional sind)


Mögliche Anweisungen Ai sind:

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

(wobei alle Marken verschieden und optional sind)


Mögliche Anweisungen Ai sind:

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.

Korollar 5.26 (Kleenesche Normalform)


Jedes WHILE-Programm ist zu einem WHILE-Programm mit
genau einer WHILE-Schleife ä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.

Q = {q0 , . . . , qk } Γ = {a0 (= ), . . . , an }

253
Satz 5.27 (TM → GOTO)
Jede TM kann durch ein GOTO-Programm simuliert werden.
Übersetzung: TM (Q, Σ, Γ, δ, q0 , , F ) → GOTO-Programm.

Q = {q0 , . . . , qk } Γ = {a0 (= ), . . . , an }


Eine Konfiguration

(aip . . . ai1 , ql , aj1 . . . ajq )

wird durch die Programmvariablen x, y, z wie folgt repräsentiert:

x = (ip . . . i1 )b , y = (jq . . . j1 )b , z=l

wobei (ip . . . i1 )b die Zahl ip . . . i1 zur Basis b := n + 1 ist:


p
X
x= ir br−1
r=1

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

wobei Pij die Simulation von δ(qi , aj ) = (qr , as , D) ist.

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

wobei Pij die Simulation von δ(qi , aj ) = (qr , as , D) ist. Für D = L:


z := r; Zustand aktualisieren
y := y DIV b; Löschen von aj
y := b*y + s; Schreiben von as
y := b*y + (x MOD b); Bewegung L (I): Einfügen von ai1 in y
x := x DIV b Bewegung L (II): Löschen von ai1 aus x
254
GOTO ←− TM
-& %
WHILE

Ü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

#bin(i)#bin(j)#bin(i0 )#bin(j 0 )#bin(m)

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.

Definition 5.32 (Spezielles Halteproblem)


Gegeben: Ein Wort w ∈ {0, 1}∗ .
Problem: Hält Mw bei Eingabe w ?

259
Definition 5.31
M [w] ist Abk. für Maschine M mit Eingabe w“

M [w]↓ bedeutet, dass M [w] terminiert/hält.

Definition 5.32 (Spezielles Halteproblem)


Gegeben: Ein Wort w ∈ {0, 1}∗ .
Problem: Hält Mw bei Eingabe w ?

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

In det Tat, berechnet eine TM M die Funktion χK so berechnet


die folgende TM M 0 die Funktion f :

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

In det Tat, berechnet eine TM M die Funktion χK so berechnet


die folgende TM M 0 die Funktion f :

M’ ja
w Band=0? stop
M nein

Dann gibt es ein w0 mit Mw0 = M 0 .

260
Beweis (Forts.):
(Forts.)

M’ ja
w Band=0? stop
M nein

f (w0 ) = ⊥ ⇔ χK (w0 ) = 1 (Def. von f )


⇔ w0 ∈ K (Def. von χK )
⇔ Mw 0
0 [w ]↓ (Def. von K)
⇔ M 0 [w0 ]↓ (Mw0 = M 0 )
⇔ f (w0 ) 6= ⊥ (M 0 berechnet f )
Wir erhalten einen Widerspruch: f (w0 ) = ⊥ ⇔ f (w0 ) 6= ⊥.
Die Annahme, K sei entscheidbar, ist damit falsch.

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.

H0 := {w ∈ {0, 1}∗ | Mw []↓}

265
Satz 5.40
Das Halteproblem auf leerem Band, H0 , ist unentscheidbar.

H0 := {w ∈ {0, 1}∗ | Mw []↓}

Beweis:
Wir zeigen K ≤ H0 mit einer Funktion f : {0, 1}∗ → {0, 1}∗
f (w) ist die Kodierung folgender TM:

Überschreibe die Eingabe mit w; führe Mw aus.

Dh f berechnet aus w die Kodierung w1 einer TM, die w schreibt,


und gibt die Kodierung von “w1 ; w” zurück.
Damit ist f total und berechenbar.

265
Satz 5.40
Das Halteproblem auf leerem Band, H0 , ist unentscheidbar.

H0 := {w ∈ {0, 1}∗ | Mw []↓}

Beweis:
Wir zeigen K ≤ H0 mit einer Funktion f : {0, 1}∗ → {0, 1}∗
f (w) ist die Kodierung folgender TM:

Überschreibe die Eingabe mit w; führe Mw aus.

Dh f berechnet aus w die Kodierung w1 einer TM, die w schreibt,


und gibt die Kodierung von “w1 ; w” zurück.
Damit ist f total und berechenbar.
Es gilt:

w ∈ K ⇔ Mw [w]↓ ⇔ Mf (w) []↓ ⇔ f (w) ∈ H0

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.

Die Unentscheidbarkeit vieler Fragen über die Ausführung von


Programmen folgt durch Reduktion des Halteproblems:

266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.

Die Unentscheidbarkeit vieler Fragen über die Ausführung von


Programmen folgt durch Reduktion des Halteproblems:
Kann ein WHILE-Programm mit einer bestimmten Eingabe
einen bestimmten Programmpunkt erreichen?

266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.

Die Unentscheidbarkeit vieler Fragen über die Ausführung von


Programmen folgt durch Reduktion des Halteproblems:
Kann ein WHILE-Programm mit einer bestimmten Eingabe
einen bestimmten Programmpunkt erreichen?
Der Spezialfall Programmpunkt=Programmende ist das
Halteproblem.

266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.

Die Unentscheidbarkeit vieler Fragen über die Ausführung von


Programmen folgt durch Reduktion des Halteproblems:
Kann ein WHILE-Programm mit einer bestimmten Eingabe
einen bestimmten Programmpunkt erreichen?
Der Spezialfall Programmpunkt=Programmende ist das
Halteproblem.
Kann Variable x7 bei einer bestimmten Eingabe je den Wert
232 erreichen?

266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.

Die Unentscheidbarkeit vieler Fragen über die Ausführung von


Programmen folgt durch Reduktion des Halteproblems:
Kann ein WHILE-Programm mit einer bestimmten Eingabe
einen bestimmten Programmpunkt erreichen?
Der Spezialfall Programmpunkt=Programmende ist das
Halteproblem.
Kann Variable x7 bei einer bestimmten Eingabe je den Wert
232 erreichen?
Reduktion: Ein Programm P hält gdw

266
Fazit:
Es gibt keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm terminiert.

Die Unentscheidbarkeit vieler Fragen über die Ausführung von


Programmen folgt durch Reduktion des Halteproblems:
Kann ein WHILE-Programm mit einer bestimmten Eingabe
einen bestimmten Programmpunkt erreichen?
Der Spezialfall Programmpunkt=Programmende ist das
Halteproblem.
Kann Variable x7 bei einer bestimmten Eingabe je den Wert
232 erreichen?
Reduktion: Ein Programm P hält gdw
während der Ausführung von
P ; x7 := 232
Variable x7 den Wert 232 erreicht.
(OE: x7 kommt in P nicht vor)
266
5.3 Semi-Entscheidbarkeit

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

Formulierung mit Parallelismus:


input(x);
führe M1 [x] und M2 [x] parallel aus;
hält M1 , gib 1 aus, hält M2 , gib 0 aus.

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

Formulierung mit Parallelismus:


input(x);
führe M1 [x] und M2 [x] parallel aus;
hält M1 , gib 1 aus, hält M2 , gib 0 aus.

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.

Warnung: Rekursiv aufzählbar 6= abzählbar!


Jede Sprache ist abzählbar aber nicht jede Sprache ist rekursiv
aufzählbar (s.u.)

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

⇐“: O.B.d.A. nehmen wir A ⊆ N an.



Sei A semi-entscheidbar durch (zB) GOTO-Programm P .
Problem: P [i] muss nicht halten und darf daher nur
zeitbeschränkt“ ausgeführt werden. Gesucht: Paare (i, j) so dass

P [i] nach j Schritten hält.

271
Beweis (Forts.):
Idee: Wir benutzen eine geeignete bijektion c : N × N ↔ N.
Seien p1 : N → N und p2 : N → N mit

p1 (c(n1 , n2 )) = n1 und p2 (c(n1 , n2 )) = n2

(Umkehrung von c).


Sei d ∈ A beliebig.
Folgender Algorithmus berechnet eine Aufzählung von A:

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

p1 (c(n1 , n2 )) = n1 und p2 (c(n1 , n2 )) = n2

(Umkehrung von c).


Sei d ∈ A beliebig.
Folgender Algorithmus berechnet eine Aufzählung von A:

input(n);
if P [p1 (n)] hält nach p2 (n) Schritten then output(p1 (n))
else output(d) fi

Korrektheit: Der Algorithmus hält immer und liefert immer ein


Element aus A.

272
Beweis (Forts.):
Idee: Wir benutzen eine geeignete bijektion c : N × N ↔ N.
Seien p1 : N → N und p2 : N → N mit

p1 (c(n1 , n2 )) = n1 und p2 (c(n1 , n2 )) = n2

(Umkehrung von c).


Sei d ∈ A beliebig.
Folgender Algorithmus berechnet eine Aufzählung von A:

input(n);
if P [p1 (n)] hält nach p2 (n) Schritten then output(p1 (n))
else output(d) fi

Korrektheit: Der Algorithmus hält immer und liefert immer ein


Element aus A.
Vollständigktheit: Sei a ∈ A ⊆ N.
Dann hält P [a] nach einer endlichen Zahl k von Schritten. Dann
liefert die Eingabe n = c(a, k) die Ausgabe a. 272
Folgende Aussagen sind äquivalent:
A ist semi-entscheidbar

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.

Hier haben wir benutzt, dass man einen Interpreter/Simulator


für Turingmaschinen als Turingmaschine programmieren kann.
Ein solcher Interpreter wird oft eine
Universelle Turingmaschine (U ) genannt.

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.

Hier haben wir benutzt, dass man einen Interpreter/Simulator


für Turingmaschinen als Turingmaschine programmieren kann.
Ein solcher Interpreter wird oft eine
Universelle Turingmaschine (U ) genannt.

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.

Hier haben wir benutzt, dass man einen Interpreter/Simulator


für Turingmaschinen als Turingmaschine programmieren kann.
Ein solcher Interpreter wird oft eine
Universelle Turingmaschine (U ) genannt.

Korollar 5.47
K ist nicht semi-entscheidbar.

Semi-Entscheidbarkeit ist nicht abgeschlossen unter Komplement.

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.

Im Satz von Rice geht es um die von einem Programm


berechnete Funktion (Semantik),
nicht um den Programmtext (Syntax).

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

w ∈ K =⇒ ¬Mw [w]↓ =⇒ ϕh(w) = f ∈F =⇒ 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

w ∈ K =⇒ ¬Mw [w]↓ =⇒ ϕh(w) = f ∈F =⇒ h(w) ∈ CF


Falls w ∈
/ K dann hält Mw [w] nach eine Zahl t von Schritten.
Damit gilt: ϕh(w) ist f eingeschränkt auf {0, . . . , t − 1}.
Nach Annahme folgt ϕh(w) ∈ / F , dh 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

w ∈ K =⇒ ¬Mw [w]↓ =⇒ ϕh(w) = g ∈ F =⇒ h(w) ∈ CF


w∈
/ K =⇒ Mw [w]↓ =⇒ ϕh(w) = f ∈
/ F =⇒ 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

Termination ist unentscheidbar (Rice):


Klare Ja/Nein Antwort unmöglich.

283
Grenzen automatischer Terminationsanalyse von Programmen

Termination ist unentscheidbar (Rice):


Klare Ja/Nein Antwort unmöglich.
Termination ist nicht semi-entscheidbar (Rice-Shapiro):
Es gibt kein Zertifizierungs-Programm,
das alle terminierenden Programme erkennt.

283
Grenzen automatischer Terminationsanalyse von Programmen

Termination ist unentscheidbar (Rice):


Klare Ja/Nein Antwort unmöglich.
Termination ist nicht semi-entscheidbar (Rice-Shapiro):
Es gibt kein Zertifizierungs-Programm,
das alle terminierenden Programme erkennt.
Nicht-Termination ist nicht semi-entscheidbar (Rice-Shapiro):
Es gibt keinen perfekten Bug Finder,
der alle nicht-terminierenden Programme erkennt.

283
Grenzen automatischer Terminationsanalyse von Programmen

Termination ist unentscheidbar (Rice):


Klare Ja/Nein Antwort unmöglich.
Termination ist nicht semi-entscheidbar (Rice-Shapiro):
Es gibt kein Zertifizierungs-Programm,
das alle terminierenden Programme erkennt.
Nicht-Termination ist nicht semi-entscheidbar (Rice-Shapiro):
Es gibt keinen perfekten Bug Finder,
der alle nicht-terminierenden Programme erkennt.

Aber es gibt mächtige heuristische Verfahren, die für


relativ viele Programme aus der Praxis (Gerätetreiber)
Termination beweisen können, oder
Gegenbeispiele finden können.

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

gibt es dann eine Folge dieser Karten

... ...
···
... ...

so dass oben und unten das gleiche Wort steht?

284
5.5 Das Postsche Korrespondenzproblem
Gegeben beliebig viele Kopien der 3 Spielkarten“

001 10 0
00 11 010

gibt es dann eine Folge dieser Karten

... ...
···
... ...

so dass oben und unten das gleiche Wort steht?

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.

Emil Leon Post, 1897 (Polen) – 1954 (NY).

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.

Wir zeigen nun:


H ≤ M P CP ≤ P CP
wobei
Definition 5.55 (Modifiziertes PCP, MPCP)
Gegeben: wie beim PCP
Problem: Gibt es eine Lösung i1 , . . . , in mit i1 = 1?

287
Satz 5.56

M P CP ≤ P CP

Beweis:
Für w = a1 . . . an :

w := #a1 #a2 # . . . #an #


(
w := a1 #a2 # . . . #an #
*
w := #a1 #a2 # . . . #an
* ( * ( *
f ((x1 , y1 ), . . . , (xk , yk )) := ((x1 , y1 ), (x1 , y1 ), . . . , (xk , yk ), ($, #$))

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

(#, #), (#, #)


(aq, q), (qa, q) für alle q ∈ F, a ∈ Γ
(q##, #) für alle q ∈ F

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 ) = Σ∗ .

Sei Σ = {a1 , . . . , an }. Dann reduziert P CP 7→ (G4 , (a1 | . . . |an )∗ )


das PCP auf das Problem L(G) = L(α),

296
6. Komplexitätstheorie

297
6. Komplexitätstheorie

Was ist mit beschränkten Mitteln (Zeit&Platz) berechenbar?

Wieviel Zeit&Platz braucht man,


um ein bestimmtes Problem/Sprache zu entscheiden?

297
6. Komplexitätstheorie

Was ist mit beschränkten Mitteln (Zeit&Platz) berechenbar?

Wieviel Zeit&Platz braucht man,


um ein bestimmtes Problem/Sprache zu entscheiden?

Komplexität eines Problems, nicht eines Algorithmus.

297
6. Komplexitätstheorie

Was ist mit beschränkten Mitteln (Zeit&Platz) berechenbar?

Wieviel Zeit&Platz braucht man,


um ein bestimmtes Problem/Sprache zu entscheiden?

Komplexität eines Problems, nicht eines Algorithmus.

Obere Schranken: durch Angabe eines Algorithmus

297
6. Komplexitätstheorie

Was ist mit beschränkten Mitteln (Zeit&Platz) berechenbar?

Wieviel Zeit&Platz braucht man,


um ein bestimmtes Problem/Sprache zu entscheiden?

Komplexität eines Problems, nicht eines Algorithmus.

Obere Schranken: durch Angabe eines Algorithmus


Bsp: w ∈ L(G) für CFGs ist in Zeit O(|w|3 ) lösbar, mit CYK.

297
6. Komplexitätstheorie

Was ist mit beschränkten Mitteln (Zeit&Platz) berechenbar?

Wieviel Zeit&Platz braucht man,


um ein bestimmtes Problem/Sprache zu entscheiden?

Komplexität eines Problems, nicht eines Algorithmus.

Obere Schranken: durch Angabe eines Algorithmus


Bsp: w ∈ L(G) für CFGs ist in Zeit O(|w|3 ) lösbar, mit CYK.

Untere Schranken: schwierig . . .

297
6. Komplexitätstheorie

Was ist mit beschränkten Mitteln (Zeit&Platz) berechenbar?

Wieviel Zeit&Platz braucht man,


um ein bestimmtes Problem/Sprache zu entscheiden?

Komplexität eines Problems, nicht eines Algorithmus.

Obere Schranken: durch Angabe eines Algorithmus


Bsp: w ∈ L(G) für CFGs ist in Zeit O(|w|3 ) lösbar, mit CYK.

Untere Schranken: schwierig . . .


Bsp: Palindrom-Test auf einer 1-Band TM braucht Zeit Θ(n2 )
Nicht hier.

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

Problemgröße lösbar in fester Zeit: Speedup


Komplexität n n2 n5 2n 3n
1 MHz Prozessor N1 N2 N3 N4 N5
1 GHz Prozessor 1000 N1 32 N2 4 N3 N4 + 10 N5 + 6

298
Zwei zentrale Komplexitätsklassen:

P = die von einer DTM in polynomieller Zeit lösbaren Probleme


= die leichten“ Probleme (feasible problems)

299
Zwei zentrale Komplexitätsklassen:

P = die von einer DTM in polynomieller Zeit lösbaren Probleme


= die leichten“ Probleme (feasible problems)

NP = die von einer NTM in polynomieller Zeit lösbaren Probleme
In exponentieller Zeit lösbar (s. Simulation NTM durch DTM)

299
Zwei zentrale Komplexitätsklassen:

P = die von einer DTM in polynomieller Zeit lösbaren Probleme


= die leichten“ Probleme (feasible problems)

NP = die von einer NTM in polynomieller Zeit lösbaren Probleme
In exponentieller Zeit lösbar (s. Simulation NTM durch DTM)

Zentrale Frage:

¿ P = NP ?

299
Zwei zentrale Komplexitätsklassen:

P = die von einer DTM in polynomieller Zeit lösbaren Probleme


= die leichten“ Probleme (feasible problems)

NP = die von einer NTM in polynomieller Zeit lösbaren Probleme
In exponentieller Zeit lösbar (s. Simulation NTM durch DTM)

Zentrale Frage:

¿ P = NP ?

Ist wichtig

299
Zwei zentrale Komplexitätsklassen:

P = die von einer DTM in polynomieller Zeit lösbaren Probleme


= die leichten“ Probleme (feasible problems)

NP = die von einer NTM in polynomieller Zeit lösbaren Probleme
In exponentieller Zeit lösbar (s. Simulation NTM durch DTM)

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:

TIME(f (n)) := {A ⊆ Σ∗ | ∃ DTM M. A = L(M ) ∧


∀w ∈ Σ∗ . timeM (w) ≤ f (|w|)}

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:

TIME(f (n)) := {A ⊆ Σ∗ | ∃ DTM M. A = L(M ) ∧


∀w ∈ Σ∗ . timeM (w) ≤ f (|w|)}
Merke:
n ist implizit die Länge der Eingabe
Die DTM entscheidet die Sprache A in ≤ f (n) Schritten
301
Wir betrachten Polynome mit Koeffizienten ak , . . . a0 ∈ N:

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

Damit gilt auch [


P= TIME(O(nk ))
k≥0

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 )?

Um robust bzgl Maschinenmodell zu sein:


1-Band DTM braucht O(t2 ) Schritte
um t Schritte einer k-Band DTM zu simulieren.

304
Warum P und nicht (zB) O(n17 )?

Um robust bzgl Maschinenmodell zu sein:


1-Band DTM braucht O(t2 ) Schritte
um t Schritte einer k-Band DTM zu simulieren.
Fast alle bekannten vernünftigen“ Maschinenmodelle lassen

sich von einer DTM in polynomieller Zeit simulieren.
Offen: Quantencomputer

304
Warum P und nicht (zB) O(n17 )?

Um robust bzgl Maschinenmodell zu sein:


1-Band DTM braucht O(t2 ) Schritte
um t Schritte einer k-Band DTM zu simulieren.
Fast alle bekannten vernünftigen“ Maschinenmodelle lassen

sich von einer DTM in polynomieller Zeit simulieren.
Offen: Quantencomputer

Warum TM?

304
Warum P und nicht (zB) O(n17 )?

Um robust bzgl Maschinenmodell zu sein:


1-Band DTM braucht O(t2 ) Schritte
um t Schritte einer k-Band DTM zu simulieren.
Fast alle bekannten vernünftigen“ Maschinenmodelle lassen

sich von einer DTM in polynomieller Zeit simulieren.
Offen: Quantencomputer

Warum TM? Historisch.

Ebenfalls möglich: (zB) WHILE.


Aber zwei mögliche Kostenmodelle:

304
Warum P und nicht (zB) O(n17 )?

Um robust bzgl Maschinenmodell zu sein:


1-Band DTM braucht O(t2 ) Schritte
um t Schritte einer k-Band DTM zu simulieren.
Fast alle bekannten vernünftigen“ Maschinenmodelle lassen

sich von einer DTM in polynomieller Zeit simulieren.
Offen: Quantencomputer

Warum TM? Historisch.

Ebenfalls möglich: (zB) WHILE.


Aber zwei mögliche Kostenmodelle:
Uniform xi := xj + n kostet 1 Zeiteinheit.

304
Warum P und nicht (zB) O(n17 )?

Um robust bzgl Maschinenmodell zu sein:


1-Band DTM braucht O(t2 ) Schritte
um t Schritte einer k-Band DTM zu simulieren.
Fast alle bekannten vernünftigen“ Maschinenmodelle lassen

sich von einer DTM in polynomieller Zeit simulieren.
Offen: Quantencomputer

Warum TM? Historisch.

Ebenfalls möglich: (zB) WHILE.


Aber zwei mögliche Kostenmodelle:
Uniform xi := xj + n kostet 1 Zeiteinheit.
Logarithmisch xi := xj + n kostet log xj Zeiteinheiten.

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

2 für alle w ∈ A kann M [w] in ≤ p(|w|) Schritten

akzeptieren, dh einen Endzustand erreichen.

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 )

Sei f : N → N eine totale Funktion.

NTIME(f (n)) := {A ⊆ Σ∗ | ∃ NTM M. A = L(M ) ∧


∀w ∈ Σ∗ . ntimeM (w) ≤ f (|w|)}
[
NP := NTIME(p(n))
p P olynom

306
Definition 6.4

minimale Anzahl der Schritte

falls w ∈ L(M )
ntimeM (w) := bis NTM M [w] akzeptiert
0 falls w ∈
/ L(M )

Sei f : N → N eine totale Funktion.

NTIME(f (n)) := {A ⊆ Σ∗ | ∃ NTM M. A = L(M ) ∧


∀w ∈ Σ∗ . ntimeM (w) ≤ f (|w|)}
[
NP := NTIME(p(n))
p P olynom

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

2 Schreibe p(|w|) auf ein getrenntes Band ( timer“)


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

2 Schreibe p(|w|) auf ein getrenntes Band ( timer“)



3 Simuliere M [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

2 Schreibe p(|w|) auf ein getrenntes Band ( timer“)



3 Simuliere M [w], aber dekrementiere timer nach jedem Schritt.

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

2 Schreibe p(|w|) auf ein getrenntes Band ( timer“)



3 Simuliere M [w], aber dekrementiere timer nach jedem Schritt.

4 Wird timer=0, ohne dass M gehalten hat, halte in einem

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.

2 Prüfe, ob diese Permutation ein Hamilton-Kreis ist.

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.

2 Prüfe, ob diese Permutation ein Hamilton-Kreis ist.

Das Raten ist in polynomieller Zeit von einer NTM machbar.


Das Prüfen ist in polynomieller Zeit von einer DTM machbar.

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.

2 Prüfe, ob diese Permutation ein Hamilton-Kreis ist.

Das Raten ist in polynomieller Zeit von einer NTM machbar.


Das Prüfen ist in polynomieller Zeit von einer DTM machbar.
Vermutung: HAMILTON ∈ / P da man keinen substanziell besseren
Algorithmus kennt, als alle Permutationen auszuprobieren.

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?

RUCKSACK := {bin(a1 )# . . . #bin(an )#bin(c) |


P
∃R ⊆ {1, . . . , n}. 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 := {bin(a1 )# . . . #bin(an )#bin(c) |


P
∃R ⊆ {1, . . . , n}. 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 := {bin(a1 )# . . . #bin(an )#bin(c) |


P
∃R ⊆ {1, . . . , n}. i∈R ai = c}

RUCKSACK ∈ NP:
Zertifikat: Indexmenge R. In polynomieller Zeit verifizierbar.

Merke: Der Nachweis A ∈ NP ist meistens einfach.

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

Da q(p(n)) ein Polynom ist falls p und q Polynome sind:


Lemma 6.12
Die Relation ≤p ist transitiv.

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.

Aber gibt es überhaupt NP-vollständige Probleme?

320
Aussagenlogik

321
Aussagenlogik

Syntax der Aussagenlogik:

Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...

321
Aussagenlogik

Syntax der Aussagenlogik:

Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...

Bsp: ((¬x ∧ y) ∨ (x ∧ ¬z))

321
Aussagenlogik

Syntax der Aussagenlogik:

Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...

Bsp: ((¬x ∧ y) ∨ (x ∧ ¬z))


Konvention: man darf äußerste Klammern weglassen
und ∧ bindet stärker als ∨: x ∧ y ∨ z ist Abk. für (x ∧ y) ∨ z

321
Aussagenlogik

Syntax der Aussagenlogik:

Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...

Bsp: ((¬x ∧ y) ∨ (x ∧ ¬z))


Konvention: man darf äußerste Klammern weglassen
und ∧ bindet stärker als ∨: x ∧ y ∨ z ist Abk. für (x ∧ y) ∨ z

Semantik der Aussagenlogik:


Eine Belegung ist eine Funktion von Variablen auf {0, 1}.
Bsp: σ = {x 7→ 0, y 7→ 1, z 7→ 0, . . . }
Belegungen werde mittels Wahrheitstabellen auf Formeln
erweitert. Bsp: σ((¬x ∧ y) ∨ (x ∧ ¬z)) = 1

321
Aussagenlogik

Syntax der Aussagenlogik:

Formeln: F → ¬F | (F ∧ F ) | (F ∨ F ) | X
Variablen: X → x | y | z | ...

Bsp: ((¬x ∧ y) ∨ (x ∧ ¬z))


Konvention: man darf äußerste Klammern weglassen
und ∧ bindet stärker als ∨: x ∧ y ∨ z ist Abk. für (x ∧ y) ∨ z

Semantik der Aussagenlogik:


Eine Belegung ist eine Funktion von Variablen auf {0, 1}.
Bsp: σ = {x 7→ 0, y 7→ 1, z 7→ 0, . . . }
Belegungen werde mittels Wahrheitstabellen auf Formeln
erweitert. Bsp: σ((¬x ∧ y) ∨ (x ∧ ¬z)) = 1
Eine Formel F ist erfüllbar gdw es eine Belegung σ gibt mit
σ(F ) = 1
321
SAT
Gegeben: Eine aussagenlogische Formel F .
Problem: Ist F erfüllbar?

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?

Lineare Reduktion von Graph G = (V, E) auf SAT:


Variablen = V × {1, 2, 3}.

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?

Lineare Reduktion von Graph G = (V, E) auf SAT:


Variablen = V × {1, 2, 3}. Notation: xvi
Interpretation: xvi = 1 gdw Knoten v hat Farbe i

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?

Lineare Reduktion von Graph G = (V, E) auf SAT:


Variablen = V × {1, 2, 3}. Notation: xvi
Interpretation: xvi = 1 gdw Knoten v hat Farbe i
Instanz von SAT:
^
Genau1(xv1 , xv2 , xv3 )
v∈V

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?

Lineare Reduktion von Graph G = (V, E) auf SAT:


Variablen = V × {1, 2, 3}. Notation: xvi
Interpretation: xvi = 1 gdw Knoten v hat Farbe i
Instanz von SAT:
^ ^
Genau1(xv1 , xv2 , xv3 ) ∧ ¬(xu1 ∧xv1 ∨ xu2 ∧xv2 ∨ xu3 ∧xv3 )
v∈V (u,v)∈E

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?

Lineare Reduktion von Graph G = (V, E) auf SAT:


Variablen = V × {1, 2, 3}. Notation: xvi
Interpretation: xvi = 1 gdw Knoten v hat Farbe i
Instanz von SAT:
^ ^
Genau1(xv1 , xv2 , xv3 ) ∧ ¬(xu1 ∧xv1 ∨ xu2 ∧xv2 ∨ xu3 ∧xv3 )
v∈V (u,v)∈E

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:

Bounded Model Checking

332
Weitere Anwendungen von SAT:

Bounded Model Checking

Hardware Entscheide, ob eine Schaltung mit Zustand für alle


Eingaben innerhalb von 10 Zyklen ein bestimmtes
Verhalten (nicht) hat.

332
Weitere Anwendungen von SAT:

Bounded Model Checking

Hardware Entscheide, ob eine Schaltung mit Zustand für alle


Eingaben innerhalb von 10 Zyklen ein bestimmtes
Verhalten (nicht) hat.
Software Entscheide, ob ein Programm für alle Eingaben innerhalb
von 10 Schritten ein bestimmtes Verhalten (nicht) hat.

332
Weitere Anwendungen von SAT:

Bounded Model Checking

Hardware Entscheide, ob eine Schaltung mit Zustand für alle


Eingaben innerhalb von 10 Zyklen ein bestimmtes
Verhalten (nicht) hat.
Software Entscheide, ob ein Programm für alle Eingaben innerhalb
von 10 Schritten ein bestimmtes Verhalten (nicht) hat.
Variablen müssen auf kleine Wertebereiche
eingeschränkt werden!

332
6.4 Weitere NP-vollständige Probleme

333
6.4 Weitere NP-vollständige Probleme

Wie zeigt man, dass ein (weiteres) Problem B NP-vollständig ist?

333
6.4 Weitere NP-vollständige Probleme

Wie zeigt man, dass ein (weiteres) Problem B NP-vollständig ist?


Zeige B ∈ NP (meist trivial)
Zeige A ≤p B für ein NP-vollständiges Problem A.

333
6.4 Weitere NP-vollständige Probleme

Wie zeigt man, dass ein (weiteres) Problem B NP-vollständig ist?


Zeige B ∈ NP (meist trivial)
Zeige A ≤p B für ein NP-vollständiges Problem A.

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

Wie zeigt man, dass ein (weiteres) Problem B NP-vollständig ist?


Zeige B ∈ NP (meist trivial)
Zeige A ≤p B für ein NP-vollständiges Problem A.

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?

Offensichtlich gilt 3KNF-SAT ∈ NP.


Aber vielleicht ist 3KNF-SAT einfacher als SAT?
335
Satz 6.22
3KNF-SAT ist NP-vollständig.

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

F ist erfüllbar ⇔ F 0 ist 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

F ist erfüllbar ⇔ F 0 ist erfüllbar

NB F und F 0 sind erfüllbarkeitsäquivalent, aber nicht


notwendigerweise auch äquivalent.

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

F ist erfüllbar ⇔ F 0 ist erfüllbar

NB F und F 0 sind erfüllbarkeitsäquivalent, aber nicht


notwendigerweise auch äquivalent.
1. Transformiere F in Negations-Normalform (NNF) durch
fortgesetze Anwendung der de Morganschen Gesetze

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

F ist erfüllbar ⇔ F 0 ist erfüllbar

NB F und F 0 sind erfüllbarkeitsäquivalent, aber nicht


notwendigerweise auch äquivalent.
1. Transformiere F in Negations-Normalform (NNF) durch
fortgesetze Anwendung der de Morganschen Gesetze

¬(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

F ist erfüllbar ⇔ F 0 ist erfüllbar

NB F und F 0 sind erfüllbarkeitsäquivalent, aber nicht


notwendigerweise auch äquivalent.
1. Transformiere F in Negations-Normalform (NNF) durch
fortgesetze Anwendung der de Morganschen Gesetze

¬(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

F ist erfüllbar ⇔ F 0 ist erfüllbar

NB F und F 0 sind erfüllbarkeitsäquivalent, aber nicht


notwendigerweise auch äquivalent.
1. Transformiere F in Negations-Normalform (NNF) durch
fortgesetze Anwendung der de Morganschen Gesetze

¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
¬¬A = A

von links nach rechts.


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

F ist erfüllbar ⇔ F 0 ist erfüllbar

NB F und F 0 sind erfüllbarkeitsäquivalent, aber nicht


notwendigerweise auch äquivalent.
1. Transformiere F in Negations-Normalform (NNF) durch
fortgesetze Anwendung der de Morganschen Gesetze

¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
¬¬A = A

von links nach rechts. F1 ist Resultat.


336
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.

337
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.

2. Betrachte F1 als Baum, wobei die Literale Blätter sind.


Ordne jedem inneren Knoten eine neue Variable ∈ {y0 , y1 , . . . } zu.
Ordne dabei der Wurzel von F1 die Variable y0 zu.

3. Betrachte die yi als Abkürzung für die Teilbäume, an deren


Wurzeln sie stehen
yi = ◦i
/ \
li ri
wobei ◦i ∈ {∧, ∨} und li , ri ein Literal oder eine Variable yj ist.

337
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.

2. Betrachte F1 als Baum, wobei die Literale Blätter sind.


Ordne jedem inneren Knoten eine neue Variable ∈ {y0 , y1 , . . . } zu.
Ordne dabei der Wurzel von F1 die Variable y0 zu.

3. Betrachte die yi als Abkürzung für die Teilbäume, an deren


Wurzeln sie stehen
yi = ◦i
/ \
li ri
wobei ◦i ∈ {∧, ∨} und li , ri ein Literal oder eine Variable yj ist.
Beschreibe F1 Knoten für Knoten:

y0 ∧ (y0 ↔ (l0 ◦0 r0 )) ∧ (y1 ↔ (l1 ◦1 r1 )) . . .

337
Beweis (Forts.):
Für F1 gilt: ¬ nur noch direkt vor Variablen.

2. Betrachte F1 als Baum, wobei die Literale Blätter sind.


Ordne jedem inneren Knoten eine neue Variable ∈ {y0 , y1 , . . . } zu.
Ordne dabei der Wurzel von F1 die Variable y0 zu.

3. Betrachte die yi als Abkürzung für die Teilbäume, an deren


Wurzeln sie stehen
yi = ◦i
/ \
li ri
wobei ◦i ∈ {∧, ∨} und li , ri ein Literal oder eine Variable yj ist.
Beschreibe F1 Knoten für Knoten:

y0 ∧ (y0 ↔ (l0 ◦0 r0 )) ∧ (y1 ↔ (l1 ◦1 r1 )) . . . =: F2

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

4. Transformiere jede Äquivalenz in 3KNF:

(a ↔ (b ∨ c)) 7→ (a ∨ ¬b) ∧ (a ∨ ¬c) ∧ (¬a ∨ b ∨ c)


(a ↔ (b ∧ c)) 7→ (¬a ∨ b) ∧ (¬a ∨ c) ∧ (a ∨ ¬b ∨ ¬c)

338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar

4. Transformiere jede Äquivalenz in 3KNF:

(a ↔ (b ∨ c)) 7→ (a ∨ ¬b) ∧ (a ∨ ¬c) ∧ (¬a ∨ b ∨ c)


(a ↔ (b ∧ c)) 7→ (¬a ∨ b) ∧ (¬a ∨ c) ∧ (a ∨ ¬b ∨ ¬c)

Ergebnis ist F 0 .

338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar

4. Transformiere jede Äquivalenz in 3KNF:

(a ↔ (b ∨ c)) 7→ (a ∨ ¬b) ∧ (a ∨ ¬c) ∧ (¬a ∨ b ∨ c)


(a ↔ (b ∧ c)) 7→ (¬a ∨ b) ∧ (¬a ∨ c) ∧ (a ∨ ¬b ∨ ¬c)

Ergebnis ist F 0 .

Jeder Schritt ist in polynomieller Zeit in |F | berechenbar.

338
Beweis (Forts.):
F1 erf. =⇒ F2 erf.: yi bekommt Wert seines Teilbaums.
F2 erf. =⇒ F1 erf.: klar

4. Transformiere jede Äquivalenz in 3KNF:

(a ↔ (b ∨ c)) 7→ (a ∨ ¬b) ∧ (a ∨ ¬c) ∧ (¬a ∨ b ∨ c)


(a ↔ (b ∧ c)) 7→ (¬a ∨ b) ∧ (¬a ∨ c) ∧ (a ∨ ¬b ∨ ¬c)

Ergebnis ist F 0 .

Jeder Schritt ist in polynomieller Zeit in |F | berechenbar.


Bei Transformation in NNF nimmt mit jedem Schritt

Summe der |G| für alle Teilformeln ¬G von F

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.

Kann man wie folgt die NP-Vollständigkeit von KNF-SAT zeigen?


Man zeigt SAT ≤p KNF-SAT
indem man jede Formel in KNF transformiert.

339
Da jede Formel in 3KNF auch in KNF ist:
Korollar 6.23
KNF-SAT ist NP-vollständig.

Kann man wie folgt die NP-Vollständigkeit von KNF-SAT zeigen?


Man zeigt SAT ≤p KNF-SAT
indem man jede Formel in KNF transformiert.

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )


=⇒

T1 = {1, 2 + 1} T10 = {2, 2 + 1}

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )


=⇒

T1 = {1, 2 + 1} T10 = {2, 2 + 1}


T2 = {1, 2, 2 + 2} T20 = {2 + 2}

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )


=⇒

T1 = {1, 2 + 1} T10 = {2, 2 + 1}


T2 = {1, 2, 2 + 2} T20 = {2 + 2}
T3 = {1, 2 + 3} T30 = {2 + 3}

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )


=⇒

T1 = {1, 2 + 1} T10 = {2, 2 + 1}


T2 = {1, 2, 2 + 2} T20 = {2 + 2}
T3 = {1, 2 + 3} T30 = {2 + 3}
T4 = {2, 2 + 4} T40 = {2 + 4}

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )


=⇒

T1 = {1, 2 + 1} T10 = {2, 2 + 1}


T2 = {1, 2, 2 + 2} T20 = {2 + 2}
T3 = {1, 2 + 3} T30 = {2 + 3}
T4 = {2, 2 + 4} T40 = {2 + 4}

Überdeckung: T10 , T2 , T30 , T40

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}

Beispiel: (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ x2 ∨ x4 )


=⇒

T1 = {1, 2 + 1} T10 = {2, 2 + 1}


T2 = {1, 2, 2 + 2} T20 = {2 + 2}
T3 = {1, 2 + 3} T30 = {2 + 3}
T4 = {2, 2 + 4} T40 = {2 + 4}

Überdeckung: T10 , T2 , T30 , T40 ≈ x1 = 0, x2 = 1, x3 = 0, x4 = 0

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}

⇐“ Sei U1 , . . . , Un ∈ {T1 , . . . , Tn0 } eine Überdeckung vom M .


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}

⇐“ Sei U1 , . . . , Un ∈ {T1 , . . . , Tn0 } eine Überdeckung vom M .



⇒ Es gibt für alle 1 ≤ i ≤ n genau eine Menge Ui ∈ {Ti , Ti0 } mit
m + i ∈ Ui .

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}

⇐“ Sei U1 , . . . , Un ∈ {T1 , . . . , Tn0 } eine Überdeckung vom M .



⇒ Es gibt für alle 1 ≤ i ≤ n genau eine Menge Ui ∈ {Ti , Ti0 } mit
m + i ∈ Ui .
Setze σ(xi ) := if Ui = Ti then 1 else 0

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}

⇐“ Sei U1 , . . . , Un ∈ {T1 , . . . , Tn0 } eine Überdeckung vom M .



⇒ Es gibt für alle 1 ≤ i ≤ n genau eine Menge Ui ∈ {Ti , Ti0 } mit
m + i ∈ Ui .
Setze σ(xi ) := if Ui = Ti then 1 else 0
⇒ σ(Kj ) = 1 für alle 1 ≤ j ≤ m

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}

⇐“ Sei U1 , . . . , Un ∈ {T1 , . . . , Tn0 } eine Überdeckung vom M .



⇒ Es gibt für alle 1 ≤ i ≤ n genau eine Menge Ui ∈ {Ti , Ti0 } mit
m + i ∈ Ui .
Setze σ(xi ) := if Ui = Ti then 1 else 0
⇒ σ(Kj ) = 1 für alle 1 ≤ j ≤ m
⇒ σ(F ) = 1

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Ü.

Kann man MÜ in Zeit O(f (n)) entscheiden,


dann kann man das kleinste k in Zeit O(f (n) · log n) berechnen.

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Ü.

Kann man MÜ in Zeit O(f (n)) entscheiden,


dann kann man das kleinste k in Zeit O(f (n) · log n) berechnen.

f (n) polynomiell =⇒ f (n) · log n polynomiell


f (n) exponentiell =⇒ f (n) · log n exponentiell

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:

if (T~ , M, k) ∈ / MÜ then output(“nicht lösbar”)


else
Ü := ∅
for i := 1 to n do
if (T~ − Ti , M, k) ∈ MÜ
then T~ := T~ − Ti
else Ü := Ü ∪ {Ti }

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:

Anwendung von Clique-Berechnung:


Knoten = Prozess
Kante = Zwei Prozesse sind parallel ausführbar

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:

Anwendung von Clique-Berechnung:


Knoten = Prozess
Kante = Zwei Prozesse sind parallel ausführbar
=⇒ Clique ist Gruppe von parallelisierbaren Prozessen

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:

Anwendung von Clique-Berechnung:


Knoten = Prozess
Kante = Zwei Prozesse sind parallel ausführbar
=⇒ Clique ist Gruppe von parallelisierbaren Prozessen
Fakt 6.28
CLIQUE ∈ NP
346
Satz 6.29
CLIQUE ist NP-vollständig.

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 }

F ist erfüllbar durch eine Belegung σ ⇐⇒

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 }

F ist erfüllbar durch eine Belegung σ ⇐⇒


Es gibt in jeder Klausel i ein Literal ziji mit σ(ziji ) = 1
⇐⇒

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 }

F ist erfüllbar durch eine Belegung σ ⇐⇒


Es gibt in jeder Klausel i ein Literal ziji mit σ(ziji ) = 1
⇐⇒
Die Literale z1j1 , . . . , zkjk sind paarweise nicht komplementär
⇐⇒

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 }

F ist erfüllbar durch eine Belegung σ ⇐⇒


Es gibt in jeder Klausel i ein Literal ziji mit σ(ziji ) = 1
⇐⇒
Die Literale z1j1 , . . . , zkjk sind paarweise nicht komplementär
⇐⇒
Die Knoten (1, j1 ), . . . , (k, jk ) sind paarweise benachbart

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 }

F ist erfüllbar durch eine Belegung σ ⇐⇒


Es gibt in jeder Klausel i ein Literal ziji mit σ(ziji ) = 1
⇐⇒
Die Literale z1j1 , . . . , zkjk sind paarweise nicht komplementär
⇐⇒
Die Knoten (1, j1 ), . . . , (k, jk ) sind paarweise benachbart
⇐⇒ G hat eine Clique der Größe k.
347
RUCKSACK
Gegeben: Zahlen a1 , . . . an ∈ N und b ∈ N.
P
Problem: Gibt es R ⊆ {1, . . . , n} mit i∈R ai = b ?

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.

Beweis: 3KNF-SAT ≤p RUCKSACK:

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.

Beweis: 3KNF-SAT ≤p RUCKSACK:


Sei F = (z11 ∨ z12 ∨ z13 ) ∧ · · · ∧ (zm1 ∨ zm2 ∨ zm3 ), wobei

zij ∈ {x1 , . . . , xn } ∪ {¬x1 , ¬x2 , . . . , ¬xn }

D.h. m = Anzahl der Klauseln und n Anzahl der Variablen.

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.

Beweis: RUCKSACK ≤p PARTITION

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:
M := ni=1 ai = 57,
P

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:
M := ni=1 ai = 57, M − b + 1 = 20, b + 1 = 39
P

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:
M := ni=1 ai = 57, M − b + 1 = 20, b + 1 = 39
P

Das resultierende PARTITONS-Problem: 12, 7, 4, 9, 7, 3, 15, 20, 39

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:
M := ni=1 ai = 57, M − b + 1 = 20, b + 1 = 39
P

Das resultierende PARTITONS-Problem: 12, 7, 4, 9, 7, 3, 15, 20, 39


Lösung: {7, 9, 7, 15, 20} und {12, 4, 3, 39},

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:
M := ni=1 ai = 57, M − b + 1 = 20, b + 1 = 39
P

Das resultierende PARTITONS-Problem: 12, 7, 4, 9, 7, 3, 15, 20, 39


Lösung: {7, 9, 7, 15, 20} und {12, 4, 3, 39}, dh I = {2, 4, 5, 7, 8}.

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.

Beweis: RUCKSACK ≤p PARTITION


Beispiel: ~a = 12, 7, 4, 9, 7, 3, 15 und b = 38.
Lösung: Die Zahlen 7, 9, 7, 15, dh R = {2, 4, 5, 7}
RUCKSACK → PARTITION:
M := ni=1 ai = 57, M − b + 1 = 20, b + 1 = 39
P

Das resultierende PARTITONS-Problem: 12, 7, 4, 9, 7, 3, 15, 20, 39


Lösung: {7, 9, 7, 15, 20} und {12, 4, 3, 39}, dh I = {2, 4, 5, 7, 8}.
Reduktion im Allgemeinen:
a1 , a2 , . . . , ak , b 7→ a1 , a2 , . . . , ak , M − b + 1, b + 1
351
BIN PACKING
Gegeben: Eine Behältergröße“ b ∈ N, die Anzahl der Behälter

k ∈ N und Objekte“ a1 , a2 , . . . an .

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.

Beweis: PARTITION ≤p BIN PACKING

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.

Beweis: PARTITION ≤p BIN PACKING

(a1 , . . . , an ) 7→ (b, k, 2a1 , . . . , 2an )


Pk
wobei b := i=1 ai und k := 2.

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.

Beweis: HAMILTON ≤p TSP

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.

Beweis: HAMILTON ≤p TSP

({1, . . . , n}, E) 7→ (M, n)


wobei (
1 falls {i, j} ∈ E
Mij :=
2 sonst

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.

Despite the 23 years that have passed since its publication,


I consider Garey and Johnson the single most important
book on my office bookshelf.
Lance Fortnow, 2002.

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

Wir betrachten ∀x. F als Abk. für ¬∃ x. ¬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

Wir betrachten ∀x. F als Abk. für ¬∃ x. ¬F .


Definition 6.37
Ein Vorkommen einer Variablen x in einer Formel F ist gebunden
gdw das Vorkommen in einer Teilformel der Form ∃x. F 0 oder
∀x. F 0 in der Teilformel F 0 liegt.

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

Wir betrachten ∀x. F als Abk. für ¬∃ x. ¬F .


Definition 6.37
Ein Vorkommen einer Variablen x in einer Formel F ist gebunden
gdw das Vorkommen in einer Teilformel der Form ∃x. F 0 oder
∀x. F 0 in der Teilformel F 0 liegt.
Ein Vorkommen ist frei gdw es nicht gebunden ist.

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)

Ein Satz ist eine Formel ohne freie Variablen.

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)

Ein Satz ist eine Formel ohne freie Variablen.


Beispiel 6.39

∃x. ∃y. x = y ∃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)

Ein Satz ist eine Formel ohne freie Variablen.


Beispiel 6.39

∃x. ∃y. x = y ∃y. ∃x. x = y

Mit S bezeichnen wir die Menge der arithmetischen Sätze.

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

Daher haben wir Wahrheit nur für Sätze definiert.


361
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:

f (n1 , . . . , nk ) = m gdw F (n1 , . . . , nk , m) W

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:

f (n1 , . . . , nk ) = m gdw F (n1 , . . . , nk , m) W

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.

Ein Beweissystem Bew ist vollständig gdw

F W =⇒ es gibt b mit Bew(b, F ).

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

Wir betrachten ∀x. F als Abk. für ¬∃x. ¬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

Wir betrachten ∀x. F als Abk. für ¬∃x. ¬F .


Satz 6.48
Für Sätze der Presburger Arithmetik ist entscheidbar, ob sie wahr
sind.

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

Arithmetik : hochgradig unentscheidbar :-(


sogar sogar unvollständig :-((

=⇒ Hilberts 10tes Problem


=⇒ Gödels Theorem

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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?)

Idee: Codiere die Werte der Variablen als Worte ...

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:

Die Menge der erfüllenden Variablenbelegungen ist regulär !!

380
Beobachtung:

Die Menge der erfüllenden Variablenbelegungen ist regulär !!


φ1 ∧ φ2 =⇒ L(φ1 ) ∩ L(φ2 ) (Durchschnitt )
¬φ =⇒ L(φ) (Komplement )
∃x: φ =⇒ πx (L(φ)) (Projektion )

380
Beobachtung:

Die Menge der erfüllenden Variablenbelegungen ist regulär !!


φ1 ∧ φ2 =⇒ L(φ1 ) ∩ L(φ2 ) (Durchschnitt )
¬φ =⇒ L(φ) (Komplement )
∃x: φ =⇒ πx (L(φ)) (Projektion )
Achtung:
Ein akzeptiertes Tupel kann immer durch führende Nullen
verlängert werden !
bleibt unter Vereinigung, Durchschnitt und Komplement
erhalten !!

380
Beobachtung:

Die Menge der erfüllenden Variablenbelegungen ist regulär !!


φ1 ∧ φ2 =⇒ L(φ1 ) ∩ L(φ2 ) (Durchschnitt )
¬φ =⇒ L(φ) (Komplement )
∃x: φ =⇒ πx (L(φ)) (Projektion )
Achtung:
Ein akzeptiertes Tupel kann immer durch führende Nullen
verlängert werden !
bleibt unter Vereinigung, Durchschnitt und Komplement
erhalten !!
Wie sieht das mit der Projektion aus ?

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

Nun werden möglicherweise Tupel von Zahlen erst nach


Anhängen von geeignet vielen führenden Nullen akzeptiert !

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

Nun werden möglicherweise Tupel von Zahlen erst nach


Anhängen von geeignet vielen führenden Nullen akzeptiert !
Der Automat muss so komplettiert werden, dass q bereits
akzeptierend ist, wenn von q aus mit Nullen ein
akzeptierender Zustand erreicht werden kann.

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

Java 7 Taiwan (Red Dragon Edition)

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

Reguläre Sprachen

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

Reguläre Sprachen Reguläre Sprachen

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

Reguläre Sprachen Reguläre Sprachen


Berechenbare Funktionen

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

Reguläre Sprachen Reguläre Sprachen


Berechenbare Funktionen Berechenbare Funktionen

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

Reguläre Sprachen Reguläre Sprachen


Berechenbare Funktionen Berechenbare Funktionen
P

387
Informatik im Jahr 2100: Eine Vorhersage

Java 7 Taiwan (Red Dragon Edition)


Python Gnu-Boa++# 18.3
XML Medea

Reguläre Sprachen Reguläre Sprachen


Berechenbare Funktionen Berechenbare Funktionen
P P

387

Das könnte Ihnen auch gefallen