skript
Formale Sprachen
und Komplexität [FSK]
und
Theoretische Informatik
für Medieninformatiker [TIMI]
Sommersemester 2021
Prof. Dr. David Sabel
Lehr- und Forschungseinheit für Theoretische Informatik
Institut für Informatik
Ludwig-Maximilians-Universität München
Oettingenstr. 67
80538 München
Email: david. .de
Stand: 8. Juli 2021
Inhaltsverzeichnis
1. Einleitung 1
2. Grundlagen 2
2.1. Natürliche Zahlen, Alphabete, Worte und Sprachen . . . . . . . . . . . . . . . . 2
2.2. Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. Abzählbarkeit und Überabzählbarkeit . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5. Asymptotische Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
I. Formale Sprachen und Automatentheorie 11
3. Chomsky-Grammatiken und die Chomsky-Hierarchie 12
3.1. Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2. Die Chomsky-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1. Erzeugung des leeren Worts und ε-Produktionen . . . . . . . . . . . . . . 17
3.2.2. Beziehungen zwischen den Typ i-Sprachen . . . . . . . . . . . . . . . . . 19
3.3. Das Wortproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4. Weitere Probleme für Formale Sprachen . . . . . . . . . . . . . . . . . . . . . . . 22
3.5. Syntaxbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6. Die Backus-Naur-Form für Grammatiken . . . . . . . . . . . . . . . . . . . . . . 24
4. Reguläre Sprachen 25
4.1. Deterministische endliche Automaten . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2. DFAs akzeptieren reguläre Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3. Nichtdeterministische Endliche Automaten . . . . . . . . . . . . . . . . . . . . . 29
4.4. Reguläre Sprachen können durch NFAs erkannt werden . . . . . . . . . . . . . . 30
4.5. Überführung von NFAs in DFAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.6. NFAs mit ε-Übergängen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7. Reguläre Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.8. Zusammenfassende Darstellung der Formalismen für reguläre Sprachen . . . . . 41
4.9. Das Pumping Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.10.? Der Satz von Myhill und Nerode . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.11.Minimierung von Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.12.Abschlusseigenschaften der regulären Sprachen . . . . . . . . . . . . . . . . . . 53
4.13.Entscheidbarkeitsresultate zu regulären Sprachen . . . . . . . . . . . . . . . . . 54
5. Kontextfreie Sprachen 56
5.1. Einfache Operationen auf CFGs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2. Chomsky-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.1. ? Entfernen von Einheitsproduktionen . . . . . . . . . . . . . . . . . . . . 58
5.2.2. ? Herstellen der Chomsky-Normalform . . . . . . . . . . . . . . . . . . . 60
5.3. Greibach-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3.1. ? Herstellen der Greibach-Normalform . . . . . . . . . . . . . . . . . . . 63
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 09. April 2021
Inhaltsverzeichnis
5.4. ?Widerlegen der Kontextfreiheit . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.5. Abschlusseigenschaften kontextfreier Sprachen . . . . . . . . . . . . . . . . . . . 72
5.6. Effiziente Lösung des Wortproblems: Der CYK-Algorithmus . . . . . . . . . . . . 72
5.7. Kellerautomaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.7.1. Akzeptanz durch Endzustände . . . . . . . . . . . . . . . . . . . . . . . . 78
5.7.2. Äquivalenz von Kellerautomaten und kontextfreien Sprachen . . . . . . . 80
5.7.2.1. ? Kontextfreie Sprachen werden durch Kellerautomaten erkannt 80
5.7.2.2. ? Kellerautomaten, die maximal 2 Symbole auf den Keller legen 81
5.7.2.3. ? Kellerautomaten akzeptieren kontextfreie Sprachen . . . . . . 81
5.7.2.4. Kellerautomaten und kontextfreie Sprachen . . . . . . . . . . . 82
5.8. Deterministisch kontextfreie Sprachen . . . . . . . . . . . . . . . . . . . . . . . . 84
5.9. Entscheidbarkeitsresultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.9.1. ? Ein entscheidbares Problem . . . . . . . . . . . . . . . . . . . . . . . . . 87
6. Kontextsensitive und Typ 0-Sprachen 88
6.1. ? Die Kuroda-Normalform für kontextsensitive Grammatiken . . . . . . . . . . . 88
6.2. Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3. Linear beschränkte Turingmaschinen und kontextsensitive Sprachen . . . . . . . 93
6.3.1. ? Beweis des Satzes von Kuroda . . . . . . . . . . . . . . . . . . . . . . . . 94
6.4. Turingmaschinen und Typ 0-Grammatiken . . . . . . . . . . . . . . . . . . . . . 96
6.5. ? LBA-Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7. Zusammenfassung und Überblick 99
II. Berechenbarkeitstheorie 101
8. Der intuitive Berechenbarkeitsbegriff 102
9. Turings Modell der Berechenbarkeit 105
9.1. Turingmaschinen und Turingberechenbarkeit . . . . . . . . . . . . . . . . . . . . 105
9.2. Mehrspuren- und Mehrband-Turingmaschinen . . . . . . . . . . . . . . . . . . . 106
9.2.1. Mehrspuren-Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . 106
9.2.2. Mehrband-Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.3. ?Modulare Konstruktion von Turingmaschinen . . . . . . . . . . . . . . . . . . . 110
9.3.1. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.3.2. Einfache Rechenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.3.3. Komposition von Turingmaschinen . . . . . . . . . . . . . . . . . . . . . 111
10.? LOOP-, WHILE-, und GOTO-Berechenbarkeit 114
10.1. LOOP-Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.1.1. Syntax von LOOP-Programmen . . . . . . . . . . . . . . . . . . . . . . . . 114
10.1.2. Semantik von LOOP-Programmen . . . . . . . . . . . . . . . . . . . . . . 114
10.1.3. LOOP-Berechenbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
10.1.4. Eigenschaften von LOOP-Programmen und der LOOP-Berechenbarkeit . 116
10.2.WHILE-Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.2.1. Syntax der WHILE-Programme . . . . . . . . . . . . . . . . . . . . . . . . 118
D. Sabel, Skript FSK & TIMI,SoSe 2021 iii Stand: 09. April 2021
Inhaltsverzeichnis
10.2.2. Semantik der WHILE-Programme . . . . . . . . . . . . . . . . . . . . . . 118
10.2.3. WHILE-Berechenbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.3.GOTO-Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.3.1. Syntax der GOTO-Programme . . . . . . . . . . . . . . . . . . . . . . . . 119
10.3.2. Semantik der GOTO-Programme . . . . . . . . . . . . . . . . . . . . . . . 120
10.3.3. GOTO-Berechenbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10.4.Äquivalenz der WHILE- und GOTO-Berechenbarkeit . . . . . . . . . . . . . . . . 121
10.5. Simulation von Turingmaschinen mit GOTO-Programmen . . . . . . . . . . . . . 122
10.5.1. Darstellung von Worten als natürliche Zahlen . . . . . . . . . . . . . . . . 122
10.5.2. Darstellung von TM-Konfigurationen mit GOTO-Programmvariablen . . 123
11.? Primitiv und µ-rekursive Funktionen 127
11.1.Primitiv rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
11.1.1. Definition der primitiv rekursiven Funktionen . . . . . . . . . . . . . . . 127
11.1.2. Einfache Beispiele und Konstruktionen primitiv rekursiver Funktionen . 127
11.1.3. Primitiv rekursive Funktionen zur Gödelisierung von Tupeln natürlicher
Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
11.1.4. Äquivalenz von LOOP-berechenbaren und primitiv rekursiven Funktionen 131
11.2.µ-Rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
12.? Schnell wachsende Funktionen: Die Ackermannfunktion 135
13.Unentscheidbarkeit 140
13.1.Gödelisierung von Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . 142
13.2.Das Halteproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
13.2.1. Unentscheidbarkeit des speziellen Halteproblems . . . . . . . . . . . . . 143
13.2.2. Reduktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
13.2.3. Unentscheidbarkeit des Halteproblems . . . . . . . . . . . . . . . . . . . 145
13.2.4. Halteproblem bei leerer Eingabe . . . . . . . . . . . . . . . . . . . . . . . 145
13.3.Der Satz von Rice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
13.4.Das Postsche Korrespondenzproblem . . . . . . . . . . . . . . . . . . . . . . . . 146
13.4.1. MPCP ≤ PCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
13.4.2.H ≤MPCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
13.4.3. Varianten und Bemerkungen zum PCP . . . . . . . . . . . . . . . . . . . . 149
13.5.Universelle Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
13.6.? Unentscheidbarkeitsresultate für Grammatik-Probleme . . . . . . . . . . . . . 150
III. Komplexitätstheorie 154
14.Einleitung, Zeitkomplexität, P und NP 155
14.1.Deterministische Zeitkomplexität . . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.1.1. Uniformes vs. logarithmisches Kostenmaß . . . . . . . . . . . . . . . . . 157
14.2.Nichtdeterminismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
14.3.Das P-vs-NP-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Stand: 09. April 2021 iv D. Sabel, Skript FSK & TIMI,SoSe 2021
Inhaltsverzeichnis
15.NP-Vollständigkeit 160
15.1.Definition der NP-Vollständigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.1.1. Polynomialzeit-Reduktionen . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.2. Satz von Cook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
16.Eine Auswahl NP-vollständiger Probleme 167
16.1.Das 3-CNF-SAT-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
16.2.Das CLIQUE-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
16.3.Das INDEPENDENT-SET-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 171
16.4.Das VERTEX-COVER-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
16.5.Das SETCOVER-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
16.6.Das SUBSETSUM-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
16.7. Das KNAPSACK-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
16.8.Das PARTITION-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
16.9.Das BINPACKING-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
16.10.Das DIRECTED-HAMILTON-CYCLE-Problem . . . . . . . . . . . . . . . . . . . . 179
16.11.Das UNDIRECTED-HAMILTON-CYCLE-Problem . . . . . . . . . . . . . . . . . . 182
16.12.Das TRAVELLING-SALESMAN-Problem . . . . . . . . . . . . . . . . . . . . . . . 183
16.13.Das GRAPH-COLORING-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Literatur 186
D. Sabel, Skript FSK & TIMI,SoSe 2021 v Stand: 09. April 2021
1
Einleitung
Dieses Skript fasst die wesentlichen Inhalte der Vorlesungen „Formale Sprachen und Komple-
xität“ und „Theoretische Informatik für Medieninformatiker“ zusammen, die im Sommerse-
mester 2021 an der Ludwig-Maximilians-Universität München gehalten werden.
Da die Vorlesung „Theoretische Informatik für Medieninformatiker“ nur einen Teil der Vorle-
sung umfasst, sind die Kapitel und Abschnitte oder auch einzelne Sätze bzw. deren Beweise, die
für Medieninformatiker/innen nicht prüfungsrelevant sind, durch einen Stern ? gekennzeich-
net.
Die Primärliteratur für die Vorlesung ist Uwe Schöning’s Buch „Theoretische Informatik – kurz
gefasst“ (Sch08). Das Skript orientiert sich an dessen Inhalt und strukturellen Aufbau.
Die Vorlesung behandelt drei wesentliche Teilgebiete der Theoretischen Informatik. Teil I be-
fasst sich mit Formalen Sprachen und Grundlagen der Automatentheorie. Teil III befasst sich
mit der Frage, welche Probleme überhaupt mit dem Rechner gelöst werden können (die Bere-
chenbarkeitstheorie). Teil II befasst sich mit der Frage, welche Probleme effizient lösbar sind
und was selbiges heißt (die Komplexitätstheorie).
Ziel der Veranstaltung ist es eine Einführung in und einen Überblick über die drei Themenge-
biete zu geben.
Vor den einzelnen Teilen ist das Kapitel 2 zu finden. Hier fassenwir wesentlichemathematische
Grundlagen zusammen, die imGrunde bekannt sein dürften. In der Vorlesungwerden nicht alle
dieser Grundlagen wiederholt, sondern zum Teil dem Selbststudium überlassen.
Stand: 09. April 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
2
Grundlagen
In diesem Kapitel werden wesentliche Grundlagen zusammenfassend dargestellt und Nota-
tionen festgelegt. Die Inhalte sind im Wesentlichen auch in (Sch08, Anhang: Mathematische
Grundlagen) nachzulesen.
2.1. Natürliche Zahlen, Alphabete, Worte und Sprachen
Wir bezeichnen die Menge der natürlichen Zahlen einschließlich der Null mit N, d. h.
N = {0, 1, 2, 3, . . .} und mit N>0 bezeichnen wir die Menge der natürlichen Zahlen ohne Null,
d. h. N>0 = {1, 2, 3, . . .}.
Um Aussagen für alle natürlichen Zahlen nachzuweisen, verwenden wir oft das Prinzip der
vollständigen Induktion:
Definition 2.1.1 (Beweisprinzip der Vollständigen Induktion). Um zu zeigen, dass eine Aussage
A(n) für jede natürliche Zahl n ∈ N gilt, genügt es, die folgenden beiden Aussagen zu zeigen:
1. (Induktionsanfang): A(0) gilt.
2. (Induktionsschritt): Für eine beliebige Zahl n ∈ N gilt: Wenn A(n) gilt, dann auch A(n+ 1).
Wir demonstrieren die vollständige Induktion:
Beispiel 2.1.2. Für alle n ∈ N gilt:
n∑
i=1
i =
(n+ 1)n
2
Wir zeigen die Aussage durch Induktion über n, d.h. die Aussage A(n) ist
n∑
i=1
i =
(n+ 1)n
2
.
• Induktionsanfang: Die zu zeigende Aussage A(0) ist
0∑
i=1
i = 0, die direkt nach Definition der
Summe gilt.
• Induktionsschritt: Sei n ∈ N eine beliebige Zahl. Wir dürfen A(n) annehmen und
müssen A(n + 1) zeigen. Angenommen A(n) gilt, d.h.
n∑
i=1
i =
(n+ 1)n
2
. Wir müs-
sen
n+1∑
i=1
i =
(n+ 2)(n+ 1)
2
zeigen. Es gilt
n+1∑
i=1
i =
(
n∑
i=1
i
)
+ n + 1 nach Definiti-
on. Nach Annahme ist letzteres gleich
(n+ 1)n
2
+ n + 1. Durch Ausrechnen erhält man
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 09. April 2021
2.1. Natürliche Zahlen, Alphabete, Worte und Sprachen
(n+ 1)n
2
+ n + 1 =
(n+ 1)n+ 2n+ 2
2
=
(n+ 2)(n+ 1)
2
, also insgesamt die zu zeigende
Eigenschaft.
Beachte, das Summenzeichen
∑
ist auch ein griechisches SigmaΣ. Im folgendenwird das Sym-
bol Σ jedoch mit einer anderen Bedeutung verwendet:
Definition 2.1.3 (Alphabet, Wort, Konkatenation). Ein Alphabet ist eine endliche nicht-leere
Menge von Zeichen (oder Symbolen). Wir bezeichnen Alphabete oft mit dem Symbol Σ.
Sei ein Alphabet Σ gegeben. EinWort w über Σ ist eine endliche Folge von Zeichen aus Σ. Die leere
Folge ist auch ein solches Wort und wird mit ε notiert und als leeres Wort bezeichnet. Für ein Wort
w = a1 · · · an notieren wir mit |w| = n die Länge des Wortes (wobei |ε| = 0). Sei a ∈ Σ und w ein
Wort überΣ. Mit#a(w) ∈ N notieren wir die Anzahl an Vorkommen des Zeichens a imWort w. Für
1 ≤ i ≤ |w| bezeichnen wir mit w[i] das i. Zeichen von Wort w. Mit Σ∗ bezeichnen wir die Menge
aller Wörter über Σ. Eine formale (rekursive) Definition für Σ∗ ist die folgende, wobei Σi die Menge
der Worte der Länge i über dem Alphabet Σ bezeichnet. Die Definition der Mengen Σi ist:
• Σ0 := {ε}
• Σi := {aw | a ∈ Σ, w ∈ Σi−1} für i > 0.
Schließlich definiere Σ∗ :=
⋃
i∈N Σ
i und Σ+ :=
⋃
i∈N>0 Σ
i. Es gilt Σ+ = Σ∗ \ {ε}.
Seien u und v Worte über Σ, dann bezeichne u ◦ v (alternativ auch nur uv) die Konkatenation von
u und v, d. h. jenes Wort, das entsteht, indem v hinten an u angehängt wird.
Beispiel 2.1.4. Sei Σ = {a, b}. Dann ist Σ0 = {ε}, Σ1 = Σ, Σ2 = {aa, ab, ba, bb} und Σ∗ =
{ε, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, aaaa, . . .} und z. B. aabbb ∈ Σ∗ aber abc 6∈
Σ∗. Für u = aab und v = aabbba gilt |u| = 3, |v| = 6 und u ◦ v = uv = aabaabbba, sowie z. B.
#b(u) = 1 und#a(uv) = #a(u) + #a(v) = 2 + 3 = 5.
Satz 2.1.5. Die Struktur (Σ∗, ◦) ist ein Monoid, d. h. eine Halbgruppe mit neutralem Element.
Beweis. Die Eigenschaften einer Halbgruppe sind
1. Abgeschlossenheit bezüglich ◦ (d. h. u, v ∈ Σ∗ =⇒ u ◦ v ∈ Σ∗) und
2. Assoziativität von ◦ (d. h. (u ◦ v) ◦ w = u ◦ (v ◦ w)).
Für ein neutrales Element emuss gelten u ◦ e = e ◦ u = u.
Für (1) sei u ∈ Σi und v ∈ Σj , dann ist u ◦ v ∈ Σi+j und daher in u ◦ v ∈ Σ∗. Für (2) sei
u = a1 · · · ai, v = b1 · · · bj undw = c1 · · · ck mit i, j, k ∈ N und al, bl, cl ∈ Σ. Dann gilt (u◦v)◦w =
a1 · · · aib1 · · · bjc1 · · · ck = u ◦ (v ◦ w). Schließlich gilt u ◦ ε = ε ◦ u = u, d. h. ε ist ein neutrales
Element.
Wir schreiben wm für dasm-malige Konkatenieren von w, d. h. w0 = ε und wm = w ◦wm−1 für
m > 0.
Für eine endliche MengeM bezeichne |M | die Mächtigkeit vonM .
Definition 2.1.6. Sei Σ ein Alphabet und w ein Wort über Σ. Mit w bezeichnen wir das rückwärts-
gelesene Wort w, d. h. ε = ε, a = a für a ∈ Σ und aw = wa für alle a ∈ Σ, w ∈ Σ∗.
Ein Wort w ∈ Σ∗ ist ein Palindrom, falls gilt w = w, d. h. w ist vorwärts wir rückwärts gelesen
dasselbe Wort.
D. Sabel, Skript FSK & TIMI,SoSe 2021 3 Stand: 09. April 2021
2. Grundlagen
Beispiel 2.1.7. Sei w = informatik ein Wort über Σ = {a, . . . , z}. Dann ist w = kitamrofni und w
ist kein Palindrom. Hingeghen ist w′ = reliefpfeiler ein Palindrom, denn w′ = reliefpfeiler .
Beispiel 2.1.8. Für alle Worte w und Symbole a gilt wa = aw. Dies lässt sich mit Induktion über
|w| zeigen: Wenn |w| = 0, so giltw = ε und damitwa = a = a = aw. Für |w| > 0, seiw = bv für ein
Symbol b. Dann gilt bva = vab per Definition, vab = avb per Induktionshypothese und schließlich
avb = abv = aw per Definition.
Übungsaufgabe 2.1.9. Zeige mit Induktion über |w|: Für alle Worte w gilt w = w.
Definition 2.1.10 (Sprache und Operationen auf Sprachen). Eine (formale) Sprache über dem
Alphabet Σ ist eine Teilmenge von Σ∗. Oft bezeichnen wir Sprachen mit dem Buchstaben L (für
„language“). Für Sprachen L, L1 und L2 über dem Alphabet Σ sei
• L1 ∪ L2 := {w | w ∈ L1 oder w ∈ L2} (die Vereinigung der Sprachen L1 und L2)
• L1 ∩ L2 := {w | w ∈ L1 und w ∈ L2} (der Schnitt der Sprachen L1 und L2)
• L := Σ∗ \ L (das Komplement zu L)
• L1 ◦ L2 = L1L2 := {uv | u ∈ L1 und v ∈ L2} (das Produkt von L1 und L2)
Bemerkung 2.1.11. FürMengen kennt man dasKreuzprodukt (oder auch kartesisches Produkt):
WennM1 undM2 Mengen sind, so ist
M1 ×M2 := {(e1, e2) | e1 ∈M1, e2 ∈M2}
Dieses berechnet dieMenge aller geordneten Paare (e1, e2), wobei e1 ausM1 und e2 ausM2 stammt.
Auch für SprachenL1, L2 könnenwir das Kreuzprodukt verwenden (da Sprachen auchMengen sind):
L1 × L2 ist die Menge aller Paare (w1, w2) wobei w1 ein Wort der Sprache L1 und w2 ein Wort der
SpracheL2 ist. Im Unterschied dazu berechnet das ProduktL1L2 keine Paare, sondern konkateniert
die Worte w1 und w2 direkt zu einem neuen Wort.
Beispiel 2.1.12. Sei Σ = {a, b}, L1 = {ai | i ∈ N} und L2 = {bi | i ∈ N}. Dann ist L1 ∪ L2 die
Sprache aller Wörter, die nur aus a’s oder nur aus b’s bestehen; L1 ∩ L2 = {ε}; L1 ist die Sprache
der Worte, die mindestens ein b enthalten; L1L2 = {aibj | i, j ∈ N}, L2L1 = {biaj | i, j ∈ N} und
L1L1 = L1.
Für L1 = {♠,♣,♦,♥} und L2 = {7, 8, 9, 10, J,D,K,A} stellt L1L2 eine Repräsentation der Spiel-
karten eines Skatblatts dar.
Definition 2.1.13. Seien u, v Wörter über einem Alphabet Σ. Man sagt
• u ist ein Präfix von v, wenn es ein Wort w über Σ gibt, sodass uw = v.
• u ist ein Suffix von v, wenn es ein Wort w über Σ gibt, sodass wu = v.
• u ist ein Teilwort von v, wenn es Wörter w1, w2 über Σ gibt, sodass w1uw2 = v.
Beispiel 2.1.14. Sei w = ababbaba. Dann ist das Wort aba ein Präfix, Suffix und ein Teilwort von
w, während ababb ein Präfix (und Teilwort) von w ist, aber kein Suffix von w ist. Das Wort bab ist
Teilwort von w, aber weder ein Präfix noch ein Suffix von w. Das Wort bbb ist weder Teilwort, noch
Präfix, noch Suffix von w.
Definition 2.1.15 (Abgeschlossenheit). Eine Klasse L von Sprachen (d. h. eine Menge von Men-
gen) heißt abgeschlossen bezüglich
Stand: 09. April 2021 4 D. Sabel, Skript FSK & TIMI,SoSe 2021
2.1. Natürliche Zahlen, Alphabete, Worte und Sprachen
• Vereinigung g. d. w. aus L1 ∈ L und L2 ∈ L folgt stets (L1 ∪ L2) ∈ L,
• Schnittbildung g. d. w. aus L1 ∈ L und L2 ∈ L folgt stets (L1 ∩ L2) ∈ L,
• Komplementbildung g. d. w. aus L ∈ L folgt stets L ∈ L und
• Produktbildung g. d. w. aus L1 ∈ L und L2 ∈ L folgt stets (L1L2) ∈ L.
Satz 2.1.16. Sei die Klasse von Sprachen L abgeschlossen bezüglich Komplementbildung. Dann ist
L abgeschlossen bezüglich Schnittbildung genau dann,wennL abgeschlossen bezüglichVereinigung
ist.
Beweis. Dies folgt, da sich Vereinigung durch Schnitt und Komplement (bzw. Schnitt durchVer-
einigung und Komplement) darstellen lässt:
L1 ∪ L2 = L1 ∩ L2 L1 ∩ L2 = L1 ∪ L2
Durch Venn-Diagramme lassen sich diese Zusammenhänge leicht illustrieren:
L1 L2
L1
L1 L2
L1 ∩ L2
L1 L2
L1 ∩ L2
L1 L2
L2
L1 L2
L1 ∪ L2
L1 L2
L1 ∪ L2
Analog zu Σi,Σ∗,Σ+ definieren wir die Operationen ·i, ·∗, ·+ auch für Sprachen. Sei L eine
Sprache. Dann ist:
L0 := {ε} L∗ :=
⋃
i∈N
Li
Li := L ◦ Li−1 für i > 0 L+ :=
⋃
i∈N>0
Li
Die Sprache L∗ nennt man auch den Kleeneschen Abschluss von L (benannt nach Stephen Cole
Kleene).
Beispiel 2.1.17. Sei L = {ab, ac}. Dann ist L2 = {abab, abac, acab, acac} (alle Worte, die sich aus
2 Worten aus L bilden lassen) und L∗ = {ε} ∪ {ax1ax2 · · · axi | i ∈ N>0, xj ∈ {b, c}, j = 1, . . . , i}.
Beispiel 2.1.18. Die Sprache
({ε, 1} ◦ {0, . . . , 9}) ∪ ({2} ◦ {0, 1, 2, 3}) ◦ {:} ◦ {0, 1, 2, 3, 4, 5} ◦ {0, . . . , 9}
stellt alle gültigen Uhrzeiten dar. Die Sprache {0} ∪ ({1, . . . , 9} ◦ {0, . . . , 9}∗) stellt alle natürlichen
Zahlen dar.
D. Sabel, Skript FSK & TIMI,SoSe 2021 5 Stand: 09. April 2021
2. Grundlagen
2.2. Relationen
SeienR,R1, R2 binäre Relationen auf Σ∗ (d. h.R,Ri ⊆ (Σ∗×Σ∗)). Für Worte u und v schreiben
wir anstelle von (u, v) ∈ R auch uRv.
Wir definieren die Komposition der Relationen R1 und R2 als:
R1R2 = {(u,w) | es gibt v ∈ Σ∗ mit (uR1v) und (vR2w)}
Außerdem definieren wir
R0 := {(w,w) | w ∈ Σ∗} (die identische Abbildung)
Ri := RRi−1 für i > 0
R∗ :=
⋃
n∈N
Ri
R+ :=
⋃
n∈N>0
Ri
Es gilt uR∗w g. d.w. u = w oder es gibt v1, . . . , vn ∈ Σ∗ und n > 0mit uRv1, v1Rv2, . . . , vnRw.
Definition 2.2.1. Eine binäre Relation R ⊆ (Σ∗ × Σ∗) heißt
• reflexiv, falls für alle w ∈ Σ∗ gilt : wRw
• transitiv, falls für alle u, v, w ∈ Σ∗ gilt: Wenn uRv und vRw, dann auch uRw.
• symmetrisch falls für alle u, v ∈ Σ∗ gilt: Wenn uRv, dann auch vRu.
Wenn R reflexiv, transitiv und symmetrisch ist, dann ist R eine Äquivalenzrelation.
Sei R eine Äquivalenzrelation. Für ein Wort w ∈ Σ∗ bezeichnen wir die Äquivalenzklasse von
w mit [w]R, welche alle zu w äquivalenten Worte enthält: [w]R := {u ∈ Σ∗ | uRw}. Um-
gekehrt heißt w Repräsentant der Äquivalenzklasse [w]R. Beachte, dass die Äquivalenzklassen
die Grundmenge Σ∗ in (endlich oder unendlich viele) Äquivalenzklassen disjunkt zerlegt, d. h.
Σ∗ = [w1]R ·∪[w2]R ·∪[w3]R ·∪ . . ., wobei ·∪ die disjunkte Vereinigung bezeichne1. Der Index einer
Äquivalenzrelation R (geschrieben als Index(R)) ist die Anzahl der verschiedenen Äquivalenzklas-
sen, die R hat. Hierbei ist Index(R) ∈ N ∪ {∞}. Wenn Index(R) 6=∞, dann sagt man R hat einen
endlichen Index.
Beispiel 2.2.2. Sei Σ = {a, b} und echterPraefix eine binäre Relation auf Σ∗, definiert durch: Für
alle u, v ∈ Σ∗: u echterPraefix v g. d. w. u ist ein Präfix von v und |u| < |v|.
Die Relation echterPraefix ist transitiv: Seien u, v, w ∈ Σ∗ mit u echterPraefix v und
v echterPraefixw. Dann gilt u ist Präfix von v und v ist Präfix vonw und |u| < |v| und |v| < |w|. Dar-
aus folgt auch, dass u ein Präfix vonw ist, und dass |u| < |w| gilt. Somit haben wir u echterPraefixw
gezeigt.
Die Relation echterPraefix ist nicht reflexiv, da z. B. ¬(ε echterPraefix ε).
Die Relation echterPraefix ist nicht symmetrisch, da z. B. aa echterPraefix aab, aber
¬(aab echterPraefix aa).
Die Relation echterPraefix∗ ist reflexiv, da w echterPraefix0w für alle w ∈ Σ∗. Die Re-
lation echterPraefix∗ ist transitiv: Sei u echterPraefixi v und v echterPraefixj w, dann gilt
u echterPraefixi+j w und daher u echterPraefix∗w. Die Relation echterPraefix∗ ist nicht symmetrisch,
1d. h. A ·∪B g. d.w. A ·∪B = A ∪B und A ∩B = ∅.
Stand: 09. April 2021 6 D. Sabel, Skript FSK & TIMI,SoSe 2021
2.2. Relationen
da ¬(a echterPraefixi ab) für alle i ∈ N. Es gilt u echterPraefix∗v genau dann, wenn u ein Präfix von
v ist.
Beispiel 2.2.3. Sei Σ = {a, b} und u gleicherAnfang v g. d. w. u und v beginnen mit dem gleichen
Buchstaben oder sind beide das leere Wort.
gleicherAnfang ist eine Äquivalenzrelation:
• gleicherAnfang ist reflexiv:Wir prüfenu gleicherAnfang u für alleu ∈ Σ∗:Wennumit a anfängt
(d. h. u = av für ein v ∈ Σ∗) gilt u gleicherAnfang u. Wenn umit b anfängt (d. h. u = bv für ein
v ∈ Σ∗) gilt u gleicherAnfang u. Auch für u = ε gilt u gleicherAnfang u.
• gleicherAnfang ist symmetrisch: Offensichtlich folgt aus u gleicherAnfang v auch
v gleicherAnfang u für alle u, v ∈ Σ∗:
• gleicherAnfang ist transitiv: Sei u gleicherAnfang v und v gleicherAnfangw für u, v, w ∈ Σ∗.
Dann fangen entweder u, v, w alle mit dem selben Buchstaben an (und u gleicherAnfangw gilt)
oder u = v = w = ε und auch dann gilt u gleicherAnfangw.
Der Index von gleicherAnfang ist Index (gleicherAnfang) = 3, denn es gibt drei disjunkte Äquivalenz-
klassen:
• [a]gleicherAnfang = {w ∈ Σ∗ | a gleicherAnfangw} = {au | a ∈ Σ∗}
• [b]gleicherAnfang = {w ∈ Σ∗ | b gleicherAnfangw} = {bu | b ∈ Σ∗}
• [ε]gleicherAnfang = {w ∈ Σ∗ | ε gleicherAnfangw} = {ε}
Lemma 2.2.4. R∗ ist die kleinste reflexive und transitive Relation, die R enthält (d. h. R∗ ist die
reflexiv-transitive Hülle von R).
Beweis. Wir zeigen zunächst, dassR∗ reflexiv und transitiv ist:R∗ ist offensichtlich reflexiv, da
R0 ⊆ R. R∗ ist transitiv, denn für uR∗v und vR∗w folgt: Es gibt i, j ∈ N mit uRiv und vRjw.
Daher gilt uRi+jw, was direkt uR∗v impliziert, da Ri+j ⊆ R∗.
Wir zeigen nun, dass jede reflexiv-transitive Relation R′, die R enthält, auch R∗ enthält. Ge-
nauer zeigen wir mit Induktion über i, dass Ri ⊆ R′ für alle i ∈ N. Die Induktionsbasis ist
R0 ⊆ R′, was gilt, da R′ reflexiv ist. Ebenso gilt auch R1 ⊆ R′, da R′ die Relation R enthält.
Als Induktionsannahme nehmen wir an, dass Ri ⊆ R′ für i ∈ N gilt. Sei uRi+1v. Dann gibt es
ein w mit uRw und wRiv. Aus der Induktionsannahme und dem Fakt R ⊆ R′ folgt auch uR′w
und wR′v. Da R′ transitiv ist, muss auch gelten uR′v. Da dies für jedes Paar uRi+1v gilt, folgt
Ri+1 ⊆ R′.
Definition 2.2.5. Seien R und S Äquivalenzrelationen auf Σ∗. Dann ist R eine Verfeinerung von
S, wenn für alle u, v ∈ Σ∗ gilt: uRv =⇒ uSv (d. h. R ⊆ S).
Satz 2.2.6. Sei R eine Verfeinerung von S. Dann gilt Index(R) ≥ Index(S).
Beweis. Sei Σ∗ = [u1]R ·∪[u2]R ·∪ . . . die disjunkte Zerlegung von R in ihre Äquivalenzklassen.
Seien v, w ∈ ui. Dann gilt vRw und (da R eine Verfeinerung von S ist) auch vSw. D.h. Σ∗ =
[u1]S ∪ [u2]S ∪ . . . und damit gilt insbesondere, dass S nicht mehr disjunkte Äquivalenzklassen
hat als R.
Beispiel 2.2.7. Sei Σ = {a, b}. Die Relationen gleicherAnfang und gleicherAnfangUndEnde seien
definiert durch
D. Sabel, Skript FSK & TIMI,SoSe 2021 7 Stand: 09. April 2021
2. Grundlagen
• u gleicherAnfang v g. d. w. u und v beginnen mit dem gleichen Buchstaben oder sind beide das
leere Wort.
• u gleicherAnfangUndEnde v g. d. w. u, gleicherAnfang v, und u und v enden mit dem gleichen
Buchstaben oder sind beide das leere Wort.
Beide Relationen sind Äquivalenzrelationen (für gleicherAnfang haben wir dies in Bei-
spiel 2.2.3 gezeigt, der Nachweis für gleicherAnfangUndEnde funktioniert analog). Die
Relation gleicherAnfangUndEnde ist eine Verfeinerung von gleicherAnfang, denn aus
u gleicherAnfangUndEnde v folgt stets u gleicherAnfang v. In Beispiel 2.2.3 haben wir gezeigt, dass
Index(gleicherAnfang) = 3 gilt. Für gleicherAnfangUndEnde gilt Index(gleicherAnfangUndEnde) = 5,
denn gleicherAnfangUndEnde hat folgende disjunkten Äquivalenzklassen:
• [ε]gleicherAnfangUndEnde = {ε}
• [a]gleicherAnfangUndEnde = {u ∈ Σ∗ | u beginnt mit a und endet mit a}
• [b]gleicherAnfangUndEnde = {u ∈ Σ∗ | u beginnt mit b und endet mit b}
• [ab]gleicherAnfangUndEnde = {u ∈ Σ∗ | u beginnt mit a und endet mit b}
• [ba]gleicherAnfangUndEnde = {u ∈ Σ∗ | u beginnt mit b und endet mit a}
2.3. Funktionen
Seien D und Z Mengen. Eine Funktion f : D → Z ist eine links-totale und rechtseindeutige
binäre Relation, d. h. f ⊆ (D×Z) und sie ordnet jedem Element ausD genau ein Element aus
Z zu (kurzum: Für jedes d ∈ D gibt es genau einen Eintrag in (d, f(d)) ∈ f ).
Für ein Element z ∈ Z, sei f−1(z) := {d ∈ D | f(d) = z} die Menge der Urbilder von z und f .
Eine Funktion f heißt
• injektiv, falls für alle z ∈ Z gilt: |f−1(z)| ≤ 1 (jedes z hat höchstens ein Urbild)
• surjektiv, falls für alle z ∈ Z gilt: |f−1(z)| ≥ 1 (jedes z hat mindestens ein Urbild)
• bijektiv, falls für alle z ∈ Z gilt: |f−1(z)| = 1 (jedes z hat genau ein Urbild)
Beispiel 2.3.1. SeiD eine Menge von Mänteln und Z eine Menge von Kleiderhaken. Sei f eine Zu-
ordnung der Mäntel auf die Kleiderhaken, d. h. eine Funktion f : D → Z. Wenn f injektiv ist, hängt
auf jedem Kleiderhaken höchstens ein Mantel. Wenn f surjektiv ist, hängt auf jedem Kleiderhaken
mindestens ein Mantel. Wenn f bijektiv ist, hängt auf jedem Kleiderhaken genau ein Mantel.
2.4. Abzählbarkeit und Überabzählbarkeit
SeienM1,M2 Mengen. Wir nennenM1 undM2 gleichmächtig, wenn es eine bijektive Abbildung
f : M1 → M2 gibt. Falls eine Menge M gleichmächtig wie N ist, dann heißt M abzählbar
unendlich. Eine MengeM heißt abzählbar, wenn sie endlich oder abzählbar unendlich ist.
Lemma 2.4.1. Eine MengeM ist genau dann abzählbar, wennM = ∅ gilt oder es eine surjektive
Abbildung f : N→M gibt.
Beweis. WennM = ∅, dann gilt die Aussage. SeiM 6= ∅ für den Rest des Beweises.
SeiM abzählbar. WennM abzählbar unendlich ist, dann gibt es eine Bijektion f : N→M und
die Aussage gilt. Wenn M endlich ist, dann sei M = {a0, . . . , an}. Definiere f : N → M als
Stand: 09. April 2021 8 D. Sabel, Skript FSK & TIMI,SoSe 2021
2.4. Abzählbarkeit und Überabzählbarkeit
f(x) = ax für 0 ≤ x ≤ n und f(x) = a0 sonst. Dann ist |f−1(x)| ≥ 1 für alle x ∈ N und f damit
surjektiv.
Für die umgekehrte Richtung sei f : N → M eine surjektive Abbildung. WennM endlich ist,
dann istM abzählbar. WennM nicht endlich ist, dannmüssen wir zeigen, dassM gleichmäch-
tig zu N ist. Dazu sei g : N→ N induktiv definiert durch g(0) = 0 und g(n+ 1) = k, wobei k ∈ N
minimal gewählt ist, sodass f(k) = f(g(n + 1)) 6∈ {f(g(0)), . . . , f(g(n))}. Eine solche Zahl k
gibt es, da M sonst endlich wäre. Die Konstruktion von g sichert zu, dass für alle i ∈ N gilt:
g(i+ 1) > g(i).
Wir zeigen, dass h : N → M mit h(x) = f(g(x)) bijektiv ist. Die Konstruktion von g sichert zu,
dass h injektiv ist. Für den Beweis der Surjektivität von h seim ∈M . Dann ist |f−1(m)| > 0, da
f surjektiv ist. Sei n ∈ N daher minimal gewählt, sodass f(n) = m. Da g(i + 1) > g(i) für alle
i ∈ N, gibt es nur endlich viele Zahlen i ∈ {0, 1, . . . , j}mit g(j) < n. Daher gilt g(j+1) = k ≥ n,
wobei k minimal gewählt ist, so dass f(k) 6∈ {f(g(0)), . . . , f(g(j))}. Da f(n) = m kann k nicht
größer als n sein. D.h. g(j + 1) = n und daher |g−1(n)| > 0, was auch zeigt h−1(m) > 0.
Das letzte Lemma zeigt, dass fürM 6= ∅ undM abzählbar die Elemente vonM stets durchnum-
meriert werden können (wobei manche Elemente auch mehrere Nummern erhalten können).
Lemma 2.4.2. SeienM1,M2 abzählbar, dann ist auchM1 ×M2 abzählbar.
Beweis. Wir zeigen zunächst, dass (N× N) abzählbar ist. Die folgende Tabelle deutet Cantor’s
Diagonalverfahren an und zeigt, wie die Paare abgezählt werden:
0 1 2 3 . . .
0 0 1 3 6 . . .
1 2 4 7 . . . . . .
2 5 8 . . . . . . . . .
3 9 . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
Insbesondere folgt daraus, dass es eine surjektive Funktion h :: N→ (N×N) gibt2. Nun zeigen
wir das Lemma: DaM1 undM2 abzählbar sind, gibt es surjektive Funktionen fi : N → Mi für
i = 1, 2. Sei g : (N×N)→ (M1×M2) definiert durch g(i, j) = (f1(i), f2(j)). Schließlich definiere
g′ : N→ (M1 ×M2) als g′(i) = g(h(i)). Da g, h surjektiv sind, ist auch g′ surjektiv.
Satz 2.4.3. Zu einem Alphabet Σ ist Σ∗ immer eine abzählbar unendliche Menge.
Beweis. Nummeriere die Worte w ∈ Σ∗ wie folgt
• Nummeriere die Worte der Länge 0
• Nummeriere die Worte der Länge 1
• Nummeriere die Worte der Länge 2
• Nummeriere die Worte der Länge 3
• . . .
2Eine andere surjektive Funktion ist h : N → (N × N) mit h(0) = (0, 0) und h(n) = (i, j) wenn n = 2i · (2 · j + 1)
und n > 0, da sich jede positive natürliche Zahl eindeutig als 2i · (2 · j + 1) (mit i, j ∈ N) zerlegen lässt.
D. Sabel, Skript FSK & TIMI,SoSe 2021 9 Stand: 09. April 2021
2. Grundlagen
Innerhalb einer Länge, nummeriere die Worte anhand ihrer lexikographischen Ordnung. Be-
achte: Diese Nummerierung funktioniert, da es pro fester Länge k nur endliche viele Worte
gibt (sk viele, wenn |Σ| = s)
Definition 2.4.4 (PotenzmengeP(M)). SeiM eineMenge. MitP(M) bezeichnen wir die Potenz-
menge vonM , d. h. die Menge aller Teilmengen vonM : P(M) := {N | N ⊆M}.
Mit Pe(M) bezeichnen wir die Menge aller endlichen Teilmengen vonM .
Beispiel 2.4.5. Sei Σ ein Alphabet. Dann ist die Menge aller Sprachen über Σ gerade P(Σ∗).
Satz 2.4.6. SeiM abzählbar unendlich. Dann istP(M) nicht abzählbar (sondern überabzählbar).
Beweis. Wir führen einenBeweis durchWiderspruch.Wir nehmenan, dassM abzählbar unend-
lich und P(M) abzählbar ist. Da P(M) nicht endlich sein kann, ist P(M) ebenfalls abzählbar
unendlich. Dann gibt es Bijektionen f : N → M und g : N → P(M). Definiere die Diagonal-
menge D := {f(i) | f(i) 6∈ g(i), i ∈ N}. Da D Teilmenge von M ist (d. h. D ⊆ M ), ist D ein
Element der Potenzmenge, d. h. D ∈ P(M) und es gibt n ∈ N mit g(n) = D. Betrachte nun
die Frage, ob f(n) ∈ D liegt: Einsetzen der Mengendefinition für D ergibt „f(n) ∈ D g. d.w.
f(n) 6∈ g(n)“ und Einsetzen von g(n) = D ergibt „f(n) ∈ D g. d.w. f(n) 6∈ D“ was einen
Widerspruch darstellt. D.h. unsere Annahme, dass P(M) abzählbar ist, war falsch.
2.5. Asymptotische Notation
Funktionen f : N → N, welche die Komplexität von Algorithmen beschreiben, werden meist
mithilfe der asymptotischen Notation angegeben. Wir betrachten hier nur dieO-Notation (ge-
sprochen „Groß-Oh-Notation“). Diese vernachlässigt konstante Faktoren und gibt eine asym-
ptotische Abschätzung nach oben an. Genauer definiert O(g) eine Klasse von Funktionen:
Definition 2.5.1. Für eine Funktion f : N→ N gilt f ∈ O(g) g. d. w. es gibt Konstanten c, n0 > 0,
sodass für alle n ≥ n0 gilt: f(n) ≤ c · g(n)
Oft schreibt man anstelle von f ∈ O(g) auch f(n) = O(g(n)). Hierbei ist das Gleichheitssymbol
von links nach rechts zu lesen.
Beispiel 2.5.2. Sei f(n) = 3 · n2 + 6n + 2. Dann gilt f(n) = O(n2), denn für c = 11 und n0 = 1
gilt 3 · n2 + 6n + 2 ≤ c · n2 für alle n ≥ n0 (verteile die 11n2 auf die einzelnen Summanden:
3n2 ≤ 3n2, 6n ≤ 6n2, 2 ≤ 2n2 für alle n ≥ 1).
Stand: 09. April 2021 10 D. Sabel, Skript FSK & TIMI,SoSe 2021
Teil I.
Formale Sprachen und
Automatentheorie
Stand: 09. April 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
3
Chomsky-Grammatiken und die Chomsky-Hierarchie
Sei Σ ein Alphabet. Eine Sprache über Σ ist eine beliebige Teilmenge von Σ∗. Z. B. könnten wir
für Σ = {(, ),+,−, ∗, /, a} die Sprache LArEx definieren, welche als Worte die korrekt geklam-
merten arithmetischen Ausdrücke überΣ enthalte. Dann gilt z. B. ((a+a)−a)∗a ∈ LArEx aber
(a−) + a) 6∈ LArEx. Für die Definition von LArEx benötigen wir jedoch einen Formalismus, der
es erlaubt, die Sprache mit einer endlichen Beschreibung genau festzulegen. Dies muss möglich
sein, obwohl die Sprache selbst aus unendlichen vielen Objekten besteht! Die zwei wesentli-
chen Formalismen hierfür sind die Grammatiken und die Automaten.
Ein Beispiel für eine Grammatik, die einen gewissen (sehr kleinen) Teil der deutschen Gram-
matik approximiert, ist:
Bei dieser Menge von Regeln, die jeweils von der Form „linke Seite“→ „rechte Seite“ sind, sind
die Symbole in spitzen Klammern wie z. B.
und müssen weiter ersetzt werden. Durch die Grammatik kann z. B. der Satz „der kleine nette
Mann fährt das große blaue Auto“ abgeleitet werden. D. h. dieser Satz wäre Teil der durch die
Grammatik definierten Sprache. Eine Ableitung korrespondiert zum sogenannten Syntaxbaum:
Dieser stellt dar, wie der Satz aus den Variablen entsteht. Elternknoten sind jeweils mit der
linken Seite einer Regel beschriftet und Kindknoten sind die Objekte auf der rechten Seite der
Regel:
der
kleine
nette
Mann
fährt
das
große
blaue
Auto
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 09. April 2021
3.1. Grammatiken
Diese Grammatik kann bereits unendlich viele Wörter erzeugen, denn z. B. sind alle Sätze der
Form „der kleine Mann liebt das große große große . . .Auto“ damit erzeugbar.
3.1. Grammatiken
Grammatiken sind endliche Mengen von Regeln der Form
„linke Seite“→ „rechte Seite“.
Wir unterscheiden wir zwischen Variablen und Terminalsymbolen (üblicherweise sind dies die
Zeichen aus einem Alphabet Σ). Linke und rechte Seite der Regeln sind Folgen bestehend aus
Variablen und Terminalen. In obigem Beispiel waren die linken Seiten der Regeln jeweils genau
eine Variable, was einen Spezialfall darstellt (es handelt sich um eine sogenannte kontextfreie
Grammatik).
Grammatiken werden benutzt, um aus einer ausgezeichneten Variablen (dem sogenannten
Startsymbol) ein Wort über Σ abzuleiten. Ableiten meint hierbei mehrfaches (endliches) Aus-
führen von Ableitungsschritten, wobei ein Ableitungsschritt ein Vorkommen einer linken Seite
(d. h. ein Teilwort, welches der linken Seite einer Regel entspricht) durch die rechte Seite der
entsprechenden Regel ersetzt.
DieMenge allerWorte überΣ, die vom Startsymbol aus abgeleitet werden können, definiert die
von der Grammatik erzeugte Sprache.
Definition 3.1.1 (Grammatik, Satzform, Ableitung, erzeugte Sprache). Eine Grammatik ist ein
4-Tupel G = (V,Σ, P, S) wobei
• V ist eine endlicheMenge vonVariablen (auchNichtterminale oderNichtterminalsymbole).
• Σ ist ein Alphabet von Zeichen (auch Terminale oder Terminalsymbole).
• V ∩ Σ = ∅ (ein Symbol kann nicht zugleich Variable als auch Zeichen sein).
• P ist eine endliche Menge von Produktionen (auch Regeln genannt), wobei Elemente von P
von der Form `→ r sind, mit ` ∈ (V ∪Σ)+ und r ∈ (V ∪Σ)∗ (d. h. wir können auch schreiben:
P ⊆ (V ∪ Σ)+ × (V ∪ Σ)∗, wenn wir Regeln `→ r als Paare (`, r) auffassen).
• S ∈ V ist das Startsymbol (manchmal auch Startvariable genannt).
Manchmal notieren wir nur die Produktionen P anstelle des gesamten 4-Tupels, wenn klar ist, was
Terminale und was Variablen sind und das Startsymbol offensichtlich ist.
EinWort u ∈ (V ∪Σ)∗ nenntman auch eine Satzform. Seien u, v Satzformen.Wir definieren u⇒G v
(u geht unter Grammatik G unmittelbar in v über), falls es Satzformen w1, w2 gibt, sodass
• u = w1`w2
• v = w1rw2
• `→ r ist eine Produktion aus P (d. h. (`→ r) ∈ P ).
Falls klar ist, welche Grammatik G behandelt wird, schreiben wir u ⇒ v anstelle von u ⇒G v. Mit
⇒∗G bezeichnen wir die reflexiv-transitive Hülle von⇒G (d. h.⇒
∗
G entspricht dem 0- oder mehrfa-
chen Anwenden von⇒G).
Die von der Grammatik G erzeugte Sprache L(G) ist
L(G) := {w ∈ Σ∗ | S ⇒∗G w}.
D. Sabel, Skript FSK & TIMI,SoSe 2021 13 Stand: 09. April 2021
3. Chomsky-Grammatiken und die Chomsky-Hierarchie
Eine Folge (w0, w1, . . . , wn) mit w0 = S, wn ∈ Σ∗ und wi−1 ⇒ wi für i = 1, . . . , n heißt Ableitung
von wn.
Beispiel 3.1.2. Sei G = ({E,M,Z}, {+, ∗, 1, 2, (, )}, P, E) mit
P = {E →M,
E → E +M,
M→ Z,
M→M ∗ Z,
Z → 1,
Z → 2,
Z → (E)}
Dann ist L(G), die Sprache der korrekt geklammerten arithmetischen Ausdrücke mit + und ∗ und
den Zahlen 1 und 2. Z. B. (2 + 1) ∗ (2 + 2) ∈ L(G), denn:
E ⇒ M ⇒ M ∗ Z ⇒ Z ∗ Z ⇒ Z ∗ (E)⇒ Z ∗ (E +M)⇒ (E) ∗ (E + M )⇒ (E) ∗ (E + Z)⇒
(E +M) ∗ (E + Z)⇒ (M +M) ∗ (E + Z)⇒ (M +M) ∗ (M + Z)⇒ (M +M) ∗ (Z + Z )⇒
(M + M ) ∗ (Z + 2)⇒ (M + Z) ∗ (Z + 2)⇒ (M + Z) ∗ (2 + 2)⇒ (Z + Z) ∗ (2 + 2)⇒
(2 + Z ) ∗ (2 + 2)⇒ (2 + 1) ∗ (2 + 2)
Hierbei ist die ersetzte Variable jeweils grau hinterlegt.
Beachte, dass dies nicht die einzig mögliche Ableitung für (2 + 1) ∗ (2 + 2) ist. Eine sogenannte
Linksableitung, in der immer die linkeste Variable ersetzt wird, ist:
E ⇒ M ⇒ M ∗ Z ⇒ Z ∗ Z ⇒ (E) ∗ Z ⇒ (E +M) ∗ Z ⇒ (M +M) ∗ Z ⇒ (Z +M) ∗ Z ⇒
(2 + M ) ∗ Z ⇒ (2 + Z ) ∗ Z ⇒ (2 + 1) ∗ Z ⇒ (2 + 1) ∗ (E)⇒ (2 + 1) ∗ (E +M)⇒
(2 + 1) ∗ (M +M)⇒ (2 + 1) ∗ (Z +M)⇒ (2 + 1) ∗ (2 + M )⇒ (2 + 1) ∗ (2 + Z )⇒
(2 + 1) ∗ (2 + 2)
Der Syntaxbaum dazu ist:
E
M
M
Z
( E
E
M
Z
2
+ M
Z
1
)
∗ Z
( E
E
M
Z
2
+ M
Z
2
)
Das letzte Beispiel zeigt bereits, dass Ableiten kein deterministisches Verfahren ist, sondern es
mehrere Möglichkeiten gibt. Es kann für eine Satzform w mehrere Ableitungsschritte w ⇒ wi
Stand: 09. April 2021 14 D. Sabel, Skript FSK & TIMI,SoSe 2021
3.1. Grammatiken
(für verschiedene w1, w2, . . .) geben: Zum einen dadurch, dass verschiedene Produktionen auf
ein Teilwort von w anwendbar sind, aber auch zum anderen dadurch, dass ein und dieselbe
Produktion auf verschiedene Teilworte vonw anwendbar sind. Beachte, dass es jedoch in jedem
Schritt nur endliche viele verschiedeneMöglichkeiten gibt (da die Satzformen endlich lang sind
und die Menge der Produktionen endlich ist). Beachte ferner, dass man u.U. jedoch unendliche
viele Ableitungsschritte hintereinander ausführen kann, und dass es auch Satzformen geben
kann, die noch keine Wörter aus Terminalsymbolen sind, aber kein Ableitungsschritt mehr an-
wendbar ist. In beiden Fällen entsteht daraus kein Wort der durch die Grammatik erzeugten
Sprache.
Beispiel 3.1.3. Sei G = ({S}, {a}, {S → aS}, S). Dann gilt L(G) = ∅, denn es lassen sich keine
Worte aus {a}∗ ableiten: Die einzig mögliche Folge von Ableitungsschritten ist S ⇒ aS ⇒ aaS ⇒
. . ., die jedoch nie endet. Im Vergleich dazu, gilt für G′ = ({S′}, {a, b}, {S′ → aS′, S′ → b}, S′),
dass L(G′) = {anb | n ∈ N}.
Beispiel 3.1.4. Als weiteres Beispiel betrachte die Grammatik G = ({S,B,C}, {a, b, c}, P, S) mit
P = {S → aSBC, S → aBC, CB → BC, aB → ab, bB → bb, bC → bc, cC → cc}
(die z. B. in (Sch08, S.7) zu finden ist). Es gilt a4b4c4 ∈ L(G), denn
S ⇒ aSBC ⇒ aaSBCBC ⇒ aaaSBCBCBC ⇒ aaaaBCBCBCBC ⇒
aaaabCBCBCBC ⇒ aaaabBCCBCBC ⇒ aaaabbCCBCBC ⇒ aaaabbCBCCBC ⇒
aaaabbBCCCBC ⇒ aaaabbBCCBCC ⇒ aaaabbBCBCCC ⇒ aaaabbBBCCCC ⇒
aaaabbbBCCCC ⇒ aaaabbbbCCCC ⇒ aaaabbbbcCCC ⇒ aaaabbbbccCC ⇒ aaaabbbbcccC ⇒
aaaabbbbcccc.
Ein Beispiel für eine „steckengebliebene Folge von Ableitungsschritten“ ist
S ⇒ aSBC ⇒ aaBCBC ⇒ aabCBC ⇒ aabcBC,
denn auf die letzte Satzform aabcBC ist keine Produktion mehr anwendbar (es gibt kein Teilwort
von aabcBC, das linke Seite einer Produktion ist).
Genauer gilt L(G) = {anbncn | n ∈ N>0}, was wir nun beweisen (?): Wir müssen zwei Richtungen
zeigen
• Teil 1: Zeige anbncn ∈ L(G) für allen ∈ N>0:Wenden−1mal die RegelS → aSBC und dann
einmal die Regel S → aBC an. Das ergibt S ⇒∗ an(BC)n. Nun wende die Regel CB → BC
solange an, bis es kein Teilwort CB mehr gibt. Danach müssen alle Vorkommen von C rechts
der Vorkommen von B stehen, daher gilt an(BC)n ⇒∗ anBnCn. Wende Regel aB → ab und
anschließend n − 1 mal bB → bb an. Das ergibt anBnCn ⇒∗ anbnCn. Schließlich wende
einmal bC → bc und anschließend n − 1 mal cC → cc an, sodass anbnCn ⇒∗ anbncn.
Zusammensetzen aller Ableitungsschritte zeigt S ⇒∗ anbncn.
• Teil 2: Zeige, dass alle von G erzeugten Worte von der Form anbncn sind. Betrachte die Pro-
duktionen und verifiziere:
– für jede Satzform w mit S ⇒∗ w gilt:#a(w) = #b(w) + #B(w) = #c(w) + #C(w).
– a’s werden ganz links erzeugt, d. h. jede Satzform w mit S ⇒∗ w ist von der Form anw′
wobei in#b(w′) + #B(w′) = #c(w′) + #C(w′) = n.
D. Sabel, Skript FSK & TIMI,SoSe 2021 15 Stand: 09. April 2021
3. Chomsky-Grammatiken und die Chomsky-Hierarchie
– Sei S ⇒∗ anw mit w ∈ {b, c}∗. Dann muss das erste Zeichen von w ein b sein (denn
ein auf a folgendes Zeichen kann nur durch aB → ab erzeugt werden, und die Regeln
vertauschen keine Terminalsymbole). Ebenso kann das linkeste c nur durch die Regel
bC → bc erzeugt sein. Sei S ⇒∗ anw1bCw2 ⇒ anw1bcw2 ⇒∗ anw. Da b’s nur durch
die Regeln aB → ab und bB → bb erzeugt werden, und nach w1 ein b folgt, muss w1
nur aus b’s bestehen. Der Suffix w2 kann keine Vorkommen von B enthalten, denn dann
wäre es aufgrund der Regeln und des c vor w2 unmöglich, dass w ein Wort aus {b, c}∗
ist, denn Vorkommen von B können nicht mehr ersetzt werden. Daher gilt anw1bcw2 =
an{b}∗c{C, c}∗, was impliziert, dass anw = anbncn sein muss (da nur noch die Regel
cC → cc angewendet werden kann).
Beispiel 3.1.5. Als weiteres Beispiel betrachte die Grammatik G = ({S, T,A,B, $}, {a, b}, P, S)
mit
P = {S → $T$, T → aAT, T → bBT, T → ε, $a→ a$, $b→ b$,
Aa→ aA, Ab→ bA, Ba→ aB, Bb→ bB, A$→ $a, B$→ $b, $$→ ε}
Z.B. erzeugt G das Wort aabaab:
S ⇒ $T $ ⇒ $aAT $ ⇒ $aAaAT $ ⇒ $aAaAbBT $ ⇒ $aAaAbB$ ⇒ $aaAAbB$ ⇒
$aaAbAB$⇒ $aabAAB$ ⇒ $aabAA$b⇒ $aabA$ab⇒ $aab$aab⇒ a$ab$aab⇒ aa$b$aab⇒
aab$$aab⇒ aabaab
Wir begründen, dass L(G) = {ww | w ∈ {a, b}∗} gilt (?). Die Regel S → $T$ erzeugt zunächst eine
Umrahmung mit $$. Anschließend erzeugen die drei Regeln T → aAT , T → bBT und T → ε ein
Wort aus welches aus Blöcken aA und bB besteht (und mit je einem $ links und rechts umrahmt ist).
Streichen von A und B und $ stellt dann schon ein Wort w ∈ {a, b}∗ dar und die Kopie davon findet
man durch Streichen von $, a und b und anschließendem Ersetzen vonA durch a undB durch b. Die
Erzeugung muss die Kopie aus A undB nun rechts vomWort aus a und b platzieren. Dies geschieht
dadurch das zunächst mit den RegelnAa→ aA,Ab→ bA,Ba→ aB,Bb→ bB dieA’s undB’s bis
vor das rechte $ geschoben werden. Dann werden mit A$→ $a und B$→ $b die A’s und B’s in a’s
und b’s verwandelt, wobei sie dabei über rechte $ hüpfen, und dadurch quasi getrennt aufbewahrt
werden. Mit den Regeln $a → a$, $b → b$ und $$ → ε wird das linke $-Symbol zum rechten hin
geschoben und schließlich werden beide $ eliminiert. Bei allen Schritten wird die relative Lage aller
a und b sowie aller A und B nicht geändert.
3.2. Die Chomsky-Hierarchie
Von Noam Chomsky wurde die folgende Einteilung der Grammatiken in Typen 0 bis 3 vorge-
nommen:
Definition 3.2.1 (Chomsky-Hierarchie). Es gilt die folgende Einteilung von Grammatiken (siehe
Definition 3.1.1) in Typen 0 bis 3:
• Typ 0: Jede Grammatik ist automatisch vom Typ 0.
• Typ 1: Eine Grammatik G = (V,Σ, P, S) ist vom Typ 1 und wird kontextsensitiv genannt,
wenn für alle Produktionen (`→ r) ∈ P gilt: |`| ≤ |r|.
• Typ 2: Eine Typ 1-Grammatik G = (V,Σ, P, S) ist vom Typ 2 und wird kontextfrei genannt,
wenn für alle Produktionen (` → r) ∈ P gilt: ` = A ∈ V , d. h. die linken Seiten der Produk-
tionen bestehen aus genau einer Variablen.
Stand: 20. April 2021 16 D. Sabel, Skript FSK & TIMI,SoSe 2021
3.2. Die Chomsky-Hierarchie
• Typ 3: Eine Typ 2-Grammatik G = (V,Σ, P, S) ist vom Typ 3 und wird regulär genannt,
wenn für alle Produktionen (A→ r) ∈ P gilt: r ist von der Form a oder von der Form aA′ mit
a ∈ Σ, A′ ∈ V , d. h. die rechten Seiten sind Worte aus (Σ ∪ (ΣV )) und bestehen daher aus
einem Terminalsymbol, welchem optional eine Variable folgt.
Für i = 0, 1, 2, 3 nennt man eine formale Sprache L ⊆ Σ∗ vom Typ i, falls es eine Typ i-Grammatik
G gibt, sodass L(G) = L gilt. Hierbei wird stets der Typ eindeutig festgelegt, sodass der größtmög-
liche Grammatik-Typ verwendet wird.
Die Namen kontextfrei und kontextsensitiv rühren daher, dass bei kontextfreien Grammatiken
ein Vorkommen einer Variablen A immer (ohne Beschränkung) durch r ersetzt werden kann,
wenn es eine Produktion A → r gibt. Bei kontextsensitiven Grammatiken können die Pro-
duktionen diese Ersetzung auf einen bestimmten Kontext einschränken: Z. B. kann durch die
Produktion uAv → urv zugesichert werden, dass A nur dann durch r ersetzt wird, wenn es
umrahmt von u und v vorkommt (diese Umrahmung ist der „Kontext“).
Beispiel 3.2.2. DieGrammatik aus Beispiel 3.1.2 ist kontextfrei (vomTyp 2), während dieGramma-
tik aus Beispiel 3.1.4 kontextsensitiv (vom Typ 1) ist. Die GrammatikenG undG′ aus Beispiel 3.1.3
sind regulär (vom Typ 3). Die Grammatik aus Beispiel 3.1.5 ist vom Typ 0.
Der Unterschied zwischen Typ 0- und Typ 1-Grammatiken besteht darin, dass Typ 1-
Grammatiken keine verkürzenden Regeln erlauben, d. h. bei Ableitungen mit Typ 1-
Grammatiken wächst die Länge des erzeugten Wortes monoton, während dies bei Typ-0-
Grammatiken nicht der Fall ist. Grafisch kann die mögliche Ableitung eines Worts der Länge n
daher je nach Typ der Grammatik wie in Abb. 3.1 veranschaulicht werden (vergl. (Sch08, S.10)).
1
n
W
or
tl
än
ge
Ableitungsschritte
1
n
W
or
tl
än
ge
Ableitungsschritte
Abbildung 3.1.: Illustrationen zur Ableitung eines Wortes der Länge n mit einer Typ 1-Grammatik
(links) und einer Typ 0-Grammatik (rechts)
3.2.1. Erzeugung des leeren Worts und ε-Produktionen
Grammatiken des Typs 1,2,3 erlauben nach unser bisherigen Definition nicht die Ableitung des
leeren Wortes. Um dies jedoch zu ermöglichen, erlauben wir folgende Sonderregel:
D. Sabel, Skript FSK & TIMI,SoSe 2021 17 Stand: 20. April 2021
3. Chomsky-Grammatiken und die Chomsky-Hierarchie
Definition 3.2.3 (ε-Regel für Typ 1,2,3-Grammatiken). Eine Grammatik G = (V,Σ, P, S) vom
Typ 1, 2 oder 3 darf eine Produktion (S → ε) ∈ P enthalten, vorausgesetzt, dass keine rechte Seite
einer Produktion in P , die Variable S enthält.
Die Einschränkung, dass S nicht in rechten Seiten von Produktionen vorkommen darf, ist keine
echte Beschränkung, wie die folgende Aussage zeigt:
Satz 3.2.4. Sei G = (V,Σ, P, S) eine Grammatik vom Typ i (i ∈ {1, 2, 3}) mit ε 6∈ L(G). Sei
G′ = (V ·∪{S′},Σ, P ′, S′) wobei P ′ aus P entsteht, indem die Produktion S′ → ε hinzugefügt wird
und alle Produktionen für S für das neue Startsymbol S′ kopiert werden, d. h.
P ′ := P ∪ {S′ → r | (S → r) ∈ P} ∪ {S′ → ε}.
Dann ist G′ vom Typ i (mit der ε-Regel gemäß Definition 3.2.3) und L(G′) = L(G) ∪ {ε}.
(?) Beweis. DaS′ neu ist, kommtS′ auf keiner rechten Seite vor. Alle Produktionen ausG′ erfül-
len die Anforderungen an eine Typ i Grammatik, da die Regeln ausG diese erfüllen. Da S′ ⇒ ε,
gilt ε ∈ L(G′). Für alle Ableitungen S ⇒∗G w gibt es auch eine Ableitung S
′ ⇒∗G w (verwende
nur im ersten Ableitungsschritt die kopierte Produktion S′ → r anstelle der Produktion S → r).
Ebenso gibt es für alle Ableitungen S′ ⇒∗G′ w 6= ε eine Ableitung S ⇒G w (verwende statt der
Kopie S′ → r stets die ursprüngliche Regel S → r).
In Typ 2- und Typ 3-Grammatiken kann man generell Produktionen der Form A → ε zulas-
sen, da diese dort entfernt werden können, ohne die Sprache (bis auf Enthaltensein des leeren
Worts) oder den Typ der Grammatik zu ändern. Dies behandeln wir nun:
Definition 3.2.5 (ε-Produktionen in kontextfreien und regulären Grammatiken). In Gram-
matiken des Typs 2 und des Typs 3 erlauben wir Produktionen der Form A → ε (sogenannte ε-
Produktionen).
Satz 3.2.6 (Entfernen von ε-Produktionen in kontextfreien Grammatiken). SeiG = (V,Σ, P, S)
eine kontextfreie (bzw. reguläre) Grammatik mit ε 6∈ L(G). Dann gibt es eine kontextfreie (bzw.
reguläre) Grammatik G′ mit L(G) = L(G′) und G′ enthält keine ε-Produktionen.
(?) Beweis. Die Konstruktion der Grammatik G′ geschieht durch Algorithmus 1.
Die letzteWiederhole-Schleife ist der interessante Teil des Algorithmus. Hier wird die Regelan-
wendungA→ ε sozusagen vorweggenommen und direkt in die Grammatik eingebaut. Zusam-
men mit den Schritten zuvor verändert dies die erzeugte Sprache nicht. Schließlich ist noch
zu beobachten, dass im Fall einer regulären Grammatik, die hinzugefügten Produktionen im-
mer von der Form A′ → a sein müssen und daher dem Format der regulären Grammatiken
entsprechen. D. h. G′ ist in diesem Fall ebenfalls regulär.
Beispiel 3.2.7 ((?) Entfernen von ε-Produktionen). Wir entfernen die ε-Produktionen der Gram-
matik G = ({A,B,C,D, S}, {0, 1}, P, S) mit
P = {S → 1A, A→ AB, A→ DA, A→ ε, B → 0, B → 1, C → AAA, D → 1AC}.
Die Menge der Variablen, die ε herleiten, ist W = {A,C} (zunächst wird A eingefügt, da es die
Produktion A → ε gibt, danach wird C eingefügt, da C → AAA). Löschen der Produktion A → ε
Stand: 20. April 2021 18 D. Sabel, Skript FSK & TIMI,SoSe 2021
3.2. Die Chomsky-Hierarchie
Algorithmus 1 : (?) Entfernen von ε-Produktionen
Eingabe : Typ i-Grammatik G = (V,Σ, P, S)mit ε 6∈ L(G), i ∈ {2, 3}
Ausgabe : Typ i-Grammatik G′ ohne ε-Produktionen, sodass L(G) = L(G′)
Beginn
finde die MengeW ⊆ V aller Variablen A für die gilt A⇒∗ ε:
Beginn
W := {A | (A→ ε) ∈ P};
wiederhole
füge alle solchen A zuW hinzu, für die es eine Produktion A→ A1 . . . An
gibt, sodass für alle i = 1, . . . , n: Ai ∈W ;
bis sichW nicht mehr ändert;
Ende
P ′ := P \ {A→ ε | (A→ ε) ∈ P}; /* lösche Regeln A→ ε */
wiederhole
für alle Produktionen der Form A′ → uAv in P ′ mit |uv| > 0 und A ∈W tue
füge die Produktion A′ → uv zu P ′ hinzu;
/* für eine Produktion A′ → u′Av′Aw′ gibt es (mindestens) zwei Hinzufügungen: Sowohl für
das Vorkommen von A nach u′ als auch für das Vorkommen direkt vor w′ */
Ende
bis sich P ′ nicht mehr ändert;
Gebe G′ = (V,Σ, P ′, S) als Ergebnisgrammatik aus;
Ende
ergibt P ′ = {S → 1A,A → AB,A → DA,B → 0, B → 1, C → AAA,D → 1AC}. Hinzufügen
der Regeln (Löschen von Vorkommen von A, C) ergibt
P ′ = {S → 1A, S → 1, A→ AB, A→ B, A→ DA, A→ D, B → 0, B → 1,
C → AAA, C → AA, C → A, D → 1AC, D → 1A, D → 1C, D → 1}.
Daher ist G′ = ({A,B,C,D, S}, {0, 1}, P ′, S).
3.2.2. Beziehungen zwischen den Typ i-Sprachen
Offensichtlich gilt: Typ 3-Sprachen ⊆ Typ 2-Sprachen ⊆ Typ 1-Sprachen ⊆ Typ 0-Sprachen.
Wie wir in späteren Kapiteln sehen (und beweisen) werden, sind alle diese Teilmengenbezie-
hungen echt, d. h. es gilt:
Typ 3-Sprachen ⊂ Typ 2-Sprachen ⊂ Typ 1-Sprachen ⊂ Typ 0-Sprachen.
Trennende Beispiele sind: Die Sprache L = {anbn | n ∈ N>0} ist von Typ 2, aber nicht von Typ
3, die Sprache L = {anbncn | n ∈ N>0} ist von Typ 1, aber nicht von Typ 2. Schließlich ist die
Sprache H = {w#x | TuringmaschineMw hält für Eingabe x} (das sogenannte Halteproblem)
eine Typ 0- aber keine Typ 1-Sprache.
Eine Sprache heißt entscheidbar, wenn es einen Algorithmus gibt, der bei Eingabe der Gramma-
tikG und einemWortw in endlicher Zeit feststellen kann, obw ∈ L(G) gilt oder nicht. Die Typ
1-, 2- und 3-Sprachen sind entscheidbar, während es Typ 0-Sprachen gibt, die nicht entscheid-
bar sind (für obige Sprache H trifft dies zu). Typ 0-Sprachen sind jedoch rekursiv-aufzählbar
D. Sabel, Skript FSK & TIMI,SoSe 2021 19 Stand: 20. April 2021
3. Chomsky-Grammatiken und die Chomsky-Hierarchie
(oder semi-entscheidbar), d. h. es gibt einen Algorithmus, der bei Eingabe der Grammatik G
und einem Wort w ∈ G in endlicher Zeit feststellt, dass w ∈ L(G) gilt und bei einem Wort
w 6∈ G entweder feststellt, dass w 6∈ L(G) gilt, oder nicht-terminiert.
Die Menge der Typ 0-Grammatiken ist abzählbar, da jede Grammatik eine endliche Beschrei-
bung hat und die Grammatiken daher der Größe nach aufgezählt werden können. Hingegen ist
die Menge aller Sprachen überabzählbar und hat dieselbe Kardinalität wie die reellen Zahlen.
Daher ergibt sich folgendes Bild:
alle Sprachen
rekursiv aufzählbar (Typ 0)
entscheidbare Sprachen
kontextsensitiv (Typ 1)
kontextfrei (Typ 2)
regulär (Typ 3)
Für die praktische Verwendung in der Informatik sind insbesondere die Typ 3- und Typ 2-
Sprachen im Rahmen der lexikalischen und der syntaktischen Analyse im Compilerbau von
Interesse und daher sehr gut untersucht. Z. B. gibt es zwischen Typ 3- und Typ 2-Sprachen
noch weitere Unterteilungen (z. B. lineare kontextfreie Sprachen, deterministisch kontextfreie
Sprache, etc.). Viele (auch praktische) Fragestellungen sind jedoch eher kontextsensitiv oder
sogar vom Typ 0. Wegen der schwierigeren Handhabung solcher Sprachen, versucht man oft
Probleme als kontextfreie Sprachen zuzüglich einiger Nebenbedingungen zu formulieren und
zu behandeln. Z. B. sind die meisten Programmiersprachen nicht kontextfrei (denn Bedingun-
gen wie Deklaration der verwendeten Variablen, korrekte Typisierung von Ausdrücken, u. s. w.
sind nichtmit einer kontextfreien Sprache darstellbar). Dennoch wird die Syntax von Program-
miersprachen oft durch kontextfreie Grammatiken beschrieben und zusätzliche Nebenbedin-
gungen (wie korrekte Typisierung) darüber hinaus festgelegt.
3.3. Das Wortproblem
Sei S ⇒ w1 ⇒ . . .⇒ wm eine Ableitung des Wortes wm der Länge n in einer kontextsensitiven
Grammatik. Da |`| ≤ |r| für alle Produktionen ` → r einer kontextsensitiven Grammatik gilt,
wissenwir, dass alle Satzformenwi höchstens die Länge n haben . Da es nur endliche viele Satz-
formen der Länge ≤ n über (Σ ∪ V )∗ gibt, kann man erahnen, dass man durch systematisches
Durchprobieren all dieser Satzformen, entscheiden kann, welche Wörter wm ∈ Σ∗ der Länge
≤ n von einer Grammatik erzeugt werden und welche nicht.
Definition 3.3.1 (Wortproblem für Typ i-Sprachen). DasWortproblem für Typ i-Sprachen ist die
Frage, ob für eine gegebene Typ i-GrammatikG = (V,Σ, P, S) und ein Wort w ∈ Σ∗ gilt: w ∈ L(G)
oder w 6∈ L(G).
Stand: 20. April 2021 20 D. Sabel, Skript FSK & TIMI,SoSe 2021
3.3. Das Wortproblem
Satz 3.3.2. Das Wortproblem für Typ 1-Sprachen ist entscheidbar, d. h. es gibt einen Algorithmus,
der bei Eingabe von Typ 1-GrammatikG und Wort w nach endlicher Zeit entscheidet, ob w ∈ L(G)
oder w 6∈ L(G) gilt.
(?)Beweis. Sei G = (V,Σ, P, S) eine Typ 1-Grammatik und w ∈ Σ∗. Fürm,n ∈ N sei
Lnm := {w ∈ (V ∪ Σ)
∗ | |w| ≤ n und S ⇒kG w, k ≤ m},
d. h.Lnm enthält alle Satzformen der Länge höchstensn, die in höchstensm Schritten vomStart-
symbol aus ableitbar sind.
Die Mengen Lnm (für n > 0) lassen sich rekursiv wie folgt berechnen:
Ln0 := {S}
Lnm := next(L
n
m−1, n) fürm > 0
wobei next(L, n) := L ∪ {w′ | w ∈ L,w ⇒G w′, |w′| ≤ n}
Beachte, dass diese Berechnung für eine Typ 0-Grammatik falsch wäre, da dort zwischendrin
auch Wörter der Länge > n entstehen dürfen, die im Anschluss daran wieder gekürzt werden.
Ferner ist klar, dass die Berechnung von Lnm für gegebenesm und n terminiert.
DieMächtigkeit derMengenLnm sind durch die |Σ∪V |n beschränkt (mehr Satzformen der Länge
n gibt es nicht). Für den Übergang von Lni−1 zu L
n
i gilt L
n
i−1 = L
n
i oder L
n
i−1 ⊂ L
n
i . Ferner gilt:
Falls Lni−1 = L
n
i dann L
n
i−1 = L
n
i+k für alle k ∈ N. Aus den vorherigen Aussagen folgt, dass es
irgendein m0 geben muss, für das Lnm0 = L
n
m0+k
für alle k ∈ N gilt. Nach Berechnung dieser
Menge Lnm0 reicht es daher zu prüfen, ob w ∈ L
n
m0
gilt oder nicht.
Daher entscheidet Algorithmus 2 das Wortproblem für Typ 1-Grammatiken.
Algorithmus 2 : (?) Entscheiden des Wortproblems für Typ 1-Grammatiken
Eingabe : Typ 1-Grammatik G = (V,Σ, P, S) und ein Wort w ∈ Σ∗
Ausgabe : Ja, wenn w ∈ L(G) und Nein, wenn w 6∈ L(G)
Beginn
n := |w|;
L := {S};
wiederhole
Lold := L;
L := next(Lold, n);
bis (w ∈ L) oder (Lold = L);
wenn w ∈ L dann
return Ja;
sonst
return Nein;
Ende
Ende
Korollar 3.3.3. Das Wortproblem für Typ 2-Sprachen und das Wortproblem für Typ 3-Sprachen
sind jeweils entscheidbar.
D. Sabel, Skript FSK & TIMI,SoSe 2021 21 Stand: 20. April 2021
3. Chomsky-Grammatiken und die Chomsky-Hierarchie
Beispiel 3.3.4 (?). Als Beispiel betrachte die Grammatik G = ({S,B}, {a, b, c}, P, S) mit P =
{S → aSBc, S → abc, cB → Bc, bB → bb}. Wir berechnen L6m für allem:
L60 = {S}
L61 =next(L
6
0) = L
6
0 ∪ {aSBc, abc} = {S, aSBc, abc}
L62 =next(L
6
1) = L
6
1 ∪ {aSBc, abc, aabcBc} = {S, aSBc, abc, aabcBc}
L63 =next(L
6
2) = L
6
2 ∪ {aSBC, abc, aabcBc, aabBcc} = {S, aSBc, abc, aabcBc, aabBcc}
L64 =next(L
6
3) = L
6
3 ∪ {aSBc, abc, aabcBc, aabBcc, aabbcc}
= {S, aSBc, abc, aabcBc, aabBcc, aabbcc}
L65 =next(L
6
4) = L
6
4 ∪ {aSBc, abc, aabcBc, aabBcc, aabbcc}
= {S, aSBc, abc, aabcBc, aabBcc, aabbcc}
Da L54 = L
6
5, giltL
6
m = {S, aSBc, abc, aabcBc, aabBcc, aabbcc} für alle m ≥ 4. Das einzige von G
erzeugte Wort der Länge 6 ist daher aabbcc.
3.4. Weitere Probleme für Formale Sprachen
Neben dem Wort-Problem existieren andere Fragestellungen für formale Sprachen, die wir in
den folgenden Definitionen spezifizieren.
Definition 3.4.1. Das Leerheitsproblem für Sprachen vom Typ i ist die Frage, ob für eine Typ i-
Grammatik G, die Gleichheit L(G) = ∅ gilt.
Definition 3.4.2. Das Endlichkeitsproblem für Sprachen vom Typ i ist die Frage, ob für eine Typ
i-Grammatik G die Ungleichheit |L| <∞ gilt.
Definition 3.4.3. Das Schnittproblem für Sprachen vom Typ i ist die Frage, ob für Typ i-
Grammatiken G1, G2 gilt: L(G1) ∩ L(G2) = ∅.
Definition 3.4.4. Das Äquivalenzproblem für Sprachen vom Typ i ist, die Frage, ob Typ i-
Grammatiken G1, G2 gilt: L(G1) = L(G2).
Die Entscheidbarkeit dieser Probleme werden wir in späteren Kapitel für die unterschiedlichen
Typen von Sprachen betrachten.
3.5. Syntaxbäume
Wir haben Syntaxbäume bereits verwendet und definieren diese nun formal:
Definition 3.5.1. Sei G = (V,Σ, P, S) eine Typ 2-Grammatik und S ⇒ w0 ⇒ . . . ⇒ wn eine
Ableitung von wn ∈ Σ∗. Der Syntaxbaum zur Ableitung wird wie folgt erstellt:
• Die Wurzel des Baums ist mit S markiert.
• Wenn wi ⇒ wi+1 und wi = uAv und wi+1 = urv (die angewandte Produktion ist A → r),
dann erzeuge im Syntaxbaum |r| viele Knoten als Kinder des mit A markierten Knotens (an
der passenden Stelle im Syntaxbaum). Markiere die Kinder mit den Symbolen aus r (in der
Reihenfolge von links nach rechts).
Stand: 20. April 2021 22 D. Sabel, Skript FSK & TIMI,SoSe 2021
3.5. Syntaxbäume
Die Blätter sind daher genau mit dem Wort wn markiert.
Beachte, dass für Typ-3-Grammatiken, Syntaxbäume immer eine listenartige Struktur folgen-
der Form haben
S
a1 A1
a2 A2
a3 A3
a4 An−1
an An
an+1
Beispiel 3.5.2. Wir betrachten erneut die Grammatik G = ({E,M,Z}, {+, ∗, 1, 2, (, )}, P, E) mit
P = {E →M, E → E +M, M → Z, M →M ∗ Z, Z → 1, Z → 2, Z → (E)}
(siehe Beispiel 3.1.2). Die Ableitung E ⇒ M ⇒ M ∗ Z ⇒ Z ∗ Z ⇒ 1 ∗ Z ⇒ 1 ∗ 2 hat den
Syntaxbaum
E
M
M
Z
1
∗ Z
2
Die Ableitung E ⇒ M ⇒M ∗ Z ⇒ M ∗ 2⇒ Z ∗ 2⇒ 1 ∗ 2 hat denselben Syntaxbaum.
Die erste der beiden Ableitungen im vorangegangenen Beispiel hat die Eigenschaft, dass immer
die linkeste Variable in der Satzform im nächsten Ableitungsschritt ersetzt wird. Man spricht
in diesem Fall von einer Linksableitung. Analog gibt es die Rechtsableitung, bei der stets die am
weitesten rechts stehende Variable beim Ableiten ersetzt wird. Nicht jede Ableitung ist Links-
oder Rechtsableitung. Für einen gegebenen Syntaxbaum kann man immer eine dazu passende
Links- oder Rechtsableitung angeben (durch Ablesen am Baum). Daher gilt:
Satz 3.5.3. Sei G eine Typ 2-Grammatik und w ∈ L(G). Dann gibt es eine Linksableitung (und
eine Rechtsableitung) von w.
Beweis. Daw ∈ L(G), gibt es irgendeine Ableitung vonw. Dieser Ableitung entspricht ein Syn-
taxbaum. Für diesen Syntaxbaum kann man eine Linksableitung (bzw. Rechtsableitung) able-
sen.
D. Sabel, Skript FSK & TIMI,SoSe 2021 23 Stand: 20. April 2021
3. Chomsky-Grammatiken und die Chomsky-Hierarchie
Es gibt Grammatiken, für die dasselbe Wort mit unterschiedlichen Syntaxbäumen hergeleitet
werden kann. Betrachte z. B. die Grammatik
(E, {∗,+, 1, 2}, {E → E ∗ E, E → E + E, E → 1, E → 2}, E).
Eine Ableitung desWorts 1+2∗1 ist E ⇒ E ∗E ⇒ E+E∗E ⇒ 1+E ∗E ⇒ 1+2∗E ⇒ 1+2∗1
eine andere Ableitung ist E ⇒ E + E ⇒ E +E ∗E ⇒ 1 + E ∗E ⇒ 1 + 2 ∗ E ⇒ 1 + 2 ∗ 1. Die
Syntaxbäume der beiden Ableitungen sind
E
E
E
1
+ E
2
∗ E
1
E
E
1
+ E
E
2
∗ E
1
In solchen Fällen (es gibt verschieden strukturierte Syntaxbäume für dasselbe Wort) spricht
man von einermehrdeutigen Grammatik. Tatsächlich gibt es Sprachen, für die es ausschließlich
mehrdeutige Grammatiken gibt. Dies nennt man inhärent mehrdeutig. Eine kontextfreie, inhä-
rentmehrdeutige Sprache, ist die Sprache {ambmcndn | m,n ∈ N>0}∪{ambncndm | m,n ∈ N>0}
(siehe (HMU06, Abschnitt 5.4.4)).
3.6. Die Backus-Naur-Form für Grammatiken
Von John Backus und Peter Naur wurde im Rahmen der Entwicklung der Programmiersprache
ALGOL 60 ein Formalismus eingeführt, um kontextfreie Grammatiken in kompakter Form auf-
zuschreiben. Wir verwenden analoge abkürzende Schreibweisen:
Definition 3.6.1 (Erweiterte Backus-Naur-Form (EBNF)). Für Typ 2-Grammatiken erlauben wir
die folgenden abkürzenden Schreibweisen für die Menge der Produktionen P :
1. Statt A→ w1, A→ w2, . . . A→ wn schreiben wir auch A→ w1 | w2 | . . . | wn.
2. Die Schreibweise A→ u[v]w steht für die beiden Produktionen A→ uvw und A→ uw (d. h.
[v] meint, dass v optional ist).
3. Die Schreibweise A → u{v}w steht für A → uw oder A → uBw mit B → v | vB (d. h. {v}
meint, dass v beliebig oft wiederholt werden kann).
Grammatiken, die dieseNotation verwenden, nennenwir auchGrammatiken in erweiterter Backus-
Naur-Form (EBNF)
Beachte, dass Typ 2-Grammatiken in EBNF äquivalent zu Typ 2-Grammatiken in normaler Dar-
stellung sind, und daher genau die kontextfreien Sprachen darstellen können.
Stand: 20. April 2021 24 D. Sabel, Skript FSK & TIMI,SoSe 2021
4
Reguläre Sprachen
In diesem Kapitel beschäftigen wir uns mit der einfachsten Sprachklasse der Chomsky-
Hierarchie – den Typ 3- bzw. regulären Sprachen. Neben regulären Grammatiken (d. h. Typ 3-
Grammatiken) gibt es weitere Formalismen, um reguläre Sprachen zu repräsentieren, die wir in
diesemKapitel kennenlernenwerden (endliche Automaten (deterministische als auch nichtde-
terministische undVariantendavon) und reguläreAusdrücke).Wirwerden zeigen, dass all diese
Formalismen genau die regulären Sprachen repräsentieren und wie man einen Formalismus in
einen anderen übersetzen kann. Im Anschluss betrachten wir, wie man zeigt, dass eine formale
SpracDaahe nicht regulär ist, wobei wir das sogenannte Pumping-Lemma für reguläre Spra-
chen und den Satz von Myhill und Nerode kennenlernen werden. Neben der Berechnung von
Automatenmit minimaler Anzahl von Zuständen, zeigen wir, dass die regulären Sprachen bez.
Vereinigung, Schnitt, Komplement, Produkt und Kleeneschem Abschluss abgeschlossen sind.
Wir beenden das Kapitel mit Entscheidbarkeitsresultaten zum Wortproblem und verwandten
Problemen für reguläre Sprachen.
4.1. Deterministische endliche Automaten
Endliche Automaten lesen als Eingabe ein Wort (schrittweise) und akzeptieren oder verwerfen
das Wort. Die akzeptierte Sprache eines solchen Automaten besteht aus den Wörtern, die von
ihm akzeptiert werden.
Definition 4.1.1 (Deterministischer Endlicher Automat, DFA). Ein deterministischer endlicher
Automat (determinististic finite automaton, DFA) ist ein 5-TupelM = (Z,Σ, δ, z0, E) wobei
• Z ist eine endliche Menge von ZustäMnden,
• Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅,
• z0 ∈ Z ist der Startzustand,
• E ⊆ Z ist die Menge der Endzustände (oder auch akzeptierende Zustände) und
• δ : Z × Σ→ Z ist die Zustandsüberführungsfunktion (oder nur Überführungsfunktion).
Deterministische endliche Automaten können durch Zustandsgraphen dargestellt werden:
Definition 4.1.2. SeiM = (Z,Σ, δ, z0, E) ein DFA. Der Zustandsgraph zuM ist ein Graph, mit
Knoten für jeden Zustand z ∈ Z und markierten Kanten zwischen diesen Knoten, wobei
• Zustände z ∈ Z als z gezeichnet werden,
• der Startzustand z0 ∈ Z durch einen auf ihn zeigenden Pfeil markiert wird, d. h. z0 ,
Stand: 20. April 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
4. Reguläre Sprachen
• Endzustände z ∈ E mit doppelten Kreisen markiert werden, d. h. als z ,
• für δ(zi, a) = zj , je eine mit a beschriftete Kante von zi nach zj zi zj
a
gezeich-
net wird. Dabei werden gleiche Kanten mit unterschiedlicher Beschriftung zusammengefasst,
indem nur eine Kante gezeichnet wird, und die Beschriftungen, mit Kommas getrennt an die
Kante geschrieben werden: Anstelle von zi zj
a
b
zeichnen wir zi zj
a, b .
Wenn die konkreten Namen der Zustände keine Rolle spielen, lassen wir sie in Illustrationen des
Zustandsgraphen manchmal weg.
Beispiel 4.1.3. Der DFAM = ({z0, z1, z2}, {a, b}, δ, z0, {z2}) mit
δ(z0, a) = z1 δ(z1, a) = z2 δ(z2, a) = z2
δ(z0, b) = z0 δ(z1, b) = z0 δ(z2, b) = z2
hat den Zustandsgraph z0 z1 z2
b
a
a
b
a, b
.
Die Abarbeitung eines Wortes mit einem Automaten kann man sich so veranschaulichen: Das
Wort wird zeichenweise verarbeitet, wobei im Startzustand z0 begonnen wird. Für jedes Zei-
chen, wird in den entsprechendenNachfolgezustand (berechnetmit der Überführungsfunktion
δ) gewechselt. Ist das Wort komplett eingelesen und der aktuelle Zustand ist ein Endzustand,
dann wird das Wort vom DFA erkannt.
Beispiel 4.1.4. Betrachte den DFA M aus Beispiel 4.1.3. M erkennt das Wort abaa: Beginne im
Zustand z0. Bei Einlesen des ersten Zeichens a wechselt der Automat in Zustand z1, Einlesen des
zweiten Zeichens b im Zustand z1 lässt den Automaten in Zustand z0 wechseln, Einlesen des drit-
ten Zeichens a lässt den Automaten in z1 wechseln, und anschließendes Einlesen von a lässt den
Automaten in Zustand z2 wechseln. Jetzt ist das gesamte Wort eingelesen und der Automat ist im
Zustand z2, der ein Endzustand ist.
Analog wird das Wort aba nicht vom DFAM erkannt, daM nach Abarbeitung des Wortes im Zu-
stand z1 ist, der kein Endzustand ist.
Die Menge der erkannten Worte ist die akzeptierte Sprache des Automaten:
Definition 4.1.5 (Akzeptierte Sprache eines DFAs). SeiM = (Z,Σ, δ, z0, E) ein DFA. Wir defi-
nieren die Funktion δ̂ : Z × Σ∗ → Z durch
δ̂(z, ε) := z und δ̂(z, aw) := δ̂(δ(z, a), w)
Die vonM akzeptierte Sprache ist
L(M) := {w ∈ Σ∗ | δ̂(z0, w) ∈ E}.
Stand: 20. April 2021 26 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.1. Deterministische endliche Automaten
Beachte, dass δ̂ dieÜberführungsfunktion δ solange anwendet, bis dasWort abgearbeitetwurde,
d. h. δ̂(z, a1 · · · an) = δ(. . . δ(δ(z, a1), a2), . . . , an).
Lässt man den Automaten für ein Wort ablaufen, so spricht auch von einem Lauf des DFAs:
Definition 4.1.6. Sei M = (Z,Σ, δ, z0, E) ein DFA und w ∈ Σ∗ mit |w| = n. Die Folge von Zu-
ständen q0, . . . , qn mit q0 = z0 und qi = δ(qi−1, w[i]) für 1 ≤ i ≤ n bezeichnet man als Lauf vonM
für Wort w. Für einen solchen Lauf schreiben wir auch:
q0
w[1]
−−→ q1
w[2]
−−→ · · ·
w[n−1]
−−−−→ qn−1
w[n]
−−→ qn
Beispiel 4.1.7. Für den DFA M aus Beispiel 4.1.3 gilt L(M) = {uaav | uv ∈ {a, b}∗}, d. h. M
akzeptiert alle Wörter, die zwei aufeinanderfolgende a’s enthalten. Dies lässt sich einsehen, indem
man beobachtet, dass z2 von z0 aus nur über aa erreicht werden kann, dass nach Erreichen von z2
in z2 verblieben wird, und dass man nach Lesen von b in z1 wieder erneut in z0 starten muss.
Beispiel 4.1.8. Wir konstruieren einenDFAüberΣ = {a, b}, der die Sprache allerWorte akzeptiert,
die mit abaa beginnen undmit bab enden: Für den Präfix abaa können wir vier Zustände z1, z2, z3, z4.
(zusätzlich zum Startzustand z0) erzeugen, die vom Startzustand durchlaufen werden müssen, und
einen weiteren Zustand z5, der zum Fehler führt (falls der Präfix nicht stimmt). Das ergibt bereits:
z0 z1 z2 z3 z4
z5
a, b
a b a a
b a b b
a
Für den Suffix bab können wir drei weitere Zustände z6, z7, z8 hinzufügen, sodass z8 ein Endzustand
ist. Für die Zustandsübergänge ab Zustand z4 müssen wir stets die Möglichkeit beachten, dass der
Suffix bab noch kommt, bzw. komplettiert wird: Wenn wir in z4 ein a lesen, verbleiben wir in z4, da
der komplette Suffix bab noch kommen muss. Wenn wir in z6 ein b lesen, muss noch ab kommen, d. h.
wir verbleiben in z6. Lesen wir in z7 ein a, dann haben wir zuletzt aa gelesen, undmüssen daher noch
den gesamten Suffix bab lesen und wechseln somit zurück zu z4. Lesen wir in z8 ein b, dann haben
wir bb zuletzt gelesen und müssen für den geforderten Suffix noch ab lesen, d. h. wir wechseln in z6.
Lesen wir in z8 ein a, dann haben wir ba zuletzt gelesen und müssen für den geforderten Suffix noch
ein b lesen, daher wechseln wir in z7:
z0 z1 z2 z3 z4
z5
z6 z7 z8
a, b
a b a a
b a b b
b a b
a a
ba b
D. Sabel, Skript FSK & TIMI,SoSe 2021 27 Stand: 20. April 2021
4. Reguläre Sprachen
Beispiel 4.1.9. Ein DFA, der alle Wörter über {a, b} akzeptiert, die mit abaa beginnen und mit bab
enden, sowie die Wörter a, ab. Kann genau wie der Automat in Beispiel 4.1.8 konstruiert werden,
wobei z1 und z2 zusätzliche Endzustände sind, d. h. der folgende Automat akzeptiert die genannte
Sprache:
z0 z1 z2 z3 z4
z5
z6 z7 z8
a, b
a b a a
b a b b
b a b
a a
ba b
Übungsaufgabe 4.1.10. Ein Kaugummi-Automat erhält als Eingabe 10- und 20-CentMünzen und
akzeptiert genau dann, wenn er 50-Cent in der Summe erhalten hat. Modellieren Sie das Akzeptanz-
verhalten des Kaugummi-Automaten, indem Sie einen DFA über dem Alphabet {10, 20} konstruie-
ren, der genau jene Worte akzeptiert, die in der Summe 50 Cent ergeben.
4.2. DFAs akzeptieren reguläre Sprachen
Wir zeigen, dass die von DFAs akzeptierten Sprachen allesamt regulär (d. h. Typ 3-Sprachen)
sind. Später werden wir auch die Umkehrung zeigen (zu jeder regulären Sprache, gibt es einen
DFA, der diese Sprache akzeptiert).
Theorem 4.2.1. SeiM = (Z,Σ, δ, z0, E) ein DFA. Dann ist L(M) eine reguläre Sprache.
Beweis. Für einen DFA M = (Z,Σ, δ, z0, E) konstruieren wir eine reguläre Grammatik G =
(V,Σ, P, S) mit L(G) = L(M): Es sei V = Z, S = z0 und P enthalte für jeden Zustand zi ∈ Z
und Zeichen a ∈ Σmit δ(zi, a) = zj die Produktion zi → azj ∈ P und falls zj ∈ E zusätzlich die
Produktion zi → a. Falls z0 ∈ E gilt (d. h. ε ∈ L(M)) füge die Regel z0 → ε zu P hinzu.
Wie zeigen, dass für jedes Wort w ∈ Σ∗ gilt: w ∈ L(M) ⇐⇒ w ∈ L(G). Falls w = ε, so gilt
dies offensichtlich. Falls w = a1 · · · am, dann gilt w ∈ L(M) genau dann, wenn es Zustände
z1, . . . , zm ∈ Z gibt mit δ(zi−1, ai) = zi und zm ∈ E. Die letzte Aussage ist äquivalent dazu,
dass es Ableitungsschritte z0 ⇒G a1z1, a1 · · · ai−1zi−1 ⇒G a1 · · · aizi für i = 1, . . . ,m− 1 und
a1 · · · am−1zm−1 ⇒G a1 · · · am gibt, sodass sich die Ableitung z0 ⇒∗G a1 · · · am konstruieren lässt,
was erneut genau dann gilt, wenn w ∈ L(G) gilt.
Beispiel 4.2.2. Die reguläre Grammatik zum DFA aus Beispiel 4.1.3 entsprechend zum Beweis von
Theorem 4.2.1 ist G = (V,Σ, P, S) mit V = {z0, z1, z2}, Σ = {a, b}, S = z0 und
P = {z0 → az1, z0 → bz0, z1 → az2, z1 → a, z1 → bz0, z2 → az2, z2 → a, z2 → bz2, z2 → b}.
Z. B. akzeptiert M das Wort babaaa, denn δ(z0, b) = z0, δ(z0, a) = z1, δ(z0, b) = z0, δ(z0, a) =
z1, δ(z1, a) = z2, δ(z2, a) = z2. Die dazu passende Ableitung für Grammatik G ist
z0 ⇒G bz0 ⇒G baz1 ⇒G babz0 ⇒G babaz1 ⇒G babaaz2 ⇒G babaaa.
Stand: 8. Juli 2021 28 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.3. Nichtdeterministische Endliche Automaten
Die Umkehrung der letzten Aussage (für jede reguläre Sprache L gibt es einen DFA M , der L
akzeptiert) gilt auch, aber wir brauchen weitere Mittel, um sie zu beweisen. Die Kodierung im
Beweis der letzten Aussage ist nicht immer rückwärts anwendbar, sobald es z. B. Produktionen
A → aA1 und A → aA2 in der regulären Grammatik gibt, ist nicht klar, wie die Überführungs-
funktion des DFA aussehen muss.
Ein Hilfsmittel sind daher die nichtdeterministischen endlichen Automaten, die wir im nächs-
ten Abschnitt einführen werden.
4.3. Nichtdeterministische Endliche Automaten
Nichtdeterministische Automaten ermöglichen es dem Automaten, nicht eindeutig, sondern
durch „Raten“ in einen Zustand zu wechseln. Während die Überführungsfunktion δ bei DFAs
eine Funktion ist und damit eindeutig (deterministisch) angibt, welcher Nachfolgezustand in
Abhängigkeit vom aktuellen Zustand und dem gelesenen Zeichen zu besuchen ist, erlauben
nichtdeterministischeAutomaten, den Zustandswechsel nichtdeterministisch zumachen, d. h.
durch „Raten“ einen von mehreren Nachfolgezuständen aufzusuchen.
Z. B. drückt der folgende Zustandsgraph aus, dass bei Lesen des Zeichens a im Zustand z sowohl
in Zustand z1 als auch in Zustand z2 gewechselt werden darf:
z
z1
z2
a
a
Formal wird dies gehandhabt, indem die Überführungsfunktion δ bei nichtdeterministischen
Automaten nichtmehr einenNachfolgezustand, sondern eineMenge vonNachfolgezuständen lie-
fert. Außerdem darf es auch mehrere Startzustände geben, daher haben nichtdeterministische
endliche Automaten eineMenge von Startzustände:
Definition 4.3.1. Ein nichtdeterministischer endlicher Automat (nondeterministic finite automa-
ton, NFA) ist ein 5-Tupel (Z,Σ, δ, S,E) wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅,
• S ⊆ Z ist die Menge der Startzustände,
• E ⊆ Z ist die Menge der Endzustände (oder auch akzeptierende Zustände) und
• δ : Z×Σ→ P(Z) ist dieZustandsüberführungsfunktion (oder nur Überführungsfunktion).
Beachte, dass nichtdeterministische Automaten auch erlauben, dass es keinen Nachfolgezu-
stand gibt bei Lesen eines Zeichens. In diesem Fall ist δ(z, a) = ∅ und das Wort wird verworfen
(wenn es keine andere Möglichkeit gibt, einen Endzustand zu erreichen). Passend zum Raten,
erkennt ein NFA ein Wort w, wenn es einen Pfad von einem Startzustand zu einem Endzustand
gibt. Die nächste Definition macht dies formal:
Definition 4.3.2 (Akzeptierte Sprache eines NFA). SeiM = (Z,Σ, δ, S,E) ein NFA. Wir definie-
ren δ̂ : (P(Z)× Σ∗)→ P(Z) induktiv durch:
D. Sabel, Skript FSK & TIMI,SoSe 2021 29 Stand: 8. Juli 2021
4. Reguläre Sprachen
δ̂(X, ε) := X für alleX ⊆ Z
δ̂(X, aw) :=
⋃
z∈X
δ̂(δ(z, a), w) für alleX ⊆ Z
Die vonM akzeptierte Sprache ist L(M) := {w ∈ Σ∗ | δ̂(S,w) ∩ E 6= ∅}.
Beachte, dass die Definition {w ∈ Σ∗ | δ̂(S,w)∩E 6= ∅} äquivalent dazu ist, dass ein Endzustand
z ∈ E existiert, sodass z ∈ δ̂(S,w) (d. h. ein Pfad von einem Startzustand zu einem Endzustand
entlangw genügt, umw zu erkennen). Beachte, dassNFAsmit leererMenge von Startzuständen
möglich und wohldefiniert sind:
Beispiel 4.3.3. SeiM = (Z,Σ, δ, ∅, E) ein NFA. Dann ist L(M) = ∅.
Für Zustandsgraphen verwenden wir für NFAs die gleiche Notation wie bei DFAs, nur dass es
mehrere Startzustände geben kann, dass esmehrere ausgehendePfeilemit gleicherMarkierung
geben kann, und dass es nicht für jedes Zeichen a ∈ Σ einen Pfeil geben muss.
Beispiel 4.3.4. SeiM = ({z0, z1, z2, z3}, {a, b, c}, δ, {z0, z3}, {z3}) ein NFA mit
δ(z0, a) = {z0, z1}
δ(z0, b) = {z0}
δ(z0, c) = {z0}
δ(z1, a) = {z2}
δ(z1, b) = {z2}
δ(z1, c) = {z2}
δ(z2, a) = {z3}
δ(z2, b) = {z3}
δ(z2, c) = {z3}
δ(z3, a) = ∅
δ(z3, b) = ∅
δ(z3, c) = ∅
Der Zustandsgraph zuM ist z0 z1 z2 z3
a a, b, c a, b, c
a, b, c
.
Die vonM akzeptierte Sprache sind alle Wörter aus {a, b, c}∗, die an drittletzter Stelle ein a haben,
sowie das leere Wort, d. h. L(M) = {ε} ∪ ({a, b, c}∗ ◦ {a} ◦ {a, b, c} ◦ {a, b, c}) oder in anderer
Schreibweise L(M) = {ε} ∪ {uaw | u ∈ {a, b, c}∗, w ∈ {a, b, c}2}.
4.4. Reguläre Sprachen können durch NFAs erkannt werden
Wir zeigen, dass jede reguläre Sprache L durch einen NFAM akzeptiert wird.
Theorem 4.4.1. Sei L eine reguläre Sprache. Dann gibt es einen NFAM mit L(M) = L.
Beweis. Da L regulär ist, gibt es eine reguläre Grammatik G = (V,Σ, P, S) mit L(G) = L. Sei
M = (Z,Σ, δ, S′, E) ein NFA mit Z = V ·∪{zE} (d. h. zE ist ein neuer Zustandsname), S′ = {S}
und sei δ : Z×Σ→ P(Z) definiert durch δ(A, a) := {B | A→ aB ∈ P}∪{zE | falls A→ a ∈ P}
für alle A ∈ V und a ∈ Σ und δ(zE , a) = ∅ für alle a ∈ Σ. Falls S → ε ∈ P sei E = {S, zE}, und
ansonsten sei E = {zE}.
Wir zeigen, dass L(M) = L(G) gilt. Offensichtlich gilt ε ∈ L(M) genau dann, wenn ε ∈ L(G).
Für w = a1 · · · an gilt: w ∈ L(G) genau dann, wenn es es eine Ableitung S ⇒G a1A1 · · · ⇒G
Stand: 8. Juli 2021 30 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.5. Überführung von NFAs in DFAs
a1 · · · an−1An−1 ⇒G a1 · · · an gibt. Mit der Konstruktion des NFAsM gilt, dass dies äquivalent
dazu ist, dass es Zustände A1, . . . , An−1 gibt, sodass A1 ∈ δ(S, a1), Ai+1 ∈ δ(Ai, ai+1) für i =
1, . . . , n− 2 und zE ∈ δ(An−1, an), was wiederum äquivalent dazu ist, dass w ∈ L(M) gilt.
Beispiel 4.4.2. Betrachte die reguläre Grammatik G = (V,Σ, P,A) mit V = {A,B,C,D}, Σ =
{a, b, c} und
P = { A→ ε | aB | bB | cB | aC,
B → aB | bB | cB | aC,
C → aD | bD | cD,
D → a | b | c}
.
Der zu G passende NFA gemäß der Konstruktion im Beweis von Theorem 4.4.1 ist M =
(Z,Σ, δ, S,E) mit Z = V ∪ {zE} = {A,B,C,D, zE}, E = {A, zE}, S = {A} und
δ(A, a)={B,C}
δ(A, b)={B}
δ(A, c)={B}
δ(B, a)={B,C}
δ(B, b)={B}
δ(B, c)={B}
δ(C, a)={D}
δ(C, b)={D}
δ(C, c)={D}
δ(D, a)={zE}
δ(D, b)={zE}
δ(D, c)={zE}
δ(zE , a)=∅
δ(zE , b)=∅
δ(zE , c)=∅
Der Zustandsgraph zuM ist
A
B C D zE
a a, b, c a, b, c
a, b, c
a, b, c
a
Z. B. wird bacabc von G erzeugt (denn A ⇒ bB ⇒ baB ⇒ bacB ⇒ bacaC ⇒ bacabD ⇒ bacabc)
und vonM akzeptiert, dennA ist Startzustand,B ∈ δ(A, b),B ∈ δ(B, a),B ∈ δ(B, c),C ∈ δ(B, a),
D ∈ δ(C, b), zE ∈ δ(D, c) und zE ist Endzustand.
Es gilt L(G) = L(M) = {ε} ∪ {uaw | u ∈ {a, b, c}∗, w ∈ {a, b, c}2}, d. h. es wird dieselbe Sprache
wie in Beispiel 4.3.4 vom NFAM akzeptiert bzw. von der Grammatik G erzeugt.
4.5. Überführung von NFAs in DFAs
In diesem Abschnitt zeigen wir, dass wir zu jedem NFAM einen DFAM ′ konstruieren können,
sodass L(M) = L(M ′) gilt. Erstmals wurde diese Konstruktion von Michael O. Rabin und Dana
Scott 1959 bewiesen (siehe (RS59)).
Theorem 4.5.1. Jede von einem NFA akzeptierte Sprache ist auch durch einen DFA akzeptierbar.
Beweis. Für NFAM = (Z,Σ, δ, S,E) konstruieren wir den DFAM ′ = (Z ′,Σ, δ′, S′, E′)mit
• Z ′ = P(Z), d. h. die Zustandsmenge ist die Potenzmenge von Z (für jede Teilmenge von
Z gibt es einen Zustand),
• S′ = S (der Startzustand ist die Teilmenge S ⊆ Z, die Menge aller Startzustände vonM ),
D. Sabel, Skript FSK & TIMI,SoSe 2021 31 Stand: 8. Juli 2021
4. Reguläre Sprachen
• E′ = {X ∈ Z ′ | (E ∩X) 6= ∅} (alle Teilmengen von Z, die mindestens einen Endzustand
vonM enthalten) und
• δ′(X, a) =
⋃
z∈X
δ(z, a) = δ̂(X, a) (d. h. δ′(X, a) berechnet die Menge aller von X aus er-
reichbaren Zustände inM , was dasselbe ist, was δ̂ berechnet.).
Wir beweisen, dass L(M) = L(M ′) gilt. Sei w = a1 · · · an ∈ Σ∗.
Es giltw ∈ L(M) genau dann, wenn δ̂(S,w)∩E 6= ∅. GemäßDefinition 4.3.2 ist äquivalent dazu,
dass es eine Folge Z1, . . . , Zn von Teilmengen von Z gibt, mit δ(S, a1) = Z1, δ(Zi, ai+1) = Zi+1
für i = 1, . . . , n−1 und Zn∩E 6= ∅. Gemäß obiger Konstruktion folgt, dass dies äquivalent dazu
ist, dass es eine Folge Z1, . . . , Zn von Teilmengen von Z gibt, mit δ′(S, a1) = Z1, δ′(Zi, ai+1) =
Zi+1 für i = 1, . . . , n − 1 und Zn ∩ E 6= ∅. Die letzte Aussage ist äquivalent zu δ̂′(S′, w) ∈ E′,
was wiederum äquivalent zu w ∈ L(M ′) ist.
Beispiel 4.5.2. Betrachte den NFAM aus Beispiel 4.3.4. Entsprechend der Konstruktion im Beweis
zu Theorem 4.5.1 wird der folgende DFAM ′ erstellt:M ′ = (P({z0, z1, z2, z3}), {a, b, c}, δ′, S′, E′)
mit
• S′ = {z0, z3}
• E′ = {{z3}, {z0, z3}, {z1, z3}, {z2, z3}, {z0, z1, z3}, {z0, z2, z3}, {z1, z2, z3}, {z0, z1, z2, z3}}
• δ′(∅, d) = ∅ für d ∈ {a, b, c}
δ′({z0}, a) = {z0, z1}
δ′({z0}, d) = {z0} für d ∈ {b, c}
δ′({z1}, d) = {z2} für d ∈ {a, b, c}
δ′({z2}, d) = {z3} für d ∈ {a, b, c}
δ′({z3}, d) = ∅ für d ∈ {a, b, c}
δ′({z0, z1}, a) = {z0, z1, z2}
δ′({z0, z1}, d) = {z0, z2} für d ∈ {b, c}
δ′({z0, z2}, a) = {z0, z1, z3}
δ′({z0, z2}, d) = {z0, z3} für d ∈ {b, c}
δ′({z0, z3}, a) = {z0, z1}
δ′({z0, z3}, d) = {z0} für d ∈ {b, c}
δ′({z1, z2}, d) = {z2, z3} für d ∈ {a, b, c}
δ′({z1, z3}, d) = {z2} für d ∈ {a, b, c}
δ′({z2, z3}, d) = {z3} für d ∈ {a, b, c}
δ′({z0, z1, z2}, a) = {z0, z1, z2, z3}
δ′({z0, z1, z2}, d) = {z0, z2, z3} für d ∈ {b, c}
δ′({z0, z1, z3}, a) = {z0, z1, z2}
δ′({z0, z1, z3}, d) = {z0, z2} für d ∈ {b, c}
δ′({z0, z2, z3}, a) = {z0, z1, z3}
δ′({z0, z2, z3}, d) = {z0, z3} für d ∈ {b, c}
δ′({z1, z2, z3}, d) = {z2, z3} für d ∈ {a, b, c}
δ′({z0, z1, z2, z3}, a) = {z0, z1, z2, z3}
δ′({z0, z1, z2, z3}, d) = {z0, z2, z3} für d ∈ {b, c}
Gezeichnet ergibt dies den folgenden DFA, wobei wir vom Startzustand nicht erreichbare Zustände
weglassen:
Stand: 8. Juli 2021 32 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.5. Überführung von NFAs in DFAs
{z0,z3}
{z0,z1} {z0,z1,z2} {z0,z1,z2,z3}
{z0,z2,z3}{z0,z2} {z0,z1,z3}
{z0}
a
b, c
b, c
a
b, c
a
a
b, c
a
b, c
a
b, c
a
b, c
b, c
a
Die imBeweis zu Theorem4.5.1 vorgestellte Potenzmengen-Konstruktion eines DFA aus einem
NFA führt zu einer exponentiellen Anzahl an Zuständen im DFA bezüglich der Anzahl an Zu-
ständen im NFA. Das Beispiel 4.5.2 zeigt, dass nicht alle Zustände tatsächlich benötigt werden
(da unerreichbare entfernt werden können), aber es klärt auch nicht die Frage, ob man einen
besseren Algorithmus angegeben kann, der einen DFA generiert, der mit weniger Zuständen
auskommt.
Das folgende Lemma widerlegt dies und zeigt allgemein, dass es Sprachen gibt, für die jeder
DFA, der diese Sprache akzeptiert, exponentiell groß in der Größe eines NFA ist, der dieselbe
Sprache akzeptiert.
Lemma 4.5.3 (?). Sei Ln = {uav | u ∈ {a, b}∗, v ∈ {a, b}n−1} für n ∈ N>0, die Sprache aller
Wörter aus {a, b}∗, die an n-letzter Stelle ein a haben. Dann gilt für alle n ∈ N>0:
• Es gibt einen NFAMn mit L(Mn) = Ln undMn hat n+ 1 Zustände.
• Es gibt keinen DFAM ′n mit L(M
′
n) = Ln, sodassM
′
n weniger als 2
n Zustände besitzt.
Beweis. SeiMn der folgende NFA:
z0 z1 z2 zn−1 zn
a a, b a, b a, b a, b
a, b
Offensichtlich akzeptiert Mn die Sprache Ln: Zum Akzeptieren müssen die Zustände
z0, z1, . . . zn in dieser Reihenfolge durchlaufen werden, was genau mit dem Wort av mit
v ∈ {a, b}∗ und |v| = n− 1möglich ist. Zuvor kann beliebig lang im Startzustand z0 verblieben
werden und dabei jedes Wort u ∈ {a, b}∗ gelesen werden.
Für den zweiten Teil der Aussage führen wir einen Beweis durch Widerspruch. Nehme an, es
gibt n ∈ N>0 und einen DFAM ′ = (Z, {a, b}, δ, z0, E) mit L(M ′) = Ln undM ′ hat weniger als
2n Zustände. SeiW = {a, b}n, d. h.W enthält alle Worte, die aus n Zeichen bestehen. Es gibt
genau 2n verschiedene solche Worte (d. h. |W | = 2n). DaM ′ weniger als 2n Zustände hat, muss
es zwei verschiedene Worte w 6= w′ mit w,w′ ∈ W geben, so dass δ̂(z0, w) = δ̂(z0, w′) = zi gilt
D. Sabel, Skript FSK & TIMI,SoSe 2021 33 Stand: 8. Juli 2021
4. Reguläre Sprachen
(nach Einlesen beider Worte befindet sichM ′ in ein und demselben Zustand zi). Sei j die erste
Position an der sich w und w′ unterscheiden. Der Fall j = 1 kann nicht gelten, da dann zi ∈ E
als auch zi 6∈ E gelten müssten. Für den Fall j > 1 erhalten wir o.B.d.A. w = uav und w′ = ubv′
mit |u| = j − 1 und |v| = |v′| = n− j Betrachte die Worte w0 = uavbj−1 und w′0 = ubv
′bj−1 (wir
verlängern w und w′ um j − 1 b’s). Dann muss gelten δ̂(w0) = δ̂(w′0), da δ̂(uav) = zi = δ̂(ubv
′).
Offensichtlich gilt aber w0 ∈ Ln und w′0 6∈ Ln, was fordert, dass δ̂(w0) ∈ E und δ̂(w
′
0) 6∈ E, was
ein Widerspruch ist (da δ̂(w0) = δ̂(w′0) ). Daher war unsere Annahme falsch und es gibt keinen
DFA mit weniger als 2n Zuständen, der die Sprache Ln akzeptiert.
Theorem 4.5.4. DFAs und NFAs erkennen genau die regulären Sprachen.
Beweis. Wir haben gezeigt:
1. DFAs erkennen reguläre Sprachen.
2. Jede reguläre Sprache wird auch durch einen NFA akzeptiert.
3. Jede von einem NFAs akzeptierte Sprache ist auch durch einen DFA akzeptierbar.
(1) wurde in Theorem 4.2.1,(2) in Theorem 4.4.1 und (2) in Theorem 4.5.1 bewiesen. Die Kom-
bination der Aussagen (2) und (3) zeigen, dass jede reguläre Sprache durch einen DFA akzep-
tiert wird, was in Kombination mit Aussage (1) zeigt, dass DFAs genau die regulären Sprachen
erkennen. Für NFAs wurde eine Richtung direkt bewiesen, die andere Richtung (NFAs erken-
nen reguläre Sprachen) folgt durch einen Beweis mit Widerspruch: Nehme an, dass NFAs auch
nicht-reguläre Sprachen akzeptieren können. Dann folgt ausAussage (3), dass auchDFAsnicht-
reguläre Sprachen akzeptieren, was jedoch einWiderspruch zu Aussage (1) ist. D. h. die Annah-
me war falsch und NFAs erkennen nur reguläre Sprachen.
4.6. NFAs mit ε-Übergängen
In diesem Abschnitt stellen wir Varianten von NFAs vor, die deren Ausdruckskraft nicht verän-
dern, aber manchmal noch einfachere Konstruktionen oder Beweise zulassen.
Ein NFA mit ε-Übergängen, erlaubt es von einem Zustand in einen anderen Zustand zu wech-
seln, ohne ein Zeichen zu lesen (sondern durch Lesen des leeren Worts ε). Da NFAs sowieso
nichtdeterministische Zustandswechsel erlauben, führt diese Erweiterung nicht zu neuer Aus-
druckskraft.
Definition 4.6.1 (NFA mit ε-Übergängen). Ein nichtdeterministischer endlicher Automat mit
ε-Übergängen (NFA mit ε-Übergängen) ist ein TupelM = (Z,Σ, δ, S,E) wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅,
• S ⊆ Z ist die Menge der Startzustände,
• E ⊆ Z ist die Menge der Endzustände (oder auch akzeptierende Zustände) und
• δ : Z × (Σ ∪ {ε})→ P(Z) ist die Zustandsüberführungsfunktion (oder nur Überführungs-
funktion).
Beachte, dass die Definition sich von der Definition der NFAs nur dadurch unterscheidet, dass
der Definitionsbereich von δ nun (Z × (Σ ∪ {ε})) anstelle von (Z × Σ) ist. D. h. der Automat
kann auch bei Lesen des leeren Wortes den Zustand wechseln.
Stand: 8. Juli 2021 34 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.6. NFAs mit ε-Übergängen
Beispiel 4.6.2. Ein Beispiel für einen NFA mit ε-Übergängen ist:
z1
z0 z2 z3 z4
a a, b, c a, b, c
a, b, c
ε ε
ε
Wir haben die akzeptierte Sprache eines NFA mit ε-Übergängen noch nicht formal definiert, aber es
ist einsichtig, dass obiger Automat die Sprache über {a, b, c} erkennt, die aus allen Worten besteht,
die an drittletzter, vorletzter, oder letzter Stelle ein a haben, sowie das leere Wort: Das leere Wort
wird akzeptiert, da z1 Start- und Endzustand ist. Vom Startzustand z1 aus sind andere Wörter nicht
relevant. Vom Startzustand z0 kann erst beliebig oft a, b, c gelesen werden, irgendwann muss jedoch
eindeutig a gelesen werden, um in Richtung Endzustand zu wandern. Nachdem Zustand z2 erreicht
wurde, kann einer der Endzustände z1 oder z4 erreicht werden, indem 0, 1 oder 2 beliebige Zeichen
gelesen werden.
Bevor wir die akzeptierte Sprache eines NFA mit ε-Übergängen definieren (können), erläutern
wir, wie wir alle durch ε-Übergänge erreichbaren Zustände – ausgehend von einem Zustand
bzw. einer Zustandsmenge – berechnen können:
Definition 4.6.3 (?ε-Hülle). Sei M = (Z,Σ, δ, S,E) ein NFA mit ε-Übergängen. Die ε-Hülle
closε(z) eines Zustands z ∈ Z ist induktiv definiert als die kleinste Menge von Zuständen, welche
die folgenden Eigenschaften erfüllt:
1. z ∈ closε(z).
2. Wenn z′ ∈ closε(z) und z′′ ∈ δ(z′, ε), dann ist auch z′′ ∈ closε(z).
Für eine ZustandsmengeX ⊆ Z definieren wir closε(X) :=
⋃
z∈X closε(z).
Die ε-Hülle für eine ZustandsmengeX ⊆ Z kann auch berechnet werden durch:
closε(X) :=
{
X, wenn
⋃
z∈X δ(z, ε) ⊆ X
closε(X ∪
⋃
z∈X δ(z, ε)), sonst
Beispiel 4.6.4 (?). Betrachte den NFA mit ε-Übergängen aus Beispiel 4.6.2. Dann gilt:
closε(z0)= {z0}
closε(z1)= {z1}
closε(z4)= {z4}
closε(z3)= {z1, z3, z4}
closε(z2)= {z1, z2, z3, z4}
Für die Definition der akzeptierten Sprache eines NFA mit ε-Übergängen wird nun stets nach
dem Anwenden der Überführungsfunktion δ die erhaltene Menge noch abgeschlossen bezüg-
lich der ε-Übergänge (durch Anwenden des closε-Operators).
D. Sabel, Skript FSK & TIMI,SoSe 2021 35 Stand: 8. Juli 2021
4. Reguläre Sprachen
Definition 4.6.5 (Akzeptierte Sprache eines NFA mit ε-Übergängen). Sei M = (Z,Σ, δ, S,E)
ein NFA mit ε-Übergängen. Wir definieren δ̃ : (P(Z)× Σ∗)→ P(Z) induktiv durch:
δ̃(X, ε) := X und δ̃(X, aw) :=
⋃
z∈X
δ̃(closε(δ(z, a)), w) für alleX ⊆ Z
Die vonM akzeptierte Sprache ist L(M) := {w ∈ Σ∗ | δ̃(closε(S), w) ∩ E 6= ∅}.
Bemerkung 4.6.6 (?). Die Anwendung des closε-Operators auf die Menge S ist notwendig. Be-
trachte den NFA mit ε-Übergängen:
z0 z1 z2
ε a
Die akzeptierte Sprache ist {a}, aber δ̃(S, a)= δ̃(closε(δ(z0, a)), ε)=closε(δ(z0, a))=closε(∅)=∅
während δ̃(closε(S), a)= δ̃({z0, z1}, a)=closε(δ(z0, a)) ∪ closε(δ(z1, a))=∅ ∪ closε({z2})={z2}.
Satz 4.6.7. NFAs mit ε-Übergängen akzeptieren genau die regulären Sprachen.
? Beweis. Wir zeigen zuerst, dass jede reguläre Sprache von einem NFA mit ε-Übergängen ak-
zeptiert wird: Sei L regulär. Dann gibt es einen NFAM = (Z,Σ, δ, S,E), der L akzeptiert. Der
NFA mit ε-ÜbergängenM ′(Z,Σ, δ′, S, E) mit δ′(z, a) := δ(z, a) für alle a ∈ Σ und δ′(z, ε) := ∅
akzeptiert ebenfalls L (da L(M) = L(M ′)).
Für die andere Richtung (akzeptierte Sprachen von NFAs mit ε-Übergängen sind regulär) sei
ein NFA mit ε-Übergängen M = (Z,Σ, δ, S,E) gegeben. Wir konstruieren einen NFA M ′ mit
L(M) = L(M ′), woraus dann mit Theorem 4.5.4 direkt folgt, dass L(M) regulär ist.
SeiM ′ = (Z,Σ, δ′, S′, E)mit S′ = closε(S) und δ′(z, a) = closε(δ(z, a)).
Wir zeigen, dass für alle X ⊆ Z und alle w ∈ Σ∗ gilt: δ̃(closε(X), w) = δ̂(closε(X), w). Daraus
folgt dann sofort, dass L(M) = L(M ′) gilt.
Wir verwenden Induktion über die Wortlänge |w|. Die Induktionsbasis ist, dass |w| = 0 und
daher w = ε. Dann gilt δ̃(closε(X), ε) = closε(X) = δ̂′(closε(X), ε).
Für den Induktionsschritt seiw = aumit a ∈ Σ. Als Induktionshypothese (I.H.) verwenden wir,
dass gilt: δ̃(closε(W ), u) = δ̂(closε(W ), u) für alleW ⊆ Z.
Wir formen um:
δ̃(closε(X), au) =
⋃
z∈closε(X)
δ̃(closε(δ(z, a)), u) =I.H.
⋃
z∈closε(X)
δ̂′(closε(δ(z, a)), u)
=
⋃
z∈closε(X)
δ̂′(δ′(z, a), u) = δ̂′(closε(X), au) = δ̂′(closε(X), w)
Für NFAs mit ε-Übergängen können wir leicht fordern, dass sie genau einen Startzustand und
genauen einen Endzustand besitzen:
Satz 4.6.8 (NFA mit ε-Übergängen und eindeutigen Start- und Endzuständen). Für jeden NFA
M mit ε-Übergängen gibt es einenNFAM ′mit ε-Übergängen, sodassL(M) = L(M ′) undM ′ genau
einen Startzustand und genau einen Endzustand hat, wobei diese beiden Zustände verschieden sind.
Stand: 8. Juli 2021 36 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.7. Reguläre Ausdrücke
Beweis. Sei M = (Z,Σ, δ, S,E). Dann konstruiere M ′ = (Z ·∪{z0, zE},Σ, δ′, {z0}, {zE}), wobei
z0 6= zE neue Zustände sind und
δ′(z0, ε) = S
δ′(z0, a) = ∅ für alle a ∈ Σ
δ′(z, w) = δ(z, w) für alle z ∈ Z und w ∈ ({ε} ∪ Σ)
δ′(z, ε) = {zE} für alle z ∈ E
δ′(zE , w) = ∅ für alle w ∈ ({ε} ∪ Σ)
Bildlich dargestellt:
M wird zu
ε
ε
ε
ε
ε
ε
Offensichtlich gilt L(M) = L(M ′).
Beispiel 4.6.9. Betrachte erneut den NFA mit ε-Übergängen aus Beispiel 4.6.2:
z1
z0 z2 z3 z4
a a, b, c a, b, c
a, b, c
ε ε
ε
Der dazu entsprechend Satz 4.6.8 konstruierte NFA mit ε-Übergängen und eindeutigen Start- und
Endzuständen ist:
zS zE
z1
z0
ε
ε z2 z3 z4
a a, b, c a, b, c
a, b, c
ε ε
ε
ε
ε
4.7. Reguläre Ausdrücke
Reguläre Ausdrücke sind (genau wie Grammatiken oder Automaten) ein Formalismus zur Dar-
stellung von Sprachen. Hierbei wird durch einen Ausdruck, der aus Basisausdrücken und Ope-
ratoren aufgebaut ist, die Sprache definiert.
D. Sabel, Skript FSK & TIMI,SoSe 2021 37 Stand: 21. April 2021
4. Reguläre Sprachen
Definition 4.7.1 (Regulärer Ausdruck). Sei Σ ein Alphabet. Ein regulärer Ausdruck über Σ ist
induktiv definiert durch
• ∅ ist ein regulärer Ausdruck
• ε ist ein regulärer Ausdruck
• a mit a ∈ Σ ist ein regulärer Ausdruck
• Wenn α1 und α2 reguläre Ausdrücke sind, dann ist auch α1α2 ein regulärer Ausdruck.
• Wenn α1 und α2 reguläre Ausdrücke sind, dann ist auch (α1|α2) ein regulärer Ausdruck.
• Wenn α regulärer Ausdruck ist, dann auch (α)∗
Die von einem regulären Ausdruck α erzeugte Sprache L(α) ist induktiv über dessen Struktur defi-
niert:
L(∅) := ∅
L(ε) := {ε}
L(a) := {a} für a ∈ Σ
L(α1α2) := L(α1)L(α2) = {uv | u ∈ L(α1), v ∈ L(α2)}
L(α1|α2) := L(α1) ∪ L(α2)
L((α)∗) := L(α)∗
Da L((α1|α2)|α3) = L(α1|(α2|α3)) für alle regulären Ausdrücke α1, α2, α3, lassen wir oft Klam-
mern weg und schreiben (α1|α2| . . . |αn).
Beispiel 4.7.2. Die vom regulären Ausdruck (a|b)∗aa(a|b)∗ erzeugte Sprache (über dem Alphabet
{a, b}) sind alle Worte, die zwei aufeinanderfolgende a’s enthalten.
Der reguläre Ausdruck (ε|((a|b|c)∗a(a|b|c)(a|b|c)(a|b|c))) erzeugt die Sprache aller Worte über dem
Alphabet {a, b, c}), die an viertletzter Stelle ein a haben, sowie das leere Wort.
Der reguläre Ausdruck
((0|1|2|3|4|5|6|7|8|9)|1(0|1|2|3|4|5|6|7|8|9)|(2(0|1|2|3))) : ((0|1|2|3|4|5)(0|1|2|3|4|5|6|7|8|9))
erzeugt alle gültigen Uhrzeiten im 24-Stunden-Format.
Bemerkung 4.7.3. Alle endlichen Sprachen sind durch reguläre Ausdrücke beschreibbar: Sei S =
{w1, . . . , wn} eine endliche Sprache, dann erzeugt (w1|w2| . . . |wn) die Sprache S.
Theorem 4.7.4 (Satz von Kleene). Reguläre Ausdrücke erzeugen genau die regulären Sprachen.
Beweis. Wir müssen zwei Richtungen zeigen:
1. Jede von einem regulären Ausdruck erzeugte Sprache ist regulär.
2. Für jede reguläre Sprache gibt es einen regulären Ausdruck, der sie erzeugt.
1. Seiα ein regulärer Ausdruck.Wir konstruieren induktiv über die Struktur vonα einenNFA
Mαmit ε-Übergängen und eindeutigen Start- und Endzuständen, derL(α) akzeptiert. Die
Induktionsbasis stellen die Basisausdrücke dar:
• Für a ∈ Σ konstruiere den Automaten
a
.
• Für ε konstruiere den Automaten
ε
.
Stand: 21. April 2021 38 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.7. Reguläre Ausdrücke
• Für ∅ konstruiere den Automaten .
In allen drei Fällen ist offensichtlich, dass der NFA mit ε-Übergängen und eindeutigen
Start- und Endzuständen die Sprache L(α) akzeptiert.
Für den Induktionsschritt sei α ein regulärer Ausdruck, der Operatoren enthält. Als In-
duktionsannahme nehmen wir an, dass für alle regulären Ausdrücke, die echte Unteraus-
drücke von α sind, ein NFA mit ε-Übergängen und eindeutigen Start- und Endzuständen
existiert, der die entsprechende Sprache akzeptiert.
Wir betrachten alle drei möglichen Fälle für den Aufbau von α
a) Falls α = α1α2, dann liefert die Induktionshypothese NFAs mit ε-Übergängen und
eindeutigen Start- und Endzuständen Mαi mit L(αi) = L(Mαi) für i = 1, 2. Kon-
struiere Mα wie folgt: Verbinde den Endzustand von Mα1 mit einem ε-Übergang
mit dem Startzustand von Mα2 und mache den Startzustand von Mα1 zum neuen
Startzustand vonMα und den Endzustand vonMα2 zum neuen Endzustand vonMα.
Bildlich skizziert wird
Mα1 Mα2
zu
ε
Offensichtlich gilt L(Mα) = L(Mα1)L(Mα2). Mit der Induktionsannahme gilt da-
her L(Mα) = L(α1)L(α2). Definition 4.7.1 liefert L(α1α2) = L(α1)L(α2) und daher
L(Mα) = L(α).
b) Falls α = (α1|α2), so liefert die Induktionshypothese NFAs Mα1 ,Mα2 mit ε-
Übergängen und eindeutigen Start- und Endzuständen, sodass L(αi) = L(Mαi) für
i = 1, 2. KonstruiereM(α1|α2) wie folgt: Füge einen neuen Startzustand z0 und einen
neuen Endzustand zE hinzu. Für i = 1, 2 füge einen ε-Übergang von z0 zum Startzu-
stand vonMαi hinzu. Für i = 1, 2 füge einen ε-Übergang vom Endzustand vonMαi
zu zE hinzu. Bildlich wird
Mα1
Mα2
zu
ε
ε
ε
ε
Offensichtlich gilt L(Mα) = L(Mα1) ∪ L(Mα2). Mit der Induktionsannahme gilt da-
her L(Mα) = L(α1) ∪ L(α2). Definition 4.7.1 liefert L(α1|α2) = L(α1) ∪ L(α2) und
daher L(Mα) = L(α).
c) Falls α = (α1)∗, dann liefert die Induktionshypothese einen NFA mit ε-Übergängen
und eindeutigem Start- und EndzustandMα1 mit L(Mα1) = L(M). KonstruiereMα
durch Hinzufügen eines neuen Startzustands und von ε-Übergängen vom Endzu-
D. Sabel, Skript FSK & TIMI,SoSe 2021 39 Stand: 21. April 2021
4. Reguläre Sprachen
stand zum neuen Startzustand, vom neuen Startzustand zum ehemaligen Startzu-
stand, und vom neuen Startzustand zum Endzustand D. h. bildlich wird
Mα1 zu
ε
ε
ε
Der ε-Übergang vom neuen Start- zum Endzustand wird eingefügt, um das 0-fache
Wiederholen von α zu ermöglichen (und damit das leere Wort ε zu akzeptieren).
Man kann hierfür nicht den alten Startzustand verwenden, denn dann würde man
u. U. z. B. Präfixe von Worten akzeptieren, die vorher so nicht akzeptiert wurden.
Es gilt L(Mα) = L(Mα1)
∗. Mit der Induktionsannahme gilt daher L(Mα) = L(α1)∗.
Definition 4.7.1 liefert L(α∗1) = L(α1)
∗ und daher L(Mα) = L(α)
2. O.B.d.A. sei eine reguläre Sprache durch einen DFA M = (Z,Σ, δ, z1, E), der diese ak-
zeptiert, gegeben. Wir konstruieren einen regulären Ausdruck α sodass L(M) = L(α)
gilt. O.B.d.A. sei Z = {z1, . . . , zn}. Für w ∈ Σ∗ und zi ∈ Z mit δ̂(zi, w) = zj sei
visit i(w) = q1, . . . , qm die Folge der durch den DFA besuchten Zustände (wobei q1 = zi
und qm = zj).
Wir definieren die MengenLki,j (für k ∈ {0, . . . , n}, i, j ∈ {1, . . . , n}), sodassL
k
i,j genau alle
Wörter w enthält, dieM von Zustand zi zu Zustand zj führen (d. h. δ̂(zi, w) = zj), die als
Zwischenzustände keine Zustände mit Index größer als k benutzen, d. h.:
Lki,j =
{
w ∈ Σ∗ δ̂(zi, w) = zj und visit i(w) = q1, . . . , qm,
sodass für l = 2, . . . ,m− 1: wenn ql = zp dann p ≤ k
}
Wir zeigen per Induktion über k, dass es reguläre Ausdrücke αki,j gibt, die L
k
i,j erzeugen.
Für k = 0 betrachten wir zwei Fälle
• Wenn i 6= j, dann ist L0i,j = {a ∈ Σ | δ(zi, a) = zj}. Sei L
0
i,j = {a1, . . . , aq}, dann gilt
mit α0i,j = (a1| . . . |aq), dass L(α
0
i,j) = L
0
i,j . Falls L
0
i,j = ∅, dann sei α
0
i,j = ∅ und es gilt
ebenfalls L(α0i,j) = L
0
i,j .
• Wenn i = j, dann ist L0i,i = {ε} ∪ {a ∈ Σ | δ(zi, a) = zi}. Sei L
0
i,i = {ε, a1, . . . , aq},
dann gilt mit α0i,i = (ε|a1| . . . |aq), dass L(α
0
i,i) = L
0
i,j
Für den Induktionsschritt verwenden wir als Induktionsannahme, dass es für alle i, j und
festem k einen regulären Ausdruck αki,j gibt, der L
k
i,j erzeugt. Es gilt
Lk+1i,j = L
k
i,j ∪ L
k
i,k+1(L
k
k+1,k+1)
∗Lkk+1,j ,
denn ein Lauf von zi zu zj kann entweder den Zustand zk+1 nicht als Zwischenzustand
verwenden (dieser Fall wird durchLki,j abgedeckt) oder der Lauf kann aufgespaltenwerden
in drei Teile die sequentiell aufeinander folgen:
a) Lauf von zi bis zum ersten Besuch des Zustands zk+1 (abgedeckt durch Lki,k+1)
b) Mehrmaliges, zyklisches Besuchen von k+1 (beliebig oft) (abgedeckt durchLkk+1,k+1)
c) Letztmaliges Verlassen von zk+1 und Lauf bis zu zj (abgedeckt durch Lkk+1,j)
Stand: 21. April 2021 40 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.8. Zusammenfassende Darstellung der Formalismen für reguläre Sprachen
Der reguläre Ausdruck, der Lk+1i,j erzeugt, ist daher α
k+1
i,j = (α
k
i,j |α
k
i,k+1(α
k
k+1,k+1)
∗αkk+1,j).
Die darin verwendeten regulären Ausdrücke sind alle von der Form αkl,l′ und daher durch
die Induktionsannahme verfügbar.
Schließlich können wir den regulären Ausdruck angeben, der L(M) erzeugt: Sei
E = {zi1 , . . . , zir}, dann gilt, dass (αn1,i1 |α
n
1,i2
| . . . |αn1,ir) die Sprache
⋃
zi∈E L
n
1,i = L(M)
erzeugt.
Beispiel 4.7.5. Wir konstruieren zum regulären Ausdruck (ε|(a|b)∗b(a|b)) einen NFA mit ε-
Übergangen und eindeutigen Start- und Endzuständen, der L(ε|(a|b)∗b(a|b)) akzeptiert. Wir ver-
wenden die Konstruktion aus dem Beweis des Satzes von Kleene (Theorem 4.7.4).
ε
a
b
ε
ε
ε
ε
ε
ε
ε bε
a
b
ε
ε
ε
ε
ε
ε
ε
ε
ε
Beispiel 4.7.6. Betrachte den folgenden DFAM
z1 z2
a
a
dann ist der entsprechend Theorem 4.7.4 konstruierte reguläre Ausdruck
α21,2 = (α
1
1,2|α
1
1,2(α
1
2,2)
∗α12,2)
= ((a|ε(ε)∗a) | (a|ε(ε)∗a) (ε|a(ε)∗a)∗ (ε|a(ε)∗a))
denn
α01,1 = α
0
2,2 = ε
α01,2 = α
0
2,1 = a
α11,2 = (α
0
1,2|α
0
1,1(α
0
1,1)
∗α01,2) = (a|ε(ε)
∗a)
α12,2 = (α
0
2,2|α
0
2,1(α
0
1,1)
∗α01,2) = (ε|a(ε)
∗a)
Da für alle regulären Ausdrücke α die Gleichheiten L ((ε)∗) = L (ε), L (αε) = L (α), L ((ε|α)∗) =
L ((α)
∗
), L ((ε|α) (α)∗) = L ((α)∗ (ε|α)) = L ((α)∗) und L (α|α) = L (α) gelten, kann man den
regulären Ausdruck ((a|ε(ε)∗a) | (a|ε(ε)∗a) (ε|a(ε)∗a)∗ (ε|a(ε)∗a)) vereinfachen zu (a|a(aa)∗) Die
repräsentierte Sprache besteht aus allen Wörtern ai mit i ∈ N>0 und i ungerade.
4.8. Zusammenfassende Darstellung der Formalismen für reguläre Sprachen
Wir haben nun gezeigt, dass reguläre Grammatiken, DFAs, NFAs (mit ε-Übergängen (und ein-
deutigen Start- und Endzuständen)) sowie reguläre Ausdrücke allesamt Formalismen sind, um
D. Sabel, Skript FSK & TIMI,SoSe 2021 41 Stand: 21. April 2021
4. Reguläre Sprachen
genau die Menge der regulären Sprachen zu repräsentieren.
Das folgende Schaubild zeigt nochmal die Zusammenhänge und gibt Referenzen auf die ge-
zeigten Sätze und Theoreme. Ein PfeilA→ B meint hierbei, dass wir eine Kodierung des einen
Formalismus A in den anderen Formalismus B angegeben haben.
Beachte, dass durch Benutzen von Wegen (d. h. mehrere Pfeile hintereinander), jeder Forma-
lismus in jeden anderen Formalismus überführbar ist.
Reguläre Grammatiken
(=Reguläre Sprachen)
NFAs
NFAs + ε-Übergänge
NFAs + ε-Übergänge mit eindeutigem
Start- und Endzustand
DFAs
Reguläre Ausdrücke
Theorem 4.2.1
offensic
htlich
Theorem
4.5.1
Theorem 4.4.1
Satz 4.6.7
Satz 4.6.8
Theorem 4.7.4
Theorem 4.7.4
4.9. Das Pumping Lemma
Das Pumping-Lemma liefert eine Eigenschaft (die sogenannte Pumping-Eigenschaft, die wir
noch definieren werden), die für alle regulären Sprachen gilt. Daher kann man es verwenden,
um zu widerlegen, dass eine Sprache L regulär ist, indem man zeigt, dass die Sprache L die be-
sagte Pumping-Eigenschaft nicht besitzt. Man kann das Pumping-Lemma nicht verwenden, um
zu zeigen, dass eine Sprache L regulär ist, da die Pumping-Eigenschaft zwar eine notwendige
aber keine hinreichende Bedingung für reguläre Sprachen ist (jede reguläre Sprache erfüllt sie,
aber es gibt auch nicht-reguläre Sprachen, die sie erfüllen).
Die Idee der Pumping-Eigenschaft geht aus der Beobachtung hervor, dass ein DFA eine endli-
che Menge von Zuständen besitzt, und daher – sofern er eine unendliche Menge von Wörtern
akzeptiert – Zustände mehrfach besuchen muss. Tatsächlich kann man sich klarmachen, dass
mindestens ein Zustand mehrfach besucht werdenmuss, sobald man eine bestimmteWortlän-
ge überschreitet: Ein DFAmit n Zuständen, muss spätestens nach dem Einlesen von n Zeichen
einen Zustand besuchen, den er vorher schon besucht hat.
Lemma 4.9.1 (Pumping-Lemma). SeiL eine reguläre Sprache. Dann gilt die folgende, sogenannte
Pumping-Eigenschaft fürL: Es gibt eine Zahl n ∈ N>0, sodass jedesWort z ∈ L, dasMindestlänge
n hat (d. h. |z| ≥ n), als z = uvw geschrieben werden kann, so dass gilt:
• |uv| ≤ n
• |v| ≥ 1
• für alle i ≥ 0: uviw ∈ L.
Die Zahl n nennt man auch die Pumping-Konstante der Sprache L.
Stand: 21. April 2021 42 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.9. Das Pumping Lemma
Beweis. SeiM = (Z,Σ, δ, z0, E) ein DFA der L akzeptiert. Sei n = |Z|. Dann muss jedes Wort z,
dass von L erkannt wird und Länge |z| ≥ n hat, genau |z| + 1 Zustände besuchen. O.B.d.A. sei
die besuchte Folge q0, q1, . . . q|z| wobei q0 = z0 und q|z| ∈ E. Da |Z| = n gilt, wird mindestens
ein Zustand zweimal besucht, spätestens nach dem Lesen der ersten n Zeichen. Sei qk (mit
k ≤ n) der erste Zustand, der bereits besucht wurde (d. h. es gibt ein j < k, sodass qk = qj
und k ist minimal bez. dieser Eigenschaft). Sei u der Präfix von z, der von q0 zu qj führte ( d. h.
δ̂(q0, u) = qj), v das Teilwort, das von qj zu qk führte (d. h. δ̂(qj , v) = qk) und w der verbleibende
Suffix mit z = uvw für den δ̂(qk, w) = q|z| gilt. Bildlich kann dies illustriert werden durch:
q0 qj=qk q|z|
u w
v
q|z|
Wir zeigen nun die drei geforderten Eigenschaften der Zerlegung:
• Aus j < k folgt |v| ≥ 1.
• Aus k ≤ n folgt |uv| ≤ n
• Aus qj = qk folgt δ̂(q0, u) = qj = δ̂(q0, uv) = qk und somit δ̂(q0, uw) = δ̂(q0, uvw) = q|z| ∈
E, d. h. uv0w ∈ L(M). Sei i > 0, dann folgt aus δ̂(qj , v) = qk = qj auch δ̂(qj , vi) = qj und
daher auch δ̂(q0, uviw) = δ̂(qk, viw) = δ̂(qj , w) = q|z| ∈ E. Daher gilt uviw ∈ L(M) für alle
i ∈ N.
Bemerkung 4.9.2. Sei L = {w1, . . . , wm} eine endliche Sprache. Dann erfüllt L die Pumping-
Eigenschaft, denn mit k = max{|wi| | i = {1, . . . ,m}} (die Länge des längsten Wortes in L) und
n = k+ 1 ist die Pumping-Eigenschaft für L erfüllt (denn es gibt keine Worte der (Mindest-)länge n
in L).
Die wesentliche Verwendung für das Pumping-Lemma ist es, zu zeigen, dass eine Sprache nicht
regulär ist. Hierfür wird Kontraposition verwendet: Die Aussage
L ist regulär =⇒ L erfüllt die Eigenschaften des Pumping-Lemmas
ist äquivalent zur Aussage
L erfüllt die Eigenschaften des Pumping-Lemma nicht =⇒ L ist nicht regulär
Dementsprechend können wir die Aussage des Pumping-Lemmas passend formulieren:
Lemma 4.9.3 (Verwendung des Pumping-Lemmas zum Nicht-Regularitätsnachweis). Sei L ei-
ne formale Sprache für die gilt: Für jede Zahl n ∈ N>0 gibt es ein z ∈ L, das Mindestlänge n hat
(d. h. |z| ≥ n), und für jede Zerlegung z = uvw mit |uv| ≤ n und |v| ≥ 1, gibt es ein i ≥ 0, sodass
uviw 6∈ L. Dann ist L nicht regulär.
Beweis. Das Pumping-Lemma besagt „L ist regulär =⇒ L erfüllt die Pumping-Eigenschaft“.
Diese Aussage (Implikation) ist logisch äquivalent (A =⇒ B g. d.w.¬B =⇒ ¬A) zur Aussage
„L verletzt die Pumping-Eigenschaft =⇒ L ist nicht regulär“.
D. Sabel, Skript FSK & TIMI,SoSe 2021 43 Stand: 21. April 2021
4. Reguläre Sprachen
Die Aussage „L erfüllt die Pumping-Eigenschaft“ kann als folgende prädikatenlogische Formel
geschrieben werden:
∃n ∈ N>0 : ∀z ∈ L : (|z| ≥ n =⇒ ∃u, v, w : (z = uvw∧ |uv| ≤ n∧ |v| ≥ 1∧∀i ≥ 0 : (uviw ∈ L)))
Wir formen die negierte Formel solange um, bis sie die Form der Aussage dieses Lemmas hat1:
¬(∃n ∈ N>0:∀z ∈ L:(|z| ≥ n⇒ ∃u, v, w:(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1 ∧ ∀i ≥ 0:(uviw ∈ L))))
←→ ∀n ∈ N>0:¬(∀z ∈ L:(|z| ≥ n⇒ ∃u, v, w:(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1 ∧ ∀i ≥ 0:(uviw ∈ L))))
←→ ∀n ∈ N>0:(∃z ∈ L:(¬(|z| ≥ n⇒ ∃u, v, w:(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1 ∧ ∀i ≥ 0:(uviw ∈ L)))))
←→ ∀n ∈ N>0:(∃z ∈ L:(¬(¬(|z| ≥ n) ∨ (∃u, v, w:(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1 ∧ ∀i ≥ 0:(uviw ∈ L))))))
←→ ∀n ∈ N>0:(∃z ∈ L:((|z| ≥ n) ∧ ¬(∃u, v, w:(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1 ∧ ∀i ≥ 0:(uviw ∈ L)))))
←→ ∀n ∈ N>0:(∃z ∈ L:((|z| ≥ n) ∧ (∀u, v, w:(¬(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1 ∧ ∀i ≥ 0:(uviw ∈ L))))))
←→ ∀n ∈ N>0:(∃z ∈ L:((|z| ≥ n) ∧ (∀u, v, w:(¬(z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1) ∨ ¬(∀i ≥ 0:uviw ∈ L)))))
←→ ∀n ∈ N>0:(∃z ∈ L:((|z| ≥ n) ∧ (∀u, v, w:((z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1)⇒ ¬(∀i ≥ 0:uviw ∈ L)))))
←→ ∀n ∈ N>0:(∃z ∈ L:((|z| ≥ n) ∧ (∀u, v, w:((z=uvw ∧ |uv| ≤ n ∧ |v| ≥ 1)⇒ ∃i ≥ 0:uviw 6∈ L)))))
Satz 4.9.4. Die Sprache L = {ajbj | j ∈ N} ist nicht regulär.
Beweis. Wir verwenden Lemma 4.9.3. Sei n ∈ N>0 beliebig. Wir wählen für z ∈ L das Wort anbn
(für welches |z| ≥ n erfüllt ist). Sei z = uvw eine beliebige Zerlegung von z, sodass |uv| ≤ n
und |v| ≥ 1. Dann gilt u = ar, v = an−r mit r < n. Daher können wir z. B. i = 2 wählen und
erhalten uviw = uv2w = aran−ran−rbn = a2n−rbn 6∈ L,da r < n. (Beachte: Wir hätten z. B.
auch i = 0 wählen können!). Wir haben die Voraussetzung von Lemma 4.9.3 gezeigt, daher ist
L nicht regulär.
Beachte, dass wir das Verwenden des Pumping-Lemmas zum Widerlegen der Regularität, wie
im letzten Beweis auch als Gewinnstrategie für ein Spiel gegen einen Gegner (der davon über-
zeugen will, dass die betrachtete Sprache regulär ist) auffassen können:
Sei L die formale Sprache.
1. Der Gegner wählt die Zahl n ∈ N>0.
2. Wir wählen das Wort z ∈ Lmit |z| ≥ n.
3. Der Gegner wählt die Zerlegung z = uvw mit |uv| ≤ n und |v| ≥ 1.
4. Wir gewinnen das Spiel, wenn wir ein i ≥ 0 angeben können, sodass uviw 6∈ L.
Wenn wir das Spiel für alle Wahlmöglichkeiten des Gegners gewinnen, dann haben wir die Nicht-
regularität von L nachgewiesen.
Satz 4.9.5. Die Sprache L = {ap | p ist Primzahl} ist nicht regulär.
Beweis. Wir verwenden das Pumping-Lemma in Form des eben eingeführten Spiels: Sei n ∈
N>0 vom Gegner gewählt. Wir wählen das Wort z ∈ L als ap mit p ist die nächste Primzahl, die
größer gleich n ist. Der Gegner wählt eine Zerlegung u = ar, v = as, w = at mit uvw = ap,
|uv| ≤ n, |v| ≥ 1.
1Wir verwenden←→ als Symbol für Äquivalenzumformungen
Stand: 21. April 2021 44 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.9. Das Pumping Lemma
Wir wählen i = p+1. Dann ist uviw 6∈ L, denn uviw = ar(as)p+1at = ar+s·(p+1)+t = ar+s·p+s+t =
as·p+p = ap·(s+1) und für s ≥ 1 folgt, dass p · (s+ 1) keine Primzahl sein kann.
Satz 4.9.6. Die Sprache L = {an | n ist Quadratzahl} ist nicht regulär.
Beweis. Sei n ∈ N>0 beliebig. Sei z ∈ L mit Mindestlänge n das Wort z = an
2
. Sei z = uvw,
sodass |uv| ≤ n und |v| ≥ 1. Dann gilt uv2w = ak mit 1 + n2 ≤ k (denn |v| ≥ 1) und k ≤ n2 + n
(denn |uv| ≤ n und daher |v| ≤ n). Dann kann k jedoch keine Quadratzahl sein, denn n2 + n =
(n + 1) · n < (n + 1)2. D. h. uv2w 6∈ L. Mit dem Pumping-Lemma folgt, dass L nicht regulär
ist.
Satz 4.9.7. Die Sprache L = {a2
n
| n ∈ N} ist nicht regulär.
Beweis. Sei n ∈ N>0 beliebig. Sei z ∈ L das Wort z = a2
n
(welches Länge 2n > n hat). Sei
z = uvw mit |uv| ≤ n und |v| = k ≥ 1. Dann ist 1 ≤ k ≤ n und uv2w = a2
n+k und 2n + k 6= 2l
da 2n + k < 2n+1 = 2n + 2n, denn k ≤ n < 2n. Mit dem Pumping-Lemma folgt, dass L nicht
regulär ist.
Satz 4.9.8. Die Sprache L = {w ∈ {a, b}∗ | w ist Palindrom} ist nicht regulär.
Beweis. Sei n ∈ N>0 beliebig. Wir wählen z = anban als Wort mit Mindestlänge n. Sei z = uvw
mit |uv| ≤ n und |v| ≥ 1. Dann ist uv0w = akban mit k = n − |v| < n kein Palindrom. Mit dem
Pumping-Lemma folgt, dass L nicht regulär ist.
Das Pumping-Lemma liefert eine notwendige Bedingung für reguläre Sprachen, die jedoch
nicht hinreichend ist, denn:
Lemma 4.9.9. Es gibt Sprachen, welche die Pumping-Eigenschaft (siehe Lemma 4.9.1) erfüllen
aber nicht regulär sind. Die Sprache L = {akblcl | k, l ∈ N} ∪ {b, c}∗ ist eine solche Sprache.
Beweis. Wir zeigen hier nur, dass L die Pumping-Eigenschaft erfüllt (die Nichtregularität von
L zeigen wir erst später in Satz 4.10.5). Sei n ≥ 1 die Zahl aus dem Pumping-Lemma und z ∈ L
mit |z| ≥ n. Wenn z ∈ {b, c}∗, zerlege z. B. u = ε,v das erste Symbol von z und w der n − 1-
Zeichen lange Suffix von z. Offensichtlich gilt |v| ≥ 1, |uv| ≤ n und uviw ∈ {b, c}∗ ⊆ L für alle
i ∈ N. Wenn z von der Form akblcl ist und z 6∈ {b, c}∗, dann muss k > 0 gelten und wir zerlegen
z = uvw mit u = ε, v = a, w = ak−1blcl. Da |v| = 1, |uv| ≤ n und uviw = ak+i−1blcl ∈ L für alle
i ∈ N, erfüllt L die Eigenschaften des Pumping-Lemmas.
Das folgende Venn-Diagramm verdeutlicht die Beziehung zwischen allen Sprachen, den regu-
lären Sprachen und den Sprachen, welche die Pumping-Eigenschaft erfüllen.
D. Sabel, Skript FSK & TIMI,SoSe 2021 45 Stand: 21. April 2021
4. Reguläre Sprachen
Reguläre Sprachen
Sprachen, die die Pumping-Eigenschaft erfüllen
Alle Sprachen
Nur für die, in der weiß markierten Teilmenge liegenden Sprachen, lässt sich das Pumping-
Lemma verwenden, um deren Nichtregularität nachzuweisen. Eine genaue Charakterisierung
der regulären Sprachen (endlicher Index der Nerode-Relation) betrachten wir im nächsten Ab-
schnitt.
4.10. ? Der Satz von Myhill und Nerode
Wir definieren die sogenannte Nerode-Relation (benannt nach Anil Nerode):
Definition 4.10.1 (Nerode-Relation ∼L). Sei L eine formale Sprache über Σ. Die Nerode-
Relation ∼L ⊆ Σ∗ × Σ∗ zu L ist definiert für alle Worte u, v ∈ Σ∗ durch:
u ∼L v ⇐⇒ ∀w ∈ Σ∗ : uw ∈ L ⇐⇒ vw ∈ L
Informell sind u und v äquivalent bez. ∼L, wenn sich ihr Enthaltensein in L gleich verhält
bezüglich beliebiger Erweiterung um denselben Suffix.
Satz 4.10.2. Die Nerode-Relation ist eine Äquivalenzrelation.
Beweis. Reflexivität von ∼L gilt genau wie Symmetrie offensichtlich. Transitivität gilt auch:
Wir nehmen an, dass u1 ∼L u2 und u2 ∼L u3 gilt. Sei w ∈ Σ∗. Wenn u1w ∈ L, dann folgt aus
u1 ∼L u2 auch u2w ∈ L, woraus mit u2 ∼L u3 wiederum u3w ∈ L folgt. Analog kann gezeigt
werden, dass u3w ∈ L auch u1w ∈ L impliziert. Daher gilt u1w ∈ L ⇐⇒ u3w ∈ L und damit
u1 ∼L u3.
Wir erinnern, dass eine Äquivalenzrelation die GrundmengeΣ∗ in disjunkte Äquivalenzklassen
[u1]∼L , [u2]∼L , . . . zerlegt und dass der Index einer Äquivalenzrelation die Anzahl der disjunkten
Äquivalenzklassen ist (u. U.∞ bei unendlich vielen Äquivalenzklassen). John Myhill und Anil
Nerode bewiesen in den 1950er Jahren den folgenden Satz:
Theorem 4.10.3 (Satz von Myhill und Nerode). Eine formale Sprache L ist genau dann regulär,
wenn der Index von ∼L endlich ist.
Beweis. Wir haben zwei Richtungen zu zeigen:
1. Wenn L regulär ist, dann ist der Index von ∼L endlich.
Stand: 27. April 2021 46 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.10. ? Der Satz von Myhill und Nerode
2. Wenn der Index von ∼L endlich ist, dann ist L regulär.
Wir beweisen beide Teile unabhängig voneinander.
1. Sei L regulär und sei M = (Z,Σ, δ, z0, E) ein DFA der L akzeptiert (d. h. L(M) = L).
O.b.d.A. seien alle Zustände vonM vom Startzustand aus erreichbar. Sei≈M⊆ (Σ∗×Σ∗)
definiert durch u ≈M v ⇐⇒ δ̂(z0, u) = δ̂(z0, v), d. h. Wörter u, v sind äquivalent bez.
≈M , wenn sie ausgeführt aufM zum gleichen Zustand führen. Es lässt sich leicht prüfen,
dass ≈M eine Äquivalenzrelation ist. Der Index von ≈M ist offensichtlich |Z| und daher
endlich. Wir zeigen, dass u ≈M v =⇒ u ∼L v gilt und damit, dass ≈M die Relation ∼L
verfeinert, d. h. mehr oder gleich viele disjunkte Äquivalenzklassen als ∼L hat. Dann folgt
sofort, dass der Index von ∼L höchstens |Z| und daher endlich ist.
Sei u ≈M v und w ∈ Σ∗. Dann gilt δ̂(z0, uw) = δ̂(δ̂(z0, u), w) = δ̂(δ̂(z0, v), w) = δ̂(z0, vw)
und damit uw ∈ L ⇐⇒ vw ∈ L. Da w beliebig gewählt war, zeigt dies u ∼L v.
2. Sei der Index von∼L endlich. Dann gibt esn ∈ N>0 undRepräsentanten u1, . . . , un, sodass
Σ∗ = [u1]∼L ·∪ . . . ·∪ [un]∼L . Wir definieren den sogenannten Nerode-Automaten:
SeiM = (Z,Σ, δ, [ε]∼L , E) ein DFAmit Z = {[u1]∼L , . . . , [un]∼L}, δ([ui]∼L , a) = [uia]∼L für
alle a ∈ Σ und E = {[ui]∼L | i ∈ {1, . . . , n}, ui ∈ L}. Wir zeigen w ∈ L(M) ⇐⇒ w ∈ L:
w ∈ L(M) ist äquivalent zu δ̂([ε]∼L , w) ∈ E, was (anhand der Definition von δ) äquivalent
zu [w]∼L ⊆ L ist, und wiederum äquivalent zu w ∈ L ist. D. h. der DFAM akzeptiert die
Sprache L.
Der Satz von Myhill und Nerode gibt eine genaue Charakterisierung der regulären Sprachen.
Er wird meist dazu verwendet, die Nichtregularität einer formalen Sprache L nachzuweisen,
indem man zeigt, dass der Index der Nerode-Relation ∼L unendlich ist. Dafür reicht es aus,
unendlich viele disjunkte Äquivalenzklassen zu finden. Oft findet man diese, indem man ver-
sucht für alle i ∈ N, Wörter ui und wi zu finden, sodass alle ui paarweise verschieden sind, und
alle wi paarweise verschieden sind und uiwi ∈ L, aber ujwi 6∈ L für i 6= j.
Beispiel 4.10.4. Betrachte die Sprache L = {anbn | n ∈ N>0} und deren Nerode-Relation
∼L. Die Äquivalenzklassen [aib]∼L für i ∈ N>0 enthalten jeweils alle Wörter, denen noch i − 1
b’s fehlen, um in L enthalten zu sein. Z. B. ist [ab]∼L = L, [a
2b]∼L = {a
2b, a3b2, a4b3, . . .},
[a3b]∼L = {a
3b, a4b2, a5b3, a6b4, . . .}. All diese Äquivalenzklassen sind paarweise disjunkt bez. ∼L,
denn für wi = bi−1 gilt aibwi ∈ L aber ajbwi 6∈ L. Daher ist der Index von ∼L nicht endlich und
der Satz von Myhill und Nerode (Theorem 4.10.3) zeigt, dass L nicht regulär sein (was wir bereits
wussten, durch Beweis mit dem Pumping-Lemma).
Bisher konnten wir nicht zeigen, dass die Sprache L = {akblcl | k, l ∈ N} ∪ {b, c}∗ nicht regulär
ist, da das Pumping-Lemma nicht anwendbar ist (siehe Lemma 4.9.9). Mithilfe des Satzes von
Myhill und Nerode holen wir das jetzt nach:
Satz 4.10.5. Die Sprache L = {akblcl | k, l ∈ N} ∪ {b, c}∗ ist nicht regulär.
Beweis. Betrachte die Äquivalenzklassen [abic]∼L für i ∈ N>0. Diese sind alle paarweise ver-
schieden, da für i, j ∈ N>0 mit wi = ci−1 gilt: abicwi ∈ L, aber abjcwi 6∈ L für i 6= j. Der Index
von ∼L ist daher∞ und Theorem 4.10.3 zeigt daher, dass L nicht regulär ist.
D. Sabel, Skript FSK & TIMI,SoSe 2021 47 Stand: 27. April 2021
4. Reguläre Sprachen
Beispiel 4.10.6. Wir betrachten erneut die Sprache L = {uaav | uv ∈ {a, b}∗} über Σ = {a, b}
(alle Wörter, die zwei aufeinanderfolgende a’s enthalten). Dann hat ∼L drei disjunkte Äquivalenz-
klassen:
[ε]∼L = {w ∈ Σ
∗ | w enthält keine zwei aufeinander folgende a und endet nicht mit a}
[a]∼L = {wΣ
∗ | w enthält keine zwei aufeinander a und endet mit a}
[aa]∼L = {w ∈ Σ
∗ | w enthält zwei aufeinanderfolgende a} = L
Zunächst kann man verifizieren, dass alle Fälle erfasst sind, d. h. [ε]∼L ∪ [a]∼L ∪ [aa]∼L = Σ
∗. Dafür
muss man sich davon überzeugen, dass Worte in den Mengen äquivalent sind und die Beschreibun-
gen der Mengen stimmen. ([ε]∼L sind alle Worte u denen noch ein Wort w aus L angehängt werden
muss, damit uw ∈ L gilt, [a]∼L sind alle Worte u denen noch ein Wort w aus L oder w = aw
′
mit w′ ∈ Σ∗ angehängt werden muss, damit uw ∈ L gilt, [aa]∼L sind alle Worte u, für die für al-
le w ∈ Σ∗ gilt uw ∈ L). Die drei Äquivalenzklassen sind paarweise disjunkt: Für ε und a gilt mit
w = a: εw 6∈ L, aber aw ∈ L, d. h. ε 6∼L a. Für a und aa gilt mit w = ε: aw 6∈ L aber aaw ∈ L, d. h.
a 6∼L aa und schließlich gilt für ε und aa und w = ε: εw 6∈ L aber aaw ∈ L, d. h. ε 6∼L aa.
Wir erzeugen den DFA (den sogenannten Nerode-Automat), wie er im Beweis von Theorem 4.10.3
konstruiert wird. SeiM = (Z,Σ, δ, z0, E)mit Z = {[ε]∼L , [a]∼L , [aa]∼L}, z0 = [ε]∼L ,E = {[aa]∼L}
und
δ([ε]∼L , a) = [a]∼L δ([a]∼L , a) = [aa]∼L δ([aa]∼L , a) = [aa]∼L
δ([ε]∼L , b) = [ε]∼L δ([a]∼L , b) = [ε]∼L δ([aa]∼L , b) = [aa]∼L
Der Zustandsgraph vonM ist
[ε]∼L [a]∼L [aa]∼L
b
a
a
b
a, b
Satz 4.10.7. Der Nerode-Automat einer regulären SpracheL ist der sogenannteMinimalautomat,
d. h. jeder DFA M ′, mit L(M ′) = L hat mindestens so viele Zustände wie der Nerode-Automat.
Zudem sind alle minimalen DFAs (bis auf Umbenennung von Zuständen) identisch.
Beweis. SeiM = (Z,Σ, δ, z0, E) der Nerode-Automat der Sprache L undM ′ = (Z ′,Σ, δ′, z′0, E
′)
ein beliebiger DFA mit L(M ′) = L. Der Beweis von Theorem 4.10.3 zeigt, dass ≈M ′ eine Ver-
feinerung von ∼L ist (≈M ′ ⊆ ∼L) und dass ≈M = ∼L gilt. Daher ist Index (≈M ′) ≥ Index (≈M )
und daher auch |Z ′| = Index (≈M ′) ≥ |Z| = Index (≈M ).
Sei nun |Z ′| = |Z|, d. h. M ′ habe eine minimale Zustandsanzahl. Dann muss aufgrund von
≈M ′ ⊆ ∼L gelten, ≈M ′ = ∼L. Da auch ∼L = ≈M gilt, folgt, dass f : Z → Z ′ mit
f([u]≈M ) = f([u]∼L) := [u]≈′M
ein Isomorphismus auf den Zuständen ist. Offensichtlich gilt
auch f(δ([u]∼L , a)) = f([ua]∼L) = [ua]≈M′ = δ
′([u]≈M′ , a) = δ
′(f([u]∼L , a)). D. h. die Automa-
tenM undM ′ verhalten sich (bis auf die Umbenennung f ) identisch.
Die letzte Aussage zeigt, dass der Nerode-Automat eindeutig und minimal ist. Beachte, dass
dies für NFAs im Allgemeinen nicht richtig ist. Es gibt strukturell unterschiedliche NFAs mit
der selbenminimalen Zustandsanzahl. Ein Beispiel (angelehnt an ein Beispiel aus (Sch08)) sind
Stand: 27. April 2021 48 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.11. Minimierung von Automaten
die beiden im folgenden gezeigten NFAs, die beide die Sprache {ua | u ∈ Σ∗} über dem Al-
phabet Σ = {a, b} erkennen und die minimale Anzahl an Zuständen besitzen, aber strukturell
verschieden sind:
a
a, b
a
b
b a
4.11. Minimierung von Automaten
Dieser Abschnitt richtet sich nach (Weg99).
Definition 4.11.1 (Äquivalenzklassenautomat). Sei M = (Z,Σ, δ, z0, E) ein DFA. Wir nennen
zwei Zustände z, z′ ∈ Z äquivalent und schreiben z ≡ z′ falls gilt: für alle w ∈ Σ∗ : δ̂(z, w) ∈
E ⇐⇒ δ̂(z′, w) ∈ E. Der Äquivalenzklassenautomat zuM ist der DFAM ′ = (Z ′,Σ, δ′, z′0, E
′)mit
Z ′ = {[z]≡ | z ∈ Z}, z′0 = [z0]≡, E
′ = {[z]≡ | z ∈ E} und δ′([z]≡, a) = [δ(z, a)]≡.
Beachte, dass der Äquivalenzklassenautomat wohldefiniert ist, d. h.
• E′ ist wohldefiniert: Aus z ≡ z′ folgt, dass z ∈ E ⇐⇒ z′ ∈ E gilt (dies folgt mit w = ε
aus z ≡ z′, denn δ̂(z, w) ∈ E ⇐⇒ δ̂(z′, w) ∈ E)
• δ([z]≡, a) ist eindeutig für alle [z]≡ ∈ Z ′, a ∈ Σ, d.h aus z ≡ z′ folgt δ(z, a) ≡ δ(z′, a):
Sei z ≡ z′, dann gilt δ̂(z, w) ∈ E ⇐⇒ δ̂(z′, w) ∈ E und damit auch δ̂(z, aw) ∈ E ⇐⇒
δ̂(z′, aw) ∈ E und damit auch δ̂(δ(z, a), w) ∈ E ⇐⇒ δ̂(δ(z′, a), w) ∈ E. D. h. es gilt dann
auch δ(z, a) ≡ δ(z′, a).
Satz 4.11.2. SeiM = (Z,Σ, δ, z0, E) ein DFA undM ′ = (Z ′,Σ, δ′, z′0, E
′) der Äquivalenzklassen-
automat zuM . Dann gilt
1. L(M) = L(M ′)
2. Falls alle Zustände in Z vom Startzustand z0 erreichbar sind, dann istM ′ minimal.
Beweis.
1. Sei w ∈ Σ∗. Dann gilt:
• M durchläuft die Zustandsfolge q0, . . . , q|w| entlang w und akzeptiert w genau dann,
wenn q|w| ∈ E gilt.
• M ′ durchläuft die Zustandsfolge [q0]≡, . . . , [q|w|]≡ und akzeptiertw genau dann,wenn
[q|w|]≡ ∈ E′ gilt.
Da per Definition [q|w|]≡ ∈ E′ genau dann gilt, wenn q|w| ∈ E gilt, folgt, dassM undM ′
dieselben Worte akzeptieren.
2. (?) Da alle Zustände in M erreichbar sind, sind per Konstruktion auch alle Zustän-
de in M ′ erreichbar. Für die Minimalität genügt es zu zeigen, dass M ′ nicht mehr
als Index (∼L) Zustände hat. Wir zeigen, dass es für jede Äquivalenzklasse [v]∼L
nur maximal einen Zustand in M ′ gibt, der vom Startzustand entlang jedes Wortes
D. Sabel, Skript FSK & TIMI,SoSe 2021 49 Stand: 27. April 2021
4. Reguläre Sprachen
u ∈ [v]∼L erreicht wird. Daraus folgt dann sofort (da alle Zustände in M
′ erreich-
bar sind), dass M ′ nicht mehr als Index (∼L) Zustände hat. Seien u, u′ ∈ [v]∼L , d. h.
u ∼L u′. Dann gilt ∀w ∈ Σ∗ : uw ∈ L ⇐⇒ u′w ∈ L, woraus folgt
∀w ∈ Σ∗ : δ̂′(z′0, uw) ∈ E
′ ⇐⇒ δ̂′(z′0, u
′w) ∈ E′, was weiter umgeformt werden
kann zu ∀w ∈ Σ∗ : δ̂′(δ̂′(z′0, u), w) ∈ E
′ ⇐⇒ δ̂′(δ̂′(z′0, u
′), w) ∈ E′, was äquivalent zu
δ̂′(z′0, u) ≡ δ̂′(z
′
0, u
′) ist, d. h.[δ̂′(z′0, u)]≡ = [δ̂′(z
′
0, u
′)]≡.
Schließlich benötigen wir noch einen Algorithmus, um alle äquivalenten Zustände eines gege-
benen DFAs zu berechnen. Dann haben wir einen Minimierungsalgorithmus für DFAs gefun-
den, indemwir erst äquivalente Zustände berechnen und dann den Äquivalenzklassenautomat
bilden.
Die Ideen bei der Berechnung der äquivalenten Zustände sind:
• Markiere Paare von Zuständen, die verschieden seinmüssen (initial alle {z, z′}mit z ∈ E,
z′ 6∈ E).
• Vervollständige das Markieren, durch Untersuchen von Übergängen: Wenn {z, z′} noch
nicht markiert ist, dann prüfe für jedes a ∈ Σ, ob die beiden Nachfolger {δ(z, a), δ(z′, a)}
markiert sind. Falls ja, dann markiere {z, z′}. Dieser Vorgang wird solange wiederholt bis
sich nichts mehr ändert.
• Alle am Ende unmarkierten Paare stellen äquivalente Zustände dar.
In Algorithmus 3 sind diese Schritte in Pseudo-Code ausformuliert.
Algorithmus 3 : Berechnung aller äquivalenten Zustände
Eingabe : DFAM = (Z,Σ, δ, z0, E), der keine unerreichbaren Zustände hat
Ausgabe : Zustandspaare {z, z′}mit z 6= z′ für die gilt z ≡ z′
Beginn
stelle Tabelle T aller Zustandspaare {z, z′}mit z 6= z′ und z, z′ ∈ Z auf;
markiere alle Paare {z, z′} in T mit z ∈ E und z′ 6∈ E;
wiederhole
für jedes unmarkierte Paar {z, z′} in T tue
für jedes a ∈ Σ tue
wenn {δ(z, a), δ(z′, a)} in T markiert ist dann
markiere {z, z′} in T ;
Ende
Ende
Ende
bis sich T nicht mehr verändert;
return {{z, z′} | {z, z′} ist nicht markiert in T}
Ende
Satz 4.11.3. Sei M = (Z,Σ, δ, z0, E) ein DFA, der keine unerreichbaren Zustände hat. Die vom
Algorithmus 3 fürM berechneten Zustandspaare sind äquivalent und es gibt keine weitere äquiva-
lenten Paare.
Beweis.
Stand: 27. April 2021 50 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.11. Minimierung von Automaten
• Wenn der Algorithmus 3 ein Paar {z, z′} markiert, dann gilt z 6≡ z′: Wir zeigen, dass es
für jedes markierte Paar {z, z′} ein Wort w gibt, sodass ¬(δ̂(z, w) ∈ E ⇐⇒ δ̂(z′, w) ∈ E):
Wir verwenden Induktion über die Anzahl an Iterationen der Wiederhole-Schleife in der
{z, z′}markiert wird. Wenn {z, z′} vor der Wiederhole-Schleife markiert wird (die Anzahl
der Iterationen ist 0), gilt dies für w = ε. Wenn die Anzahl an Iterationen echt größer als
0 ist, dann wird {z, z′} markiert, weil es a ∈ Σ und ein markiertes Paar {q, q′} gibt mit
δ(z, a) = q und δ(z′, a) = q′. Da {q, q′} schon markiert ist zu diesem Zeitpunkt, liefert die
Induktionsannahme, dass es ein Wort w′ gibt mit ¬(δ̂(q, w′) ∈ E ⇐⇒ δ̂(q′, w′) ∈ E). Mit
w = aw′ folgt ¬(δ̂(z, w) ∈ E ⇐⇒ δ̂(z′, w) ∈ E).
• Wenn z 6≡ z′, dann markiert der Algorithmus 3 das Paar {z, z′}: Wir führen einen Beweis
durch Widerspruch und nehmen an, es gibt Paare z 6≡ z′, die vom Algorithmus nicht
markiert werden. Wir wählen darunter das Paar {z, z′}, für welches es ein minimal langes
Wort w gibt mit ¬(δ̂(z, w) ∈ E ⇐⇒ δ̂(z′, w) ∈ E). Wenn w = ε, dann würde {z, z′}
vor der Wiederhole-Schleife markiert, was ein Widerspruch zur Annahme ist, dass {z, z′}
nicht markiert wird. Wenn w = aw′ mit a ∈ Σ, dann gilt: Wenn {δ(z, a), δ(z′, a)} vom
Algorithmus markiert wird, dann auch {z, z′}. D. h. {δ(z, a), δ(z′, a)} wird nicht markiert.
Dann gilt für w′: ¬
(
δ̂(δ(z, a), w′) ∈ E ⇐⇒ δ̂(δ(z′, a′), w′) ∈ E
)
und |w′| < |w|. Dies ist
ein Widerspruch dazu, dass {z, z′}minimal gewählt wurde.
Der Algorithmus zur Bestimmung der äquivalenten Paare kann in Zeit O(|Z|4 · |Σ|) implemen-
tiert werden: Wir gehen davon aus, dass die Tabelle T durch ein zweidimensionales Array der
Größe |Z| × |Z| repräsentiert wird und konstanten Zugriff auf die Markierung der Paare {z, z′}
möglich ist.
Jeder Durchlauf der Wiederhole-Schleife benötigt Zeit O(|Z|2|Σ|). Die Anzahl der Durchläufe
der Wiederhole-Schleife ist durch |Z|2 begrenzt, da es nur |Z|2 Paare gibt und mindestens ein
Paar pro Durchlauf markiert wird. Die restlichen Schritte benötigen konstante Laufzeit. Es gibt
schnellere Implementierungen, mit Laufzeit O(|Z|2|Σ|) (siehe (HMU06)).
In Algorithmus 4 wird er komplette Algorithmus zur Zustandsminimierung von DFAs beschrie-
ben.
Algorithmus 4 :Minimierung von DFAs
Eingabe : DFAM = (Z,Σ, δ, z0, E)
Ausgabe :Minimaler DFAM ′ mit L(M) = L(M ′)
Beginn
entferne Zustände ausM , die vom Startzustand nicht erreichbar sind;
berechne äquivalente Zustände mit Algorithmus 3;
erzeuge den Äquivalenzklassenautomat, indem die berechneten äquivalenten
Zustände vereinigt werden;
Ende
Beispiel 4.11.4. Sei Σ = {a, b, c} und der folgende DFAM gegeben:
D. Sabel, Skript FSK & TIMI,SoSe 2021 51 Stand: 27. April 2021
4. Reguläre Sprachen
z0
z1
z2
z3
a
b
c
a, b
a, b
a, b
z4
z5
c
c
c
a, b, c a, b, c
Wir berechnen den Minimalautomaten zuM . Zunächst sind alle Zustände vom Startzustand z0 aus
erreichbar und wir können direkt die äquivalenten Zustände berechnen: Die Tabelle T wird erstellt
als
z1
z2
z3
z4
z5
z0 z1 z2 z3 z4
Initiales Markieren alle Paare {z, z′} mit z ∈ {z0, z1, z2, z3} und z′ ∈ {z4, z5} ergibt
z1
z2
z3
z4
z5
z0 z1 z2 z3 z4
X
X
X
X
X
X
X
X
Durchlaufen der Wiederhole-Schleife markiert
• {z0, z1}, da {δ(z0, c), δ(z1, c)} = {z3, z4} bereits markiert ist,
• {z0, z2}, da {δ(z0, c), δ(z2, c)} = {z3, z4} bereits markiert ist, und
• {z0, z3}, da {δ(z0, c), δ(z3, c)} = {z3, z5} bereits markiert ist.
Weitere Markierungen werden nicht durchgeführt, d. h. T hat nach Verlassen der Wiederhole-
Schleife die Form:
Stand: 27. April 2021 52 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.12. Abschlusseigenschaften der regulären Sprachen
z1
z2
z3
z4
z5
z0 z1 z2 z3 z4
X
X
X
X
X
X
X
X
X
X
X
Das ergibt z1 ≡ z3, z1 ≡ z2, z2 ≡ z3, z4 ≡ z5 und daher die Äquivalenzklassen [z0]≡ = {z0},
[z1]≡ = {z1, z2, z3}, z4≡ = {z4, z5} und den Minimalautomaten
[z0] [z1]
a, b, c
a, b
[z4]
c
a, b, c
4.12. Abschlusseigenschaften der regulären Sprachen
Wir untersuchen, gegenüber welchen Operationen die regulären Sprachen abgeschlossen sind.
Satz 4.12.1. Die regulären Sprachen sind abgeschlossen bezüglich Vereinigung, Produkt und Klee-
neschem Abschluss.
Beweis. Das folgt direkt daraus, dass für reguläre SprachenL1, L2, die durch reguläreAusdrücke
α1, α2 erzeugt werden (d. h. L(αi) = Li für i = 1, 2), gilt:
• (α1|α2) erzeugt L(α1|α2) = L(α1) ∪ L(α2) = L1 ∪ L2,
• α1α2 erzeugt L(α1α2) = L(α1)L(α2) = L1L2 und
• (α1)∗ erzeugt L(α1)∗ = L∗1.
D. h. Vereinigung, Produkt und Kleenescher Abschluss werden durch reguläre Ausdrücke er-
zeugt und sind daher reguläre Sprachen (Theorem 4.7.4).
Satz 4.12.2. Die regulären Sprachen sind abgeschlossen bezüglich Komplementbildung.
Beweis. Sei L eine reguläre Sprache und M = (Z,Σ, δ, z0, E) ein DFA der L akzeptiert. Dann
akzeptiertM = (Z,Σ, δ, z0, Z \ E) die Sprache L (d. h. das Komplement von L): Offensichtlich
gilt (δ̂(z0, w) ∈ E) ⇐⇒ ¬(δ̂(z0, w) ∈ Z \ E)
Satz 4.12.3. Die regulären Sprachen sind abgeschlossen bezüglich Schnitt.
Beweis. Das folgt aus den Sätzen 4.12.1 und 4.12.2 und dem Fakt, dass L1 ∩ L2 = L1 ∪ L2 gilt.
Ein direkter Beweis ist: SeienM1 = (Z1,Σ, δ1, z01, E1) undM2 = (Z2,Σ, δ2, z02, E2) DFAs, die
L1 = L(M1) und L2 = L(M2) akzeptieren. Der Produktautomat von M1 und M2 ist der DFA
M = (Z1 × Z2,Σ, δ, (z01, z02), E1 × E2) mit δ((z, z′), a) = (δ1(z, a), δ2(z′, a)) für alle a ∈ Σ
und (z, z′) ∈ Z1 × Z2. M akzeptiert L1 ∩ L2, denn es gilt: δ̂((z0,1, z0,2), w) ∈ (E1, E2) ⇐⇒(
δ̂1(z0,1, w) ∈ E1 ∧ δ̂2(z0,2, w) ∈ E2
)
.
D. Sabel, Skript FSK & TIMI,SoSe 2021 53 Stand: 27. April 2021
4. Reguläre Sprachen
Zusammenfassend halten wir fest:
Theorem 4.12.4 (Abschlusseigenschaften der regulären Sprachen). Die regulären Sprachen
sind abgeschlossen bezüglich Vereingung, Schnitt, Komplementbildung, Produkt und Kleeneschem
Abschluss.
Beachte, dass die Abschlusseigenschaften der regulären Sprachen nicht nur nützlich sind, um
aus regulären Sprachen weitere reguläre Sprachen zu konstruieren, sondern sie können auch
verwendet werden, um die Nichtregularität von Sprachen zu zeigen.
Satz 4.12.5. Die Sprache L = {an | n ist keine Primzahl} ist nicht regulär.
Beweis. Nehme an, L ist regulär. Da die regulären Sprachen abgeschlossen sind unter Komple-
mentbildung (Theorem 4.12.4), gilt dann auch L = {a}∗ \ L = {an |n ist eine Primzahl} ist
regulär. Das ist jedoch ein Widerspruch zu Satz 4.9.5, der zeigt, dass L nicht regulär ist. Daher
war unsere Annahme falsch, L kann nicht regulär sein.
Satz 4.12.6. Die Sprache L = {w ∈ {a, b}∗ | #a(w) = #b(w)} ist nicht regulär.
Beweis. Nehme an, L ist regulär. Die Sprache L′ = {anbm | n,m ∈ N} ist regulär, da z. B. der
folgende NFA mit ε-Übergängen L′ akzeptiert:
a
ε
b
Da L und L′ regulär sind und die regulären Sprachen bezüglich der Schnittbildung abgeschlos-
sen sind, folgt auch L ∩ L′ ist regulär. Da L ∩ L′ = {ajbj | j ∈ N} ist dies ein Widerspruch zu
Satz 4.9.4. Also war unsere Annahme falsch: L ist nicht regulär.
4.13. Entscheidbarkeitsresultate zu regulären Sprachen
Wie bereits gezeigt, ist das Wortproblem für Typ 1,2,3-Sprachen entscheidbar (siehe Satz 3.3.2
und Korollar 3.3.3). Ist die Sprache regulär und durch einen DFA gegeben, dann kann dasWort-
problem in Linearzeit in der Länge des Wortes entschieden werden, denn die Berechnung von
δ̂(z0, w) braucht für einen DFA nur |w| Schritte.
Wir betrachten nun die weiteren Probleme, wie wir sie in Abschnitt 3.4 definiert haben und
zeigen, dass allesamt für die Klasse der regulären Sprachen entscheidbar sind.
Satz 4.13.1. Das Leerheitsproblem für reguläre Sprachen ist entscheidbar.
Beweis. Sei L eine reguläre Sprache, und M ein DFA mit L(M) = L. Dann gilt L = ∅ genau
dann, wenn es keinen Pfad vom Startzustand zu einem Endzustand inM gibt. Dies kann man
leicht mit einer Tiefensuche auf dem Zustandsgraph vonM überprüfen.
Satz 4.13.2. Das Endlichkeitsproblem für reguläre Sprachen ist entscheidbar.
Stand: 27. April 2021 54 D. Sabel, Skript FSK & TIMI,SoSe 2021
4.13. Entscheidbarkeitsresultate zu regulären Sprachen
Beweis. Sei L eine reguläre Sprache undM ein DFA mit L(M) = L. Dann gilt |L| < ∞ genau
dann, wenn es keinen Pfad vom Startzustand zu einem Endzustand inM gibt, der eine Schlei-
fe enthält. Auch dies kann man leicht mit einer Tiefensuche auf dem Zustandsgraph von M
überprüfen.
Satz 4.13.3. Das Schnittproblem für reguläre Sprachen ist entscheidbar.
Beweis. Seien L1 und L2 reguläre Sprachen undM1,M2 DFAs die L1, L2 akzeptieren. Berech-
ne den Produktautomaten M mit L(M) = L1 ∩ L2 (siehe Beweis von Satz 4.12.3) und prüfe
anschließend das Leerheitsproblem fürM .
Satz 4.13.4. Das Äquivalenzproblem für reguläre Sprachen ist entscheidbar.
Beweis. Seien L1 und L2 reguläre Sprachen undM1,M2 DFAs die L1, L2 akzeptieren. Dann be-
rechne die Minimalautomaten vonM1 undM2 und prüfe diese auf Isomorphie.
D. Sabel, Skript FSK & TIMI,SoSe 2021 55 Stand: 12. Mai 2021
5
Kontextfreie Sprachen
In diesem Kapitel behandeln die Typ 2-Sprachen der Chomsky-Hierarchie, die kontextfreien
Sprachen, kurz CFL (von context free language). Zur Erinnerung: Diese werden durch Typ 2-
Grammatiken d. h. kontextfreie Grammatiken, kurz CFG (von context-free grammar), erzeugt.
Diese fordern, dass linke Seiten der Produktionen genau aus einer Variablen bestehen.
Kontextfreie Sprachen erlauben mehr als reguläre Sprachen und sie sind insbesondere nütz-
lich, um Klammerungen und geklammerte Sprachen zu beschreiben. Sie werden daher häufig
verwendet, um die Syntax von Programmiersprachen zu beschreiben.
Z. B. beschreibt die kontextfreie Grammatik G = ({E,M,Z}, {+, ∗, (, )} ∪ {0, . . . , 9}, P, E)mit
P = {E →M | E +M,
M→ Z |M ∗ Z,
Z → N | (E),
N→ 1D | . . . | 9D,
D→ 0D | . . . | 9D | ε}
geklammerte arithmetische Ausdrücke.
Die Sprache L = {ajbj | j ∈ N} ist nicht regulär (siehe Satz 4.9.4), aber kontextfrei, denn sie
wird z. B. durch die Produktionen S → ε | T und T → aTb | ab und S als Startsymbol erzeugt.
In diesemKapitel behandelnwir dieNormalformen von kontextfreienGrammatiken (Chomsky-
Normalform und Greibach-Normalform), Methoden zum Widerlegen der Kontextfreiheit von
formalen Sprachen (das Pumping-Lemma für kontextfreie Sprachen und als Verallgemeine-
rung, Ogden’s Lemma), Abschlusseigenschaften von kontextfreien Sprachen einen effizienten
Algorithmus zum Lösen des Wortproblems für kontextfreie Sprachen (der CYK-Algorithmus),
weitere Entscheidbarkeitsresultate und schließlich ein Automatenmodell, dass genau die kon-
textfreien Sprachen erfasst (die Kellerautomaten).
5.1. Einfache Operationen auf CFGs
In diesem Abschnitt beweisen wir einige Hilfssätze, die Operationen auf CFGs durchführen,
ohne deren erzeugte Sprache zu ändern.
Lemma 5.1.1 (? Inlining von Produktionen). Sei G = (V,Σ, P, S) eine CFG, sei A → uBv ∈ P ,
seien B → w1 | . . . | wn alle Regeln mit B als linker Seite und sei
G′ = (V,Σ, P \ {A→ uBv} ∪ {A→ uw1v | uw2v | . . . | uwnv}, S).
Dann erzeugen G und G′ dieselbe Sprache, d. h. L(G) = L(G′).
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 12. Mai 2021
5.1. Einfache Operationen auf CFGs
Beweis. Sei S ⇒∗G w ∈ Σ
∗ eine Ableitung von w mit G. Der Syntaxbaum dieser Ableitung kann
leicht modifiziert werden, sodass er einer Ableitung mit G′ entspricht, indem die Ableitungs-
schritte, die A → uBv und anschließendes B → wi im Syntaxbaum anwenden, durch einen
Schritt A → uwiv ersetzt werden. Umgekehrt kann jede Ableitung S ⇒∗G′ w in eine Ableitung
S ⇒∗G w umkonstruiert werden, indem Schritte u0Av0 ⇒G′ u0uwivv0 durch die beiden Schritte
u0Av0 ⇒G u0Bv0 ⇒G u0uwivv0 ersetzt werden.
Lemma 5.1.2 (? Sharing von Satzformen mit neuen Produktionen). Sei G eine CFG mit G =
(V,Σ, P ·∪{A→ w1 · · ·wn}, S). Seien B1, . . . , Bn neue Variablen (d. h. V ∩ {B1, . . . , Bn} = ∅) und
sei G′ = (V ·∪{B1, . . . , Bn},Σ, P ·∪{A→ B1 . . . Bn, B1 → w1, . . . , Bn → wn}, S).
Dann gilt L(G) = L(G′).
Beweis. Jeder Ableitungsschritt uAv ⇒G uw1 · · ·wnv kann „übersetzt“ werden in uAv ⇒G′
uB1 · · ·Bnv ⇒nG′ uw1 · · ·wnv. Umgekehrt können in jeder Ableitung S ⇒
∗
G′ w, die Anwen-
dungen der Regel A → B1 · · ·Bn, Bi → wi identifiziert werden (durch den Syntaxbaum) und
die Ableitung entsprechend umgeordnet werden, sodass diese Schritte stets sequentiell auf-
einander folgen. Für jede so normalisierte Ableitung, kann eine Ableitung mit G konstruiert
werden.
Eine Produktion nennt man links-rekursiv, wenn sie von der Form A → Au ist, und rechts-
rekursiv, wenn sie von der Form A → uA ist, wobei in beiden Fällen u eine Satzform ist. Das
folgende Lemmazeigt, wieman links-rekursive Produktionen in rechts-rekursive Produktionen
umformen kann:
Lemma 5.1.3 (Elimination von Links-Rekursion). Sei G = (V,Σ, P, S) eine CFG mit
P = P ′ ·∪{A → Au1 | · · · | Aun | w1 | · · · | wm}, wobei A → Au1 | · · · | Aun | w1 | · · · | wm
alle Produktionen in P mit Variable A als linker Seite sind, und die Satzformen w1, . . . , wm alle
nicht mit A beginnen. Sei B eine neue Variable. Für die CFG G′ = (V ·∪{B},Σ, P ′′, S) mit
P ′′ = P ′ ∪ {A→ w1B | · · · | wmB | w1 | · · · | wm, B → u1 | · · · | un | u1B | · · · | unB}
gilt L(G) = L(G′).
Beweis. L(G) ⊆ L(G′): Betrachte zunächst nur Linksableitungen von A ausgehend, bis zum
ersten Wort, dass kein A am Anfang hat. Dann gilt A ⇒∗G wr uf(1) · · ·uf(k) für eine Funktion
f : {1, . . . , k} → {1, . . . , n} (mit k ≥ 0) und ein r ∈ {1, . . . ,m}. Für G′ können wir eben-
falls herleiten A ⇒∗G′ wruf(1) · · ·uf(k), wobei kein B mehr in wruf(1) · · ·uf(k) vorkommt. Sei
nun w ∈ L(G) und S ⇒∗G w eine Linksableitung von w mit Grammatik G. Ersetze alle Ablei-
tungssequenzen von x1Ax2 ⇒∗G x1wr uf(1) · · ·uf(k)x2 durch x1Ax2 ⇒
∗
G′ x1wruf(1) · · ·uf(k)x2.
Anschließend sind alle⇒G-Ableitungsschritte auch⇒G′-Ableitungsschritte und daher gibt es
eine Ableitung S ⇒∗G′ w.
L(G′) ⊆ L(G): Betrachte zunächst nur Rechtsableitungen von A ausgehend, bis zum ers-
ten Wort, dass kein B mehr hat. Dann gilt A ⇒∗G′ wr uf(1) · · ·uf(k) für eine Funktion
f : {1, . . . , k} → {1, . . . , n} (mit k ≥ 0) und ein r ∈ {1, . . . ,m}. Dann gibt es (eine Links-
ableitung) A ⇒∗G wr uf(1) · · ·uf(k). Sei nun w ∈ L(G
′) und S ⇒∗G′ w eine Rechtsableitung von
w mit Grammatik G′. Ersetze alle Ableitungssequenzen von x1Ax2 ⇒∗G′ x1wr uf(1) · · ·uf(k)x2
durch x1Ax2 ⇒∗G x1wruf(1) · · ·uf(k)x2. Anschließend sind alle ⇒G′-Ableitungsschritte auch
⇒G-Ableitungsschritte und daher gibt es eine Ableitung S ⇒∗G w.
D. Sabel, Skript FSK & TIMI,SoSe 2021 57 Stand: 12. Mai 2021
5. Kontextfreie Sprachen
5.2. Chomsky-Normalform
Die Chomsky-Normalform fordert eine spezielle Form aller Produktionen. Solche Normalfor-
men sind beispielsweise nützlich, um Algorithmen auf Grammatiken zu formulieren und zu
analysieren, da man sich auf die spezielle Form der Produktionen einschränken kann und da-
her weit weniger Fälle zu betrachten hat, als wenn man beliebige Produktionen zulässt.
Definition 5.2.1. Eine kontextfreie Grammatik G = (V,Σ, P, S) mit ε 6∈ L(G) ist in Chomsky-
Normalform, wenn für A→ w ∈ P gilt: w = a ∈ Σ oder w = BC mit B,C ∈ V .
Beispiel 5.2.2. Die Grammatik G = ({A}, {(, ), [, ]}, {A→ (A) | () | [A] | [] | AA}, A) ist nicht in
Chomsky-Normalform (nur die Produktion A → AA passt zum vorgeschriebenen Format). Hinge-
gen istG′ = ({A,B,C,D,E, F,G}, {(, ), [, ]}, {A→ BF |BC |DG |DE |AA,B → (, C →), D →
[, E →], F → AC,G→ AE}, A) in Chomsky-Normalform (und erzeugt die gleiche Sprache wieG).
Eigenschaften von Grammatiken in Chomsky-Normalform sind z. B., dass jeder Syntaxbaum
zu einer Ableitung eines Wortes w ein binärer Baum ist, und dass eine Ableitung von Wort w
genau 2|w| − 1 Ableitungsschritte benötigt.
Beispiel 5.2.3. Eine Linksableitung des (8-Zeichen langen) Wortes ([]([])) mit der Grammatik G′
ist mit den folgenden 15 Schritten möglich: A ⇒ BF ⇒ (F ⇒ (AC ⇒ (AAC ⇒ (DEAC ⇒
([EAC ⇒ ([]AC ⇒ ([]BFC ⇒ ([](FC ⇒ ([](ACC ⇒ ([](DECC ⇒ ([]([ECC ⇒ ([]([]CC ⇒
([]([])C ⇒ ([]([])). Der Syntaxbaum dazu ist:
A
B
(
F
A
A
D
[
E
]
A
B
(
F
A
D
[
E
]
C
)
C
)
Wir nehmen im folgenden an, dass ε 6∈ L(G) und werden zeigen, dass jede solche kontextfreie
Grammatik in Chomsky-Normalform gebracht werden kann. Diese Umformung geschieht in
mehreren Schritten. Den ersten Schritt haben wir bereits in Algorithmus 1 gemacht, als wir
ε-Produktionen entfernten.
5.2.1. ? Entfernen von Einheitsproduktionen
Im nächsten Schritt möchten wir Produktionen der FormA→ B entfernen, wobeiA undB Va-
riablen sind. Diese sogenannten Einheitsproduktionen „verlängern“ nur die Ableitungen und
Stand: 12. Mai 2021 58 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.2. Chomsky-Normalform
es ist intuitiv klar, dass wir auf sie verzichten können, indem wir anstatt A ⇒ B ⇒ w abzu-
leiten direkt eine Produktion A → w zur Grammatik hinzufügen. Allerdings muss man dieses
Ersetzen in der richtigen Reihenfolge tun (wennw selbst eine VariableC ist, ist das Hinzufügen
von A → C erst einmal nicht zielführend), und Sonderfälle (z. B. A → B und B → A) anders
behandeln. Der Algorithmus 5 leistet dies.
Algorithmus 5 : Entfernen von Einheitsproduktionen in einer CFG
Eingabe : Eine CFG G = (V,Σ, P, S)
Ausgabe : Eine CFG G′ ohne Einheitsproduktionen mit L(G) = L(G′)
Beginn
Erzeuge gerichteten GraphD = (V,E), sodass die Knoten den Variablen V
entsprechen und es je eine Kante (A,B) ∈ E für jede Einheitsproduktion
A→ B ∈ P gibt;
solange es einen Zyklus (A1, A2), . . . , (An−1, An), (An, A1) ∈ E gibt tue
P := P \ {A1 → A2, . . . , An−1 → An, An → A1} ; /* entferne die zyklischen Regeln */
P := P [A1/A2, . . . , A1/An] ; /* ersetze alle Vorkommen von Ai durch A1 für i = 2, . . . , n */
V := V \ {A2, A3, . . . , An}; /* lösche A2, . . . , An */
S := S[A1/A2, . . . , A1/An] ; /* ersetze Startsymbol durch A1, falls es Ai, 2 ≤ i ≤ n war */
E := E \ {(A1, A2), . . . , (An−1, An), (An, A1)}; /* entferne Zyklus aus Graph */
E := E[A1/A2, . . . , A1/An] ; /* ersetze alle Ai durch A1 für i = 2, . . . , n in den Kanten */
Ende
SortiereD topologisch und nummeriere die Variablen in V durch (und benenne
entsprechend in E,P, S um), so dass gilt: Ai → Aj impliziert i < j;
Sei V = {A1, . . . , Ak};
für i=k bis 1 tue
wenn Ai → Aj ∈ P dann
seien Aj → w1, . . . , Aj → wm alle Produktionen mit Aj als linker Seite;
P := P ∪ {Ai → w1, . . . , Ai → wm};
P := P \ {Ai → Aj};
Ende
Ende
Gib die so entstandene Grammatik als G′ aus;
Ende
Beachte, dass die Zyklen durch eine Tiefensuche aufD gefunden werden können.
Satz 5.2.4. Algorithmus 5 berechnet bei Eingabe einer CFGGmit ε 6∈ L(G) eine CFGG′, die keine
Einheitsproduktionen hat, sodass gilt L(G) = L(G′). Wenn G keine ε-Produktionen hat, dann hat
auch G′ keine ε-Produktionen.
Beweis. Wir zeigen:
1. Das Entfernen eines Zyklus verändert die erzeugte Sprache nicht
2. Das Entfernen einer EinheitsproduktionAi → Aj in der rückwärts-laufenden für-Schleife
ändert die erzeugte Sprache nicht.
1. Sei G = (V,Σ, P, S) die Grammatik mit Zyklus A1 → A2, . . . , An−1 → An, An → A1
und G′ = (V ′,Σ, P ′, S′) die Grammatik nachdem der Zyklus entfernt wurde. Sei σ die
Substitution {Ai 7→ A1 | i ∈ {2, . . . , n}}.
D. Sabel, Skript FSK & TIMI,SoSe 2021 59 Stand: 12. Mai 2021
5. Kontextfreie Sprachen
• „L(G) ⊆ L(G′)“: Wir zeigen: Für alle Satzformen w1, w2 ∈ (Σ ∪ V )∗ gilt: Wenn
w1 ⇒∗G w2, dann σ(w1) ⇒
∗
G′ σ(w2). Sei w1 ⇒
n
G w2. Wenn n = 0, dann ist w1 = w2
und es gilt σ(w1) ⇒∗G′ σ(w1). Wenn n > 0, dann w1 ⇒G w
′
1 ⇒
n−1
G w2. Die Indukti-
onsannahme liefert σ(w′1)⇒
∗
G′ σ(w2). Wenn w1 ⇒G w
′
1 mit einer Regel Ai → Aj aus
dem Zyklus, dann gilt σ(w1) = σ(w′1) (und damit auch σ(w1) ⇒
∗
G′ σ(w
′
1)) und mit
der Induktionsannahme σ(w1)⇒∗G′ σ(w2). Wenn w1 ⇒G w
′
1 mit einer Regel B → w,
die nicht vom Zyklus stammt, dann gibt es die Regel σ(B) → σ(w) in G′ und es gilt
w1 = uBv und w′1 = uwv und σ(w1) = σ(u)σ(B)σ(v) ⇒G′ σ(u)σ(w)σ(v) = σ(w
′
1)
und mit der Induktionsannahme folgt σ(w1)⇒∗G′ σ(w2).
• „L(G′) ⊆ L(G)“:
Sei w ∈ (Σ ∪ V ′)∗ eine Satzform mit w ⇒nG′ w0 und w0 ∈ Σ
∗. Mit Induktion über n
zeigen wir w ⇒∗G w0. Für n = 0 gilt w = w0 und damit auch w ⇒
∗
G w0. Falls n > 0,
dannw ⇒G′ w′ ⇒n−1G′ w0. Die Induktionsannahme liefertw
′ ⇒∗G w0. Wennw ⇒G w
′,
dann gilt die Behauptung. Anderenfalls muss gelten w = uA1v und w′ = uσ(wj)v
mit Aj → wj ∈ P . Dann gilt uA1v ⇒G · · · ⇒G uAjv ⇒G uwjv ⇒∗G uσ(wj)v ⇒
∗ w0.
Beachte, dass wir hierbei benutzen, dass gilt: uwv ⇒∗G uσ(w)v für alle u, v, w ∈ (Σ∩
V )∗, denn wir können durch Anwenden der Regeln jedes Vorkommen von Ai in w in
A1 umbenennen.
2. Die Korrektheit des Entfernens der Einheitsproduktionen folgt aus Lemma 5.1.1.
Schließlich müssen wir noch beobachten, dass das Verfahren terminiert und keine neuen Ein-
heitsproduktionen einführt. Die Solange-Schleife terminiert, da mit jeder Elimination von Zy-
klen ein Zyklus entfernt wird und keine neuen Zyklen eingeführt werden. Die Für-Schleife ter-
miniert offensichtlich. Da die Produktionen entsprechend der topologischen Sortierung be-
handelt werden, werden keine Einheitsproduktionen eingeführt: Wenn Ai → Aj entfernt
wird, wurden bereits alle Einheitsproduktionen Aj → Ak entfernt, d. h. alle rechten Seiten
w1, . . . , wm der Produktionen für Aj können nicht nur aus einer Variablen bestehen.
Der zweite Teil des Satzes gilt, da sämtliche Schritte keine ε-Produktionen einführen, sofern
die Eingabegrammatik keine ε-Produktionen enthält.
5.2.2. ? Herstellen der Chomsky-Normalform
Nach Entfernen der ε-Produktionen und der Einheitsproduktionen, können wir die Chomsky-
Normalformherstellen, indemwir zuerst alle Terminalsymbole a, die in rechten Seiten vorkom-
men (aber deren rechten Seiten nicht nur aus a bestehen) durchAa ersetzen und Produktionen
Aa → a hinzufügen. Anschließend sind alle Regeln von der Form A→ a oder Regeln der Form
A → B1 · · ·Bm mit m > 1. Falls im zweiten Fall m > 2 gilt, dann müssen wir die Regel noch
zerlegen inmehrere Regeln (durch Einführen von neuen Variablen). Algorithmus 6 formalisiert
Stand: 27. Mai 2021 60 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.2. Chomsky-Normalform
diese Schritte.
Algorithmus 6 : Herstellung der Chomsky-Normalform
Eingabe : CFG Gmit ε 6∈ L(G)
Ausgabe : CFG G′ in Chomsky-Normalform mit L(G) = L(G′)
Beginn
Entferne die ε-Produktionen in Gmit Algorithmus 1 und entferne anschließend
die Einheitsproduktionen mit Algorithmus 5;
Sei G′ = (V ′,Σ, P ′, S′) die entstandene Grammatik;
für alle a ∈ Σ tue
/* Führe neue Variable Aa für a ein, und ersetze Vorkommen von a durch das Nichtterminal */
G′ := (V ′ ·∪{Aa},Σ,{A→ w[Aa/a] | A→ w ∈ P ′ und |w| > 1}
·∪{A→ w | A→ w ∈ P ′ und |w| = 1} ·∪ {Aa → a},S)
Ende
/* Nun sind alle Regeln von der Form A→ a oder A→ B1 · · ·Bm mitm ≥ 2 */
für alle A→ B1 · · ·Bm ∈ P ′ mitm > 2 tue
Seien C1, . . . , Cm−2 neue Variablen;
V ′ := V ′ ·∪{C1, . . . , Cm−2};
/* Ersetze in P ′ die Produktion A→ B1 · · ·Bm durch neue Regeln */
P ′ :=(P ′ \ {A→ B1 · · ·Bm})
∪{A→ B1C1} ∪ {Ci → Bi+1Ci+1 | für i = 1, . . . ,m− 3} ∪ {Cm−2 → Bm−1Bm};
Ende
Ende
Theorem 5.2.5. Für CFGs G mit ε 6∈ L(G) berechnet Algorithmus 6 eine äquivalente CFG in
Chomsky-Normalform.
Beweis. Die Äquivalenz der erzeugten Sprache ergibt sich aus Satz 3.2.4 für das Entfernen der
ε-Produktionen, aus Satz 5.2.4 und aus Lemma 5.1.2 für die weiteren Schritte des Algorithmus
(Einführen von Produktionen fürA→ a undA→ B1 · · ·Bm). Schließlich verifiziert man leicht,
dass die Ausgabe-Grammatik in Chomsky-Normalform ist.
Beispiel 5.2.6. Wir verwenden Algorithmus 6 zum Berechnen der Chomsky-Normalform für die
Grammatik G0 = ({A,B,C,D, S}, {0, 1}, P0, S) mit
P0 = {S → 1A, A→ AB, A→ DA, A→ ε, B → 0, B → 1, C → AAA, D → 1AC}.
Entfernen der ε-Produktionen (siehe Beispiel 3.2.7) liefert die Grammatik G1 = (V,Σ, P1, S) mit
P1 = {S → 1A, S → 1, A→ AB, A→ B, A→ DA, A→ D, B → 0, B → 1,
C → AAA, C → AA, C → A, D → 1AC, D → 1A, D → 1C, D → 1}.
Wir wenden Algorithmus 5 an, um Einheitsproduktionen zu entfernen. Der gerichtete Graph istD =
({S,A,B,C,D}, {(A,A), (A,B), (A,D), (C,A)}) und hat keine Zyklen. Wir erhalten daher:
P2 = {S → 1A, S → 1, A→ AB, A→ B, A→ DA, A→ D, B → 0, B → 1,
C → AAA, C → AA, C → A, D → 1AC, D → 1A, D → 1C, D → 1}.
D. Sabel, Skript FSK & TIMI,SoSe 2021 61 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
Topologisches Sortieren und Umbenennen der Variablen, sodass „Ai → Aj impliziert i < j“ gilt, erfordert eine Umbenennung, welche die Beziehungen „A < B“, „A < D“, „C < A“ erzeugt. Wir wählen die Umbenennung ρ mit ρ(C) = A1, ρ(A) = A2, ρ(B) = A3, ρ(D) = A4, ρ(S) = A5. Das liefert uns G3 = ({A1, A2, A3, A4, A5},Σ, P3, A5) mit P3 = {A5 → 1A2, A5 → 1, A2 → A2A3, A2 → A3, A2 → A4A2, A2 → A4, A3 → 0, A3 → 1, A1 → A2A2A2, A1 → A2A2, A1 → A2, A4 → 1A2A1, A4 → 1A2, A4 → 1A1, A4 → 1}. Nun läuft die Für-Schleife für i von 5 bis 1. Für i = 5, i = 4, i = 3 gibt es jeweils keine Produktion der Form Ai → Aj . Für i = 2, wird A2 → A3 ersetzt durch A2 → 0, A2 → 1, und A2 → A4 wird ersetzt durch A2 → 1A2A1, A2 → 1A2, A2 → 1A1 und A2 → 1. Danach ist P4 = {A5 → 1A2, A5 → 1, A2 → A2A3, A2 → 0, A2 → 1, A2 → A4A2, A2 → 1A2A1, A2 → 1A2, A2 → 1A1, A3 → 0, A3 → 1, A1 → A2A2A2, A1 → A2A2, A1 → A2, A4 → 1A2A1, A4 → 1A2, A4 → 1A1, A4 → 1}. Für i = 1 wird A1 → A2 ersetzt durch A1 → A2A3, A1 → 0, A1 → 1, A1 → A4A2, A1 → 1A2A1, A1 → 1A2 und A1 → 1A1. Daher ist die Grammatik nach Entfernen der Einheitsproduktionen: G5 = (V5,Σ, P5, A5) mit V5 = {A1, A2, A3, A4, A5} und P5 = {A5 → 1A2, A5 → 1, A2 → A2A3, A2 → 0, A2 → 1, A2 → A4A2, A2 → 1A2A1, A2 → 1A2, A2 → 1A1, A3 → 0, A3 → 1, A1 → A2A2A2, A1 → A2A2, A1 → A2A3, A1 → 0, A1 → 1, A1 → A4A2, A1 → 1A2A1, A1 → 1A2, A1 → 1A1, A4 → 1A2A1, A4 → 1A2, A4 → 1A1, A4 → 1}. Nun wird Algorithmus 6 fortgesetzt und zunächst werden alle Terminalsymbole durch neue Produk- tionen dargestellt: Dies seien B0 → 0 und B1 → 1. Ersetzen aller Vorkommen von 0 durch B0 und 1 durch B0 in rechten Seiten mit Wortlänge > 1 ergibt daher:
P6 = {B0 → 0, B1 → 1, A5 → B1A2, A5 → 1, A2 → A2A3, A2 → 0, A2 → 1, A2 → A4A2,
A2 → B1A2A1, A2 → B1A2, A2 → B1A1, A3 → 0, A3 → 1, A1 → A2A2A2,
A1 → A2A2, A1 → A2A3, A1 → 0, A1 → 1, A1 → A4A2, A1 → B1A2A1, A1 → B1A2,
A1 → B1A1, A4 → B1A2A1, A4 → B1A2, A4 → B1A1, A4 → 1}.
Schließlich werden alle rechten Seiten mit Länge ≥ 3 durch Einführen neuer Variablen zerlegt, so-
dass wir als Ausgabegrammatik G7 = (V7,Σ, P7, A5) in Chomsky-Normalform erhalten, wobei
V7 = {A1, A2, A3, A4, A5, B0, B1, C1, C2, C3, C4}
P7 = {B0 → 0, B1 → 1, A5 → B1A2, A5 → 1, A2 → A2A3, A2 → 0, A2 → 1, A2 → A4A2,
A2 → B1C1 C1 → A2A1, A2 → B1A2, A2 → B1A1, A3 → 0, A3 → 1,
A1 → A2C2, C2 → A2A2, A1 → A2A2, A1 → A2A3, A1 → 0, A1 → 1, A1 → A4A2,
A1 → B1C3, C4 → A2A1, A1 → B1A2, A1 → B1A1, A4 → B1C4, C4 → A2A1,
A4 → B1A2, A4 → B1A1, A4 → 1}.
5.3. Greibach-Normalform
Eine weitere Normalform für kontextfreie Grammatiken ist die sogenannte Greibach-
Normalform (benannt nach Sheila A. Greibach).
Stand: 27. Mai 2021 62 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.3. Greibach-Normalform
Definition 5.3.1. Ein CFG G = (V,Σ, P, S) mit ε 6∈ L(G) ist in Greibach-Normalform, falls alle
Produktionen in P von der Form A→ aB1B2 . . . Bj mit j ≥ 0, A,B1, . . . , Bj ∈ V und a ∈ Σ sind.
Reguläre Grammatiken sind ein Spezialfall der Greibach-Normalform: Dort ist nur j = 0
oder j = 1 zugelassen. Umgekehrt kann man auch sagen: Jede reguläre Grammatik (ohne ε-
Produktionen) ist in Greibach-Normalform.
5.3.1. ? Herstellen der Greibach-Normalform
Algorithmus 7 führt die Umformung einer CFG in Chomsky-Normalform in die Greibach-
Normalform durch. Die geschachtelten für-Schleifen für i und j eliminieren Produktionen der
Form Ai → Ajumit i ≥ j: Für i > j, wird das Vorkommen von Aj am Anfang der rechten Seite
durch Hineinkopieren der Regel für Aj (d. h. deren rechten Seite) ersetzt, wobei alle Möglich-
keiten in Betracht gezogen werden müssen. Die Korrektheit dieser Ersetzung folgt aus Lem-
ma 5.1.1. Für den Fall Ai → Aiu wird die Elimination der Links-Rekursion, wie wir sie in Lem-
ma 5.1.3 gesehen haben, angewendet. Nach Abschluss der geschachtelten für-Schleifen, sind
Regeln der Form Ai → Aju nur noch möglich, wenn j > i gilt. Daher muss jede Regel mit An
(der „größten Variablen“) als linker Seite von der Form An → u sein, wobei u nicht mit einer
Variablen (und daher mit einem Symbol ausΣ) beginnt. Deshalb können wir sukzessive die Re-
geln für An, dann für An−1, u. s. w. hineinkopieren in Regel der Form Ai → Aju (und Aj durch
alle Möglichkeiten ersetzen): Nach dem Behandeln von An, kommt kein An mehr in der Form
Ai → Anu vor, nach dem Behandeln vonAn−1 kommt keinAn−1 mehr in der FormAi → An−1u
vor u. s. w., so dass am Ende keine Regeln mehr die Form Ai → Aju hat. Die Korrektheit der
Ersetzungen folgt aus Lemma 5.1.1.
Da die anfängliche Grammatik in Chomsky-Normalform, sind alle Regeln, die mitAi beginnen,
danach in Greibach-Normalform. Die im Rahmen der Elimination der Links-Rekursion einge-
führten Regeln mit Bi als linker Seite, hingegen müssen noch einmal durch hineinkopieren
derAi-Regeln behandelt werden, was in der letzten für-Schleife geschieht. Die Korrektheit der
Ersetzungen folgt erneut aus Lemma 5.1.1.
Für die Korrektheit des gesamten Algorithmusmussman verifizieren, dass die in den Kommen-
taren angegebenen Invarianten tatsächlich erfüllt sind, und daher am Ende, sämtliche Produk-
tionen entsprechend der Greibach-Normalform von der Form A→ aumit a ∈ Σ, u ∈ V ∗ sind.
Insgesamt lässt sich jede CFG (die nicht das leere Wort erzeugt) zunächst in Chomsky-
Normalform und anschließend mit Algorithmus 7 in Greibach-Normalform transformieren.
D. h. wir haben den folgenden Satz gezeigt:
Satz 5.3.2. Zu jeder CFG G mit ε 6∈ L(G) gibt es eine CFG G′ in Greibach-Normalform, sodass
L(G) = L(G′) gilt.
Beispiel 5.3.3. Betrachte G = ({A1, A2, A3}, {a, b, c, d}, P,A1) mit
P = {A1 → A1A2 | a,
A2 → A1A3 | A3A3,
A3 → A3c | d}.
Beim Durchlaufen der doppelt-geschachtelten „Für“-Schleifen, wird zunächst für i = 1 und j = 1
die Produktion A1 → A1A2 ersetzt durch A1 → aB1 | a und B1 → A2 | A2B1, d. h. danach ist die
D. Sabel, Skript FSK & TIMI,SoSe 2021 63 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
Algorithmus 7 : Herstellen der Greibach-Normalform
Eingabe : CFG G = ({A1, . . . , An},Σ, P,Ai) in Chomsky-Normalform mit ε 6∈ L(G)
Ausgabe : CFG G′ in Greibach-Normalform mit L(G) = L(G′)
Beginn
/* Ziel der geschachtelten Für-Schleife ist, dass es Regeln Ai → Aju nur gibt, wenn j > i gilt. */
für i = 1 bis n tue
für j = 1 bis i− 1 tue
/* Ersetzen der Regeln Ai → Ajumit i > j */
für alle Ai → Aju ∈ P tue
Seien Aj → w1 | · · · | wm alle Regeln in P mit Aj als linker Seite;
Ersetze Ai → Aju durch Ai → w1u | . . . | wmu in P ;
Ende
Ende
/* Ersetzen der Regeln Ai → Aiu */
wenn Ai → Aiu ∈ P dann
Wende Lemma 5.1.3 an, um die links-rekursiven Regeln für Ai zu ersetzen;
Sei Bi die dabei neu erzeugte Variable;
Ende
Ende
/* Nun gibt es nur noch Regeln der Form Ai → Ajumit j > i. */
/* Insbesondere gilt damit auch für alle Regeln An → u: u beginnt mit einem Zeichen aus Σ */
/* Ziel der nächsten Schleife: Ersetze alle Regeln Ai → Ajumit j > i */
für i = n− 1 bis 1 tue
für alle Ai → Aju ∈ P , j > i tue
Seien Aj → w1 | · · · | wm alle Regeln mit Aj als linker Seite;
/* Beachte: Alle w1, . . . , wm fangen mit Zeichen aus Σ an, da Schleife absteigend läuft */
Ersetze Ai → Aju durch Ai → w1u | · · · | wmu in P ;
Ende
Ende
/* Nun sind alle Regeln mit Ai, i = 1, . . . , n als linker Seite in Greibach-Normalform, behandle noch
die eingeführten Regeln mit Bi als linker Seite */
für i = 1 bis n tue
für alle Bi → Aju ∈ P tue
Seien Aj → w1 | · · · | wm alle Regeln mit Aj als linker Seite;
Ersetze Bi → Aju durch Bi → w1u | · · · | wmu in P ;
Ende
Ende
Ende
Stand: 27. Mai 2021 64 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.4. ?Widerlegen der Kontextfreiheit
Menge der Produktionen
P1 = {A1 → aB1 | a,
A2 → A1A3 | A3A3,
A3 → A3c | d,
B1 → A2 | A2B1}.
Für i = 2 und j = 1 wird die Produktion A2 → A1A3 ersetzt durch A2 → aB1A3 | aA3, d. h. die
Menge der Produktionen ist danach
P2 = {A1 → aB1 | a,
A2 → aB1A3 | aA3 | A3A3,
A3 → A3c | d,
B1 → A2 | A2B1}.
Für i = 3 und j = 3 wird A3 → A3c ersetzt durch A3 → d | dB3, B3 → c | cB3, d. h. die Menge der
Produktionen ist danach
P3 = {A1 → aB1 | a,
A2 → aB1A3 | aA3 | A3A3,
A3 → d | dB3,
B1 → A2 | A2B1,
B3 → c | cB3}.
Durchlaufen der „Für i = n− 1 bis 1“-Schleife ersetzt A2 → A3A3 durch A2 → dA3 | dB3A3, d. h.
die Menge der Produktionen ist danach
P4 = {A1 → aB1 | a,
A2 → aB1A3 | aA3 | dA3 | dB3A3,
A3 → d | dB3,
B1 → A2 | A2B1,
B3 → c | cB3}.
Durchlauf der letzten „Für“-Schleife ersetzt
• B1 → A2 durch B1 → aB1A3 | aA3 | dA3 | dB3A3, und
• B1 → A2B1 durch B1 → aB1A3B1 | aA3B1 | dA3B1 | dB3A3B1
was insgesamt die Grammatik G′ = ({A1, A2, A3, A4, B1, B3}, {a, b, c, d}, P ′, A1) mit
P ′ = {A1 → aB1 | a,
A2 → aB1A3 | aA3 | dA3 | dB3A3,
A3 → d | dB3,
B1 → aB1A3 | aA3 | dA3 | dB3A3 | aB1A3B1 | aA3B1 | dA3B1 | dB3A3B1,
B3 → c | cB3}.
als Ausgabe (in Greibach-Normalform) erzeugt.
5.4. ?Widerlegen der Kontextfreiheit
In diesem Abschnitt lernen wir Hilfsmittel kennen, um zu zeigen, dass formale Sprachen nicht
kontextfrei sind.
D. Sabel, Skript FSK & TIMI,SoSe 2021 65 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
Als Vorüberlegung beachte, dass ein Binärbaum (ein Baum für den jeder Knoten 2 oder 0 Kinder
hat), mit ≥ 2k Blättern stets einen Pfad der Länge mindestens k hat. Dies kann mit Induktion
über k gezeigt werden: Für k = 0 besteht der Baum nur aus einem Blatt und er hat einen Pfad
der Länge 0. Wenn k > 0, dann hat der Baum 2k Blätter und einer der beiden Teilbäume unter
der Wurzel hat mindestens 2k−1 Blätter. Die Induktionshypothese liefert, dass dieser Teilbaum
ein Pfad der Länge ≥ k − 1 hat. Verwende diesen Pfad und verlängere ihn um die Wurzel des
gesamten Baums. Der Pfad hat Länge ≥ k.
Wirwerden dieseVorüberlegungmehrfach imBeweis des folgendenPumping-Lemmas für kon-
textfreie Sprache verwenden. Ähnlich zum das Pumping-Lemma für reguläre Sprachen (siehe
Lemma 4.9.1), liefert dass Pumping-Lemma für CFLs ein notwendige Eigenschaft kontextfreier
Sprachen, die – kurz gesprochen – besagt, dass genügend langeWörter kontextfreier Sprachen
„aufgepumpt“ werden können, ohne die Sprache zu verlassen. Im Gegensatz zu den regulären
Sprachen, wird bei kontextfreien Sprachen an zwei Stellen gleichzeitig gepumpt:
Lemma 5.4.1 (Pumping-Lemma für CFLs). Sei L eine kontextfreie Sprache. Dann gibt es eine
Zahl n ∈ N>0, sodass jedes Wort z ∈ L, das Mindestlänge n hat (d. h. |z| ≥ n), als z = uvwxy
geschrieben werden kann, so dass gilt:
• |vx| ≥ 1
• |vwx| ≤ n
• für alle i ≥ 0: uviwxiy ∈ L.
Beweis. Sei L eine kontextfreie Sprache und sei G = (V,Σ, P, S) eine CFG für L \ {ε} in
Chomsky-Normalform. Betrachte eine Ableitung und den zu-
gehörigen Syntaxbaum eines Wortes z mit |z| ≥ 2|V | = n. DaG
in Chomsky-Normalform ist, hat jeder Knoten im Syntaxbaum
genau 2Kinder, bis auf den jeweils letzten Schritt in jedemPfad
(der Produktionen der Form A→ a anwendet).
Der Baum, ohne diesen letzten Schritt ist ein Binärbaum mit
|w| ≥ 2|V | Blättern, der daher einenPfad der Länge≥ |V |haben
muss, der |V |+ 1 Variablen benutzt.
Das rechts gezeigte Bild illustriert dies, wobei die grau mar-
kierte Schicht, die jeweils letzten Ableitungsschritte markie-
S
︸ ︷︷ ︸
z
ren. Daher muss auf diesem Pfad mit |V | + 1 Variablen mindestens eine Variable doppelt vor-
kommen. Wir wählen die beiden tiefsten Vorkommen derselben Variablen, d. h. wir gehen den
Pfad von unten nach oben entlang, bis zum ersten Mal eine
Variable erneut vorkommt. O.B.d.A. sei dies die Variable A.
Wenn wir nun die beiden Teilbäume betrachten, die jeweils
A als Wurzel haben, dann entsprechen diese den Ableitungen
von Teilworten von z, wobei das tiefereA ein Teilwort desWor-
tes des vom oberen A erzeugten Wortes ist. D. h. wir können
das Wort z zerlegen in z = uvwxy, wobei w das vom unteren
A erzeugte Teilwort ist, vwx vom oberen A erzeugt wird, und
u und v die Teile von z sind, die außerhalb des vom oberen A
erzeugten Teilworts liegen.
Zunächst ist klar, dass |w| ≥ 1 gilt, da jedeVariable einer Gram-
S
A
A
︸ ︷︷ ︸
z
matik in Chomsky-Normalform nur solche Worte herleiten kann. Der Syntaxbaum vom oberen
Stand: 27. Mai 2021 66 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.4. ?Widerlegen der Kontextfreiheit
A hat unter der Wurzel zwei Teilbäume mit Wurzeln B und C. Nur einer der beiden Teilbäume
enthält den Teilbaum mit dem unteren A als Wurzel. Der an-
dere Teilbaum leitet daher auch Zeichen her und daraus folgt,
dass |v| ≥ 1 oder |x| ≥ 1 (oder beides), vereinfacht geschrieben
|vx| ≥ 1, gelten muss.
Da wir die tiefsten Vorkommen der gleichen Variablen A ge-
wählt haben, muss der Pfad vom oberenA bis zur der Blattebe-
ne eine Länge ≤ |V | haben. Daraus folgt für das abgeleitete
Wort |vwx| ≤ 2|V | = n.
Schließlich zeigt der Syntaxbaum, dass S ⇒∗ uAy, A ⇒∗ vAx
und A⇒∗ w. Die Ableitungen für A können wir daher beliebig
S
A
A
︸ ︷︷ ︸
z
u v w x y
austauschen: Zusammengefasst zeigt dies, dass gilt S ⇒∗ uviwxiy für alle i ∈ N. Im Baum
dargestellt für die Fälle i = 0 und i = 2:
S
A
u
w
y
S
A
A
A
u v x y
v w x
Illustration für uv0wx0y Illustration für uv2wx2y
Da das Pumping-Lemma keine hinreichende Eigenschaft für kontextfreie Sprachen liefert,
kann es nicht verwendet werden, um zu zeigen, dass eine Sprache kontextfrei ist. Es kann al-
lerdings verwendet werden, um zu zeigen, dass eine Sprache nicht kontextfrei ist.
Entsprechend können wir die Aussage des Pumping-Lemmas für CFGs passend formulieren:
Lemma 5.4.2 (Formulierung des Pumping-Lemmas für CFGs zum Widerlegen der Kontext-
freiheit). Sei L eine formale Sprache für die gilt: Für jede Zahl n ∈ N>0 gibt es ein z ∈ L, das
Mindestlänge n hat (d. h. |z| ≥ n), und für jede Zerlegung z = uvwxy mit |vwx| ≤ n und |vx| ≥ 1,
gibt es ein i ≥ 0, sodass uviwxiy 6∈ L. Dann ist L nicht kontextfrei.
Beweis. Lemma5.4.1 besagt „L ist kontextfrei =⇒ L erfüllt die Pumping-Eigenschaft für CFLs“.
Diese Implikation ist logisch äquivalent (da A =⇒ B g. d.w. ¬B =⇒ ¬A) zu der Aussage
„L verletzt die Pumping-Eigenschaft für CFLs =⇒ L ist nicht kontextfrei“.
Die Aussage „L erfüllt die Pumping-Eigenschaft für CFLs“ kann als folgende prädikatenlogi-
sche Formel geschrieben werden:
∃n ∈ N>0 : ∀z ∈ L :
(|z| ≥ n =⇒ ∃u, v, w, x, y : (z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n ∧ ∀i ≥ 0 : (uviwxiy ∈ L)))
D. Sabel, Skript FSK & TIMI,SoSe 2021 67 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
Wir formen die negierte Formel solange um, bis sie die Form der Aussage dieses Lemmas hat:
¬(∃n ∈ N>0 : ∀z ∈ L :
(|z| ≥ n⇒ ∃u, v, w, x, y : (z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n ∧ ∀i ≥ 0 : (uviwxiy ∈ L))))
⇐⇒ ∀n ∈ N>0 : ∃z ∈ L :
¬(|z| ≥ n⇒ ∃u, v, w, x, y : (z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n ∧ ∀i ≥ 0 : (uviwxiy ∈ L)))
⇐⇒ ∀n ∈ N>0 : ∃z ∈ L :
(|z| ≥ n ∧ ¬(∃u, v, w, x, y : (z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n ∧ ∀i ≥ 0 : (uviwxiy ∈ L))))
⇐⇒ ∀n ∈ N>0 : ∃z ∈ L :
(|z| ≥ n ∧ (∀u, v, w, x, y : ¬(z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n ∧ ∀i ≥ 0 : (uviwxiy ∈ L))))
⇐⇒ ∀n ∈ N>0 : ∃z ∈ L :
(|z| ≥ n ∧ (∀u, v, w, x, y : ¬(z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n) ∨ ¬(∀i ≥ 0 : (uviwxiy ∈ L))))
⇐⇒ ∀n ∈ N>0 : ∃z ∈ L :
(|z| ≥ n ∧ (∀u, v, w, x, y : ¬(z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n) ∨ (∃i ≥ 0 : (uviwxiy 6∈ L))))
⇐⇒ ∀n ∈ N>0 : ∃z ∈ L :
(|z| ≥ n ∧ (∀u, v, w, x, y : (z = uvwxy ∧ |vx| ≥ 1 ∧ |vwx| ≤ n)⇒ (∃i ≥ 0 : (uviwxiy 6∈ L))))
Analog zur Verwendung des Pumping-Lemmas für reguläre Sprachen, lässt sich auch das
Pumping-Lemma für kontextfreie Sprachen als Finden einer Gewinnstrategie eines Spiels ge-
gen einen Gegner formulieren:
Sei L die formale Sprache.
1. Der Gegner wählt die Zahl n ∈ N>0.
2. Wir wählen das Wort z ∈ Lmit |z| ≥ n.
3. Der Gegner wählt die Zerlegung z = uvwxy mit |vx| ≥ 1 und |vwx| ≤ n
4. Wir gewinnen das Spiel, wenn wir ein i ≥ 0 angeben können, sodass uviwxiy 6∈ L.
Wenn wir für jede Wahl des Gegners das Spiel gewinnen können, dann haben wir gezeigt, dass
L nicht kontextfrei ist.
Satz 5.4.3. Die Sprache L = {alblcl | l ∈ N} ist nicht kontextfrei.
Beweis. Wir verwenden das Pumping-Lemma für CFGs. Sei n ∈ N>0. Wir wählen z = anbncn.
Für jede Zerlegung z = uvwxy mit |vx| ≥ 1 und |vwx| ≥ n ist |vwx| von der Form aibj oder bicj
mit i, j ≥ 0, i + j ≤ n (vwx kann nicht a’s, b’s und c’s enthalten). Da |vx| ≥ 1, enthält |vx| im
ersten Fall kein c aber mindestens ein a oder ein b und im zweiten Fall kein a aber mindestens
ein b oder ein c. Daher hat das Wort uv0wx0y = uwy im ersten Fall mehr Vorkommen von c
als von a oder b und im zweiten Fall mehr Vorkommen von a als von b oder c und somit gilt
uwy 6∈ L.
Satz 5.4.4. Die Sprache L = {aibjcidj | i, j ∈ N>0} ist nicht kontextfrei.
Beweis. Wir verwenden das Pumping-Lemma für CFGs. Sei n ∈ N>0. Wir wählen z = anbncndn.
Für jede Zerlegung z = uvwxy mit |vx| ≥ 1 und |vwx| ≥ n gilt, genau eine der folgenden
Möglichkeiten
1. vwx = aibj
2. vwx = bicj
Stand: 27. Mai 2021 68 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.4. ?Widerlegen der Kontextfreiheit
3. vwx = cidj
mit jeweils i, j ∈ N und i+ j ≤ n. In jedem der drei Fälle gilt uv0wx0y = uwy 6∈ L:
1. Da |vx| ≥ 1, enthält vxmindestens ein a oder ein b. Dann gilt uwy = ai
′
bj
′
cndn und i′ < n
und/oder j′ < n.
2. Da |vx| ≥ 1, enthält vxmindestens ein b oder ein c. Dann gilt uwy = anbi
′
cj
′
dn und i′ < n
und/oder j′ < n.
3. Da |vx| ≥ 1, enthält vxmindestens ein c oder ein d. Dann giltt uwy = anbnci
′
dj
′
und i′ < n
und/oder j′ < n.
Satz 5.4.5. Sei L eine formale Sprache über einem unären Alphabet (d. h. |Σ| = 1). Dann ist L
genau dann regulär, wenn L kontextfrei ist.
Beweis. Wenn L regulär ist, dann ist L auch kontextfrei. D. h. wir müssen nur zeigen, dass jede
kontextfreie Sprache L im Falle des unären Alphabets auch regulär ist. O.B.d.A. sei Σ = {a}
und L eine kontextfreie Sprache über Σ. Das Pumping-Lemma für CFLs zeigt: Es gibt eine Zahl
n ∈ N>0, sodass:
Jedes Wort am ∈ L mit m ≥ n lässt sich zerlegen als am = uvwxy mit |vx| ≥ 1,
|vwx| ≤ n und für alle i ∈ N: uviwxiy ∈ L.
Da u, v, w, x, y ∈ {a}∗, ist diese Aussage äquivalent zu folgender Aussage (in der die Reihenfolge
der Worte u,v,w,x,y getauscht ist):
Jedes Wort am ∈ L mit m ≥ n lässt sich zerlegen als am = uwyvx mit |vx| ≥ 1,
|vx| ≤ |vwx| ≤ n und für alle i ∈ N: uwyvixi ∈ L.
Da uwy von der Form ak und vx von der Form al sein muss, lässt die Aussage noch einfacher
formulieren:
Jedes Wort am ∈ L mit m ≥ n lässt sich zerlegen als am = akal mit m = k + l,
1 ≤ l ≤ n und für alle i ∈ N: akai·l ∈ L.
Jedes Wort aus Lmit Mindestlänge n lässt sich daher schreiben als akal mit 1 ≤ l ≤ n.
Sei L̃j := {ajai·n! | i ∈ N}. Die Sprache L̃j (für festes n und j) ist regulär, denn der NFA mit
ε-ÜbergängenMj = ({z0, . . . , zn!+j},Σ, δ, z0, {zn!+j})mit δ(zi, a) = {zi+1} für 0 ≤ i ≤ n!+j−1,
δ(zj , ε) = {zn!+j} und δ(zn!+j , ε) = {zj} akzeptiert L̃j .
Wir zeigen L̃j ⊆ L für j ≥ n! und aj ∈ L:
Sei j ≥ n! und aj ∈ L. Dann ist für alle i ∈ N auch ajai·n! ∈ L: Da aj ∈ L und j ≥ n,
gibt es l, k mit aj = akal und 1 ≤ l ≤ n. Da n! = l · (n!/l) ( l teilt tatsächlich n!, weil
l ≤ n), gilt für beliebiges i ∈ N: ajai·n! = ak+l+i·l·(n!/l) = akal·(1+i+(n!/l)) und daher
ist ajai·n! ∈ L.
Umgekehrt gilt für jedes Wort am ∈ L mit m ≥ n!: am ∈ L̃j (mit j ≥ n!), wenn m = j + i · n!.
D. h. wir können ein kleinstes j wählen, für das gilt j ≡ m( mod n!).
Daraus folgt einerseits, dass alle Worte aus L mit Mindestlänge n! auch in einer der Mengen
L̃j liegen, und zudem, dass wir nur endlich viele solcher Mengen L̃j vereinigen müssen, um
alle Worte aus L mit Mindestlänge n! darzustellen: Es gibt höchstens n! verschiedene Reste
bei der Division durch n!. Daher gibt es eine Zahl q ∈ N, sodass die unendliche Vereinigung⋃
{L̃j | aj ∈ L, j ∈ N, j ≥ n!} als endliche Vereinigung⋃
{L̃j | aj ∈ L, n! ≤ j ≤ q} =
⋃
{L̃j | aj ∈ L, j ∈ N, j ≥ n!}
D. Sabel, Skript FSK & TIMI,SoSe 2021 69 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
dargestellt werden kann.
Nun können wir die gesamte Sprache L darstellen durch:
L = {w ∈ L | |w| < n!} ∪
⋃
{L̃j | aj ∈ L, n! ≤ j ≤ q}.
Jede der einzelnen Teilmengen ist eine reguläre Sprache (die erste, da sie eine endliche Sprache
ist, für die anderen Teilmengen existiert jeweils der NFAMj) und es werden nur endlich viele
Sprachen vereinigt. Daher ist L regulär.
Satz 5.4.6. Die Sprachen
L1 = {ap | p ist eine Primzahl} L2 = {an | n ist keine Primzahl}
L3 = {an | n ist Quadratzahl} L4 = {a2
n
| n ∈ N}
sind allesamt nicht kontextfrei.
Beweis. Für alle vier Sprachen haben gezeigt, dass sie nicht regulär sind (Sätze 4.9.5 bis 4.9.7
und 4.12.5), alle sind über dem unären Alphabet Σ = {a} definiert. Daher folgt mit Satz 5.4.5,
dass die Sprachen auch nicht kontextfrei sind.
Der Rest dieses Unterabschnitts (Ogden’s Lemma und dessen Konsequenzen und Anwendungen)
wird in der Vorlesung nicht behandelt und ist daher kein Prüfungsstoff.
Eine Verallgemeinerung des Pumping-Lemmas für CFLs ist das sogenannte Ogden’s Lemma
(Ogd68) (benannt nach William Ogden)
Lemma 5.4.7 (Ogden’s Lemma). Sei L eine kontextfreie Sprache. Dann gibt es eine Zahl n ∈ N>0,
sodass jedes Wort z ∈ L, das Mindestlänge n hat und in dem mindestens n Zeichen markiert sind,
als z = uvwxy geschrieben werden kann, so dass gilt:
• vx enthält mindestens ein markiertes Zeichen
• vwx enthält höchstens n markierte Zeichen
• für alle i ≥ 0: uviwxiy ∈ L.
Beweis. Sei L kontextfrei und sei G = (V,Σ, P, S) eine CFG in Chomsky-Normalform mit
L(G) = L \ {ε}. Betrachte eine Ableitung und den zugehörigen Syntaxbaum eines Wortes z,
so dass |z| ≥ 2|V |+1 = n ist. Wir nehmen an, dass ≥ n Zeichen in z markiert sind. Da G in
Chomsky-Normalform ist, hat jeder Knoten im Syntaxbaum genau 2 Kinder, bis auf den jeweils
letzten Schritt in jedem Pfad (der Produktionen der Form A→ a anwendet). Wir wählen einen
Pfad im Syntaxbaum von der Wurzel bis zu einem Blatt nach folgendem Verfahren aus: An ei-
nem Knoten A mit Kindern B und C (d. h. eine Produktion A → BC wurde angewendet), der
dieWurzel des Teilbaums zur Erzeugung vonwA = wBwC ist, wähleB wennwB mehrmarkierte
Zeichen enthält alswC , anderenfalls wähleC. Wir nennenA einen Verzweigungsknoten, wenn
wB und wC jeweils noch markierte Zeichen enthalten. Nach jedem Verzweigungsknoten ist die
Stand: 27. Mai 2021 70 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.4. ?Widerlegen der Kontextfreiheit
Menge der noch markierten Zeichen im Wort allerhöchstens
halbiert (da wir den Pfad so wählen, dass wir das Teilwort
mit meisten Markierungen wählen). Daher gibt es mindestens
|V |+ 1 Verzweigungsknoten auf dem Pfad. Wir betrachten den
untersten Teilpfad davon (in einem Blatt endend), der genau
|V | + 1 Verzweigungsknoten hat. Auch auf diesem Pfad wird
eine Variable A ∈ V doppelt besucht. Die mit A markierten
Knoten liegen übereinander und induzieren daher das rechts
gezeigte Bild und eine Zerlegung z = uvwxy, sodass das obere-
re A den Teilbaummit Blattmarkierungen vwx und das untere
A den Teilbaummit Blattmarkierungenw erzeugt. Sei Tvwx der
S
A
A
︸ ︷︷ ︸
z
u v w x y
Teilbaum mit dem oberen A als Wurzel und Tw der Teilbaum mit dem unteren A als Wurzel.
Der untere Teilbaum Tw kann nur im rechten oder im linken Unterbaum vom Tvwx liegen.
Aber beide Unterbäume enthalten noch markierte Zeichen (da das obere A ein Verzweigungs-
knoten ist). Daher folgt, dass vxmindestens ein markiertes Zeichen enthält.
Der Pfad, den wir betrachten hat |V |+ 1 Verzweigungsknoten. Daher hat der Pfad vom oberen
A aus ebenfalls maximal |V | + 1 Verzweigungsknoten. Damit können wir maximal 2|V |+1 = n
Zeichen markieren und daher hat das vom oberen A erzeugte Wort vwx höchstens nmarkierte
Zeichen.
Schließlich gilt uviwxiy ∈ L(G) durch die gegebenen Ableitungen S ⇒∗G uAv, A⇒
∗
G vAx und
A⇒∗G w.
Satz 5.4.8. Das Pumping-Lemma für CFLs ist ein Spezialfall von Ogden’s Lemma.
Beweis. Markiere alle Zeichen in z (anstelle vonmindestens n), dann erhält man das Pumping-
Lemma für CFLs.
Beispiel 5.4.9. Die Sprache L = {aibjcjdj | i ∈ N>0, j ∈ N} ∪ ({b}∗{c}∗{d}∗) erfüllt die
Pumping-Eigenschaft für CFLs. Wähle n = 4, sei z ∈ L mit |z| ≥ 4 mit z = a1 · · · a|z|. Wenn
z ∈ ({b}∗{c}∗{d}∗) dann wähle die Zerlegung u = v = w = ε, x = a1 y = a2 · · · a|z|.
Dann gilt z = uvwxy und uviwxiy = ai1y ∈ ({b}
∗{c}∗{d}∗) für alle i ∈ N. Wenn
z ∈ {aibjcjdj | i ∈ N>0, j ∈ N} dann wähle die Zerlegung u = v = w = ε, x = a1 = a,
y = a2 · · · a|z|. Dann gilt z = uvwxy und uviwxiy = aiy ∈ L für alle i ∈ N.
Beispiel 5.4.9 liefert eine Beispielsprache, für welche die Pumping-Eigenschaft erfüllt ist, die
aber nicht kontextfrei ist, was sich mit Ogden’s Lemma zeigen lässt:
Satz 5.4.10. Die Sprache L = {aibjcjdj | i ∈ N>0, j ∈ N} ∪ ({b}∗{c}∗{d}∗) ist nicht kontextfrei.
Beweis. Wir verwenden Ogden’s Lemma (Lemma 5.4.7). Sei n ∈ N>0. Wir wählen das Wort z =
abncndn ∈ L und markieren das Teilwort bcnd. Sei z = uvwxy, wobei vx mindestens eines und
vwx höchstens nmarkierte Zeichen enthält. Dann enthält das Teilwort vwx nicht alle Zeichen
b,c und d (da es ansonsten n + 2 markiert Zeichen enthielte). Daher ist uv2wx2y 6∈ L, da dort
die Anzahl an b’s, c’s, und d’s nicht gleich sein kann, aber uv2wx2y mit einem a beginnt.
D. Sabel, Skript FSK & TIMI,SoSe 2021 71 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
5.5. Abschlusseigenschaften kontextfreier Sprachen
Theorem 5.5.1. Die kontextfreien Sprachen sind abgeschlossen unter
• Vereinigung
• Produkt
• Kleeneschem Abschluss
Die kontextfreien Sprachen sind nicht abgeschlossen unter Schnitt- und Komplementbildung.
Beweis. Seien L1 und L2 kontextfreie Sprachen, G1 = (V1,Σ1, P1, S1) und G2 = (V2,Σ2, P2, S2)
CFGs mit L(Gi) = Li für i = 1, 2. O.B.d.A. gelte V1 ∩ V2 = ∅ (anderenfalls benenne eine der
Grammatiken um). Sei S eine neue Variable (S 6∈ (V1 ∪ V2)).
Sei G∪ die CFG definiert durch G∪ = (V1 ∪ V2 ∪ {S},Σ1 ∪ Σ2, P1 ∪ P2 ∪ {S → S1 | S2}, S).
Offensichtlich gilt L(G∪) = L(G1) ∪ L(G2) = L1 ∪ L2. Daher sind die kontextfreien Sprachen
abgeschlossen bezüglich Vereinigung.
SeiG◦ die CFG definiert durchG◦ = (V1∪V2∪{S},Σ1∪Σ2, P1∪P2∪{S → S1S2}, S). Offensicht-
lich gilt L(G◦) = L(G1)L(G2) = L1L2. Daher sind die kontextfreien Sprachen abgeschlossen
bezüglich Produktbildung.
Sei G = (V,Σ, P, S), wobei wir annehmen, dass S auf keiner rechten Seite in P vorkommt (ist
dies der Fall, dann transformiere G durch Hinzufügen eines neuen Startsymbols S0 und einer
Produktion S0 → S). Sei S′ 6∈ V und sei G∗ = (V ∪ {S′},Σ, (P \ {S → ε}) ∪ {S′ → ε, S′ →
S, S → SS}, S′). Dann gilt L(G∗) = L(G)∗. Das zeigt, dass kontextfreie Sprachen bezüglich
dem Kleeneschen Stern-Operator (der reflexiv-transitiven Hülle) abgeschlossen sind.
Die Sprachen L1 = {anbmcm | m,n ∈ N} und L2 = {ambmcn | m,n ∈ N} sind beide kontextfrei,
da sie von den CFGs G1 = ({A,D, S}, {a, b, c}, {S → AD,A → ε | aA,D → bDc | ε}, S) und
G2 = ({C,D, S}, {a, b, c}, {S → DC,C → cC | ε,D → aDb | ε}, S) erzeugt werden. Allerdings
ist L1 ∩L2 = {anbncn | n ∈ N>0} nicht kontextfrei, was in Satz 5.4.3 gezeigt wurde. Daher sind
die kontextfreien Sprachen nicht abgeschlossen bezüglich Schnittbildung.
Nehme an, die kontextfreien Sprachen seien abgeschlossen bez. Komplementbildung. Seien
L1, L2 CFLs. Dann sind L1 und L2 CFLs und ebenso L1 ∪L2 kontextfrei. Schließlich folgt auch,
dass L1 ∪ L2 kontextfrei ist. Da L1 ∪ L2 = L1 ∩L2 folgt, dass die kontextfreien Sprachen abge-
schlossen bez. Schnittbildung sind, was ein Widerspruch ist. D. h. unsere Annahme war falsch,
die kontextfreien Sprachen sind nicht abgeschlossen bez. Komplementbildung.
5.6. Effiziente Lösung des Wortproblems: Der CYK-Algorithmus
Wir haben bereits einen Algorithmus behandelt, der das Wortproblem für Typ 1-, 2- und 3-
Sprachen löst. Dieser war jedoch nicht effizient (sondern hat exponentielle Laufzeit in der Grö-
ße der Grammatik). In diesem Abschnitt lernen wir den Algorithmus von Cocke, Younger und
Kasami (kurz CYK-Algorithmus) kennen (Coc69; You67; Kas65), der das Wortproblem für kon-
textfreie Sprachen in polynomieller Zeit löst.
Der CYK-Algorithmus arbeitet mit einer CFG in Chomsky-Normalform. Die Idee des Algorith-
mus kann zunächst rekursiv beschrieben werden, indem der Test beschrieben wird, ob eine
Stand: 27. Mai 2021 72 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.6. Effiziente Lösung des Wortproblems: Der CYK-Algorithmus
Variable ein bestimmtes Wort erzeugt. Schließlich genügt es für eine CFGG = (V,Σ, P, S) und
einWortw zu prüfen, ob das Startsymbol S dasWortw erzeugt. Die rekursive Beschreibung des
Tests ist:
Prüfe, ob Variable A das Wort w = a1 · · · an erzeugt:
• Wenn w = a ∈ Σ, dann prüfe ob A→ a ∈ P
• Anderenfalls (|w| > 1) kann A nur dann das Wort w erzeugen, wenn es eine
Produktion A → BC ∈ P und einen Index 1 ≤ i < n gibt, sodass B das Wort
a1 · · · ai und C das Wort ai+1 · · · an erzeugt:
A
B C
︸ ︷︷ ︸
a1 · · · ai
︸ ︷︷ ︸
ai+1 · · · an
Daher prüfe für alle Produktionen A → BC ∈ P und alle i mit 1 ≤ i < n
rekursiv, ob B das Wort w = a1 · · · ai und C das Wort ai+1 · · · an erzeugt.
Dieses so beschriebene rekursive Verfahren wird im CYK-Algorithmus mit dynamischer Pro-
grammierung und nicht-rekursiv umgesetzt, um einen effizienten Algorithmus zu erhalten.
Daher berechnet der Algorithmus Mengen V (i, j) ⊆ V , sodass V (i, j) die Variablen enthält, die
das Wort ai · · · ai+j−1 erzeugen. Die Berechnung der Mengen geschieht mit dynamischer Pro-
grammierung, indem man mit den einfachsten Mengen V (i, 1) anfängt (diese kann man be-
stimmen, indem alle A ∈ V einfügt, die das Symbol ai erzeugen, also es Produktionen A→ ai
gibt) und anschließend die Länge j der Worte wachsen lässt. Damit ist sichergestellt, dass die
zur Berechnung von V (i, j)-benötigten Einträge alle bereits vorher berechnet wurden: Zur Be-
rechnung von V (i, j)muss man Mengen V (i, k) und V (i+ k, j − k)mit 1 ≤ k < j betrachten:
ai ... ai+k-1 ai+k ... ai+j-1
Gibt es Variablen B ∈ V (i, k) und C ∈ (Vi+k,j−k) und eine Produktion A → BC,
dann gilt A ∈ V (i, j), denn B erzeugt ai · · · ai+k−1, C erzeugt ai+k · · · ai+j−1 und
daher erzeugt A das Wort ai · · · ai+j−1.
Nach Berechnen allerMengenmussman schließlich prüfen, obS ∈ (V1,n) gilt, umdasWortpro-
blemzu entscheiden. Algorithmus 8 gibt denCYK-Algorithmus in Pseudo-Code an. Die Laufzeit
wird durch die drei geschachtelten Für-Schleifen dominiert und kannmitO(n3·|P |) abgeschätzt
werden, wobei n = |w| und |P | die Anzahl der Produktionen der Grammatik ist.
Theorem 5.6.1. Das Wortproblem für kontextfreie Sprachen kann in Polynomialzeit entschieden
werden.
D. Sabel, Skript FSK & TIMI,SoSe 2021 73 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
Algorithmus 8 : CYK-Algorithmus
Eingabe : CFG G = (V,Σ, P, S) in Chomsky-Normalform und Wort w = a1 · · · an ∈ Σ∗
Ausgabe : Ja, wenn w ∈ L(G) und Nein, wenn w 6∈ L(G)
Beginn
für i = 1 bis n tue
V (i, 1) = {A ∈ V | A→ ai ∈ P}
Ende
für j = 2 bis n− 1 tue
für i = 1 bis n+ 1− j tue
V (i, j) = ∅;
für k = 1 bis j − 1 tue
V (i, j) = V (i, j)∪{A ∈ V | A→ BC ∈ P,B ∈ V (i, k), C ∈ V (i+k, j−k)}
Ende
Ende
Ende
wenn S ∈ V (1, n) dann
return Ja
sonst
return Nein
Ende
Ende
Beispiel 5.6.2. SeiG = ({S,A,B}, {b, c, d}, P, S)mitP = {S → AC, A→ BE, A→ BD, E →
AD, C → c, B → b, D → d} undw = bbddc.Wir führen den CYK-Algorithmus aus, um zu prüfen,
ob w ∈ L(G) gilt:
Am Anfang ist die Tabelle
V (i, j) leer:
Nach Abarbeiten der ersten
Schleife sind alle V (i, 1)-
Einträge gefüllt:
Für j = 2 wird A ∈ V (2, 2)
eingefügt, da A → BD ∈ P ,
B ∈ V (2, 1) undD ∈ V (2, 2):
V (i, j)
b b d d c
1 2 3 4 5
1
2
3
4
5
i
j
V (i, j)
b b d d c
1 2 3 4 5
1
2
3
4
5
i
j
B B D D C
V (i, j)
b b d d c
1 2 3 4 5
1
2
3
4
5
i
j
B B D D C
A
Stand: 27. Mai 2021 74 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.7. Kellerautomaten
Für j = 3 wird E ∈ V (2, 3)
eingefügt, da E → AD ∈ P ,
A ∈ V (2, 2) undD ∈ V (4, 1):
Für j = 4 wird A ∈ V (1, 4)
eingefügt, da A → BE ∈ P ,
B ∈ V (1, 1) undE ∈ V (2, 3):
Für j = 5 wird S ∈ V (1, 5)
eingefügt, da S → AC ∈ P ,
A ∈ V (1, 4) und C ∈ V (5, 1):
V (i, j)
b b d d c
1 2 3 4 5
1
2
3
4
5
i
j
B B D D C
A
E
V (i, j)
b b d d c
1 2 3 4 5
1
2
3
4
5
i
j
B B D D C
A
E
A
V (i, j)
b b d d c
1 2 3 4 5
1
2
3
4
5
i
j
B B D D C
A
E
A
S
Da S ∈ V (1, 5) gibt der Algorithmus Ja aus.
Wenn man sich in der Tabelle V (i, j) nicht nur die Variablen, sondern ebenfalls die da-
zugehörigen Produktionen merkt, kann man im Erfolgsfall auch recht einfach eine Ab-
leitung konstruieren, die w erzeugt. In Beispiel 5.6.2 ist die zugehörige Linksableitung
S ⇒ AC ⇒ BEC ⇒ bEC ⇒ bADC ⇒ bBDDC ⇒ bbDDC ⇒ bbdDC ⇒ bbddC ⇒ bbddc.
5.7. Kellerautomaten
Endliche Automaten haben als wesentliche Beschränkung, dass sie nahezu keinen Speicher
besitzen. Die einzige Speichermöglichkeit sind die Zustände selbst und dies sind nur endlich
viele. Daher kann ein endlicher Automat z. B. eine Sprache der Form {w$w | w ∈ {a, b, c}∗}
nicht erkennen, da er nach dem Lesen von $ gespeichert haben müsste, welche Zeichen er vor-
her gelesen hat (um sie mit den kommenden Zeichen des Wortes w zu vergleichen).
Kellerautomaten erweitern das Automatenmodell um einen Speicher. Dieser ist sogar beliebig
groß, aber er ist ein spezieller Speicher, nämlich ein Keller (Stack, LIFO-Speicher, last-in-first-
out Speicher) auf den Zeichen eines Kelleralphabets von oben abgelegt und von oben gelesen
und entnommen werden können. Abb. 5.1 illustriert den Kellerautomaten. Der Zustandsüber-
gang (eine Aktion) hängt bei endlichen Automaten nur vom nächsten Symbol der Eingabe und
dem aktuellen Zustand ab und liefert (eine Menge von) Nachfolgezustände(n). Beim Kellerau-
tomaten hängt der Zustandsübergang zusätzlich vom Kellerinhalt (dessen oberstem Zeichen)
ab und er liefert neben Nachfolgezuständen auch einen dazugehörigen abgeänderten Keller.
Definition 5.7.1 (Kellerautomat, PDA). Ein (nichtdeterministischer) Kellerautomat (PDA, push-
down automaton) ist ein TupelM = (Z,Σ,Γ, δ, z0,#), wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet,
• Γ ist das (endliche) Kelleralphabet,
• δ : (Z × (Σ ∪ {ε}) × Γ) → Pe(Z × Γ∗) ist die Zustandsüberführungsfunktion (oder nur
Überführungsfunktion)
• z0 ∈ Z ist der Startzustand und
• # ∈ Γ ist das Startsymbol im Keller.
D. Sabel, Skript FSK & TIMI,SoSe 2021 75 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
a1 a2 a3 · · · an Eingabeband
Lesekopf (bewegt sich nur nach rechts)
Keller
Zugriff auf Keller nur von oben
endliche
Steuerung
A1
A2
...
An
Abbildung 5.1.: Illustration des Kellerautomaten
Wenn (z′, B1 · · ·Bk) ∈ δ(z, a,A) dann meint dies, dass der Kellerautomat vom Zustand z aus-
gehend, bei Eingabe von Zeichen a und oberstem Zeichen A auf dem Keller in den Zustand z′
übergehen kann und dabeiA durch die ZeichenfolgeB1 · · ·Bk ersetzt, sodassB1 ganz oben auf
dem Keller liegt. Abb. 5.2 illustriert diesen Übergang. Beachte, dass k = 0 möglich ist und in
diesem Fall das Symbol A vom Kellerspeicher gelöscht wird.
a a′ · · ·
z
A
...
→
a a′ · · ·
z′
B1
...
Bk
...
Abbildung 5.2.: Illustration der Ausführung des Schrittes (z′, B1 · · ·Bk) ∈ δ(z, a,A)
Die so definierten PDAs sind nichtdeterministisch und erlauben ε-Übergänge Außerdem gibt
es keine Menge von Endzuständen. Ein PDA akzeptiert, wenn die Eingabe gänzlich verarbeitet
wurde und der Keller leer ist. Initial startet der Kellerautomat mit dem Symbol# im Keller.
Befindet sich ein Kellerautomat in einer Berechnung, dann kann man Buchführen über den
aktuellen Zustand, die Resteingabe und den aktuellen Kellerinhalt. Formal wird dies durch eine
Konfiguration dargestellt:
Definition 5.7.2 (Konfiguration eines Kellerautomaten). Sei M = (Z,Σ,Γ, δ, z0,#) ein PDA.
Eine Konfiguration von M ist ein Tripel (z, w,W ) mit z ∈ Z, w ∈ Σ∗, W ∈ Γ∗. Die Menge aller
Konfigurationen fürM ist daher Z × Σ∗ × Γ∗.
Stand: 27. Mai 2021 76 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.7. Kellerautomaten
Für eine Konfiguration (z, w,W ) ist z der aktuelle Zustand,w die Resteingabe undW der Inhalt
des Kellers, wobei das erste Zeichen vonW ganz oben im Keller steht.
Wir definieren eine binäre Relation ` auf Konfigurationen, die den Übergang von einer Konfi-
guration in eine nächste beschreibt:
Definition 5.7.3 (Transitionsrelation für PDA-Konfigurationen). Für einen PDA M =
(Z,Σ,Γ, δ, z0,#) definieren wir `M ⊆ (Z × Σ∗ × Γ∗)× (Z × Σ∗ × Γ∗) durch
• (z, a1 · · · an, A1 · · ·Am) `M (z′, a2 · · · an,WA2 · · ·Am) falls (z′,W ) ∈ δ(z, a1, A1) und
• (z, w,A1 · · ·Am) `M (z′, w,WA2 · · ·Am) falls (z′,W ) ∈ δ(z, ε, A1).
Mit `∗M bezeichnen wir (wie üblich) die reflexiv-transitive Hülle von `M und mit `
i
M die i-fache
Anwendung von `M . WennM eindeutig ist, lassen wir den IndexM in `M weg und schreiben `.
Definition 5.7.4 (Akzeptierte Sprache eines PDA). SeiM = (Z,Σ,Γ, δ, z0,#) ein PDA. Die durch
M akzeptierte Sprache L(M) ist definiert als
L(M) := {w ∈ Σ∗ | (z0, w,#) `∗ (z, ε, ε) für ein z ∈ Z}.
Beispiel 5.7.5. Der folgende PDA M = ({z0, z1}, {a, b}, {B,#}, δ, z0,#) akzeptiert die Sprache
{aibi | i ∈ N}, wobei wir für δ nur die Fälle angeben, die zu nicht-leeren Mengen führen (d. h. in
allen anderen Fällen für i ∈ {0, 1}, c ∈ {a, b, ε} und A ∈ {B,#} ist δ(zi, c, A) = ∅):
δ(z0, a,#) = {(z0, B#)} δ(z0, b, B) = {(z1, ε)} δ(z1, ε,#) = {(z1, ε)}
δ(z0, a, B) = {(z0, BB)} δ(z1, b, B) = {(z1, ε)} δ(z0, ε,#) = {(z0, ε)}
Der PDAM akzeptiert das leere Wort, denn (z0, ε,#) ` (z0, ε, ε). Der PDAM akzeptiert das Wort
aibi für i > 0, da
(z0, a
ibi,#) ` (z0, ai−1bi, B#) `∗ (z0, bi, Bi#) ` (z1, bi−1, Bi−1#) `∗ (z1, ε,#) ` (z1, ε, ε).
Andere Worte w werden nicht vonM akzeptiert, da einerseits jedes Verarbeiten eines Zeichen a ein
KellerzeichenB auf den Keller legt, das selbst wieder nur durch Verarbeiten eines b’s abgebaut wer-
den kann (d. h. #a(w) = #b(w) muss gelten), und andererseits das Wort mit a beginnen muss und
im Zustand z0 nur weitere a’s verarbeitet werden können (da ein b im Zustand z0 nicht verarbeitet
werden kann) und von der Form a∗b∗ sein muss, da nach einemWechsel von z0 nach z1 nur noch b’s
gelesen werden können.
Beispiel 5.7.6. SeiM = ({z0, z1}, {a, b}, {A,B,#}, δ, z0,#) mit
δ(z0, a,#) = {(z0, A#), (z1,#)}
δ(z0, b,#) = {(z0, B#), (z1,#)}
δ(z0, a, A) = {(z0, AA), (z1, A)}
δ(z0, b, A) = {(z0, BA), (z1, A)}
δ(z0, a, B) = {(z0, AB), (z1, B)}
δ(z0, b, B) = {(z0, BB), (z1, B)}
δ(z0, ε, A) = {(z1, A)}
δ(z0, ε, B) = {(z1, B)}
δ(z0, ε,#) = {(z1,#)}
δ(z1, a, A) = {(z1, ε)}
δ(z1, b, B) = {(z1, ε)}
δ(z1, ε,#) = {(z1, ε)}
und δ(zi, c, C) = ∅ für alle anderen Fälle mit i ∈ {0, 1}, c ∈ {a, b, ε} und C ∈ {A,B,#}.
Der PDA akzeptiert die Sprache L = {w ∈ {a, b}∗ | w ist Palindrom}. Da w ein Palindrom sein
muss, gibt es im Wesentlichen vier Möglichkeiten w = ε, w = uu, w = uau, oder w = ubu (mit
D. Sabel, Skript FSK & TIMI,SoSe 2021 77 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
u ∈ {a, b}∗). Die Kellerzeichen A und B werden verwendet, um die gelesenen Zeichen von u zu
speichern (im Zustand z0) und sie anschließend in umgekehrter Reihenfolge zum Verarbeiten von u
im Zustand z1 zu entfernen. Die Übergänge von z0 zu z1 sind sowohl ohne Lesen eines Zeichens oder
mit Lesen genau eines Zeichens möglich, was genau den Unterschied zwischen den Fällen uu und
ucu mit c ∈ {a, b} ausmacht. Welcher Fall nun eingetreten ist, wird dem Nichtdeterminismus des
Automaten überlassen, der sich die richtige Position und die richtige Art und Weise vom Übergang
von z0 zu z1 aussuchen muss. Tatsächlich ist dieser Nichtdeterminismus notwendig: Es gibt keinen
deterministischen Kellerautomaten, der die Sprache L akzeptiert.
Z. B. gibt es für Eingabe abbba die folgende Transitionsfolge, bei der der richtige Zeitpunkt zum
Übergang von z0 zu z1 verpasst wird:
(z0, abbba,#) ` (z0, bbba,A#) ` (z0, bba,BA#) ` (z0, ba,BBA#) ` (z0, a, BBBA#)
` (z0, ε, ABBBA#) ` (z1, ε, ABBBA#)
Ein erfolgreicher Lauf mit Eingabe abbba ist:
(z0, abbba,#) ` (z0, bbba,A#) ` (z0, bba,BA#) ` (z1, ba,BA#) ` (z1, a, A#) ` (z1, ε,#) ` (z1, ε, ε)
5.7.1. Akzeptanz durch Endzustände
Eine alternative Definition der PDAs verwendet als zusätzliche Komponente Endzustände und
definiert den Akzeptanzbegriff entsprechend anders. Wir werden in diesem Abschnitt zeigen,
dass diese Definition äquivalent zur bisherigen Definition ohne Endzustände und mit Akzep-
tanz durch leeren Keller ist, indemwir zeigen, dass beide Formalismen ineinander überführbar
sind.
Definition 5.7.7 (PDAmit Endzuständen). Ein (nichtdeterministischer) Kellerautomat mit End-
zuständen (PDA mit Endzuständen) ist ein TupelM = (Z,Σ,Γ, δ, z0,#, E) wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet,
• Γ ist das (endliche) Kelleralphabet
• δ : Z × ((Σ ∪ {ε}) × Γ) → Pe(Z × Γ∗) ist die Zustandsüberführungsfunktion (oder nur
Überführungsfunktion)
• z0 ∈ Z ist der Startzustand,
• # ∈ Γ ist das Startsymbol im Keller und
• E ⊆ Z ist die Menge der Endzustände.
Ein PDA mit Endzuständen akzeptiert die Sprache
L(M) = {w ∈ Σ∗ | (z0, w,#) `∗ (z, ε,W ) und z ∈ E}.
Beachte, dass ein PDA mit Endzuständen auch bei gefülltem Keller akzeptieren kann.
Lemma 5.7.8. Für jeden Kellerautomat mit Endzuständen M kann ein Kellerautomat M ′ (ohne
Endzustände) konstruiert werden, so dass gilt L(M) = L(M ′).
Beweis. SeiM = (Z,Σ,Γ, δ, z0,#, E) ein Kellerautomatmit Endzuständen. Für die Transforma-
tion in einen äquivalenten PDAM ′ ohne Endzustände müssen zwei Probleme gelöst werden:
Stand: 27. Mai 2021 78 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.7. Kellerautomaten
• Der PDAM ′ darf nicht in eine Konfiguration mit leerem Stack, leerer Eingabe und einem
Zustand z 6∈ E laufen.
• Wenn M ′ in einem Zustand z ∈ E mit leerer Eingabe ist, muss M ′ in die Lage versetzt
werden, den Keller zu leeren.
Beide Probleme werden dadurch gelöst, dass M ′ ein neues Kellersymbol erhält, welches
unter alle Symbole in den Keller gelegt wird (mithilfe eines neuen Startzustands) und
es einen weiteren neuen Zustand gibt, der zum Leeren des Kellers benutzt wird. Sei
M ′ = (Z ·∪{z′0, zE},Σ,Γ ∪ {$}, δ
′, z′0, $) wobei δ
′ genau die Einträge enthält, die durch die fol-
genden Regeln definiert werden:
1. δ′(z′0, ε, $) = {(z0,#$)} und δ
′(z′0, a,X) = ∅ für alle a ∈ Σ ∪ {ε},X ∈ Γ ∪ {$} sonst.
2. δ(z, a,A) ⊆ δ′(z, a,A) für alle z ∈ Z, a ∈ {Σ ∪ ε} und A ∈ Γ.
3. (zE , A) ∈ δ′(z, ε, A) für alle z ∈ E, A ∈ Γ ∪ {$}.
4. (zE , ε) ∈ δ′(zE , ε, A) für alle A ∈ Γ ∪ {$}.
Regel (1) sorgt dafür, dass vom neuen Startzustand z′0 in den alten Startzustand z0 übergangen
wird, aber das Zeichen $ ganz unten im Keller liegt. Regel (2) besagt, dass die alten Regeln von
M auch inM ′ gelten. Regel (3) sorgt dafür, dass bei Akzeptanz vonM in den neuen Zustand
zE gewechselt wird. Regel (4) sorgt dafür, dass der Keller im Zustand zE komplett geleert wird,
damit M ′ akzeptieren kann. Da der Keller nur im Zustand zE leer werden kann, gibt es keine
neuen Wörter für dieM ′ akzeptieren kann.
Zusammengefasst zeigt dies die korrekte Konstruktion vonM ′.
Lemma 5.7.9. Für jeden KellerautomatM kann ein Kellerautomat mit EndzuständenM ′ konstru-
iert werden, so dass L(M) = L(M ′) gilt.
Beweis. SeiM = (Z,Σ,Γ, δ, z0,#) ein Kellerautomat (ohne Endzustände). Für die Transforma-
tionen in einen äquivalenten PDAM ′ mit Endzuständen fügen wir einen Endzustand ein und
sorgen mithilfe eines zusätzlichen Kellersymbols dafür, dass M ′ nach Abarbeitung des Wor-
tes noch in den Endzustand wechseln kann. SeiM ′ = (Z ·∪{z′0, zE},Σ,Γ ·∪{$}, δ
′, z′0, $, {zE}), so
dass δ′ genau die Einträge enthält, die durch die folgenden Regeln definiert werden:
1. δ′(z′0, ε, $) = {(z0,#$)} und δ
′(z′0, a,X) = ∅ für alle a ∈ Σ ∪ {ε},X ∈ Γ ∪ {$} sonst.
2. δ(z, a,A) ⊆ δ′(z, a,A) für alle z ∈ Z, a ∈ {Σ ∪ ε} und A ∈ Γ
3. (zE , ε) ∈ δ′(z, ε, $) für alle z ∈ Z
Regel (1) sorgt dafür, dass amAnfang das Symbol $ ganz unten im Keller liegt. Es verbleibt dort,
bis es durch Regel (3) entfernt wird (in diesem Fall hat M schon akzeptiert und M ′ wechselt
in den Endzustand). Regel (2) sorgt dafür, dass alle Übergänge aus M auch in M ′ verwendet
werden können.
Zusammengefasst zeigt dies die korrekte Konstruktion vonM ′.
Lemmata 5.7.8 und 5.7.9 zeigen:
Satz 5.7.10. PDAs mit Endzuständen und PDAs ohne Endzustände (mit Akzeptanz durch leeren
Keller) sind äquivalente Formalismen.
D. Sabel, Skript FSK & TIMI,SoSe 2021 79 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
5.7.2. Äquivalenz von Kellerautomaten und kontextfreien Sprachen
Im Folgenden werden wir beweisen, dass Kellerautomaten genau die kontextfreien Sprachen
erkennen.Wir beweisen dies in zwei Teilen. Zunächst zeigen wir, wie man einen Kellerautoma-
ten für eine CFG (in Greibach-Normalform) konstruiert, der die von der Grammatik erzeugte
Sprache akzeptiert. Die Idee ist, dass der Kellerautomat, eine Linksableitung S ⇒∗ w simuliert.
Da die CFG in Greibach-Normalform ist, ist die Linksableitung nach i Schritten von der Form
S ⇒i a1 · · · aiB1 · · ·Bj . Für die Simulation auf dem PDA, startet dieser mit w als Eingabe und S
auf dem Keller. Nach i-Schritten erden auf dem dem Keller werden nur die Variablen B1 · · ·Bj
gespeichert, während a1 · · · ai (als Präfix vonw) von der Eingabe gelesen und verarbeitet wurde.
5.7.2.1. ? Kontextfreie Sprachen werden durch Kellerautomaten erkannt
Satz 5.7.11. Jede kontextfreie Sprache wird durch einen Kellerautomaten erkannt.
Beweis. Sei L eine kontextfreie Sprache. Da L kontextfrei ist, gibt es eine CFG G = (V,Σ, P, S)
in Greibach-Normalform mit L(G) = L \ {ε}. SeiM = ({z0},Σ, V, δ, z0, S) ein PDA, sodass
δ(z0, a, A) := {(z0, B1 · · ·Bn) | (A→ aB1 · · ·Bn) ∈ P}
und falls ε ∈ L setze zusätzlich
δ(z0, ε, S) := {(z0, ε)}
In allen anderen Fällen sei δ(z0, ε, A) = ∅.
Wir zeigen, dass L(M) = L gilt. Zunächst behandeln wir den Spezialfall, dass das leere Wort in
L liegt: Es gilt ε ∈ L genau dann, wenn (z0, ε, S) ` (z0, ε, ε) und damit ε ∈ L(M).
Für die weiteren Fälle zeigen wir, dass für alle i ∈ N gilt:
S ⇒iG a1 · · · aiB1 · · ·Bm mit einer Linksableitung
genau dann, wenn
(z0, a1 · · · aiw, S) `i (z0, w,B1 · · ·Bm) für alle w ∈ Σ∗.
Daraus folgt dann offensichtlich u ∈ L ⇐⇒ u ∈ L(M) für alle u ∈ Σ∗. Wir verwenden
Induktion über i zum Nachweis der Aussage. Für i = 0 gilt die Aussage. Für i > 0 sei zu-
nächst S ⇒iG a1 · · · aiB1 · · ·Bm eine Linksableitung. Da G in Greibach-Normalform ist, kann
diese geschrieben werden als S ⇒i−1G a1 · · · ai−1BxBj+1 · · ·Bm ⇒G a1 · · · aiB1 · · ·Bm, wo-
bei Bx → aiB1 · · ·Bj ∈ P als letzte Produktion angewendet wurde. Die Induktionsannah-
me zeigt, dass S ⇒i−1G a1 · · · ai−1BxBj+1 · · ·Bm genau dann, wenn (z0, a1 · · · ai−1w, S) `
i−1
(z0, w,BxBj+1 · · ·Bk). Mit w = aiw′ und da (z0, B1 · · ·Bj) ∈ δ(z0, ai, Bx), gilt ebenfalls
(z0, a1 · · · aiw′, S) `i (z0, w′, B1 · · ·Bk) für alle w′.
Nun betrachte die Rückrichtung. Sei (z0, a1 · · · aiw, S) `i (z0, w,B1 · · ·Bk). Dann muss der
letzte Schritt ai gelesen haben, d. h. die Folge lässt sich zerlegen in (z0, a1 · · · aiw, S) `i−1
(z0, aiw,BxBj+1 · · ·Bk) ` (z0, w,B1 · · ·Bk), wobei (z0, B1 · · ·Bj) ∈ δ(z0, ai, Bx). Dann
muss Bx → aB1 · · ·Bj eine Produktion in P sein. Die Induktionsannahme liefert
S ⇒i−1G a1 · · · ai−1BxBj+1 · · ·Bk und wir können obige Produktion anwenden und erhalten
S ⇒iG a1 · · · aiB1 · · ·Bk.
Stand: 27. Mai 2021 80 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.7. Kellerautomaten
5.7.2.2. ? Kellerautomaten, die maximal 2 Symbole auf den Keller legen
¸ Bevor wir die Rückrichtung zeigen (jeder PDA akzeptiert eine kontextfreie Sprache), bewei-
sen wir einen Hilfssatz, der zeigt, dass es ausreicht, wenn ein PDA pro Schritt maximal zwei
Symbole auf den Keller legen darf.
Lemma 5.7.12. Für jeden PDAM = (Z,Σ,Γ, δ, z0,#) gibt es einen PDAM ′ = (Z,Σ,Γ′, δ′, z0,#)
mit L(M) = L(M ′), sodass gilt: Wenn (z′, B1 · · ·Bk) ∈ δ′(z, a,A) (für a ∈ (Σ ∪ {ε})), dann ist
k ≤ 2.
Beweis. TransformiereM inM ′, indem δ′ und Γ′ konstruiert werden, sodass für alle A ∈ Γ und
a ∈ (Σ ∪ {ε}) genau die folgenden Regeln beachtet werden:
• (z′, B1 · · ·Bk) ∈ δ′(z, a,A) wenn (z′, B1 · · ·Bk) ∈ δ′(z, a,A) und k ≤ 2.
• falls (z′, B1 · · ·Bk) ∈ δ(z, a,A)mit k > 2, dann
– sei (z, CkBk) ∈ δ′(z, a,A), und
– für alle imit 4 ≤ i ≤ k: δ(z, ε, Ci) = {(z, Ci−1Bi−1)}, sowie
– δ(z, ε, C3) = {(z′, B1B2)}
wobei C3, . . . , Ck ∈ Γ′ neue Kellersymbole sind (diese werden jeweils neu erzeugt pro
ersetztem Eintrag).
Es gilt (z, aw,AW ) `∗M ′ (z
′, w,B1 · · ·BkW ) ⇐⇒ (z, aw,AW ) `M (z′, w,B1 · · · , BkW ) und da
die neuen Übergänge nicht zum sofortigen Akzeptieren führen können, folgt, dass die Äquiva-
lenz (z, w,#) `∗M (z, ε, ε) ⇐⇒ (z, w,#) `
∗
M ′ (z, ε, ε) gilt.
Bemerkung 5.7.13. Das letzte Lemma kann auch bewiesen werden, indem statt zusätzlicher Kel-
lersymbole zusätzliche Zustände verwendet werden.
5.7.2.3. ? Kellerautomaten akzeptieren kontextfreie Sprachen
Nun zeigen wir, dass wir für jeden Kellerautomaten, der die Bedingung aus dem vorherigen
Lemma erfüllt, eine kontextfreie Grammatik angeben können, welche die vom Automaten ak-
zeptierte Sprache erzeugt. Die wesentliche Idee des Beweises ist es, für die Variablen der Gram-
matik eine sogemannte Tripelkonstruktion zu verwenden: Die Variablen sind Tripel 〈z′, A, z〉,
wobei z, z′ Zustände des PDA und A ein Kellersymbol ist. Die Grammatik soll für eine solche
Variable genau die Worte w erzeugen, die den Automaten vom Zustand z′ mit KellerinhaltA in
den Zustand z durch Lesen von w überführen.
Satz 5.7.14. Kellerautomaten akzeptieren kontextfreie Sprachen.
Beweis. Sei M = (Z,Σ,Γ, δ, z0,#) ein PDA, sodass für alle (z′, B1 · · ·Bk) ∈ δ(z, a,A) (für a ∈
(Σ ∪ {ε})) k ≤ 2 gilt (was mit Lemma 5.7.12 keine Einschränkung ist).
Sei S ein neues Symbol. Wir konstruieren die Grammatik G = (V,Σ, P, S)mit
V = {S} ∪ {〈zi, A, zj〉 | zi, zj ∈ Z,A ∈ Γ}
P = {S → 〈z0,#, z〉 | z ∈ Z}
∪ {〈z′, A, z〉 → a | (z, ε) ∈ δ(z′, a, A), a ∈ Σ ∪ {ε}, A ∈ Γ}
∪ {〈z′, A, z〉 → a〈z′′, B, z〉 | (z′′, B) ∈ δ(z′, a, A), z ∈ Z, a ∈ Σ ∪ {ε}, A ∈ Γ}
∪ {〈z′, A, z〉 → a〈z′′, B, z1〉〈z1, C, z〉 | (z′′, BC) ∈ δ(z′, a, A), z, z1 ∈ Z, a ∈ Σ ∪ {ε}, A ∈ Γ}
D. Sabel, Skript FSK & TIMI,SoSe 2021 81 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
Wir beweisen im Folgenden die Aussage
〈z′, A, z〉 ⇒∗G w genau dann, wenn (z
′, w,A) `∗M (z, ε, ε).
Da S → 〈z0, A, z〉 ∈ P folgt daraus w ∈ L(G) ⇐⇒ w ∈ L(M), d. h. L(G) = L(M).
„⇒“: Sei 〈z′, A, z〉 ⇒iG w eine Linksableitung. Wir verwenden Induktion über i. Für i = 1 gilt
〈z′, A, z〉 ⇒G w, was nur gelten kann, wenn die verwendete Produktion 〈z′, A, z〉 → a ist.
Dann gilt aber (z, ε) ∈ δ(z′, a, A) und damit auch (z′, a, A) ` (z, ε, ε). Für den Induktions-
schritt sei 〈z′, A, z〉 ⇒G u⇒i−1G w. mit i− 1 > 0
– Wenn u = a ∈ (Σ ∪ {ε}), dann kann i− 1 > 0 nicht gelten.
– Wenn u = a〈z′′, B, z〉, dann ist (z′′, B) ∈ δ(z′, a, A) und u = a〈z′′, B, z〉 ⇒i−1 aw′
mit w = aw′. Dann gilt 〈z′′, B, z〉 ⇒i−1 w′ und die Induktionsannah-
me liefert (z′′, w′, B) `∗M (z, ε, ε). Mit (z
′′, B) ∈ δ(z′, a, A) zeigt dies
(z′, w,A) = (z′, aw′, A) `M (z′′, w′, B) `∗M (z, ε, ε).
– Wenn u = a〈z′′, B, z1〉〈z1, C, z〉, dann ist (z′′, BC) ∈ δ(z′, a, A) und u =
a〈z′′, B, z1〉〈z1, C, z〉 ⇒i−1 aw′ mit w = aw′. Dann gilt auch 〈z′′, B, z1〉〈z1, C, z〉 ⇒i−1
w′ und es gibt Linksableitungen 〈z′′, B, z1〉 ⇒j w′0 und 〈z1, C, z〉 ⇒
k w′1 mit
j + l ≤ i − 1 und w′ = w′0w
′
1. Für beide können wir die Induktionsannahme
anwenden und erhalten (z′′, w′0, B) `
∗
M (z1, ε, ε) und (z1, w
′
1, C) `
∗
M (z, ε, ε). Die
erste Konfigurationsfolge kann abgeändert werden: Wenn wir C unten im Keller
einfügen und w′1 an das Wort w
′
0 anhängen, ist der Ablauf immer noch möglich
und endet mit dem Symbol C im Keller und dem Restwort w′1 d. h. es existiert
(z′′, w′, BC) `∗M (z1, w
′
1, C). Anhängen der anderen Folge von Konfigurationen lie-
fert (z′′, w′, BC) = (z′′, w′0w
′
1, BC) `
∗
M (z, ε, ε). Da (z
′′, BC) ∈ δ(z′, a, A), zeigt dies
(z′, w,A) = (z′, aw′, A) `M (z′′, w′, BC) `∗M (z, ε, ε).
„⇐“: Sei (z′, w,A) `iM (z, ε, ε). Wir zeigen 〈z
′, A, z〉 ⇒∗G w mit Induktion über i. Für i = 1muss
gelten (z, ε) ∈ δ(z′, w,A), was nur gelten kann für w = a ∈ (Σ ∪ {ε}) und damit gibt
es die Produktion 〈z′, A, z〉 → a ∈ P und daher 〈z′, A, z〉 ⇒G a. Sei nun i > 1. Dann
(z′, aw′, A) ` (z′′, w′, α) `i−1M (z, ε, ε) für i − 1 > 0, a ∈ Σ ∪ {ε} und α = ε, α = B oder
α = BC. Wir betrachten alle drei Fälle für α einzeln:
– α = ε: Dieser Fall ist nicht möglich, da i− 1 > 0 nicht gelten kann.
– α = B. Da (z′′, w′, B) `i−1M (z, ε, ε), liefert die Induktionsannahme 〈z
′′, B, z〉 ⇒∗G w
′
und es gilt 〈z′, A, z〉 → a〈z′′, B, z〉 ∈ P daher gilt 〈z′, A, z〉 ⇒∗G aw
′ = w.
– α = BC. Die Konfigurationsfolge (z′′, w′, BC) `i−1M (z, ε, ε) kann zerlegt werden in
die Abarbeitung von B und die anschließende Abarbeitung von C, d. h. w′ = w′1w
′
2,
sodass (z′′, w′1w
′
2, BC) `
j
M (z1, w
′
2, C) `
k
M (z, ε, ε) mit j + k = i − 1. Aus dem ersten
Teil folgt (z′′, w′1, B) `
j
M (z1, ε, ε), indemmanC auf demKeller und den Suffixw
′
2 weg
lässt. Da j < i und k < i, kann die Induktionsannahme auf (z′′, w′1, B) ` j M (z1, ε, ε) und (z1, w′2, C) ` k M (z, ε, ε) einzeln angewendet werden und liefert 〈z ′′, B, z1〉 ⇒∗G w ′ 1 und 〈z1, C, z〉 ⇒∗G w ′ 2. Da 〈z ′, A, z〉 → 〈z′′, B, z1〉〈z1, C, z〉 ∈ P , gilt 〈z′, A, z〉 ⇒G a〈z′′, B, z1〉〈z1, C, z〉 ⇒∗G aw ′ 1〈z1, C, z〉 ⇒ ∗ G aw ′ 1w ′ 2 = w. 5.7.2.4. Kellerautomaten und kontextfreie Sprachen Sätze 5.7.11 und 5.7.14 zeigen: Stand: 27. Mai 2021 82 D. Sabel, Skript FSK & TIMI,SoSe 2021 5.7. Kellerautomaten Theorem 5.7.15. Kellerautomaten erkennen genau die kontextfreien Sprachen. Bemerkung 5.7.16. Die zu Theorem 5.7.15 zugehörigen Beweise zeigen auch, dass PDAsmit einem Zustand auskommen, denn der in Satz 5.7.11 konstruierte PDA besitzt nur einen Zustand. Beispiel 5.7.17. Betrachte den PDA aus Beispiel 5.7.5M = ({z0, z1}, {a, b}, {B,#}, δ, z0,#) mit δ(z0, a,#) = {(z0, B#)} δ(z0, b, B) = {(z1, ε)} δ(z1, ε,#) = {(z1, ε)} δ(z0, a, B) = {(z0, BB)} δ(z1, b, B) = {(z1, ε)} δ(z0, ε,#) = {(z0, ε)} und δ(zi, a, A) = ∅ für alle anderen Fälle. Der Beweis von Satz 5.7.14 konstruiert die Grammatik G = (V,Σ, P, S) mit V = {S, 〈z0, B, z0〉, 〈z0, B, z1〉, 〈z1, B, z0〉, 〈z1, B, z1〉, 〈z0,#, z0〉, 〈z0,#, z1〉, 〈z1,#, z0〉, 〈z1,#, z1〉} P = {S → 〈z0,#, z0〉, S → 〈z0,#, z1〉.} ∪ {〈z0, B, z1〉 → b, 〈z1, B, z1〉 → b, 〈z0,#, z0〉 → ε, 〈z1,#, z1〉 → ε} ∪ {〈z0,#, z0〉 → a〈z0, B, z0〉〈z0,#, z0〉, 〈z0,#, z0〉 → a〈z0, B, z1〉〈z1,#, z0〉 〈z0,#, z1〉 → a〈z0, B, z0〉〈z0,#, z1〉, 〈z0,#, z1〉 → a〈z0, B, z1〉〈z1,#, z1〉} ∪ {〈z0, B, z0〉 → a〈z0, B, z0〉〈z0, B, z0〉, 〈z0, B, z1〉 → a〈z0, B, z0〉〈z0, B, z1〉, 〈z0, B, z0〉 → a〈z0, B, z1〉〈z1, B, z0〉, 〈z0, B, z1〉 → a〈z0, B, z1〉〈z1, B, z1〉} Diese Grammatik kann man noch vereinfachen, indem man untersucht, welche Produktionen nie in einer erfolgreichen Ableitung verwendet werden können: • 〈z0, B, z0〉 → a〈z0, B, z1〉〈z1, B, z0〉, kann gelöscht werden, da die Produktion u.a. 〈z1, B, z0〉 erzeugt, es aber keine Produktion mit 〈z1, B, z0〉 als rechter Seite gibt. • Nun kann 〈z0, B, z0〉 → a〈z0, B, z0〉〈z0, B, z0〉, gelöscht werden, da sie die einzige Regel mit 〈z0, B, z0〉 als rechter Seite ist, aber auf der rechten Seite wieder ein 〈z0, B, z0〉 erzeugt. Daher kann kein Wort mit ihr erzeugt werden. • Nun können alle Regeln gelöscht werden, die 〈z0, B, z0〉 erzeugen, da es keine Produktion mehr gibt mit 〈z0, B, z0〉 auf der rechten Seite. Dies sind: 〈z0,#, z0〉 → a〈z0, B, z0〉〈z0,#, z0〉, 〈z0,#, z1〉 → a〈z0, B, z0〉〈z0,#, z1〉 〈z0, B, z1〉 → a〈z0, B, z0〉〈z0, B, z1〉, • Nun kann 〈z0,#, z0〉 → a〈z0, B, z1〉〈z1,#, z0〉, gelöscht werden, da es keine Produktion für 〈z1,#, z0〉 gibt. Es verbleiben {S → 〈z0,#, z0〉, S → 〈z0,#, z1〉, 〈z0, B, z1〉 → b, 〈z1, B, z1〉 → b, 〈z0,#, z0〉 → ε, 〈z1,#, z1〉 → ε, 〈z0,#, z1〉 → a〈z0, B, z1〉〈z1,#, z1〉, 〈z0, B, z1〉 → a〈z0, B, z1〉〈z1, B, z1〉 } Mit Umbenennen, Streichen von nicht erreich- baren Variablen und Entfernen von Einheitsproduktionen erhalten wir als Grammatik G = ((S,A,B), {a, b}, {S → ε | aB,B → aBC | b, C → b}, S) Offensichtlich erzeugt B Worte der From ai+1bi und damit ist L(G) = {aibi | i ∈ N}. Beachte, dass bis auf S → ε ist G in Greibach-Normalform. D. Sabel, Skript FSK & TIMI,SoSe 2021 83 Stand: 27. Mai 2021 5. Kontextfreie Sprachen Sei G′ = ({S,A,B,C}, {a, b}, {S → aB,B → b | aBC,C → b}, S), dann gilt L(G′) = L(G) \ {ε} und G′ ist in Greibach-Normalform. Der Beweis von Satz 5.7.11 konstruiert für G den PDA M = ({z0},Σ,Σ ∪ V, δ, z0, S) mit δ(z0, a, S) = {(z0, B)} δ(z0, b, B) = {(z0, ε)} δ(z0, a, B) = {(z0, BC)} δ(z0, b, C) = {(z0, ε)} δ(z0, ε, S) = {(z0, ε)} δ(z0, d, A) = ∅ in allen anderen Fällen Der PDA M hat (wie bereits erwähnt) nur einen Zustand und akzeptiert L(M) = {aibi | i ∈ N}. Eine Konfigurationsfolge für die Eingabe aaabbb ist (z0, aaabbb, S) ` (z0, aabbb,B) ` (z0, abbb,BC) ` (z0, bbb, BCC) ` (z0, bb, CC) ` (z0, b, C) ` (z0, ε, ε) 5.8. Deterministisch kontextfreie Sprachen Für deterministische Kellerautomaten verwenden wir Automaten mit Endzuständen. Wir er- lauben jedoch weiterhin ε-Übergänge. Damit der Übergang trotzdem deterministisch bleibt, darf ein ε-Übergang nur dann möglich sein, wenn bei gleichem obersten Kellersymbol kein Übergang bei Lesen eines Zeichens möglich ist. Die folgende Definition für deterministische Kellerautomaten sichert dies zu: Definition 5.8.1 (Deterministischer Kellerautomat, DPDA). Ein Kellerautomat mit Endzustän- den M = (Z,Σ,Γ, δ, z0,#, E) ist deterministisch (ein DPDA) wenn für alle (z, a,A) ∈ (Z,Σ,Γ) gilt: |δ(z, a,A)|+ |δ(z, ε, A)| ≤ 1. Die von DPDAs akzeptierten Sprachen heißen deterministisch kontextfrei. Satz 5.8.2. Die Sprache L = {w$w | w ∈ {a, b}∗} ist deterministisch kontextfrei. Beweis. SeiM = ({z0, z1, z2}, {a, b, $}, {#, A,B}, δ, z0,#, {z2}), wobei δ(z0, a,#) = {(z0, A#)} δ(z0, b,#) = {(z0, B#)} δ(z0, a, A) = {(z0, AA)} δ(z0, b, A) = {(z0, BA)} δ(z0, a, B) = {(z0, AB)} δ(z0, b, B) = {(z0, BB)} δ(z0, $, A) = {(z1, A)} δ(z0, $, B) = {(z1, B)} δ(z0, $,#) = {(z1,#)} δ(z1, a, A) = {(z1, ε)} δ(z1, b, B) = {(z1, ε)} δ(z1, ε,#) = {(z2, ε)} und δ(zi, c, C) = ∅ für alle anderen Fälle mit (zi, c, C) ∈ {z0, z1, z2} × {a, b, $} × {#, A,B}. Der PDAmit EndzuständenM erkenntL, denn vom Startzustand z0 ausmerkt er sich die gelesenen Symbole w auf dem Keller (im umgekehrter Reihenfolge) (A für a und B für b), nach Lesen von $ wechselt er in den Zustand z1 und kann dort den Keller abbauen, indem er w verarbeitet. Im Anschluss daran wechselt er mit dem untersten Kellersymbol in den akzeptierenden Zustand z2. Offensichtlich istM deterministisch (d. h. ein DPDA). Satz 5.8.3. Die Sprache L = {aibi | i ∈ N>0} ist deterministisch kontextfrei.
Beweis. Der PDA mit EndzuständenM = ({z0, z1, z2}, {a, b}, {#, A}, δ, z0,#, {z2}), wobei
δ(z0, a,#) = {(z0, A#)}
δ(z0, a, A) = {(z0, AA)}
δ(z0, b, A) = {(z1, ε)}
δ(z1, b, A) = {(z1, ε)}
δ(z1, ε,#) = {(z2, ε)}
Stand: 27. Mai 2021 84 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.8. Deterministisch kontextfreie Sprachen
und δ(zi, c, B) = ∅ für alle anderen Fälle mit (zi, c, B) ∈ {z0, z1, z2} × {a, b} × {#, A} erkennt L
und ist deterministisch (d. h. ein DPDA).
Für DPDAs ist jede Folge von Konfigurationen eindeutig, d. h. es gibt zu jeder Konfiguration
höchstens eine Nachfolgekonfiguration. Im Folgenden erwähnen wir einige wichtige Eigen-
schaften der deterministisch kontextfreien Sprachen, verzichten aber an dieser Stelle auf deren
Beweise:
Theorem 5.8.4 (Eigenschaften deterministisch kontextfreier Sprachen).
1. Das Wortproblem für deterministisch kontextfreie Sprachen kann in Linearzeit entschieden
werden.
2. Für deterministisch kontextfreie Sprachen gibt es eindeutige Grammatiken.
3. Deterministisch kontextfreie Sprachen sind unter Komplementbildung abgeschlossen.
Während das Theorem besagt, dass deterministische kontextfreie Sprachen bezüglich Komple-
mentbildung abgeschlossen sind, gilt dies nicht für Schnittbildung und Vereinigung:
Satz 5.8.5. Deterministisch kontextfreie Sprachen sind nicht abgeschlossen bezüglich Vereinigung
und Schnitt.
Beweis. Schnittbildung kann widerlegt werden durch die Schneiden der Sprachen {anbncm |
n,m ∈ N>0} und {anbmcm | n,m ∈ N>0}, denn beide Sprachen sind deterministisch kontext-
frei, ihr Schnitt hingegen ist die Sprache {anbncn | n ∈ N>0}, die –wie bereits gezeigt, Satz 5.4.3
– nicht kontextfrei ist.
Die Nichtabgeschlossenheit bezüglich Vereinigung ergibt sich aus der gültigen Gleichung
L1 ∩L2 = L1 ∪ L2: Deterministisch kontextfreie Sprachen sind abgeschlossen bezüglich Kom-
plementbildung und bei Abgeschlossenheit bezüglich der Vereinigung würde auch folgen, dass
deterministisch kontextfreie Sprachen auch abgeschlossen gegen Schnittbildung wären. Das
hatten wir aber gerade eben widerlegt.
Der folgende Satz zeigt, dass das Schneidenmit einer regulären Sprache, die Menge der (deter-
ministisch) kontextfreien Sprachen nicht verlässt:
Satz 5.8.6. Der Schnitt einer (deterministisch) kontextfreien Sprachen mit einer regulären Sprache
ist (deterministisch) kontextfrei.
Beweis. SeiM = (Z,Σ,Γ, δ, z0,#, E) ein PDAmit Endzuständen undM ′ = (Z ′,Σ, δ′, z′0, E
′) ein
DFA. Wir definieren den KellerautomatenM ′′ = (Z × Z ′,Σ, δ′′, (z0, z′0),#, E × E
′)mit
• ((zk, z′k), B1 · · ·Bm) ∈ δ
′′((zi, z
′
i), a, A) falls (zk, B1 · · ·Bm) ∈ δ(zi, a, A), δ
′(z′i, a) = z
′
k und
• ((zk, z′i), B1 · · ·Bm) ∈ δ
′′((zi, z
′
i), ε, A) falls (zk, B1 · · ·Bm) ∈ δ(zi, ε, A).
Dann gilt L(M ′′) = L(M) ∩ L(M ′), dennM ′′ simuliert den PDAM und den DFAM ′ gleichzei-
tig, und akzeptiert nur dann, wenn beide Automaten akzeptieren. Schließlich lässt sich leicht
prüfen, dassM ′′ ist deterministisch ist, wennM deterministisch ist.
D. Sabel, Skript FSK & TIMI,SoSe 2021 85 Stand: 27. Mai 2021
5. Kontextfreie Sprachen
5.9. Entscheidbarkeitsresultate
In diesem letzten Abschnitt des Kapitels prüfen wir die Entscheidbarkeit verschiedener Proble-
me für die Klasse der Typ 2-Sprachen. Das Wortproblem haben wir bereits betrachte und mit
dem CYK-Algorithmus gezeigt, dass es für kontextfreie Sprachen effizient entscheidbar ist.
Auch die Frage, ob eine kontextfreie Grammatik die leere Sprache erzeugt ist entscheidbar:
Satz 5.9.1. Das Leerheitsproblem für kontextfreie Grammatiken ist entscheidbar.
(?) Beweis. Sei L ein kontextfreie Sprache gegeben durch eine kontextfreie Grammatik. Wir
können entsprechend Definition 3.2.3 prüfen, ob ε ∈ L gilt. Ist dies der Fall, dann ist L nicht
leer. Anderenfalls sei G = (V,Σ, P, S) eine CFG in Chomsky-Normalform mit L(G) = L. Algo-
rithmus 9 markiert alle Variablen A ∈ V für die gilt {w ∈ Σ∗ | A⇒∗G w} 6= ∅.
Algorithmus 9 : ?Markierung der Variablen, die nichtleere Sprachen erzeugen
Eingabe : Grammatik G = (V,Σ, P, S) in Chomsky-Normalform
Ausgabe :MengeW ⊆ V aller Variablen, die nicht die leere Sprache erzeugen
Beginn
W := {A ∈ V | A→ a ∈ P, a ∈ Σ};
wiederhole
Walt := W ;
W := Walt ∪ {A | A→ BC ∈ P,B ∈Walt , C ∈Walt};
bisW = Walt ;
returnW
Ende
Nach Ausführung von Algorithmus 9 müssen wir nur testen, ob das Startsymbol S markiert
wurde (d. h. ob S ∈W gilt).
Satz 5.9.2. Das Endlichkeitsproblem für kontextfreie Sprachen ist entscheidbar.
(?) Beweis. Sei G = (V,Σ, P, S) eine CFG in Chomsky-Normalform. Sei n die Zahl aus dem
Pumping-Lemma für CFGs (wir können n = 2|V | setzen, wie der Beweis des Pumping-Lemmas
zeigt). Es gilt |L(G)| =∞ genau dann, wenn es ein Wort z ∈ L(G)mit n ≤ |z| < 2n gibt:
• „⇐=“: Wenn es ein Wort z ∈ L mit |z| ≥ n gibt, dann zeigt, dass Pumping-Lemma für
CFGs (Lemma 5.4.1), dass alle Worte uviwxiy ∈ L für i ∈ N liegen – das sind unendliche
viele Worte.
• „=⇒“: Nehme an, die Aussage sei falsch, d. h. es gibt keinWort z ∈ L(G) für n ≤ |z| < 2n,
aber trotzdemgilt |L(G)| =∞. Sei z ∈ L(G) das kürzesteWortmit |z| ≥ 2n. Das Pumping-
Lemmazeigt, dass esWorteu, v, w, x, y gibtmit z = uvwxy, |vx| > 0und |vwx| ≤ n, sodass
insbesondere uv0wx0y ∈ L gilt. Da |uv0wx0y| = |uwy| < |uvwxy| und |uwy| ≥ n gilt, war
z nicht minimal gewählt, was einen Widerspruch darstellt.
D. h. wir können das Endlichkeitsproblem entscheiden, indem wir alle Worte w ∈ Σ∗ der Länge
n ≤ |w| < 2n aufzählen und mit dem CYK-Algorithmus testen, ob w ∈ L(G) gilt.
Es gibt wesentlich effizientere Verfahren, um das Endlichkeitsproblem zu lösen (siehe z. B.
(Weg99)).
Stand: 27. Mai 2021 86 D. Sabel, Skript FSK & TIMI,SoSe 2021
5.9. Entscheidbarkeitsresultate
Die meisten anderen Fragestellungen (z. B. das Äquivalenzproblem und das Schnittproblem)
sind für kontextfreie Sprachen unentscheidbar.
5.9.1. ? Ein entscheidbares Problem
Ein entscheidbares Problem ist die Frage, ob eine deterministisch kontextfreie Sprache äqui-
valent zu einer regulären Sprache ist. Sei die deterministisch kontextfreie Sprache L1 durch
einen DPDA gegeben und die reguläre Sprache L2 durch einen DFA. Dann prüfe, ob L1∩L2 = ∅
und L1 ∩ L2 = ∅. Beides kann berechnet werden, da deterministische PDAs unter Komple-
mentbildung abgeschlossen sind und DFAs ebenso, ein deterministischer PDA für den Schnitt
konstruiert werden kann (siehe Satz 5.8.6) und das Leerheitsproblem für CFLs entscheidbar ist.
Schließlich folgt aus L1 ∩ L2 = ∅, dass L1 ⊆ L2 gilt, und aus L1 ∩ L2 = ∅ folgt, dass L2 ⊆ L1
gilt. Damit kann L1 = L2 entschieden werden.
D. Sabel, Skript FSK & TIMI,SoSe 2021 87 Stand: 20. Mai 2021
6
Kontextsensitive und Typ 0-Sprachen
In diesem Kapitel behandeln wir Typ 1- und Typ 0-Sprachen und lernen die Turingmaschine
alsMaschinenmodell kennen. Typ 0-Sprachenwerden genau von denTuringmaschinen erfasst,
während Typ 1-Sprachen von linear platz-beschränkten Turingmaschinen erfasst werden.
Wir erinnern an die Unterschiede zwischenTyp 2-, Typ 1- undTyp 0-Sprachen. Der Unterschied
zwischen kontextfreien (also Typ 2-) und kontextsensitiven (also Typ 1-) Sprachen besteht dar-
in, dass die linken Seiten der Produktionen bei kontextsensitiven Sprachen Satzformen sein
dürfen, während diese bei kontextfreien Sprachen nur einzelne Variablen sind. Der Unterschied
zwischen Typ 1- und Typ 0-Sprachen ist, dass für Produktionen `→ r der Typ 1-Grammatiken
|r| ≥ |`| geltenmuss, d. h. Anwenden der Produktionen erlaubt es nicht,Wörter zu schrumpfen.
Diese Grammatiken werden auch monotone Grammatiken genannt. In manchen Arbeiten und
Büchern werden kontextsensitive Grammatiken so definiert, dass alle Produktionen die Form
α1Aα2 → α1α3α2 haben müssen, wobei αi Satzformen sind und α3 6= ε gelten muss. Wir ver-
wenden (wie (Sch08)) die allgemeinere Definition, die jedoch die gleiche Menge an Sprachen
definiert.
6.1. ? Die Kuroda-Normalform für kontextsensitive Grammatiken
Ähnlich zur Chomsky-Normalform für kontextfreie Grammatiken, gibt es die sogenannte
Kuroda-Normalform (benannt nach dem japanischen Linguisten Sige-Yuki Kuroda) für kon-
textsensitive Grammatiken:
Definition 6.1.1. Eine Typ 1-Grammatik G = (V,Σ, P, S) ist in Kuroda-Normalform, falls alle
Produktionen in P einer der folgenden vier Formen entsprechen:
A→ a A→ B A→ BC AB → CD
wobei a ∈ Σ und A,B,C,D ∈ V .
Die ersten drei Formate sind auch für kontextfreie Sprachen erlaubt (wobei Regelformat 1 und 3
die erlaubten Formate für CFGs in Chomsky-Normal sind). Die Kuroda-Normalform „erweitert“
kontextfreie Grammatiken daher um Regeln der Form AB → CD.
Satz 6.1.2. Sei L eine kontextsensitive Sprache mit ε 6∈ L. Dann gibt es eine Grammatik in Kuroda-
Normalform, die L erzeugt.
Beweis. Da L eine kontextsensitive Sprache ist, gibt es eine Typ 1-Grammatik G = (V,Σ, P, S)
mit L(G) = L. Wende Algorithmus 10 mit G als Eingabe an. Die Ausgabegrammatik G′ erfüllt
die Aussage: Zunächst ist klar, dass die Ausgabe in Kuroda-Normalform ist, da nicht konforme
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 20. Mai 2021
6.2. Turingmaschinen
Produktionen durch konforme ersetzt werden. Wir begründen, dass die einzelnen Modifikatio-
nen die erzeugte Sprache nicht verändern:
Das Einführen der Produktionen Aa → a und das Entfalten der Produktionen A → B1 · · ·Bn
kennen wir bereits von der Herstellung der Chomsky-Normalform für kontextfreie Grammati-
ken und es verändert dort wie auch für kontextsensitive Grammatiken die Menge der ableitba-
ren Worte nicht.
Wir betrachten eine einzelne Ersetzung einer Regel A1 · · ·Am → B1 · · ·Bn (n ≥ m + 2) in
mehrere Regeln wie in Algorithmus 10 beschrieben. Sei G0 die Grammatik vor der Ersetzung
undG1 die Grammatik danach. Ein Ableitungsschritt αA1 · · ·Amα′ ⇒G0 αB1 · · ·Bnα
′ kann mit
G1 in mehreren Schritten durchgeführt werden: αA1 · · ·Amα′ ⇒G1 αB1D2A3 · · ·Amα
′ ⇒m−2G1
αB1 · · ·Bm−1Dmα′ ⇒∗G1 αB1 · · ·Bn−2Dn−1α
′ ⇒G1 αB1 · · ·Bnα
′
Da die Variablen Di neu sind, und jede Variable Di nur einmal in einer linken Seite einer
Produktion vorkommt, muss jede Ableitung für ein Wort w ∈ Σ∗ mit Grammatik G1 sämt-
liche neuen Produktionen in der gegebenen Art und Weise verwenden (anders können kei-
ne Terminalzeichen erzeugt werden), d. h. wenn αA1A2α′ ⇒G1 αB1D2α
′ ⇒kG1 w, dann las-
sen sich alle Ersetzungen von Di für i = 2, . . . , n − 1 in der Ableitung identifizieren und
es ergibt sich, dass α′ = A3 · · ·Anα′′ gelten muss und sich die Ableitung umsortieren lässt
zu αA1 · · ·Anα′′ ⇒k1G1 αB1 · · ·Bnα
′′ ⇒k2G1 w mit k = k1 + k2 und k1 > 0, was zeigt, dass
αA1 · · ·Anα′′ ⇒G0 αB1 · · ·Bnα
′′ ⇒k2G1 w. Diese Rückübersetzung in eine Ableitung für G0 kann
nun für die restlichen k2 Schritte αB1 · · ·Bnα′′ ⇒k2G1 w wieder angewendet werden. Wichtig ist
hierbei, dass diese Ersetzung terminiert, was stimmt, da k2 < k gelten muss.
6.2. Turingmaschinen
Die kontextfreien Sprachenwerden genau durch die (nichtdeterministischen) Kellerautomaten
erkannt. Typ 1- und Typ 0-Sprachen umfassenmehr Sprachen. Dahermuss das Automatenmo-
dell auchmehr können. Die wesentliche Einschränkung des Kellerautomaten ist, dass Speicher
nur in Form eines Kellers zur Verfügung steht auf den der Zugriff nur von oben möglich ist.
Z. B. kann die Sprache {aibici | i ∈ N>0} nicht von einem Kellerautomaten erkannt werden,
da das Verifizieren, dass genau i b’s auf i a’s folgen, den aufgebauten Keller für die a-Symbole
leer räumen muss, und daher die Anzahl i nicht mehr für das nötige Verifizieren von i c’s zur
Verfügung steht. Könnten wir den Keller von unten nach oben lesen, dann wäre es leicht, die
Sprache {aibici | i ∈ N>0} zu erkennen.
Daher betrachten wir als erweitertes Automatenmodell die 1936 vom britischen Informatiker
Alan Turing eingeführten Turingmaschinen. Ein informelles Schaubild zur Illustration ist in
Abb. 6.1. Turingmaschinen besitzen als Speicher ein (unendlich langes) Band, welches gelesen
und beschrieben werden kann und der Zugriff des Schreib-Lesekopfes ist in beide Richtungen
möglich.
Die formale Definition für Turingmaschinen ist:
Definition 6.2.1 (Turingmaschine). Eine Turingmaschine (TM) ist ein 7-Tupel M =
(Z,Σ,Γ, δ, z0,�, E) wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet,
D. Sabel, Skript FSK & TIMI,SoSe 2021 89 Stand: 20. Mai 2021
6. Kontextsensitive und Typ 0-Sprachen
Algorithmus 10 : Herstellung der Kuroda-Normalform
Eingabe : Eine Typ 1-Grammatik G = (V,Σ, P, S)mit ε 6∈ L(G)
Ausgabe : Eine Typ 1-Grammatik in Kuroda-Normalform die L(G) erzeugt.
Beginn
für alle a ∈ Σ tue
/* Führe neue Variable Aa für a ein, und ersetze Vorkommen von a durch das Nichtterminal */
G := (V ·∪{Aa},Σ, {`[Aa/a]→ r[Aa/a] | `→ r ∈ P}, S);
Ende
/* Nun sind alle Regeln von der Form A→ a oder A1 · · ·Am → B1 · · ·Bn mit Ai, Bj ∈ V */
für alle A→ B1 · · ·Bn ∈ P mit n > 2 tue
Seien C1, . . . , Cn−2 neue Variablen;
V := V ·∪{C1, . . . , Cn−2};
/* Ersetze in P die Produktion A→ B1 · · ·Bn durch neue Regeln */
P :=(P \ {A→ B1 · · ·Bn})
∪{A→ B1C1} ∪ {Ci → Bi+1Ci+1 | i = 1, . . . , n− 3} ∪ {Cn−2 → Bn−1Bn};
Ende
für alle A1 · · ·Am → B1 · · ·Bn ∈ P mit (m > 2 oder n > 2) und n ≥ m+ 2 tue
SeienD2, . . . , Dn−1 neue Variablen;
V := V ·∪{D2, . . . , Dn−1};
/* Ersetze A1 · · ·Am → B1 · · ·Bn durch neue Regeln */
P :=(P \ {A1 · · ·Am → B1 · · ·Bn})
∪{A1A2 → B1D2} ∪ {DiAi+1 → BiDi+1 | i = 2, . . . ,m− 1}
∪{Di → BiDi+1 | i = m, . . . , n− 2} ∪ {Dn−1 → Bn−1Bn}
Ende
für alle A1 · · ·An → B1 · · ·Bn+1 ∈ P mit n > 2 tue
SeienD2, . . . , Dn neue Variablen;
/* Ersetze in P die Produktion A1 · · ·An → B1 · · ·Bn+1 durch neue Regeln */
V := V ·∪{D2, . . . , Dn−1};
P :=(P \ {A1 · · ·An → B1 · · ·Bn}) ∪ {A1A2 → B1D2}
∪{DiAi+1 → BiDi+1 | i = 2, . . . , n− 1} ∪ {Dn → BnBn+1}
Ende
für alle A1 · · ·An → B1 · · ·Bn ∈ P mit n > 2 tue
SeienD2, . . . , Dn−1 neue Variablen;
V := V ·∪{D2, . . . , Dn−1};
/* Ersetze in P die Produktion A1 · · ·An → B1 · · ·Bn durch neue Regeln */
P :=(P \ {A1 · · ·An → B1 · · ·Bn}) ∪ {A1A2 → B1D2}
∪{DiAi+1 → BiDi+1 | i = 2, . . . , n− 2} ∪ {Dn−1An → Bn−1Bn}
Ende
Gebe die so entstandene Grammatik aus;
Ende
Stand: 20. Mai 2021 90 D. Sabel, Skript FSK & TIMI,SoSe 2021
6.2. Turingmaschinen
· · · a1 a2 a3 · · · an · · · Band mit Feldern (nach links und rechts unbeschränkt)
Schreib-Lesekopf (Bewegung nach links/rechts möglich)endliche
Steuerung
Abbildung 6.1.: Illustration der Turingmaschine
• Γ ⊃ Σ ist das (endliche) Bandalphabet,
• für eine deterministische TM ist δ : (Z × Γ) → (Z × Γ × {L,R,N}) die Zustandsüberfüh-
rungsfunktion (oder nur Überführungsfunktion) und für eine nichtdeterministische TM ist
δ : (Z × Γ) → P(Z × Γ × {L,R,N}) die Zustandsüberführungsfunktion (oder nur Über-
führungsfunktion)
• z0 ∈ Z ist der Startzustand,
• � ∈ Γ \ Σ ist das Blank-Symbol
• E ⊆ Z ist die Menge der Endzustände.
Wir verwenden auch DTM bzw. NTM für die deterministische Turingmaschine bzw. nicht-
deterministische Turingmaschine.
Wir beschreiben den Zustandswechsel informell für die Überführungsfunktion δ und zunächst
für die deterministische Turing-Maschine: Ein Eintrag δ(z, a) = (z′, b, x) bedeutet, dass die
Turingmaschine im Zustand z bei Lesen des Zeichens a auf der aktuellen Position des Schreib-
Lesekopfes auf dem Band, in den Zustand z′ wechselt, a durch b auf dem Band ersetzt und
den Kopf um eine Position nach links schiebt, falls x = L, um eine Position nach nach rechts
schiebt, falls x = R, bzw. den Kopf unverändert lässt, falls x = N (N steht hier für neutral).
Für die nichtdeterministische TM gilt entsprechend, dass (z′, b, x) ∈ δ(z, a) bedeutet, dass die
Turingmaschine vom Zustand z in den Zustand z′ wechseln kann, wenn a auf der aktuellen
Position des Schreib-Lesekopfes auf dem Band steht, und sie dabei a durch b auf der dem Band
ersetzt und den Kopf entsprechend x bewegt.
Analog zu PDAs definieren wir Konfigurationen für Turingmaschinen, um deren aktuellen Zu-
stand einschließlich Bandinhalt und Kopfposition zu beschreiben:
Definition 6.2.2 (Konfiguration einer Turingmaschine). Eine Konfiguration einer Turingmaschi-
ne ist ein Wort k ∈ Γ∗ZΓ∗
Eine Konfiguration wzw′ entspricht dabei einer Turingmaschine im Zustand z, sodass auf dem
Band ww′ steht (links und rechts davon ist der Bandinhalt jeder Zelle des Bandes das Blank-
Zeichen�) und der Schreib-Lesekopf steht auf dem ersten Symbol vonw′. Das Wortww′ ist der
Bandabschnitt, der schon von der Turing-Maschine bearbeitet wurde (oder Teil der Eingabe
ist).
Initial befindet sich die TM im Startzustand z0, auf dem Band steht das Eingabewort und der
Schreib-Lesekopf steht auf dem ersten Symbol des Eingabeworts1:
1Falls die Eingabe das leere Wort ε ist, steht der Schreib-Lesekopf auf einem Blank-Symbol
D. Sabel, Skript FSK & TIMI,SoSe 2021 91 Stand: 20. Mai 2021
6. Kontextsensitive und Typ 0-Sprachen
Definition 6.2.3 (Startkonfiguration einer TM). Für ein Eingabewortw ist die Startkonfiguration
einer TMM = (Z,Σ,Γ, δ, z0,�, E) das Wort z0w.
Die Transitionsrelation einer TuringmaschineM wird als binäre Relation `M auf den Konfigu-
rationen vonM definiert:
Definition 6.2.4 (Transitionsrelation für Konfigurationen einer TM). Sei
M = (Z,Σ,Γ, δ, z0,�, E) eine TM. Die binäre Relation `M ist definiert durch die folgenden
Fälle (wobei δ(z, a) = (z′, c, x) im Falle einer NTM meint (z′, c, x) ∈ δ(z, a)):
• b1 · · · bmza1 · · · an `M b1 · · · bmz′ca2 · · · an, wenn δ(z, a1) = (z′, c,N),m ≥ 0, n ≥ 1, z 6∈ E
• b1 · · · bmza1 · · · an `M b1 · · · bmcz′a2 · · · an, wenn δ(z, a1) = (z′, c, L),m ≥ 1, n ≥ 1, z 6∈ E
• b1 · · · bmza1 · · · an `M b1 · · · bmca2z′a3 · · · an, wenn δ(z, a1) = (z′, c, R),m ≥ 0, n ≥ 2, z 6∈ E
• b1 · · · bmza1 `M b1 · · · bmca2z′�, wenn δ(z, a1) = (z′, c, R) undm ≥ 0, z 6∈ E
• za1 · · · an `M z′�ca2 · · · an, wenn δ(z, a1) = (z′, c, L) und n ≥ 1, z 6∈ E
Mit `iM bezeichnen wir die i-fache Anwendung von `M , mit `
∗
M die reflexiv-transitive Hülle von `M .
Wir verzichten manchmal auf den IndexM und schreiben nur `, wenn die betrachtete Turingma-
schine eindeutig ist.
In allen Fällen verbieten wir Nachfolgekonfigurationen, wenn der aktuelle Zustand ein Endzu-
stand ist2.
Die ersten drei Fälle von Definition 6.2.4 sind die Standardfälle und unterscheiden sich dar-
in, ob der Schreib-Lesekopf neutral, nach links oder nach rechts wechselt. Der vierte Fall be-
schreibt den Fall, dass der Schreib-Lesekopf nach rechts wandert, aber das Band rechts vom
Schreib-Lesekopf noch nicht von der TM bearbeitet wurde: In diesem Fall wird ein Blank-
Symbol rechts neben dem Schreib-Lesekopf erzeugt. Der fünfte Fall tritt ein, wenn die TMnach
links in den Bereich des Bandes kommt, der noch nicht bearbeitet wurde. Auch dann wird ein
Blank-Symbol eingefügt, damit der Schreib-Lesekopf nach links bewegt werden kann.
Nun haben wir alle Definitionen eingeführt, um die akzeptierte Sprache einer Turingmaschine
zu definieren. Informell sind dies alle Worte, die als Eingabe verwendet, dazu führen, dass die
Turingmaschine einen akzeptierenden Zustand erreicht (bzw. im nichtdeterministischen Fall:
erreichen kann).
Definition 6.2.5 (Akzeptierte Sprache einer TM). SeiM = (Z,Σ,Γ, δ, z0,�, E) eine TM. Die von
M akzeptierte Sprache L(M) ist definiert als
L(M) := {w ∈ Σ∗ | ∃u, v ∈ Γ∗, z ∈ E : z0w `∗M uzv}
Beachte, dass für alle Turingmaschinen der Form M = (Z,Σ,Γ, δ, z0,�, E) mit z0 ∈ E gilt
L(M) = Σ∗, denn diese Turingmaschinen akzeptieren jede Eingabe sofort.
Das folgende Beispiel ist auch in (Sch08, S.75) zu finden:
2Es gibt verschiedene Varianten der Definition, wie sich eine Turingmaschine im Endzustand verhält: Z. B. macht
(Sch08) gar keine Annahme (sodass die Turingmaschine weiter rechnen dürfte), (HMU06) treffen die Annahme,
dass die TM anhält, wenn sie in einem akzeptierenden Zustand ist (was analog zu unserem Vorgehen ist). Eine
andere Möglichkeit ist es δ(q, a) = (q, a,N) für alle q ∈ E und a ∈ Γ zu fordern, die Turingmaschine ist in
diesem Fall im Endzustand gefangen. Schließlich kannman auch δ als partielle Funktion sehen, die für die Fälle
δ(q, a)mit q ∈ E undefiniert ist. Alle Formalismen sind äquivalent und ineinander überführbar.
Stand: 20. Mai 2021 92 D. Sabel, Skript FSK & TIMI,SoSe 2021
6.3. Linear beschränkte Turingmaschinen und kontextsensitive Sprachen
Beispiel 6.2.6. Die TuringmaschineM = ({z0, z1, z2, z3}, {0, 1}, {0, 1,�}, δ, z0,�, {z3}) mit
δ(z0, 0) = (z0, 0, R) δ(z0, 1) = (z0, 1, R) δ(z0,�) = (z1,�, L)
δ(z1, 0) = (z2, 1, L) δ(z1, 1) = (z1, 0, L) δ(z1,�) = (z3, 1, N)
δ(z2, 0) = (z2, 0, L) δ(z2, 1) = (z2, 1, L) δ(z2,�) = (z3,�, R)
δ(z3, 0) = (z3, 0, N) δ(z3, 1) = (z3, 1, N) δ(z3,�) = (z3,�, N)
interpretiert ein Eingabewort w ∈ {0, 1}∗ als Binärzahl und addiert 1 hinzu. Im Startzustand z0
läuft die Maschine nach rechts, ohne die Eingabe zu verändern, bis sie das Blank-Symbol � liest
und in den Zustand z1 wechselt. In z1 versucht sie 1 zur aktuellen Ziffer hinzu zu addieren: Gelingt
ihr das ohne Übertrag (die Ziffer ist 0), wechselt sie in z2 und läuft dann ohne weitere Veränderung
zum Anfang und wenn sie das Blank-Symbol erkannt hat, wechselt sie in den Akzeptanzzustand z3.
Entsteht beim Addieren von 1 ein Übertrag, so muss auch 1 zur nächsten Ziffer links davon addiert
werden. Daher verbleibt der Automat in Zustand z1 und der Lesekopf wechselt nach links. Falls der
Übertrag auch nach Lesen der gesamten Zahl noch entsteht (z. B. bei 1111 als Eingabe), so wird eine
neue erste Stelle durch den Fall δ(z1,�) = (z3, 1, N) hinzugefügt: Die 1 ersetzt das Blank-Symbol
links von der Zahl, anschließend wird in den akzeptierenden Zustand z3 gewechselt.
Betrachte z. B. die Zahl 0011 als Eingabe. Dann läuft die Turingmaschine wie folgt:
z00011 ` 0z0011 ` 00z011 ` 001z01 ` 0011z0� ` 001z11� ` 00z110� ` 0z1000� ` z20100� `
z2�0100� ` �z30100�
6.3. Linear beschränkte Turingmaschinen und kontextsensitive Sprachen
Wir betrachten als nächstes spezielle Turingmaschinen, die nur den Platz auf dem Band in
Anspruch nehmen, den die Eingabe zur Verfügung stellt, d. h. diese Turingmaschinen verlas-
sen die Eingabe nie mit dem Schreib-Lesekopf. Wir nennen diese Turingmaschinen linear be-
schränkte Turingmaschinen. Damit diese Turingmaschinen das rechte Ende der Eingabe erken-
nen können, markieren wir das letzte Symbol der Eingabe: Hierfür verwenden wir eine Ko-
pie des Alphabets. Sei Σ = {a1, . . . , an} ein Alphabet, dann bezeichnen wir mit Σ̂ das Alpha-
bet Σ̂ = {â1, . . . , ân}. Eine Eingabe a1 · · · am auf dem Band der Turingmaschine wird dement-
sprechend als a1 · · · am−1âm dargestellt und die Turingmaschine arbeitet auf dem Alphabet
Σ′ = Σ ∪ Σ̂. Beachte, dass wir das linke Ende des Bandes nicht markieren, da dies die Tu-
ringmaschine selbst kann, indem sie ganz am Anfang das aktuelle Symbol auf dem Band durch
ein gleichartiges aber markiertes Symbol ersetzt.
Definition 6.3.1. Eine NTM M = (Z,Σ ∪ Σ̂,Γ, δ, z0,�, E) heißt linear beschränkt (LBA,
linear bounded automaton), wenn für alle a1 · · · am ∈ Σ+ und alle Konfigurationen uzv mit
z0a1 · · · am−1âm `∗M uzv gilt: |uv| ≤ m.
Die akzeptierte Sprache eines LBAM ist
L(M) := {a1 · · · am ∈ Σ∗ | z0a1 · · · am−1âm `∗M uzv wobei u, v ∈ Γ
∗ und z ∈ E}
Beachte, dass LBAs als nichtdeterministische Turingmaschinen definiert sind.
Im folgenden Abschnitt werden wir den Satz von Kuroda beweisen:
Theorem 6.3.2 (Satz von Kuroda). Kontextsensitive Sprachen werden genau von den LBAs er-
kannt.
D. Sabel, Skript FSK & TIMI,SoSe 2021 93 Stand: 20. Mai 2021
6. Kontextsensitive und Typ 0-Sprachen
(?) Beweis. Dies wird durch Sätze 6.3.3 und 6.3.6 gezeigt.
6.3.1. ? Beweis des Satzes von Kuroda
Satz 6.3.3. Jede kontextsensitive Sprache wird von einem LBA erkannt.
Beweis. Sei L eine Typ 1-Sprache. O.B.d.A. nehmen wir an, dass G = (V,Σ, P, S) eine Gram-
matik in Kuroda-Normalform ist. Wir konstruieren eine nichtdeterministische Turingmaschi-
ne, die als Bandalphabet Γ zumindest ((Σ ∪ V ) ∪ Σ̂ ∪ V ∪�) ⊆ Γ verwendet. In den folgenden
Erläuterung erwähnen wir das speziell markierte letzte Zeichen auf dem Band nicht explizit,
gehen aber davon aus, dass der LBA entsprechend Rücksicht darauf nimmt und notwendige
Ersetzungen macht bzw. definierte δ-Übergänge hat. Der LBA versucht (nichtdeterministisch)
aus einem Wort w ∈ Σ∗ das Startsymbol S der Grammatik rückwärts herzuleiten, indem er
Produktionen ` → r ∈ P rückwärts auf das Wort anwendet, d. h. der LBA sucht nach Vorkom-
men von r in der aktuellen Eingabe und ersetzt diese durch die linke Seite `. Für Produktionen
A → a,A → B, AB → CD verändern diese Ersetzungen die Wortlänge nicht. Für den Fall
A → BC muss das Teilwort BC durch A ersetzt werden. Dies geschieht indem BC durch �A
ersetzt wird und anschließend werden alle Zeichen von links um 1 nach rechts verschoben.
Wenn auf dem Band ausschließlich das Startsymbol S steht, dann geht der LBA in einen akzep-
tierenden Zustand. Beachte, dass der LBA nichtdeterministisch ist, denn er kann einerseits frei
wählen, welche Produktion aus P rückwärts angewendet wird und andererseits für eine feste
Produktion `→ r kann er eines von verschiedenen Vorkommen von r im aktuellen Bandinhalt
auswählen.
Da G in Kuroda-Normalform ist, kann die Suche nach einer rechten Seite r, folgendermaßen
„programmiert“ werden: Beginne links an der Eingabe und laufe diese durch. Speichere im ak-
tuellen Zustand, dass Symbol links vom Schreib-Lesekopf (d. h. für jedes Symbol in Σ gibt es
einen eigenen Zustand) und entscheide mit dem aktuellen Symbol, ob es eine passende Pro-
duktion gibt (da rechte Seiten von Produktionen in Kuroda-Normalform ausmaximal 2 Zeichen
bestehen, genügt dies).
Für Produktionen A → a und A → B wird das aktuelle Symbol durch A ersetzt, anschlie-
ßend wird der nächste Schritt gestartet (d. h. es gibt einen Zustand, der den Schreib-Lesekopf
nach links fährt). Für Produktionen AB → CD, wird B geschrieben und der Kopf nach links
wechseln, dann A geschrieben und der nächste Schritt gestartet. Für Produktionen A → BC
schreibeA und wechsele nach links, schreibe�, fahre ganz nach links und starte Prozedur zum
Verschieben der Zeichen nach rechts, solange bis die Lücke geschlossen ist. Diese Prozedur
funktioniert so, dass der Zustand zunächst das linkeste Symbol speichert, und anschließend
nach rechts über das Band läuft und das gespeicherte Symbol mit dem gelesenen Symbol ver-
tauscht. Das Vertauschen wir beendet nachdem �mit einem anderen Symbol vertauscht wird.
Da für alle Produktionen `→ r ∈ P gilt |`| ≤ |r| werden nur Teilworte r durch gleichlange oder
kürzere Teilworte l ersetzt, daher kommt die Turingmaschine mit dem durch die Eingabe zur
Verfügung gestellten Platz aus und kann als LBA programmiert werden.
Bemerkung 6.3.4. Die Konstruktion im Beweis des letzten Satzes kann auch für beliebige
Typ 1-Grammatiken (die nicht notwendigerweise in Kuroda-Normalform sind) angepasst werden.
Die Suche nach einem Teilwort r wird dann komplizierter, da innerhalb der Zustände der TM kodiert
nicht nur ein Zeichen gespeichert werden muss, sondern maximal q − 1 Zeichen, wobei q die Länge
Stand: 20. Mai 2021 94 D. Sabel, Skript FSK & TIMI,SoSe 2021
6.3. Linear beschränkte Turingmaschinen und kontextsensitive Sprachen
der längsten rechte Seite aller Produktionen ist. Trotzdem reichen endlich viele Zustände dafür aus
und die TM kommtmit linear beschränktem Platz aus (und kann daher als LBA konstruiert werden).
Für Typ 0-Grammatiken kann es Produktionen der Form ` → r mit |r| < |`| geben, sodass ei-
nerseits mehr Platz benötigt wird und andererseits die Konstruktion der TM etwas aufwendiger
ist, da sie Platz schaffen muss (was aber trotz allem möglich ist). Daher kann man auch eine
NTMM (aber keinen LBA!) für Typ 0-Grammatiken G konstruieren, sodass L(M) = L(G) gilt.
Satz 6.3.5. Jede Typ i-Sprache (für i=0,1,2,3) wird von einer nichtdeterministischen Turing-
Maschine akzeptiert.
Wir betrachten nun die andere Richtung:
Satz 6.3.6. SeiM ein LBA. Dann ist L(M) eine kontextsensitive Sprache.
Beweis. Basierend auf dem LBAM = (Z,Σ∪Σ̂,Γ, δ, z0,�, E) konstruieren wir eine kontextsen-
sitive Grammatik G, sodass L(G) = L(M) gilt. Die Idee für die Grammatik ist es, zunächst ein
beliebiges Wort aus Σ∗ zu generieren, dann den Ablauf der Turingmaschine auf diesem Wort
mithilfe der Grammatik zu simulieren, und schließlich falls die Turingmaschine akzeptiert, das
Wort endgültig herzustellen. Damit das Ganze gelingt, wird zunächst nicht nur das Wort aus
Σ∗, sondern gleichzeitig die Startkonfiguration der Turingmaschine erzeugt. Die gleichzeiti-
ge Erzeugung funktioniert, indem wir ganz spezielle Symbole für die Menge der Variablen der
Grammatik verwenden: Einerseits neueVariablenS undAund andererseits Tupel (diewir über-
einander schreiben)
〈
u
v
〉
wobei u ∈ Σ und v ∈ Γ ∪ (ZΓ). Die unteren Komponenten der Tupel
sind entweder Bandinhalte oder ein Paar bestehend aus Zustand und Bandinhalt. Die Regeln
zur gleichzeitigen Erzeugung eines Wortes w ∈ Σ∗ und der Startkonfiguration vonM für das
Wort w sind:
P1 :=
{
S → A
〈
a
â
〉
| a ∈ Σ
}
∪
{
A→ A
〈
a
a
〉
| a ∈ Σ
}
∪
{
A→
〈
a
z0a
〉
| a ∈ Σ
}
Worte w ∈ L(M) mit |w| < 2 können dadurch nicht erzeugt werden, diese werden durch extra
Regeln direkt aus S erzeugt (das sind nur endlich viele): SeiP0 = {S → w | |w| < 2, w ∈ L(M)}.
Für alle anderen Worte w = a1 · · · an ∈ Σ∗ gilt S ⇒P1 A
〈
an
ân
〉
⇒∗P1
〈
a1
z0a1
〉〈
a2
a2
〉
· · ·
〈
an
ân
〉
Lesen wir die obere Reihe des erzeugten Wortes, ist dies w und die untere Reihe entspricht der
Startkonfiguration z0a1 · · · an−1ân vonM für w.
Der nächste RegelsatzP2 bildet die Transitionsrelation fürM anhand derDefinition von δ nach:
Alle diese Regeln operieren auf den Tupelsequenzen
〈
a1
v1
〉
· · ·
〈
an
vn
〉
und lassen die obere Folge
von Buchstaben unverändert (da sie nur die Konfiguration des LBA verändern). d. h. wenn wir
Regeln P unten2 haben, dann können wir den gesamten Regelsatz definieren durch
P2 :=
{〈
a
u
〉〈
b
v
〉
→
〈
a
u′
〉〈
b
v′
〉
| a, b ∈ Σ und uv → u′v′ ∈ P unten2 (mit u, v, u
′, v′ ∈ Γ ∪ (ZΓ))
}
∪
{〈
a
u
〉
→
〈
a
u′
〉
| a ∈ Σ und u→ u′ ∈ P unten2 (mit u, u
′ ∈ Γ ∪ (ZΓ))
}
D. Sabel, Skript FSK & TIMI,SoSe 2021 95 Stand: 20. Mai 2021
6. Kontextsensitive und Typ 0-Sprachen
Wir definieren nun P unten2 :
P unten2 :={c za→ z
′c b | für alle c ∈ Γ und (z′, b, L) ∈ δ(z, a)}
∪{za c→ b z′c | für alle c ∈ Γ und (z′, b, R) ∈ δ(z, a)}
∪{za→ zb | für alle c ∈ Γ und (z′, b,N) ∈ δ(z, a)}
Es lässt sich prüfen, dass aus wzw′ `∗M uz
′u′ auch wzw′ ⇒∗
P unten2
uz′u′ folgt, wobei die Darstel-
lung von z, z′ entsprechend geändert ist, d. h. sie tauchen in der Ableitung nur verbunden mit
einem Zeichen aus Γ auf (hier mit dem ersten Zeichen von w′ bzw. u′).
Der dritte Regelsatz P3 hat die Aufgabe nach Akzeptieren des LBA, aus den Tupelsequenzen
das Wort a1 · · · an zu erzeugen.
P3 :=
{〈
b
za
〉
→ b | z ∈ E, a ∈ Γ, b ∈ Σ
}
∪
{〈
b
a
〉
→ b | a ∈ Γ, b, b′ ∈ Σ
}
Es gilt
〈
a1
b1
〉
· · ·
〈
am
bm
〉〈
am+1
zbm+1
〉〈
am+2
bm+2
〉
· · ·
〈
an
bn
〉
⇒∗P3 a1 · · · an. Beachte, dass die Regeln aus
P3 auch in Nicht-Zielzuständen einzelne Tupel
〈
ai
bi
〉
in ai umformen können, aber niemals ein
Tupel
〈
ai
zbi
〉
mit z 6∈ E. Da die
〈
ai
zbi
〉
Variablen der Grammatik sind, lässt sich daher kein Wort
aus Σ∗ herleiten.
Schließlich sei G = ¸
(
{S,A} ∪
{〈
u
v
〉
| u ∈ Σ, v ∈ Γ ∪ (ZΓ)
}
,Σ, P0 ∪ P1 ∪ P2 ∪ P3, S
)
. Dann
gilt für alle w ∈ Σ∗: S ⇒∗G w genau dann, wenn w ∈ L(M).
Des weiteren gilt, dassG eine kontextsensitive Grammatik ist, da es keine verkürzenden Regeln
gibt.
6.4. Turingmaschinen und Typ 0-Grammatiken
Satz 6.4.1. Die durch (allgemeine) nichtdeterministischen Turingmaschinen akzeptierten Sprachen
sind genau die Typ 0-Sprachen.
(?) Beweisskizze. Wir können die Konstruktionen aus dem Beweis von Satz 6.3.6 anpassen, um
für jede nichtdeterministische Turingmaschine eine Typ 0-Grammatik zu definieren, so dass
die erzeugte Sprache genau die von der NTM akzeptierte Sprache ist. Die Anpassungen sind:
Zusätzliche Tupel
〈
$
c
〉
für c ∈ Γ∪ZΓ und $ ein neues Symbol, dass anzeigt, dass an dieser Stelle
keinWort mehr steht. Anschließend können Konfigurationen dargestellt werden, die länger als
das Eingabewort sind, indemdas Eingabewortmit $-Symbolen aufgefüllt wird, d. h. die Satzfor-
men für solche Konfiguration sind z. B.
〈
a1
c1
〉
· · ·
〈
an
cn
〉〈
$
cn+1
〉
· · ·
〈
$
zicm
〉〈
$
cr
〉
, wenn a1 · · · an
das Eingabewort war und c1 · · · cm−1zicm · · · cr die Turingmaschinenkonfiguration ist. Im Re-
gelsatz P3 müssen dann auch Regeln der Form
〈
$
ci
〉
→ ε eingefügt werden, die es erlauben die
unnötigen Teile zu Löschen (diese Regeln sind dann vom Typ 0, aber nicht mehr kontextsensi-
tiv!). Diese Konstruktion und Satz 6.3.5 zeigen daher die Aussage.
Stand: 20. Mai 2021 96 D. Sabel, Skript FSK & TIMI,SoSe 2021
6.5. ? LBA-Probleme
Da nichtdeterministische Turingmaschinen durch deterministische Turingmaschinen simu-
liert werden können, indem alle Berechnungsmöglichkeiten der NTM nacheinander von der
DTM durchprobiert werden, gilt der letzte Satz auch für deterministische Turingmaschinen
(Der Unterschied zwischen NTMs und DTMs kommt erst zum Tragen, wenn wir das Laufzeit-
verhalten betrachten, wie wir es später im Kapitel zur Komplexitätstheorie machen werden).
6.5. ? LBA-Probleme
Für LBAs ist die Frage, ob deterministische LBAs genau die gleichen Sprachen erkennen wie nicht-
deterministische LBAs bis heute ungeklärt (das sogenannte (erste) LBA-Problem). Das zweite
LBA-Problem ist die Frage, ob die kontextsensitiven Sprachen unter Komplementbildung ab-
geschlossen sind. Dieses Problem wurde 1964 von Kuroda formuliert und 1987 sowohl von Neil
Immerman als auch Róbert Szelepcsényi unabhängig gelöst und überraschenderweise positiv
beantwortet:
Theorem 6.5.1 (Satz von Immerman und Szelepcsényi). Die kontextsensitiven Sprachen sind
abgeschlossen unter Komplementbildung.
Skizze. Sei L ⊆ Σ∗ eine kontextsensitive Sprache. Sei G = (V,Σ, P, S) eine Typ 1-Grammatik
mit L(G) = L. Wir konstruieren einen LBA, der L = Σ∗ \ L akzeptiert.
Sei w ein Wort aus Σ∗. Der LBA berechnet zunächst die exakte Anzahl a ∈ N der von S aus
erzeugbaren Satzformen der Länge n ≤ |w|. Beachte, dass diese Zahl a nicht größer als (|V | +
|Σ|+ 1)n ist und daher in (k+ 1) ·n Bits dargestellt werden kann, welche auf das Band der LBAs
passen (indem Gruppen zu k + 1-Bits in einem Symbol zusammengefasst werden).
Anschließend wird jede Satzform u der Länge ≤ |n| aus (V ∪ Σ∗) aufgezählt (außer w selbst)
und jedes mal überprüft, ob S ⇒∗G u gilt. Dabei wird ein Zähler geführt, der hochgezählt wird,
falls S ⇒∗G u gilt und gleich bleibt, falls die Ableitung nicht möglich ist. Wenn der Zähler die
Zahl a erreicht, akzeptiert der LBA: Dann wurden alle aus S ableitbaren Worte der Länge ≤ n
aufgezählt, ohne dass w darunter war. Also liegt w 6∈ L und damit w ∈ L.
Es bleibt noch zu klären, wie die Zahl a berechnet wird. Sei a(m,n) die Zahl der Satzformen,
die in höchstensm Schritten aus S erzeugbar sind und deren Länge n nicht überschreitet (d. h.
a(m,n) = |{w ∈ (V ∪ Σ)∗ | |w| ≤ n, S ⇒≤m w}|). Wenn wir a(m,n) berechnen können,
können wir auch a berechnen indem wir mit i = 0 starten, i jeweils um 1 erhöhen und stets
a(i, n) berechnen, bis a(i+ 1, n) = a(i, n) gilt (was passieren muss, da der Baum der möglichen
Ableitungen von S zu einer Satzform der festen Länge n endlich verzweigend ist, sind die Pfade
allesamt endlich).
Der Algorithmus zur Berechnung von a(m,n) startet mit a(0, n) = |{S}| = 1 und berechnet
result = a(m+ 1, n) durch Eingabe von a(m,n): Zunächst sei result = 0. Der Algorithmus zählt
in einer äußeren Schleife alle Satzformen u bis zur Länge n auf und in einer inneren Schleife
zählt er erneut alle Satzformen v bis zur Länge n auf. Vor Beginn der inneren Schleife wird ein
Zähler count mit 0 initialisiert. In der inneren Schleife wird nichtdeterministisch überprüft ob
S ⇒≤m v gilt (wenn ja, wird count um 1 erhöht) und ob v = u oder v ⇒ u gilt (wenn ja, wird
result um1erhöht). NachAblauf der inneren Schleifewird überprüft, ob count = a(m,n) gilt. Ist
dies nicht der Fall, wird diese nichtdeterministische Berechnung verworfen. Anderenfalls war
die Maschine auf einem richtigen nichtdeterministischen Pfad und hat in der inneren Schleife
D. Sabel, Skript FSK & TIMI,SoSe 2021 97 Stand: 20. Mai 2021
6. Kontextsensitive und Typ 0-Sprachen
für alle in ≤ m-Schritten aus S herleitbaren Satzformen v (das sind a(m,n) viele) geprüft, ob
durch Verlängern mit = oder⇒ (d. h. in ≤ m + 1 Schritten) eine der Satzformen u herleitbar
ist. d. h. result enthält den Wert a(m+ 1, n).
Stand: 20. Mai 2021 98 D. Sabel, Skript FSK & TIMI,SoSe 2021
7
Zusammenfassung und Überblick
Wir haben in diesemTeil die formalen Sprachen und ihre Klassifizierung in Form der Chomsky-
Hierarchie kennengelernt. In diesemKapitel gebenwir übersichtsartig an, welche Formalismen
und Resultate gelten.
Die folgende Tabelle gibt einen Überblick über die Sprachklassen (einschließlich der determi-
nistisch kontextfreien Sprachen, die eine echte Teilmenge der Typ 2-Sprachen und eine echte
Obermenge der Typ 3-Sprachen sind), den dazu passendenGrammatiken, Automatenmodellen
und sonstigen Modellen, die wir kennengelernt haben.
Sprache Grammatik Automat sonstiges
Typ 3 reguläre Grammatik endlicher Automat (DFA
und NFA)
regulärer
Ausdruck
deterministisch
kontextfrei
LR(k)-Grammatik Deterministischer Kellerau-
tomat (DPDA)
Typ 2 kontextfreie Grammatik Kellerautomat (PDA) (nicht-
deterministisch)
Typ 1 kontextsensitive Gramma-
tik
linear beschränkte Turing-
maschine (LBA) (nichtde-
terministisch)
Typ 0 Typ 0-Grammatik Turingmaschine (determi-
nistisch und nichtdetermi-
nistisch)
Beachte, dass wir den Formalismus der LR(k)-Grammatiken nicht behandelt haben. Diese
Grammatiken spielen eine große Rolle im Compilerbau. Eine Definition ist z. B. in (Weg99) zu
finden. Die LR(k)-Grammatiken erzeugen genau die deterministisch kontextfreien Sprachen.
Trennende Beispiele zwischen den verschiedenen Sprachklassen sind:
• Die Sprache {anbn | n ∈ N} ist Typ 2 aber nicht vom Typ 3.
• Die Sprache {w ∈ {a, b}∗ | w ist Palindrom} ist Typ 2 aber nicht deterministisch-
kontextfrei.
• Die Sprache {anbncn | n ∈ N} ist Typ 1 aber nicht vom Typ 2.
• Die Sprache H = {M#w | die durch M beschriebene TM hält bei Eingabe w} ist Typ 0
aber nicht vom Typ 1.
(Die Sprache H ist das Halteproblem, welches wir später noch genauer betrachten und
erläutern).
• Das Komplement vonH ist nicht vom Typ 0.
Stand: 20. Mai 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
7. Zusammenfassung und Überblick
Bezüglich der Automatenmodelle zeigt die folgende Tabelle die deterministischen Varianten
und die nichtdeterministischen Varianten und beantwortet (soweit bekannt), ob die Modelle
äquivalent sind, d. h. genau dieselbe Sprachklasse akzeptieren:
Deterministischer Automat nichtdeterministischer Automat äquivalent?
DFA NFA ja
DPDA PDA nein
DLBA LBA unbekannt
DTM NTM ja
Es gelten die folgenden Abschlusseigenschaften für die verschiedenen Sprachklassen:
Sprachklasse Schnitt Vereinigung Komplement Produkt Kleenescher Abschluss
Typ 3 ja ja ja ja ja
deterministisch
kontextfrei
nein nein ja nein nein
Typ 2 nein ja nein ja ja
Typ 1 ja ja ja ja ja
Typ 0 ja ja nein ja ja
Die folgenden Entscheidbarkeiten gelten für die betrachteten Entscheidbarkeitsprobleme:
Sprachklasse Wortproblem Leerheitsproblem Äquivalenzproblem Schnittproblem
Typ 3 ja ja ja ja
deterministisch
kontextfrei
ja ja ja nein
Typ 2 ja ja nein nein
Typ 1 ja nein nein nein
Typ 0 nein nein nein nein
Die Komplexität des Wortproblems für die verschiedenen Sprachklassen ist:
Sprachklasse
Typ 3, DFA gegeben lineare Komplexität
deterministisch kontextfrei lineare Komplexität
Typ 2, Chomsky-Normalform gegeben O(n3)
Typ 1 exponentiell
Typ 0 unlösbar
Stand: 20. Mai 2021 100 D. Sabel, Skript FSK & TIMI,SoSe 2021
Teil II.
Berechenbarkeitstheorie
Stand: 20. Mai 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
8
Der intuitive Berechenbarkeitsbegriff
Jeder der schon einmal programmiert hat, hat ein Gefühl dafür, was mit einem Computerpro-
gramm berechnet werden kann, und eventuell auch dafür, was mit einem Computerprogramm
nicht berechnetwerden kann. Nachzuweisen, dass ein Problemnichtmit demComputer berech-
net werden kann, erscheint jedoch ziemlich schwierig.
Diese Frage formal zu fassen, war das Anliegen einiger berühmter Informatiker und Mathema-
tiker, insbesondere zu nennen sind Alan Turing und Alonzo Church.
Wir schränken unsere Überlegungen zunächst auf natürliche Zahlen und Funktionen über den
natürlichen Zahlen ein und definieren einen formalen Begriff der Berechenbarkeit für solche
Funktionen. Ein Problem, das dabei entsteht, ist, dass wir argumentieren müssen, dass diese
Definition mit dem intuitiven Begriff der Berechenbarkeit übereinstimmt (beweisen können
wir das nicht, da der intuitive Begriff nicht formal definiert ist).
Definition 8.0.1 (Berechenbarkeit). Eine Funktion f : Nk → N nennen wir berechenbar, wenn
es einen Algorithmus gibt (z.B. in Form eines Computerprogramms einer modernen Programmier-
sprache, wie C, Java, Haskell,. . . ), welches f berechnet. D.h. wenn das Programm mit der Eingabe
(n1, . . . , nk) ∈ Nk startet, dann stoppt der Algorithmus nach endlichen vielen Berechnungsschritten
und liefert den Wert von f(n1, . . . , nk) als Ergebnis. Falls f eine partielle Funktion ist (d. h. nicht
für alle Eingaben definiert ist), dann soll der Algorithmus bei einer Eingabe (n1, . . . , nk) für die
f(n1, . . . , nk) undefiniert ist, nicht anhalten, sondern unendlich lange laufen.
Beispiel 8.0.2. Der Algorithmus
Eingabe : Zahl n ∈ N
Beginn
solange true tue
skip
Ende
Ende
berechnet die partielle Funktion f1 : N→ N, die für alle Eingaben undefiniert ist (man schreibt dies
auch als f1(x) = ⊥).
Der Algorithmus
Eingabe : Zahlen n1, n2 ∈ N
Beginn
hilf := n1 + n2;
return hilf
Ende
berechnet die Funktion f2 : (N × N) → N, welche die Summe der beiden Eingabezahlen berechnet
(d. h. f2(x, y) = x+ y).
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 2. Juni 2021
Beispiel 8.0.3. Betrachte die Funktion
f3(n) =
{
1, falls n ein Präfix der Ziffern der Dezimalzahldarstellung von π ist
0, sonst
Z.B. gilt f3(31) = 1 und f3(314) = 1, aber f3(2) = 0 und f3(315) = 0. Die Funktion f3 ist berechen-
bar, da man mit Näherungsverfahren eine beliebige (aber feste) Anzahl der Dezimalzahldarstellung
von π genau berechnen kann und im Anschluss nur noch vergleichen muss.
Beispiel 8.0.4. Für die Funktion
f4(n) =
{
1, falls n ein Teilwort der Ziffern der Dezimalzahldarstellung von π ist
0, sonst
ist es erst einmal unklar, ob sie berechenbar ist.Wennwir alle Teilworte von π ausprobierenmüssen,
können wir vermutlich keinen (anhaltenden) Algorithmus angeben.
Wenn wir jedoch wüssten, dass jede Zahl n irgendwann in π als Teilwort vorkommen muss (weil
die Ziffernfolge von π derart zufällig ist, dass sie jede Folge irgendwann erzeugt), dann wäre g auch
berechenbar, denn es würde gelten f4(n) = 1 für alle n ∈ N.
Beispiel 8.0.5. Für die Funktion
f5(n) =
{
1, falls die Dezimaldarstellung von π das Wort 3m mitm ≥ n als Teilwort besitzt.
0, sonst
sieht die Frage der Berechenbarkeit zunächst genauso schwierig aus, wie für die Funktion f4. Aller-
dings ist dem nicht so, denn entweder gibt es für jedes n das Teilwort 3n in der Dezimaldarstellung
von π und f5(n) = 1 für alle n, oder es gibt eine Zahlm0, sodass 3m0 noch als Teilwort vorkommt,
aber die Folgen 3m für m > m0 kommen alle nicht in der Dezimaldarstellung von π vor. Dann ist
f5(n) = 1 für n ≥ m0 und f5(n) = 0 sonst.
Welcher der beiden Fälle nun zutrifft, wissen wir nicht. Aber einer der beiden Fälle muss gelten und
in beiden Fällen können wir einen Algorithmus angeben, der f5 berechnet.
Daher ist f5 berechenbar.
Das letzte Beispiel zeigt, dass wir für das Entscheiden der Berechenbarkeit einer Funktion f
nicht unbedingt den geforderten Algorithmus, der f berechnet, angeben müssen. Wir müssen
nur zeigen, dass dieser existiert (bzw. nicht existieren kann). Daher ist unsere Definition der
Berechenbarkeit nicht konstruktiv und liefert nicht gleich den Algorithmus zur Berechnung.
Beispiel 8.0.6. Die Funktion
f6(n) =
1, falls deterministische LBAs genau die gleichen Sprachen erkennen
wie nichtdeterministische LBAs
0, sonst
ist berechenbar, denn entweder hat das erste LBA-Problem eine positive Lösung und f6(n) = 1 für
alle n ∈ N, oder das LBA-Problem hat eine negative Lösung und f6(n) = 0 für alle n ∈ N. Daher
existiert ein Algorithmus der f6 berechnet (wir wissen nur nicht, welcher von beiden der richtige ist).
D. Sabel, Skript FSK & TIMI,SoSe 2021 103 Stand: 2. Juni 2021
8. Der intuitive Berechenbarkeitsbegriff
Sei f r die Funktion
f r(n) =
{
1, falls n ein Präfix der Ziffern der Dezimalzahldarstellung von r ist
0, sonst
Wir hatten in Beispiel 8.0.3 gesehen, dass die Funktion fπ berechenbar ist (dort hieß diese
Funktion f3). Nun könnte man vermuten, dass jede Funktion f r für eine reelle Zahl r bere-
chenbar ist. Allerdings ist dem nicht so, denn es gibt überabzählbar viele reelle Zahlen aber
nur abzählbar viele Algorithmen (bzw. Programme einer Programmiersprache). Für verschie-
dene reelle Zahlen r1 6= r2 benötigen wir auch verschiedene Algorithmen zur Berechnung von
f r1 und f r2 (denn es muss einen Präfix n geben, sodass f r1(n) 6= f r2(n)). Daraus folgt, dass
wir eine überabzählbare Anzahl an Algorithmen bräuchten, die uns aber nicht zur Verfügung
stehen. D.h. es muss reelle Zahlen r geben, sodass f r nicht berechenbar ist.
Im Folgenden werden wir verschiedene formale Definitionen (und Modelle) zur Berechenbar-
keit sehen. Einige davon wurden von Alan Turing und Alonzo Church in den 1930er vorge-
schlagen. Neben Berechenbarkeit anhand vonTuringmaschinen (d. h. Turing-Berechenbarkeit)
lernen wir WHILE-Programme, GOTO-Programme, µ-rekursive Funktionen und die darauf ba-
sierenden Berechenbarkeitsbegriffe kennen. Es hat sich (erstaunlicherweise!) gezeigt, dass alle
Begriffe ineinander überführbar und äquivalent sind und daher denselben Begriff der Bere-
chenbarkeit definieren.
Da diese Äquivalenzen gelten undman bisher keinenmächtigeren, sinnvollen Begriff der Bere-
chenbarkeit gefunden hat, geht man allgemein davon aus, dass man durch diese Formalismen
den Begriff der Berechenbarkeit gefunden hat. Das bedeutet insbesondere, wennman von einer
Funktion gezeigt hat, dass sie nicht Turingberechenbar ist, dann geht man davon aus, dass sie
überhaupt nicht berechenbar ist. Diese Überzeugung fasst man unter der sogenannten Church-
schen These zusammen:
Churchsche These: Die Klasse der Turingberechenbaren (äquivalent WHILE-
berechenbaren,GOTO-berechenbaren,µ-rekursiven) Funktionen stimmt genaumit
der Klasse der intuitiv berechenbaren Funktionen überein.
Wie bereits erwähnt, gibt es keinen Beweis der Churchschen These, daman den Begriff „intuitiv
berechenbar“ nicht formal fassen kann.
Stand: 2. Juni 2021 104 D. Sabel, Skript FSK & TIMI,SoSe 2021
9
Turings Modell der Berechenbarkeit
Wir haben die von Alan Turing vorgeschlagenen Turingmaschinen bereits in Kapitel 6 kennen-
gelernt. In diesem Abschnitt definieren wir zunächst darauf aufbauend den Begriff der Turing-
berechenbarkeit einer Funktion. Im Anschluss betrachten wir Varianten von Turingmaschinen
und zeigen schließlich, wie man größere Turingmaschinen durch Komposition von kleineren
Turingmaschinen konstruieren kann.
9.1. Turingmaschinen und Turingberechenbarkeit
Wirwiederholen die wesentlichen Begriffe undDefinitionen zu Turingmaschinen: Eine Turing-
maschine ist ein 7-Tupel (Z,Σ,Γ, δ, z0,�, E), wobei Z die endliche Menge der Zustände, Σ das
Eingabealphabet, Γ ⊃ Σ das Bandalphabet, z0 ∈ Z der Startzustand, � ∈ (Γ \ Σ) das Blank-
Symbol, E ⊆ Z die Menge der Endzustände, und δ die Zustandsüberführungsfunktion (mit
δ : (Z × Γ) → (Z × Γ × {L,R,N}) für eine DTM und δ : (Z × Γ) → P(Z × Γ × {L,R,N}) für
eine NTM) ist. Konfigurationen sind Worte der Form a1 · · · amzam+1 · · · an, wobei a1 · · · an ∈ Γ∗
der entdeckte Teil des Bandinhalts ist, die endliche Steuerung der TM im Zustand z ∈ Z ist und
der Schreib-Lesekopf der TM unter am+1 steht.
Bisher haben wir Turingmaschinen verwendet, um Sprachen zu erkennen, und daher definiert,
wann eine Turingmaschine ein Eingabewort akzeptiert (siehe Definition 6.2.5). Für die Defini-
tion der Berechenbarkeit von Funktionen (auf den natürlichen Zahlen, wie im letzten Kapitel)
passen wir die Definition an, indem wir neben der Akzeptanz auch die Ausgabe (auf dem Band
der Turingmaschine) beobachten.Wir geben auch gleich eine Definition an, die für Funktionen
auf Wörtern einer formalen Sprache passend ist.
Definition 9.1.1. Sei bin(n) die Binärdarstellung von n ∈ N. Eine Funktion f : Nk → N heißt
Turingberechenbar, falls es eine (deterministische) TuringmaschineM = (Z,Σ,Γ, δ, z0,�, E) gibt,
so dass für alle n1, . . . , nk,m ∈ N gilt:
f(n1, . . . , nk) = m g.d.w. z0bin(n1)# . . .#bin(nk) `∗ � . . .�zebin(m)� . . .� mit ze ∈ E.
Eine Funktion f : Σ∗ → Σ∗ heißt Turingberechenbar, falls es eine (deterministische) Turingma-
schineM = (Z,Σ,Γ, δ, z0,�, E) gibt, so dass für alle u, v ∈ Σ∗ gilt: f(u) = v g.d.w.
z0u `∗ � . . .�zev� . . .� mit ze ∈ E.
Eine Konsequenz (für beide Definitionen der Turingberechenbarkeit) ist: Falls f(n1, . . . , nk)
bzw. f(u) undefiniert ist, dann kann die Maschine in eine Endlosschleife gehen.
Stand: 9. Juni 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
9. Turings Modell der Berechenbarkeit
O.b.d.A. dürfenwir sogar annehmen, dass sie in diesemFall stets in eine Endlosschleife geht: Ist
dies nicht der Fall, so kann leicht eine Turingmaschine konstruiert werden, welche die gleiche
Funktion berechnet und sich so verhält.
Wir nehmen daher stets an, dass die f-berechnende Turingmaschine bei Eingabe
bin(n1)# . . .#bin(nk) (bzw. u) in eine Endlosschleife geht falls f(n1, . . . , nk) (bzw. f(u))
nicht definiert ist.
Beispiel 9.1.2. Die Nachfolgerfunktion f(x) = x + 1 für alle x ∈ N ist Turingberechenbar. Wir
haben eine entsprechende Turingmaschine bereits in Beispiel 6.2.6 angegeben.
Beispiel 9.1.3. Die Identitätsfunktion f(x) = x für alle x ∈ N ist Turingberechenbar: Für die
Turingmaschine M = ({z0}, {0, 1,#}, {0, 1,#�}, δ, z0,�, {z0}) mit δ(z0, a) = (z0, a,N) für alle
a ∈ {0, 1,#,�} gilt: z0bin(n) `∗ z0bin(n) für alle n ∈ N.
Die überall undefinierte Funktion Ω ist Turingberechenbar, da die Turingmaschine M =
({z0}, {0, 1,#}, {0, 1,#,�}, δ, z0,�, ∅) mit δ(z0, a) = (z0, a,N) für keine Eingabe akzeptiert (son-
dern stets in eine Endlosschleife geht).
9.2. Mehrspuren- und Mehrband-Turingmaschinen
Unsere bisher eingeführten Turingmaschinen haben ein Band, dass zur Eingabe, zur Verarbei-
tung, und zum Erzeugen der Ausgabe verwendet wird. In diesem Abschnitt betrachten wir zwei
Varianten von Turingmaschinen, die etwas mehr Möglichkeiten bieten und sich dadurch oft
„einfacher“ programmieren lassen. Wir zeigen aber, dass sich die Varianten wieder auf die 1-
Band-Turingmaschinen zurückführen lassen. Dies zeigt, dass die Varianten den Berechenbar-
keitsbegriff unverändert lassen.
9.2.1. Mehrspuren-Turingmaschinen
Definition 9.2.1 (Mehrspuren-Turingmaschine). Für k ∈ N>0 ist eine k-Spuren-Turing-
maschine ein 7-TupelM = (Z,Σ,Γ, δ, z0,�, E) wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet,
• Γ ⊃ Σ ist das (endliche) Bandalphabet,
• für eine deterministische TM ist δ : (Z × Γk) → (Z × Γk × {L,R,N}) die Zustandsüber-
führungsfunktion und für eine nichtdeterministische TM ist δ : (Z × Γk) → P(Z × Γk ×
{L,R,N}) die Zustandsüberführungsfunktion,
• z0 ∈ Z ist der Startzustand,
• � ∈ Γ \ Σ ist das Blank-Symbol und
• E ⊆ Z ist die Menge der Endzustände.
Verglichen mit der Definition einer herkömmlichen (1-Band und 1-Spuren-TM) ist die Idee der
k-Spuren-TM. dass das Band der Turingmaschine in k übereinander liegende Spuren geteilt ist.
Abb. 9.1 illustriert diese Idee:
Stand: 9. Juni 2021 106 D. Sabel, Skript FSK & TIMI,SoSe 2021
9.2. Mehrspuren- und Mehrband-Turingmaschinen
Spur k
Spur 3
Spur 2
Spur 1
. . .
ak
a3
a2
a1
Schreib-Lese-Kopf
Abbildung 9.1.: Mehrspuren-Turingmaschine
Die Turingmaschine liest ein Tupel (a1, . . . , ak) und kann dementsprechend agieren. Für den
Begriff der Berechenbarkeit nehmen wir an, dass die Eingabe auf der ersten Spur der Mehrspu-
renmaschine liegt und alle anderen Spuren leer sind. Die Ausgabe wird ebenfalls von der ersten
Spur (in einem Akzeptanzzustand) entnommen.
Satz 9.2.2. Jede Mehrspuren-Turingmaschine kann auf einer 1-Band-Turingmaschine simuliert
werden.
Beweis. Verwende als Bandalphabet Γ ∪ Γk, als Eingabealphabet Σ und als Blank-Symbol �.
Beginnend mit einer Eingabe aus Σ∗, kann die Mehrspurendarstellung erzeugt werden, indem
jedes Symbol a ∈ Σ aus der Eingabe durch das k-Tupel (a,�, . . . ,�) ersetzt wird. Anschließend
kann jeder Berechnungsschritt der Mehrspurenmaschine auf der 1-Band-Maschine simuliert
werden und schließlich die Ausgabe erzeugt werden, indem jeder Eintrag (a1, . . . , ak) durch a1
ersetzt wird. Die Akzeptanz der Simulation ist dieselbe und auch die Turingberechenbarkeit
bleibt dieselbe.
Beispiel 9.2.3. Das folgende Beispiel ist in ähnlicher Weise in (HMU06) zu finden. Wir program-
mieren eine Turingmaschine, welche die Sprache {wcw | w ∈ {a, b}+} erkennt. Dafür verwen-
den wir 2-Spuren und verzichten auf das Erstellen und Entfernen der 2-Spurendarstellung zu Be-
ginn und am Ende. Stattdessen geben wir direkt eine 2-Spuren-Turingmaschine, welche die Sprache
{w(c,�)w | w ∈ {(a,�), (b,�)}+} akzeptiert. Die Ideen dabei sind:
• Die Eingabe wcw auf Spur 1 wird nur gelesen, aber nicht verändert.
• Auf der zweiten Spur wird nur das Blank-Symbol und und das Symbol X zum Markieren von
Buchstaben auf Spur 1 verwendet.
• Das Markieren geschieht Zeichenweise von links nach rechts: Ein Zeichen wird im linken w
markiert, dann im rechten w gesucht und dann dort markiert, usw.
Wir verwenden Zustände Z = {z0, z1a, z1b, z2a, z2b, z3, . . . , z9}. Dabei „speichern“ die Zustände
z1a, z1b, z2a, z2b das gelesene Zeichen (a oder b). Der Zustand z8 ist der einzig akzeptierende, der
Zustand z9 wird als Müllzustand verwendet (zum Verwerfen) und z0 ist der Startzustand. Die Über-
gangsfunktion δ ist wie folgt definiert:
• δ(z0, (s,�)) = (z1s, (s,X), R) für s ∈ {a, b} markiert das linkeste unmarkierte Zeichen s im
linken w, dabei wird s im Zustand z1s gespeichert. Die Suche nach s im rechten w startet.
D. Sabel, Skript FSK & TIMI,SoSe 2021 107 Stand: 9. Juni 2021
9. Turings Modell der Berechenbarkeit
• δ(z1s, (s′,�)) = (z1s, (s′,�), R) für s, s′ ∈ {a, b} um nach rechts zu bis zum Zeichen c zu
laufen (alle übersprungenen Zeichen sind unmarkiert).
• δ(z1s, (c,�)) = (z2s, (c,�), R) mit s ∈ {a, b} für den Fall das c erreicht wurde.
• δ(z2s, (s′,X)) = (z2s, (s′,X), R) mit s, s′ ∈ {a, b}, um zum ersten unmarkierten Symbol im
rechten w zu gelangen.
• δ(z2s, (s,�)) = (z3, (s,X), L) mit s ∈ {a, b}. Das erste unmarkierte Symbol im rechten w
wurde gefunden und stimmt mit dem gesuchten Zeichen überein.
• δ(z3, (s,X)) = (z3, (s,X), L) mit s ∈ {a, b} zum nach links laufen zum c.
• δ(z3, (c,�)) = (z4, (c,�, L)) wenn c wieder erreicht wurde. Das Zeichen links vom c bestimmt
nun den weiteren Verlauf.
• δ(z4, (s,�)) = (z5, (s,�), L) mit s ∈ {a, b}: Links vom c stand kein markiertes Zeichen und
es wird mit z5 fortgefahren.
• δ(z4, (s,X)) = (z6, (s,�), R) mit s ∈ {a, b}: Links vom c stand ein markiertes Zeichen. Dann
muss geprüft werden, ob rechts vom c alle Zeichen markiert sind. Das macht Zustand z6.
• δ(z5, (s,�)) = (z5, (s,�), L) mit s ∈ {a, b} setzt die Suche nach dem ersten markierten Zei-
chen im linken w fort.
• δ(z5, (s,X)) = (z0, (s,X), R) mit s ∈ {a, b}: Das erste markierte Zeichen im linken w wurde
gefunden. Nun kann rechts davon mit dem Startzustand z0 fortgefahren werden.
• δ(z6, (c,�)) = (z7, (c,�), R). In z6 steht der Schreib-Lesekopf direkt auf dem c und die TM
sucht nun im rechten w nach unmarkierten Zeichen.
• δ(z7, (s,X)) = (z7, (s,X), R) für s ∈ {a, b} setzt die Suche nach unmarkierten Zeichen im
rechten w fort.
• δ(z7, (�,�)) = (z8, (�,�), N): Alle Zeichen im rechten w waren markiert. Die TM geht in
den akzeptierenden Zustand z8.
• δ(z8, (s, t)) = (z8, (s, t), N) für s ∈ {a, b, c}, t ∈ {�,X} verbleibe akzeptierend.
• δ(zi, (s, t)) = (z9, (s, t), N) für alle anderen Fälle verbleibe oder wechsele in den verwerfenden
Zustand.
Ein Lauf der Turingmaschine für das Wort abcab ist:
z0
a
�
b
�
c
�
a
�
b
�
`
a
X
z1a
b
�
c
�
a
�
b
�
`
a
X
b
�
z1a
c
�
a
�
b
�
`
a
X
b
�
c
�
z2a
a
�
b
�
`
a
X
b
�
z3
c
�
a
X
b
�
`
a
X
z4
b
�
c
�
a
X
b
�
` z5
a
X
b
�
c
�
a
X
b
�
`
a
X
z0
b
�
c
�
a
X
b
�
`
a
X
b
X
z1b
c
�
a
X
b
�
`
a
X
b
X
c
�
z2b
a
X
b
�
`
a
X
b
X
c
�
a
X
z2b
b
�
`
a
X
b
X
c
�
z3
a
X
b
X
`
a
X
b
X
z3
c
�
a
X
b
X
`
a
X
z4
b
X
c
�
a
X
b
X
`
a
X
b
X
z6
c
�
a
X
b
X
`
a
X
b
X
c
�
z7
a
X
b
X
`
a
X
b
X
c
�
a
X
z7
b
X
`
a
X
b
X
c
�
a
X
b
X
z7
�
�
`
a
X
b
X
c
�
a
X
b
X
z8
�
�
Stand: 9. Juni 2021 108 D. Sabel, Skript FSK & TIMI,SoSe 2021
9.2. Mehrspuren- und Mehrband-Turingmaschinen
Band k
Band 3
Band 2
Band 1
. . .
k. Schreib-Lese-Kopf
3. Schreib-Lese-Kopf
2. Schreib-Lese-Kopf
1. Schreib-Lese-Kopf
Abbildung 9.2.: Illustration der Mehrband-Turingmaschine
9.2.2. Mehrband-Turingmaschinen
Als nächstes betrachten wir als Erweiterung der 1-Band-Turingmaschinen, die Mehrband-
Turingmaschinen. Diese verwenden mehrere Bänder, wobei jedes Band einen eignen Schreib-
Lesekopf hat. In jedem Schritt kann jeder dieser Köpfe in eine der Richtungen L,R,N unabhän-
gig von den anderen Köpfen bewegt werden.
Eine Illustration der Mehrband-Turingmaschine ist in Abb. 9.2 zu finden.
Definition 9.2.4 (Mehrband-Turingmaschine). Für k ∈ N>0 ist eine k-Band-Turingmaschine
ein 7-TupelM = (Z,Σ,Γ, δ, z0,�, E) wobei
• Z ist eine endliche Menge von Zuständen,
• Σ ist das (endliche) Eingabealphabet,
• Γ ⊃ Σ ist das (endliche) Bandalphabet,
• für eine deterministische TM ist δ : (Z × Γk) → (Z × Γk × {L,R,N}k) die Zustandsüber-
führungsfunktion und für eine nichtdeterministische TM ist δ : (Z × Γk) → P(Z × Γk ×
{L,R,N}k) die Zustandsüberführungsfunktion
• z0 ∈ Z ist der Startzustand,
• � ∈ Γ \ Σ ist das Blank-Symbol
• E ⊆ Z ist die Menge der Endzustände.
Zur Berechnung (von Funktionswerten) nehmen wir für die k-Band-TM an, dass die Eingabe
auf dem ersten Band steht und alle anderen Bänder leer sind.
Theorem 9.2.5. Jede Mehrband-Turingmaschine kann von einer 1-Band TM simuliert werden.
Beweis. SeiM eine k-Band-TM. Wenn k = 1, dann ist dies eine 1-Band-TM und die Aussage ist
trivial. Anderenfalls (k > 1) verwenden wir eine 2 · k-Spuren-TM umM zu simulieren. Dabei
repräsentieren jeweils 2 aufeinanderfolgende Spuren ein Band von k. Sei i ein Band von M ,
dann speichert die erste dazugehörige Spur den Inhalt von Band i und die zweite Spur speichert
die Position des i-ten Schreib-Lesekopfs von M , indem sie an der entsprechenden Position
D. Sabel, Skript FSK & TIMI,SoSe 2021 109 Stand: 9. Juni 2021
9. Turings Modell der Berechenbarkeit
Band k
Band 2
Band 1
. . .
1. Schreib-Lese-Kopf
2. Schreib-Lese-Kopf
k. Schreib-Lese-Kopf
a0 a1 a2 a3 a4 a5 a6 . . .
b0 b1 b2 b3 b4 b5 b6 . . .
c0 c1 c2 c3 c4 c5 c6 . . . Spur 2k−1
Spur 2k
Spur 4
Spur 3
Spur 2
Spur 1
. . .
a0 a1 a2 a3 a4 a5 a6 . . .
∗� � � � � �
b0 b1 b2 b3 b4 b5 b6 . . .
∗� � � � � �
c0 c1 c2 c3 c4 c5 c6
� � � � � �
. . .
∗
k-Band-TM Simulation mit 2k-Spuren
Abbildung 9.3.: Simulation der Turingmaschine mit k-Bändern
ein ∗ auf die Spur schreibt (und alle anderen Einträge mit dem Blank-Symbol belegt). Abb. 9.3
illustriert diese Darstellung.
Für eine Eingabe w ∈ Σ∗ auf dem Eingabeband der Mehrband-Maschine, erzeugt die 1-Band-
Maschine für dieselbe Eingabe die Darstellung mit 2k-Spuren und simuliert anschließend die
Berechnungsschritte. Bei Akzeptanz derMehrband-TM transformiert sie die Spurendarstellung
in die Darstellung der Ausgabe.
Zur Simulation eines Berechnungsschrittes auf der Mehrband-TM liest die 1-Band-TM zu-
nächst einmal komplett den verwendeten Bandbereich von links nach rechts und speichert da-
bei (durch Zustände) die Kopfpositionen aller k Köpfe. ImAnschluss „weiß“ sie, welchen Schritt
dieMehrband-TMmachenwill, undmacht alle Anpassungen auf allen Schichten (Anpassen der
Bandinhalte und der Kopfpositionen). Im Anschluss kann der nächste Schritt starten.
9.3. ?Modulare Konstruktion von Turingmaschinen
In diesemAbschnitt verwendenwir sowohl 1-Band-Turingmaschinen als auch die eingeführten
Mehrband-Turingmaschinen, umeinfacheRechenoperationen auf diesen zu „programmieren“.
Insbesondere verwenden wir die Komposition von Turingmaschinen, um aus Turingmaschinen
für ganz einfacheOperationen, Turingmaschinen für komplexereOperationen zu konstruieren.
9.3.1. Notation
Wir verwenden dieselbe Notation wie (Sch08), um bestimmte Turingmaschinen zu bezeich-
nen. Wenn M eine 1-Band-Turingmaschine ist, dann schreiben wir M(i, k) für die k-Band-
Turingmaschine (mit i ≤ k), welche die Operationen von M auf dem i. Band durchführt und
alle anderen Bänder unverändert lässt.Wenn k nicht von Bedeutung ist (aber in jedem Fall groß
genug gewählt wurde bzw. gewählt werden kann), schreiben wir stattM(i, k) oft einfachM(i).
9.3.2. Einfache Rechenoperationen
In Beispiel 6.2.6 haben wir eine Turingmaschine angegeben, die zur Eingabe (einer Zahl in
Binärdarstellung) 1 dazu addiert und das Ergebnis auf dem Band zu Verfügung stellt. Wir be-
zeichnen diese Turingmaschine ab sofort mit „Band := Band+1“. Entsprechend der vorher ein-
geführten Notation bezeichnet dann „Band := Band+1“(i) die k-Band-Turingmaschine (k ≥ i),
Stand: 9. Juni 2021 110 D. Sabel, Skript FSK & TIMI,SoSe 2021
9.3. ?Modulare Konstruktion von Turingmaschinen
welche die Nachfolgerfunktion für den Wert auf Band i berechnet. Wir schreiben dies kürzer
als „Band i := Band i+ 1“. Wir führen weitere Bezeichnungen für Turingmaschinen an, die al-
lesamt einfach zu konstruieren sind (wir geben die konkreten Maschinen nicht an und lassen
deren Konstruktion als Übungsaufgabe).
Mit „Band i := Band i− 1“ bezeichnen wir die k-Band-Turingmaschine (k ≥ i), die eine (ange-
passte) Subtraktion von 1 auf Band i durchführt, wobei die Anpassung ist, dass wir 0 − 1 = 0
definieren. Mit „Band i := 0“ bezeichnen wir die Turingmaschine, welche den Inhalt auf Band i
mit der Zahl 0 (jeweils in Binärdarstellung) überschreibt. Mit „Band i := Band j“ bezeichnen wir
die k-Band-Turingmaschine (k ≥ i und k ≥ j), welche die Zahl von Band j auf Band i kopiert
(und den Inhalt von Band i dabei überschreibt).
9.3.3. Komposition von Turingmaschinen
Seien M1 = (Z1,Σ,Γ1, δ1, z1,�, E1) und M2 = (Z1,Σ,Γ2, δ2, z2,�, E2) k-Band-Turing-
maschinen.MitM1;M2 bezeichnenwir jene Turingmaschine, welcheM1 undM2 nacheinander
ausführt: Seien Z1 und Z2 paarweise disjunkt1. Dann ist
M1;M2 = ((Z1 ∪ Z2),Σ,Γ1 ∪ Γ2, δ, z1,�, E2)
mit
δ(z, (a1, . . . , ak)) =
δ(z, (a1, . . . , ak)) falls z ∈ Z1 \ E1 und (a1, . . . , ak) ∈ Γk1
δ′(z, (a1, . . . , ak)) falls z ∈ Z2 und (a1, . . . , ak) ∈ Γk2
(z2, (a1, . . . , ak), N) falls z ∈ E1 und (a1, . . . , ak) ∈ Γk1
Die Maschine M1;M2 führt erst M1 aus, und – falls diese in einem Endzustand z ∈ E1 ist,
wechselt sie in den Startzustand vonM2 um diese anschließend auszuführen.
Mithilfe der Hintereinanderschaltung können wir z.B. die Turingmaschine
„Band := Band+3“ als „Band := Band+1“; „Band := Band+1“; „Band := Band+1“
konstruieren.
Wir verwenden (analog zu (Sch08)) folgendes Flussdiagramm, umdie Hintereinanderschaltung
M1;M2 zu notieren:
start M1 M2 stop
Die „Band := Band+3“-Maschine kann entsprechend durch das Flussdiagramm
1Anderenfalls benenne eine der Zustandsmengen und Maschinen konsistent mit frischen Namen um.
D. Sabel, Skript FSK & TIMI,SoSe 2021 111 Stand: 9. Juni 2021
9. Turings Modell der Berechenbarkeit
start
„Band := Band +1“
„Band := Band +1“
„Band := Band +1“
stop
repräsentiert werden. Beachte, dass die Konstruktion der Hintereinanderschaltung es auch
ermöglicht, die Verkettung zyklisch zu konstruieren. Z.B. kann die eingeführte Konstruktion
leicht angepasst werden, um für Turingmaschinen M1, . . . ,Mn den folgenden Zyklus zu kon-
struieren:
start M1 M2 . . . Mn
Zunächst scheint diese Konstruktion wenig sinnvoll, da (wie das Flussdiagramm schon zeigt)
die konstruierte Maschine nicht anhält.
Aber wir werden diese bald zusammen mit der Verzweigung verwenden, um den Zyklus nur in
manchen Fällen zu verwenden und damit Schleifen zu repräsentieren.
Seien M0,M1,M2 Turingmaschinen. Dann wird eine „Verzweigende Fortsetzung“ je nach Er-
gebnis des Laufs der TuringmaschineM0 durch das folgende Flussdiagramm dargestellt, wobei
zF,1 und zF,2 die Endzustände vonM0 seien:
start
M0
M1 M2
stop stop
zF,1 zF,2
Die Konstruktion dazu fügt entsprechende Übergänge
δ(zF,1, (a1, . . . , ak)) = (z0,M1 , (a1, . . . , ak), N) und δ(zF,2, (a1, . . . , ak)) = (z0,M2 , (a1, . . . , ak), N)
ein, wobei δ die neue Übergangsfunktion ist und z0,Mi den Startzustand von Mi (für i = 1, 2)
bezeichnet.
Ein Beispiel für die TuringmaschineM0 in der vorherigen Konstruktion ist die Turingmaschine
die Zustände {z0, z1, ja,nein} hat und die Übergangsfunktion
δ(z0, a) = (nein, a,N) für a 6= 0
δ(z0, 0) = (z1, 0, R)
δ(z1, a) = (nein, a, L) für a 6= �
δ(z1,�) = (ja,�, L)
Stand: 9. Juni 2021 112 D. Sabel, Skript FSK & TIMI,SoSe 2021
9.3. ?Modulare Konstruktion von Turingmaschinen
verwendet, wobei ja und nein Endzustände sind und z0 der Startzustand ist. Die TM prüft, ob
das Band eine 0 enthält oder nicht. Dementsprechend nennen wir die Maschine „Band=0?“ und
schreiben „Band i = 0?“ anstelle von „Band= 0?“(i).
Verwenden wir die Verzweigung zusammen mit der „Band i=0?“-Maschine und dem Bilden von
Zyklen, so können wir für eine beliebige TuringmaschineM eine Turingmaschine mit folgen-
dem Flussdiagramm konstruieren:
start
„Band i = 0?“
stop M
ja nein
Die TuringmaschineM wird solange immer wieder aufgerufen, bis das i. Band die Zahl 0 ent-
hält. Die Maschine nennen wir nun „WHILE Band i 6= 0 DOM “.
Diese Ausführungen zeigen schon, dass wir Programme einer einfachen imperativen Program-
miersprachemit Zuweisungen, Verzweigungen und Schleifen durch Turingmaschinen simulie-
ren können. Im nächsten Kapitel werden wir diese Konstruktionen verwenden, um drei grund-
sätzliche imperative Programmiersprachen bezüglich der induzierten Berechenbarkeitsbegrif-
fe auch im Vergleich zur Turingberechenbarkeit zu untersuchen.
D. Sabel, Skript FSK & TIMI,SoSe 2021 113 Stand: 9. Juni 2021
10
? LOOP-, WHILE-, und GOTO-Berechenbarkeit
In diesem Kapitel betrachten wir drei einfache imperative Programmiersprachen: LOOP-
Programme, WHILE-Programme und GOTO-Programme. Für alle drei Sprachen definieren wir
neben ihrer Syntax auch die operationale Semantik, d. h. wie Programme der Sprache ausge-
führt werden. Im Anschluss zeigen wir, dass WHILE- und GOTO-Programme den selben Bere-
chenbarkeitsbegriff induzieren, der äquivalent zur Turingberechenbarkeit ist, während LOOP-
Programme einen schwächeren Berechenbarkeitsbegriff induzieren (d. h. nicht jede Turingbe-
rechenbare Funktion ist auch LOOP-berechenbar).
10.1. LOOP-Programme
10.1.1. Syntax von LOOP-Programmen
Die Syntax von LOOP-Programmen kann durch die folgende kontextfreie Grammatik beschrie-
ben werden. Sie werden durch die CFG (V,Σ, P,Prg) erzeugt, wobei:
V = {Prg ,Var , Id ,Const}
Σ = {LOOP,DO,END, x, 0, . . . , 9, ; , :=,+,−}
P = {Prg → LOOP Var DO Prg END
| Prg ;Prg
| Var := Var + Const
| Var := Var − Const
Var → xId
Const → Id
Id → 0 | 1 | . . . | 9 | 1Const | 2Const | . . . 9Const}
Daher erzeugt das Nichtterminal Var die Worte x0, x1, x2, . . ., d. h. einen Variablennamen aus
einer abzählbar unendlichenMenge vonNamen. DasNichtterminalConst erzeugt die Konstan-
ten der LOOP-Programme (alle natürlichen Zahlen).
Programme können durch das LOOP-Konstrukt der Form LOOP xi DO P END (wobei P ein
Programm ist), durch Sequenzen P1;P2 oder durch Zuweisungen xi := xj + c bzw. xi := xj − c,
wobei c eine Konstante ist, gebildet werden.
10.1.2. Semantik von LOOP-Programmen
Zur Modellierung des Speicherzustandes, d.h. der Belegung der Variablen mit Werten, definie-
ren Variablenbelegungen:
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 9. Juni 2021
10.1. LOOP-Programme
Definition 10.1.1 (Variablenbelegung). Eine Variablenbelegung ρ ist eine endliche Abbildung
mit Einträgen xi 7→ n mit xi ist Variable und n ∈ N. Wir definieren die Anwendung einer Varia-
blenbelegung ρ auf eine Variable xi als
ρ(xi) :=
{
n, wenn xi 7→ n ∈ ρ
0, sonst
Wir schreiben ρ{xi 7→ m} für die Abbildung, die an der Stelle für xi so modifiziert wurde, dass sie
xi aufm abbildet und sich ansonsten wie ρ verhält, d. h.
ρ{xi 7→ m}(xj) =
{
ρ(xj), wenn xj 6= xi
m, wenn xj = xi
Die Semantik von LOOP-Programmen kann als Abfolge von Berechnungsschritten −−→
LOOP
auf
Paaren (ρ, P ) beschrieben werden, wobei ρ eine Variablenbelegung und P ein LOOP-Programm
oder ein „leeres“ Programm ε ist.
Definition 10.1.2 (Berechnungsschritt−−→
LOOP
). Die Definition eines Berechnungsschrittes für eine
Variablenbelegung ρ und ein LOOP-Programm ist:
• (ρ, xi := xj + c) −−→
LOOP
(ρ′, ε) wobei ρ′ = ρ{xi 7→ n} und n = ρ(xj) + c
• (ρ, xi := xj − c) −−→
LOOP
(ρ′, ε) wobei ρ′ = ρ{xi 7→ n} und n = max(0, ρ(xj)− c)
• (ρ, P1;P2) −−→
LOOP
(ρ′, P ′1;P2) wenn (ρ, P1) −−→
LOOP
(ρ′, P ′1) und P
′
1 6= ε
• (ρ, P1;P2) −−→
LOOP
(ρ′, P2) wenn (ρ, P1) −−→
LOOP
(ρ′, ε)
• (ρ,LOOP xi DO P END) −−→
LOOP
(ρ, P ; . . . ;P︸ ︷︷ ︸
ρ(xi)-mal
)
Wir schreiben −−→
LOOP
∗ für 0 oder beliebig viele Berechnungsschritte.
Beispiel 10.1.3. Wir betrachten das Programm
x2 := x1 + 1;
LOOP x2 DO x3 := x3 + 1 END
und die Variablenbelegung {x1 7→ 2}. Dann gilt:
({x1 7→ 2}, x2 := x1 + 1;LOOP x2 DO x3 := x3 + 1)
−−→
LOOP
({x1 7→ 2, x2 7→ 3},LOOP x2 DO x3 := x3 + 1)
da ({x1 7→ 2}, x2 := x1 + 1) −−→
LOOP
({x1 7→ 2, x2 7→ 3}, ε)
−−→
LOOP
({x1 7→ 2, x2 7→ 3}, x3 := x3 + 1;x3 := x3 + 1;x3 := x3 + 1)
−−→
LOOP
({x1 7→ 2, x2 7→ 3, x3 7→ 1}, x3 := x3 + 1;x3 := x3 + 1)
da ({x1 7→ 2, x2 7→ 3}, x3 := x3 + 1) −−→
LOOP
({x1 7→ 2, x2 7→ 3, x3 7→ 1}, ε)
−−→
LOOP
({x1 7→ 2, x2 7→ 3, x3 7→ 2}, x3 := x3 + 1)
da ({x1 7→ 2, x2 7→ 3, x3 7→ 1}, x3 := x3 + 1) −−→
LOOP
({x1 7→ 2, x2 7→ 3, x3 7→ 2}, ε)
−−→
LOOP
({x1 7→ 2, x2 7→ 3, x3 7→ 3}, ε)
D. Sabel, Skript FSK & TIMI,SoSe 2021 115 Stand: 9. Juni 2021
10. ? LOOP-, WHILE-, und GOTO-Berechenbarkeit
10.1.3. LOOP-Berechenbarkeit
Definition 10.1.4 (LOOP-berechenbare Funktion). Eine Funktion f : Nk → N heißt LOOP-
berechenbar, wenn es ein LOOP-Programm P gibt, sodass für alle n1, . . . , nk ∈ N und Variablen-
belegungen ρ = {x1 7→ n1, . . . , xk 7→ nk} gilt: (ρ, P ) −−→
LOOP
∗ (ρ′, ε) und ρ′(x0) = f(n1, . . . , nk).
Obige Definition zeigt, dass das LOOP-Programm die Eingaben dadurch empfängt, dass die
Variablen x1, . . . , xk mit den entsprechenden Werten belegt sind. Es liefert die Ausgabe
f(n1, . . . , nk) als Wert der Variablen x0.
Beispiel 10.1.5. Die Funktion f(x1) = x1 + c ist LOOP-berechenbar. Das Programm x0 := x1 + c
belegt dies, denn ({x1 = n1}, x0 := x1 + c) −−→
LOOP
({x0 = n1 + c, x1 = n1}, ε) für alle n1 ∈ N.
10.1.4. Eigenschaften von LOOP-Programmen und der LOOP-Berechenbarkeit
Satz 10.1.6. Alle LOOP-Programme terminieren.
Beweis. Dies gilt, da die Anzahl der −−→
LOOP
-Schritte begrenzt ist. Wir zeigen: Für alle (ρ, P ) gibt
es eine Zahl jP,ρ ∈ N und ein ρ′ mit (ρ, P ) −−→
LOOP
jP,ρ (ρ′, ε).
Beweis mit Induktion über die Struktur von P .
• Induktionsbasis: Für (ρ, xi := xj ± c) wird genau 1 Schritt benötigt.
• Für Sequenzen P1;P2 und beliebige ρ, ρ′ liefert die Induktionshypothese jP1,ρ und jP2,ρ′
sowie ρ′ und ρ′′, sodass (ρ, P1;P2) −−→
LOOP
jP1,ρ (ρ′, P2) −−→
LOOP
jP2,ρ′ (ρ′′, ε) und daher ist jP,ρ =
jP1,ρ + jP2,ρ′ .
• Für LOOP xi DO P END liefert die Induktionshypothese Zahlen jP,ρi und Variablenum-
gebungen ρ2, . . . , ρn+1, sodass für jede Variablenumgebung ρ1 gilt:
(ρ1,LOOPxiDOP END)
−−→
LOOP
(ρ1, P ; . . . ;P ) −−→
LOOP
jP,ρ1 (ρ2, P ; . . . ;P ) −−→
LOOP
jP,ρ2 . . . −−→
LOOP
iP,ρn (ρn+1, ε)
mit n = ρ1(xi). Daher ist jLOOPxi DOP END,ρ1 = 1 +
∑ρ1(xi)
k=1 jP,ρi .
Eine Konsequenz ist, dass alle LOOP-berechenbaren Funktionen totale Funktionen sind. Allei-
ne daher ergibt sich, dass es Turingberechenbare Funktionen gibt, die nicht LOOP-berechenbar
sind. Z.B. die überall undefinierte Funktion. Wie wir sehen werden, gibt es intuitiv berechen-
bare Funktionen, die total sind, und trotzdem nicht LOOP-berechenbar sind (ein Beispiel ist
die sogenannte Ackermannfunktion).
Wenn wir die Eingabevariablen kennen, dann können wir problemlos auch einen Befehl kodie-
ren, derxi := c ausführt, indemwirxi := xn+c verwenden,wobeixn keine der Eingabevariablen
ist und an keiner anderen Stelle im Programm verwendet wird. Der Begriff der Berechenbar-
keit, sorgt dann dafür, dass xn nicht in der initialen Variablenbelegung vorkommt und daher
ρ(xn) = 0 gilt. Ebenso können wir den Befehl xi := xj kodieren, indem wir xi := xj + 0 ver-
wenden. Daher verwenden wir beide Befehle als Kurzschreibweise. Ebenso verwenden wir für
Stand: 9. Juni 2021 116 D. Sabel, Skript FSK & TIMI,SoSe 2021
10.1. LOOP-Programme
Programm P die Schreibweise IF xi = 0 THEN P END für das Programm
xn := 1;
LOOP xi DO xn := 0 END;
LOOP xn DO P END
wobei xn eine Variable ist, die nicht in P und nicht in der Eingabe vorkommt. Beachte, dass
(ρ, xn := 1;LOOP xi DO xn := 0 END;LOOP xn DO P END) −−→
LOOP
∗ (ρ{xn 7→ 1}, P )
falls ρ(xi) = 0 und
(ρ, xn := 1;LOOP xi DO xn := 0 END;LOOP xn DO P END)
−−→
LOOP
∗ (ρ{xn 7→ 1}, xn := 0︸ ︷︷ ︸
ρ(xi)mal
;LOOP xn DO P END)
−−→
LOOP
∗ (ρ{xn 7→ 0},LOOP xn DO P END)
−−→
LOOP
∗ (ρ{xn 7→ 0}, ε)
falls ρ(xi) > 0 gilt.
Analog schreiben wir IF xi = 0 THEN P1 ELSE P2 END für
xn := 1;
xm := 1;
LOOP xi DO xn := 0 END;
LOOP xn DO xm := 0;P1 END;
LOOP xm DO P2 END
wobei xn, xm Variablen sind die nicht in der Eingabe vorkommen und auch sonst nicht im Pro-
gramm verwendet werden.
Auch kompliziertere if-then-else-Bedingungen können entsprechend kodiert werden. Wir ver-
wenden diese Abkürzungen daher, ohne sie explizit zu kodieren (und überlassen dies als
Übungsaufgabe).
Die Operation zum Addieren zweier Variablen schreiben wir als xi := xj +xl. Diese kann durch
das folgende Programmstück simuliert werden:
xi := xj ;LOOP xl DO xi := xi + 1 END
Dies zeigt auch, dass die Additionsfunktion f(x1, x2) = x1 + x2 LOOP-berechenbar ist.
Wird können andere Rechenoperationen (wie Multiplikation, mod (zur Berechnung des Rests
einer ganzzahligen Division mit Rest), div (zur Berechnung des ganzzahligen Anteils einer
ganzzahligen Division mit Rest), etc.) entsprechend definieren (wobei wir die Definitionen so
anpassen,dass sie im Fall der Division durch 0 definiert sind und z.B. 0 als Ergebnis liefern) und
verwenden diese im folgenden.
D. Sabel, Skript FSK & TIMI,SoSe 2021 117 Stand: 9. Juni 2021
10. ? LOOP-, WHILE-, und GOTO-Berechenbarkeit
10.2. WHILE-Programme
10.2.1. Syntax der WHILE-Programme
WHILE-Programme erweitern LOOP-Programme um ein WHILE-Konstrukt, d.h. WHILE-
Programme werden durch die kontextfreie Grammatik (V,Σ, P,Prg) erzeugt, wobei:
V = {Prg ,Var , Id ,Const}
Σ = {WHILE,LOOP,DO,END, x, 0, . . . , 9, ; , :=,+,−}
P = { Prg → WHILE Var 6= 0 DO Prg END
| LOOP Var DO Prg END
| Prg ;Prg
| Var := Var + Const
| Var := Var − Const
Var → xId
Const → Id
Id → 0 | 1 | . . . | 9 | 1Const | 2Const | . . . 9Const}
10.2.2. Semantik der WHILE-Programme
Die Semantik von WHILE-Programmen wird definiert durch die schrittweise Ausführung mit
Schritten (ρ, P ) −−−→
WHILE
(ρ′, P ′) wobei ρ, ρ′ Variablenbelegungen sind, P ein WHILE-Programm
ist und P ′ ein WHILE-Programm oder das leere Programm ε ist. Die meisten Regeln sind ana-
log zur Semantik der LOOP-Programme. Im Wesentlichen neu sind zwei neue Regeln für die
Auswertung desWHILE-Konstrukts.
Definition 10.2.1 (Berechnungsschritt−−−→
WHILE
). Seien ρ, ρ′ Variablenbelegungen undP, P WHILE-
Programme oder das leere Programm ε. Ein Auswertungsschritt−−−→
WHILE
ist definiert durch die folgen-
den Fälle:
• (ρ, xi := xj + c) −−−→
WHILE
(ρ′, ε) wobei ρ′ = ρ{xi 7→ n} und n = ρ(xj) + c
• (ρ, xi := xj − c) −−−→
WHILE
(ρ′, ε) wobei ρ′ = ρ{xi 7→ n} und n = max(0, ρ(xj)− c)
• (ρ, P1;P2) −−−→
WHILE
(ρ′, P ′1;P2) wenn (ρ, P1) −−−→
WHILE
(ρ′, P ′1) und P
′
1 6= ε
• (ρ, P1;P2) −−−→
WHILE
(ρ′, P2) wenn (ρ, P1) −−−→
WHILE
(ρ′, ε)
• (ρ,LOOP xi DO P END) −−−→
WHILE
(ρ, P ; . . . ;P︸ ︷︷ ︸
ρ(xi)-mal
)
• (ρ,WHILE xi 6= 0 DO P END) −−−→
WHILE
(ρ, ε) wenn ρ(xi) = 0
• (ρ,WHILE xi 6= 0 DO P END) −−−→
WHILE
(ρ, P ;WHILE xi 6= 0 DO P END) wenn ρ(xi) 6= 0
Wir schreiben −−−→
WHILE
∗ für 0 oder beliebig viele Berechnungsschritte.
10.2.3. WHILE-Berechenbarkeit
Definition 10.2.2 (WHILE-berechenbare Funktion). Eine Funktion f : Nk → N heißt WHILE-
berechenbar, wenn es ein WHILE-Programm P gibt, sodass
Stand: 9. Juni 2021 118 D. Sabel, Skript FSK & TIMI,SoSe 2021
10.3. GOTO-Programme
• für alle n1, . . . , nk ∈ N, sodass f(n1, . . . , nk) definiert ist: Für Variablenbelegung ρ = {x1 7→
n1, . . . , xk 7→ nk} gilt (ρ, P ) −−−→
WHILE
∗ (ρ′, ε) und ρ′(x0) = f(n1, . . . , nk).
• Falls f(n1, . . . , nk) nicht definiert ist, so stoppt das Programm P nicht, d. h. für alle i ∈ N gibt
es ein ρ′, sodass (ρ, P ) −−−→
WHILE
i (ρ′, P ′).
Da jedes LOOP-Programm P auch ein WHILE-Programm ist, und für (ρ, P ) −−→
LOOP
(ρ′, P ′) auch
(ρ, P ) −−−→
WHILE
(ρ′, P ′) gilt, folgt:
Satz 10.2.3. Jede LOOP-berechenbare Funktion ist auch WHILE-berechenbar.
Wir hätten sogar das LOOP-Konstrukt aus der WHILE-Sprache herauslassen können, denn
LOOP xi DO P END kann durch das Programm
xm := xi;
WHILE xm 6= 0 DO xm := xm − 1;P END
wobei xm nirgends sonst vorkommt, simuliert werden.
Theorem 10.2.4. Jede WHILE-berechenbare Funktion ist auch Turingberechenbar.
Beweis. In Abschnitt 9.3 haben wir gezeigt, dass die Konstrukte der WHILE-Programme (ohne
LOOP-Konstrukt) durch Komposition von Mehrband-Turingmaschinen simuliert werden kön-
nen. Dabei liegen die einzelnen Variablen xi jeweils auf Band i der Mehrband-Turingmaschine.
Die LOOP-Konstrukte können vorher mit der bereits vorgeschlagenen Konstruktion in LOOP-
freie WHILE-Programme transformiert werden.
10.3. GOTO-Programme
10.3.1. Syntax der GOTO-Programme
GOTO-Programme werden durch die CFG (V,Σ, P,Prg) erzeugt, wobei:
V = {Prg ,Var , Id ,Const}
Σ = {GOTO,HALT, IF, x, 0, . . . , 9, ; , :=,+,−}
P = { Prg → MId : Var := Var + Const
|MId : Var := Var − Const
|MId : GOTOMId
|MId : IF xi = 0 GOTOMId
|MId : HALT
| Prg ;Prg
Var → xId
Const → Id
Id → 0 | 1 | . . . | 9 | 1Const | 2Const | . . . 9Const}
Die einzelnen Befehlszeilen von GOTO-Programmen sind mit Marken Mi : versehen. Wenn
die Markierung unwichtig ist, lassen wir diese manchmal weg. Als Nebenbedingung (au-
ßerhalb der kontextfreien Grammatik) fordern wir, dass die einzelnen Programmzeilen mit
D. Sabel, Skript FSK & TIMI,SoSe 2021 119 Stand: 9. Juni 2021
10. ? LOOP-, WHILE-, und GOTO-Berechenbarkeit
paarweise verschiedenen Markierungen markiert sind. Wir können Markierungen konsistent
umbenennen, sodass wir davon ausgehen können, dass ein GOTO-Programm von der Form
M1 : A1; . . . ;Mn : An ist. Dies nennen wir ein normalisiertes GOTO-Programm.
10.3.2. Semantik der GOTO-Programme
Die Semantik von GOTO-Programmen wird definiert durch die schrittweise Ausführung mit
Schritten (ρ, P )
P0−−→
GOTO
(ρ′, P ′)wobei ρ, ρ′ VariablenbelegungenundP ′ einGOTO-Programmoder
das leere Programm ε ist, und P0 das ursprüngliche GOTO-Programm ist.
Definition 10.3.1 (Berechnungsschritt
P0−−→
GOTO
). Sei P0 ein normalisiertes GOTO-Programm, ρ eine
Variablenbelegung und P ein GOTO-Programm. Dann ist ein Berechnungsschritt
P0−−→
GOTO
durch die
folgenden Fälle definiert:
• (ρ,Mi : xj := xk + c;P )
P0−−→
GOTO
(ρ[xj 7→ n], P ), wobei n = ρ(xk) + c
• (ρ,Mi : xj := xk + c)
P0−−→
GOTO
(ρ[xj 7→ n], ε), wobei n = ρ(xk) + c
• (ρ,Mi : xj := xk − c;P )
P0−−→
GOTO
(ρ[xj 7→ n], P ), wobei n = max(0, ρ(xk)− c)
• (ρ,Mi : xj := xk − c)
P0−−→
GOTO
(ρ[xj 7→ n], ε), wobei n = max(0, ρ(xk)− c)
• (ρ,Mi : GOTOMk)
M1:A1;…;Mn:An−−−−−−−−−−→
GOTO
(ρ,Mk : Ak; . . . ;Mn : An) wenn 1 ≤ i ≤ n
• (ρ,Mi : GOTOMk;P )
M1:A1;…;Mn:An−−−−−−−−−−→
GOTO
(ρ,Mk : Ak; . . . ;Mn : An) wenn 1 ≤ i ≤ n
• (ρ,Mi : IF xr = 0 THEN GOTO Mk;P )
M1:A1;…;Mn:An−−−−−−−−−−→
GOTO
(ρ,Mk : Ak; . . . ;Mn : An) wenn
1 ≤ i ≤ n und ρ(xr) = 0
• (ρ,Mi : IF xr = 0 THEN GOTO Mk)
M1:A1;…;Mn:An−−−−−−−−−−→
GOTO
(ρ,Mk : Ak; . . . ;Mn : An) wenn
1 ≤ i ≤ n und ρ(xr) = 0
• (ρ,Mi : IF xr = 0 THEN GOTOMk;P )
P0−−→
GOTO
(ρ, P ) wenn ρ(xr) 6= 0
• (ρ,Mi : IF xr = 0 THEN GOTOMk)
P0−−→
GOTO
(ρ, ε) wenn ρ(xr) 6= 0
• (ρ,Mi : HALT;P )
P0−−→
GOTO
(ρ,Mi : HALT)
• (ρ, ε)
P0−−→
GOTO
(ρ, ε)
Beachte, dass der FallMi : HALT nicht definiert ist, da dann kein weiterer Berechnungsschritt
erfolgt. Der letzte Fall (ρ, ε)
P0−−→
GOTO
(ρ, ε) ist dafür, dass ein Programm, welches nicht HALT aus-
führt, nicht anhält.
Wir schreiben
P0−−→
GOTO
∗
für 0 oder beliebig viele Berechnungsschritte und
P0−−→
GOTO
i
für genau i Be-
rechnungsschritte (mit dem Programm P0).
10.3.3. GOTO-Berechenbarkeit
Definition 10.3.2 (GOTO-berechenbare Funktion). Eine Funktion f : Nk → N heißt GOTO-
berechenbar, wenn es ein normalisiertes GOTO-Programm P gibt, sodass
Stand: 9. Juni 2021 120 D. Sabel, Skript FSK & TIMI,SoSe 2021
10.4. Äquivalenz der WHILE- und GOTO-Berechenbarkeit
• für alle n1, . . . , nk ∈ N, sodass f(n1, . . . , nk) definiert ist: Für Variablenbelegung ρ = {x1 7→
n1, . . . , xk 7→ nk} gilt (ρ, P )
P−−→
GOTO
∗
(ρ′,HALT) und ρ′(x0) = f(n1, . . . , nk).
• Falls f(n1, . . . , nk) nicht definiert ist, so stoppt das Programm P nicht, d.h. für alle i ∈ N gibt
es ρ′ und P ′ sodass: (ρ, P ) P−−→
GOTO
i
(ρ′, P ′)
10.4. Äquivalenz der WHILE- und GOTO-Berechenbarkeit
Jedes WHILE-Programm kann durch ein GOTO-Programm simuliert werden, denn
• Zuweisungen xj := xk + c und xj := xk− c und Sequenzen P1;P2 können auch als GOTO-
Programm formuliert werden (durch zusätzliche Markierungen).
• LOOP-Schleifen können durchWHILE-Schleifen ersetzt werden
• jede WHILE-SchleifeWHILE xi 6= 0 DO P END kann durch
M1 : IF xi = 0 THEN GOTOMj
. . . P ′;
Mj−1 : GOTOM1;
Mj : . . .
simuliert werden, wobei P ′ das zu P zugehörige GOTO-Programm ist.
Sei PW ein WHILE-Programm und PG das oben beschriebene GOTO-Programm. Dann gilt:
Falls (ρ, PW ) −−−→
WHILE
∗ (ρ′, ε), dann (ρ, PG)
PG−−→
GOTO
∗
(ρ′′,HALT) mit ρ′(x0) = ρ′′(x0). Dies
kann per Induktion über die gegebene Folge von Berechnungsschritten bewiesen werden (wir
lassen den genauen Beweis hier allerdings weg). Genauso kann gezeigt werden, dass aus
∀i ∈ N : (ρ, PW ) −−−→
WHILE
i (ρi, PW,i) auch ∀i ∈ N : (ρ, PG)
PG−−→
GOTO
i
(ρ′i, PG,i).
Damit folgt, dass alle WHILE-berechenbaren Funktionen auch GOTO-berechenbar sind.
Sei M1 : A1; . . . ;Mn : An ein normalisiertes GOTO-Programm, sodass xM nicht als Variable
darin vorkommt. Das folgende WHILE-Programm simuliert das GOTO-Programm:
xM := 1;
WHILE xM 6= 0 DO
IF xM = 1 THEN P1 END;
. . .
IF xM = n THEN Pn END;
END
wobei Pi das folgende Programm ist:
• xj := xk + c;xM := xM + 1; falls Ai = xj := xk + c
• xj := xk − c;xM := xM + 1; falls Ai = xj := xk − c
• xM := j falls Ai = GOTOMj
• IF xk = 0 THEN xM := j ELSE xM := xM + 1 END, falls Ai = IF xk = 0 THEN GOTOMj
• xM := 0 falls Ai = HALT
Dabei ist IF-THEN-ELSE wie vorher demonstriert, mittels LOOP-Konstrukten kodiert.
D. Sabel, Skript FSK & TIMI,SoSe 2021 121 Stand: 9. Juni 2021
10. ? LOOP-, WHILE-, und GOTO-Berechenbarkeit
Sei M1 : A1; . . . ;Mn : An ein normalisiertes GOTO-Programm und P das oben beschriebene
WHILE-Programm. Es lässt sich prüfen, dass aus (ρ,M1 : A1; . . . ;Mn : An)
M1:A1;…;Mn:An−−−−−−−−−−→
GOTO
∗
(ρ′,HALT) auch (ρ, P ) −−−→
WHILE
∗ (ρ′′{xM 7→ 0}, ε)mit ρ′(x0) = ρ′′(x0). folgt.
Ebenso gilt, dass aus ∀i ∈ N : (ρ,M1 : A1; . . . ;Mn : An)
M1:A1;…;Mn:An−−−−−−−−−−→
GOTO
i
(ρi, Pi) auch ∀i ∈ N :
(ρ, P ) −−−→
WHILE
i (ρ′i, P
′
i ) folgt.
Damit folgt, dass jede GOTO-berechenbare Funktion auch WHILE-berechenbar ist.
Theorem 10.4.1. WHILE- und GOTO-Berechenbarkeit sind äquivalente Begriffe. D.h. jede
WHILE-berechenbare Funktion ist auch GOTO-berechenbar und umgekehrt ist jede GOTO-
berechenbare Funktion auch WHILE-berechenbar.
Satz 10.4.2. WHILE-Programme benötigen nur eine WHILE-Schleife.
Beweis. Dies zeigen die Übersetzungen: Übersetze erst das WHILE-Programm in ein GOTO-
Programm und anschließend übersetze das GOTO-Programm in einWHILE-Programm. Dieses
erzeugt nur eine WHILE-Schleife.
10.5. Simulation von Turingmaschinen mit GOTO-Programmen
In diesem Abschnitt zeigen wir, dass GOTO-Programme Turingmaschinen simulieren kön-
nen und können schließlich damit folgern, dass Turingberechenbare Funktionen auch GOTO-
berechenbar sind.
Die wesentliche Idee dabei ist, Konfigurationen der Turingmaschine mit Zahlen darzustellen,
die in Programmvariablen abgelegt sind. Dazu betrachtenwir zunächst, wiewir dennichtleeren
Teil des Bandinhalts (der ein Wort über Γ∗ ist) in eine Dezimalzahl konvertieren können.
10.5.1. Darstellung von Worten als natürliche Zahlen
Für ein Bandalphabet Γ = {a1, . . . , am} identifizieren wir die Zeichen ai mit ihrem Index i.
Worte ai1 · · · ain identifizieren wir daher mit der Folge (i1 . . . in). Umgekehrt können wir aus
Folgen (i1 . . . in) wieder das Wort ai1 · · · ain rekonstruieren.
Sei (i1 . . . in) eine solche Folge und sei b > m. Wir fassen ai1 · · · ain als Zahlen im Stellenwert-
system zur Basis b auf, wobei a1, . . . , am Ziffern dieses Systems sind, wobei ai die i-wertige Ziffer
ist (damit kommt 0-wertige Ziffer nicht vor, aus diesem Grund wählten wir b > m).
Dann kann der Dezimalwert von ai1 · · · ain berechnet werden als
(i1 · · · in)b =
n∑
j=1
ij · bn−j
Zur Berechnung von (i1 · · · in) aus einer natürlichen Zahl (d.h. zur Berechnung der Umkehr-
funktion von (· · · )b) teilt man die Dezimalzahl wiederholt mit Rest durch die Basis b bis kein
Rest mehr entsteht. Man erhält daher Reste r0, . . . , rm. Diese werden der Zahl (rm · · · r0) zur
Basis b zugeordnet und repräsentieren daher das Wort arm · · · ar0 .
Stand: 9. Juni 2021 122 D. Sabel, Skript FSK & TIMI,SoSe 2021
10.5. Simulation von Turingmaschinen mit GOTO-Programmen
Beispiel 10.5.1. Sei Γ = {�, 0, 1} sodass a1 = �, a2 = 0, a3 = 1. Betrachte das Wort �110�,
d.h. a1a3a3a2a1. Sei die Basis b = 4. Dann identifizieren wir �110� mit der Folge (13321) und
(13321)b = (13321)4 = 1∗44 +3∗43 +3∗42 +2∗41 +1∗40 = 256+3∗64+3∗16+2∗4+1∗1 = 505
Umgekehrt ergibt
505/4 = 126 Rest 1
126/4 = 31 Rest 2
31/4 = 7 Rest 3
7/4 = 1 Rest 3
1/4 = 0 Rest 1
und daher ergibt dies die Zahl (13321) zur Basis b, welche das Wort a1a3a3a2a1 = �110� reprä-
sentiert.
10.5.2. Darstellung von TM-Konfigurationen mit GOTO-Programmvariablen
Eine Konfiguration der TM über Γ = {a1, . . . , am} schreiben wir als
ai1 · · · ainzkaj1 · · · ajm
und stellen diese im GOTO-Programm durch 3 Variablen xp, xz, xs dar, wobei
xp = (i1 · · · in)b
xz = k
xs = (jm · · · j1)b
Beachte, dass wir für xs die umgekehrte Reihenfolge der Ziffern verwenden.
Im Wesentlichen müssen wir für die TM-Simulation mit GOTO-Programmen nun Berechnun-
gen implementieren, die für δ(zk, aj1) = (zl, aj′ , Q) mit Q ∈ {N,L,R} entsprechende Aktuali-
sierungen der Variablen xp, xz, xs berechnen, so dass diese demTransitionsschritt entsprechen.
Wir geben entsprechende GOTO-Programme an, die wirmitP (k, j1) (für δ(zk, aj1)) bezeichnen.
Wir betrachten verschiedene Fälle.
• Falls δ(zk, aj1) = (zl, aj′ , L), dann ist die Transition
ai1 · · · ainzkaj1 · · · ajm ` ai1 · · · ain−1zlainaj′aj2 · · · ajm ,
falls n > 0. Wir betrachten den Spezialfall n = 0 später.
Bezüglich der Zahlendarstellung gilt daher:
– xz muss auf den Wert l aktualisiert werden
– xp muss von (i1 · · · in)b zu (i1 · · · in−1)b aktualisiert werden
– xs muss von (jm · · · j1)b zu (jm · · · j2j′in)b aktualisiert werden
Das Programm P (k, j1) sei dann:
xz := l;
xs := xs div b;
xs := b ∗ xs + j′;
xs := b ∗ xs + (xp mod b);
xp := xp div b
D. Sabel, Skript FSK & TIMI,SoSe 2021 123 Stand: 9. Juni 2021
10. ? LOOP-, WHILE-, und GOTO-Berechenbarkeit
Eine Erläuterung dazu ist: Wir erhalten in durch Berechnung von xp mod b. Abschneiden
der letzten Stelle von xp bewerkstelligen wir durch xp div b. Für xs schneiden wir erst
die letzte Stelle ab (mit xs := xs div b), und fügen j′ als letzte Stelle hinzu (durch die
Zuweisung xs := b ∗ xs + j′) und anschließend fügen wir in als letzte Stelle hinzu (durch
die Zuweisung xs := b ∗ xs + (xp mod b)).
Für den Grenzfall
zkaj1 · · · ajm ` zl�aj1 · · · ajm
setze zuerst xp := r; wobei � = ar und führe dann das Programm für den allgemein Fall
aus.
• Falls δ(zk, aj1) = (zl, aj′ , N), dann ist die Transition
ai1 · · · ainzkaj1 · · · ajm ` ai1 · · · ainzlaj′aj2 · · · ajm
und bezüglich der Zahlendarstellung gilt daher:
– xz muss auf den Wert l aktualisiert werden
– xp bleibt unverändert.
– xs muss von (jm · · · j1)b zu (jm · · · j2j′)b aktualisiert werden
Das Programm P (k, j1) sei dann:
xz := l;
xs := xs div b;
xs := b ∗ xs + j′
• Falls δ(zk, aj1) = (zl, aj′ , R), dann ist die Transition
ai1 · · · ainzkaj1 · · · ajm ` ai1 · · · ainaj′zlaj2 · · · ajm ,
fallsm > 1. Bezüglich der Zahlendarstellung gilt daher:
– xz muss auf den Wert l aktualisiert werden
– xp muss von (i1 · · · in)b zu (i1 · · · inj′)b aktualisiert werden
– xs muss von (jm · · · j1)b zu (jm · · · j2)b aktualisiert werden
Das Programm P (k, j1) sei dann:
xz := l;
xp := b ∗ xp + j′;
xs := xs div b
Für den Fallm = 1 gilt
ai1 · · · ainzkaj1 ` ai1 · · · aina
′
jzl�
In diesem Fall sei Pk,j1 das Programm
xz := l;
xp := b ∗ xp + j′;
xs := r
wobei � = ar.
Stand: 9. Juni 2021 124 D. Sabel, Skript FSK & TIMI,SoSe 2021
10.5. Simulation von Turingmaschinen mit GOTO-Programmen
Beachte, dass wir die Sonderfälle „abfragen“ können, indem wir testen, ob xp bzw. xs denWert
0 hat.
Insgesamt wird eine TM durch das folgende GOTO-Programm simuliert, welches seine Ein-
gaben in den Programmvariablen x1, . . . , xk erwartet und seine Ausgabe in der Variablen x0
ablegt: Das Programm gliedert sich in drei große Abschnitte:
M1 : P1;
M2 : P2;
M3 : P3
ProgrammP1 erzeugt für die eingegebenenVariablenwerte in x1, . . . , xk deren Binärdarstellung
und anschließend die Darstellung der TM-Konfiguration. Programm P3 verwendet die Darstel-
lung der Endkonfiguration, um die Ausgabe in der Ausgabevariablen x0 zu erzeugen.Wir geben
beide Programme nicht explizit an, da sie mit einfachen mod- und div-Berechnung durchge-
führt werden können.
Programm P2 führt schrittweise die Berechnung der Turingmaschine durch (wir verwenden zur
besseren Darstellung, MarkierungenMi,j , die durch Umbenennen wieder in dieMi-Form ge-
bracht werden können):
M2 : xa := xs mod b;
IF (xz = 1) and (xa = 1) THEN GOTOM1,1;
IF (xz = 1) and (xa = 2) THEN GOTOM1,2;
. . .
IF (xz = q) and (xa = m) THEN GOTOMq,m
M1,1 : P
′
1,1;
GOTOM2;
M1,2 : P
′
1,2;
GOTOM2;
. . .
Mq,m : P
′
q,m
GOTOM2
Die Programmabschnitte P ′i,j sind GOTOM3, wenn zi ein Endzustand und ansonsten Pi,j (wie
oben bereits festgelegt).
Insgesamt zeigt dieses GOTO-Programm:
Satz 10.5.2. GOTO-Programme können Turingmaschinen simulieren. Jede Turingberechenbare
Funktion ist auch GOTO-berechenbar.
Theorem 10.5.3. Turingberechenbarkeit, WHILE-Berechenbarkeit und GOTO-Berechenbarkeit
sind äquivalente Begriffe.
Beweis. Das folgt aus den vorher gezeigten Sätzen und Theoremen. Das folgende Schau-
bild zeigt die gezeigten Implikationen, wobei wir der Vollständigkeit halber, auch die LOOP-
Berechenbarkeit aufführen:
D. Sabel, Skript FSK & TIMI,SoSe 2021 125 Stand: 9. Juni 2021
10. ? LOOP-, WHILE-, und GOTO-Berechenbarkeit
WHILE-berechenbar
LOOP-berechenbar
Turingberechenbar GOTO-berechenbar
Satz 10.5.2
Theorem 10.2.4 Theorem 10.4.1
Satz 10.2.3
Stand: 9. Juni 2021 126 D. Sabel, Skript FSK & TIMI,SoSe 2021
11
? Primitiv und µ-rekursive Funktionen
In diesem Kapitel betrachten wir zwei weitere Formalismen, um Berechenbarkeit darzustel-
len. Anstelle von imperative Kern-Programmiersprachen oder konkreten Maschinenmodelle
betrachten wir mit rekursiven Funktionen einen eher mathematischen Begriff. Wir führen pri-
mitiv rekursive Funktionen und sogenannte µ-rekursive Funktionen ein und werden im Ver-
lauf des Kapitels zeigen, dass die ersteren genau die LOOP-berechenbaren Funktionen darstel-
len, während die µ-rekursiven Funktionen äquivalent zu den Turingberechenbaren Funktionen
sind.
11.1. Primitiv rekursive Funktionen
Wir definieren die primitiv rekursiven Funktionen, um in Anschluss daran zu zeigen, dass diese
genau durch die LOOP-Programme berechnet werden.
11.1.1. Definition der primitiv rekursiven Funktionen
Definition 11.1.1 (Primitiv rekursive Funktion). Eine Funktion f : Nk → N ist primitiv rekursiv,
wenn sie der folgenden induktiven Definition genügt1:
• Jede konstante Funktion f mit f(x1, . . . , xk) = c ∈ N ist primitiv rekursiv.
• Die Projektionsfunktionen πi mit πki (x1, . . . , xk) = xi sind primitiv rekursiv.
• Für k = 1: Die Nachfolgerfunktion succ(x) = x+ 1 ist primitiv rekursiv.
• Wenn g : Nm → N, h1 : Nk → N, . . . , hm : Nk → N primitiv rekursiv sind, dann ist auch f
mit f(x1, . . . , xk) = g(h1(x1, . . . , xk), . . . , hm(x1, . . . , xk)) primitiv rekursiv.
• Wenn g : Nk−1 → N und h : Nk+1 → N primitiv rekursiv, dann ist auch f mit
f(x1, . . . , xk) =
{
g(x2, . . . , xk), wenn x1 = 0
h(f(x1 − 1, x2, . . . , xk), x1 − 1, x2, . . . , xk), sonst
primitiv rekursiv.
11.1.2. Einfache Beispiele und Konstruktionen primitiv rekursiver Funktionen
Die Projektionsfunktionen zusammen mit der Komposition erlauben die Konstruktion pri-
mitiv rekursiver Funktionen, welche Komponenten eines Tupels entfernen, vertauschen und
1D.h. die Menge der primitiv rekursiven Funktionen ist die kleinste Menge von Funktionen, die alle genannten
Eigenschaften erfüllt
Stand: 9. Juni 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
11. ? Primitiv und µ-rekursive Funktionen
verdoppeln. Z.B. ist für primitiv-rekursives g : N4 → N auch f : N3 → N mit
f(n1, n2, n3) = g(n2, n3, n3, n2) primitiv rekursiv, da f durch
f(n1, n2, n3) = g(π
3
2(n1, n2, n3), π
3
3(n1, n2, n3), π
3
3(n1, n2, n3), π
3
2(n1, n2, n3))
dargestellt werden kann.
Für den rekursiven Fall muss die Rekursion nicht notwendigerweise durch das erste Argument
laufen, da man mithilfe der Projektionen, der Komposition sowie zusätzlicher Hilfsfunktionen
auch ein anderes Argument nehmen kann. Allgemein kann für 1 ≤ i ≤ k
f(x1, . . . , xk) =
{
g(x1, . . . , xi−1, xi+1, xk), falls xi = 0
h(f(x1, . . . , xi−1, xi − 1, xi+1, . . . , xk), x1, . . . , xi−1, xi − 1, xi+1, . . . , xk), sonst
durch f(x1, . . . , xk) = f ′(xi, x1 . . . , xi−1, xi+1, . . . , xk) dargestellt werden, wobei
f ′(x1, . . . , xk) =
{
g′(x2, . . . , xk), falls x1 = 0
h′(f ′(x1 − 1, x2 . . . , xk), x1 − 1, x2, . . . , xk), sonst
g′(x1, . . . , xk−1) = g(x2, . . . , xi, x1, xi+1, . . . , xk)
h′(x1, . . . , xk+1) = h(x1, x2, . . . , xi, x1 − 1, xi+1, . . . , xk)
Daher verwenden wir die Rekursion auch für andere Argumente (d.h. nicht nur für das erste).
Beispiel 11.1.2. Die Additionsfunktion add(x1, x2) = x1 + x2 ist primitiv rekursiv, da sie durch
add(x1, x2) =
{
x2, falls x1 = 0
succ(add(x1 − 1, x2)), sonst
definiert werden kann. Beachte, dass wir hierbei für die Definition der primitiven Rekursion für g
und h die Funktionen g = π11 und h(x1, x2, x3) = succ(π
3
1(x1, x2, x3)) verwendet haben. Wir geben
im Folgenden die Funktionen g und h nicht immer explizit an.
Beispiel 11.1.3. Für die Addition x1 + x2 haben wir x1-mal die Nachfolgerfunktion auf x2 ange-
wendet. Für die Erstellung einer Multiplikationsfunktion x1 ∗ x2 kann man analog verfahren und
x1-mal x2 zu 0 addieren:
mult(x1, x2) =
{
0, falls x1 = 0
add(mult(x1 − 1, x2), x2), sonst
Die Differenz x1 − x2 ist nicht primitiv rekursiv, da wir den undefinierten Fall x1 < x2 nicht behandeln können. Allerdings ist die angepasste Differenz (die x1−x2 = 0 setzt, falls x1 < x2) primitiv rekursiv: Beispiel 11.1.4. Die Funktion sub : (N× N)→ N sei definiert durch: sub(x1, x2) = { x1, falls x2 = 0 pred(sub(x1, x2 − 1)) sonst wobei pred(x1) = { 0, falls x1 = 0 x1 − 1, sonst Stand: 9. Juni 2021 128 D. Sabel, Skript FSK & TIMI,SoSe 2021 11.1. Primitiv rekursive Funktionen Beachte, dass wir für sub die Rekursion im zweiten Argument angewendet haben. Da pred primitiv rekursiv ist, ist damit auch sub primitiv rekursiv. 11.1.3. Primitiv rekursive Funktionen zur Gödelisierung von Tupeln natürlicher Zahlen In diesem Abschnitt beschäftigen wir uns damit, wie wir Tupel von natürlichen Zahlen (x1, . . . , xk) bijektiv in die natürlichen Zahlen (d.h. jedem Tupel wird bijektiv eine natürliche Zahl zugeordnet) abbilden können. Das Ziel dabei ist es, primitiv rekursive Funktionen zu er- stellen, die diese Abbildung und die Umkehrabbildung realisieren. Im Rahmen des Abzählschemas für Paare natürlicher Zahlen haben wir bereits in Kapitel 2 Funktionen gesehen, die Paare natürlicher Zahlen in die natürlichen Zahlen abbilden. Nun verwenden wir den Ansatz aus (Sch08) und verwenden die folgende Funktion, die Paare aus (N× N) bijektiv in die natürlichen Zahlen einbettet2: c(x, y) = ( x+ y + 1 2 ) + x Z.B. zeigt die folgende Tabelle die Werte von c(x, y) für x, y ∈ {0, . . . , 5}: y\x 0 1 2 3 4 5 0 0 1 3 6 10 15 1 2 4 7 11 16 22 2 5 8 12 17 23 30 3 9 13 18 24 31 39 4 14 19 25 32 40 49 5 20 26 33 41 50 60 Die Funktion c ist primitiv rekursiv, da ( 0 2 ) = 0 und ( n+ 1 2 ) = ( n 2 ) + n. Um ein beliebiges k + 1-Tupel (x0, . . . , xk) in eine natürliche Zahl injektiv abzubilden, kön- nen wir die Funktion c wiederholt anwenden. Wir definieren dies durch den Operator 〈·〉, der definiert ist als: 〈x0, . . . , xk〉 = c(x0, c(x1, . . . , c(xk, 0) . . .)). Da die Komposition von primitiv rekursiven Funktionen wieder primitiv rekursiv ist, ist auch 〈·〉 primitiv rekursiv. Um aus einer mit 〈·〉 erzeugten natürlichen Zahl wieder die ursprünglichen Zahlen des Tu- pels zu gewinnen, genügt es Funktionen left und right zu haben, die left(c(x, y)) = x und right(c(x, y)) = y berechnen: Dann können wir Funktionen di programmieren, sodass di(〈x0, . . . , xk〉) = xi: d0(x) = left(x) d1(x) = left(right(x)) di(x) = left(right(right . . . right︸ ︷︷ ︸ imal (x) . . .)) 2Zur Erinnerung: Der Binomialkoeffizient „n über k“ für n, k ∈ N ist definiert als ( n k ) = n! k!·(n−k)! falls k ≤ n und( n k ) = 0 falls k > n.
D. Sabel, Skript FSK & TIMI,SoSe 2021 129 Stand: 9. Juni 2021
11. ? Primitiv und µ-rekursive Funktionen
Es bleibt zu zeigen, dass die Funktionen left und right existieren und primitiv rekursiv sind.
Hierfür benötigen wir auch primitiv rekursive Prädikate. Wir nennen ein Prädikat primi-
tiv rekursiv, wenn die ihm zugeordnete 0-1-wertige charakteristische Funktion primitiv re-
kursiv ist. Statt Prädikate direkt zu verwenden, benutzen wir im Folgenden direkt die 0-1-
wertige charakteristische Funktion, d.h. k-stellige Prädikate P,Q seien Funktionen der Form
P,Q : Nk → {0, 1}.
Der beschränkte Maximum-Operator maxP : Nk → N für ein k-stelliges Prädikat P : Nk →
{0, 1} sei definiert durch
maxP (n, x2, . . . , xk) :=
max{x1 ≤ n | P (x1, x2, . . . , xk)}, wenn es ein 0 ≤ x1 ≤ n gibt
mit P (x1, x2, . . . , xk) = 1.
0, sonst
D.h. der maxP (n, x2, . . . , xk)-Operator sucht nach einem maximalen Wert x1, sodass
P (x1, . . . , xk) erfüllt ist und x1 nicht größer als n ist.
Wenn P primitiv rekursiv ist, dann ist auchmaxP primitiv rekursiv:
maxP (x1, . . . , xk) =
0, wenn x1 = 0
x1, wenn P (x1, . . . , xk) = 1
maxP (x1 − 1, x2, . . . , xk), sonst
Äquivalent dazu ist die Definition:
maxP (x1, . . . , xk) =
0, wenn x1 = 0
maxP (x1 − 1, x2, . . . , xk)
+P (x1, . . . , xk) ∗ (x1 −maxP (x1 − 1, x2, . . . , xk)), sonst
Analog kann man einen beschränkten Existenztest existsP : Nk → {0, 1} programmieren, der
für ein gegebenes Prädikat P : Nk → {0, 1} und eine Zahl n prüft, ob es ein x1 mit 0 ≤ x1 ≤ n
gibt, sodass P (x1, x2, . . . , xk) erfüllt ist:
existsP (x1, . . . , xk) =
P (0, x2, . . . , xk), wenn x1 = 0
1, wenn P (x1, . . . , xk) = 1
existsP (x1 − 1, x2, . . . , xk), sonst
bzw. äquivalent dazu ist:
existsP (x1, . . . , xk) =
0, wenn x1 = 0
P (x1, . . . , xk) + existsP (x1 − 1, . . . , xk)
−P (x1, . . . , xk) ∗ existsP (x1 − 1, . . . , xk), sonst
Sei eqc(m,x, y) das Prädikat, dass testet, ob c(x, y) = m gilt. Das Prädikat eqc ist primitiv rekur-
siv: Berechne zunächst c(x, y) und anschließend vergleichemmit dem erhaltenenWert (durch
primitive Rekursion).
Nun können wir die Funktionen left und right definieren: Die Idee dabei ist, die folgende Im-
Stand: 9. Juni 2021 130 D. Sabel, Skript FSK & TIMI,SoSe 2021
11.1. Primitiv rekursive Funktionen
plementierung zu verwenden:
left(n) = max{x ≤ n | ∃y ≤ n : c(x, y) = n}
right(n) = max{y ≤ n | ∃x ≤ n : c(x, y) = n}
D.h. mit „Durchprobieren“ wird jeweils nach dem richtigemWert für x bzw. y „gesucht“. Da die
Abbildung c(x, y) bijektiv ist, gibt es für festes n nur genau einWertepaar (x, y) sodass c(x, y) =
n gilt. Außerdem gilt, dass x ≤ c(x, y) und y ≤ c(x, y). Daher genügt es, die Werte bis n für x
und y zu testen.
Die Darstellung mit den zuvor definierten beschränkten Operatoren (und zusätzlichen Prädi-
katen P1, P2, Q1, Q2) ist:
left(n) = maxP1(n, n)
P1(x, n) = existsP2(n, x, n)
P2(y, x, n) = eqc(n, x, y)
right(n) = maxQ1(n, n)
Q1(y, n) = existsQ2(n, y, n)
Q2(x, y, n) = eqc(n, x, y)
Daher sind left und right primitiv rekursiv.
11.1.4. Äquivalenz von LOOP-berechenbaren und primitiv rekursiven Funktionen
Sei P ein LOOP-Programm und ρ eine Variablenbelegung, sodass (ρ, P ) −−→
LOOP
∗ (ρ′, ε). Sei-
en x0, x1, . . . , xn alle vom Programm P verwendeten Variablen (auch solche, die nicht in
ρ vorkommen). Dann ist die von P berechnete Funktion vollständig durch eine Funktion
gP (〈x0, . . . , xn〉) = 〈x′0, . . . , x
′
n〉 (wobei x′i = ρ
′(xi)) beschrieben.
Wir zeigen zunächst, dass gP primitiv rekursiv ist.
Lemma 11.1.5. Für jedes LOOP-Programm P ist die zugehörige Funktion gP primitiv rekursiv.
Beweis. Wir zeigen, dass für jedes TeilprogrammQ die zugehörige Funktion gQ primitiv rekur-
siv ist und verwenden strukturelle Induktion.
• Basis: Falls Q eine Zuweisung xi = xj ± c ist, dann muss für die zugehörige Funktion gQ
gelten: gQ(〈m0, . . . ,mn〉) = 〈m0, . . . ,mi−1,mj ± c,mi, . . . ,mn〉. Diese Berechnung kann
durch gQ(x) = 〈d0(x), . . . , di−1(x), dj(x) + c, di+1(x), . . . dn(x)〉 dargestellt werden und da
Komposition, Addition, angepasste Subtraktion, 〈·〉, und di primitiv rekursiv sind, ist auch
gQ primitiv rekursiv.
• Q ist eine Sequenz Q1;Q2. Dann liefert uns die Induktionshypothese primitiv rekursive
Funktionen gQ1 und gQ2 und gQ(x) = gQ2(gQ1(x)) ist primitiv rekursiv, da die Komposition
primitiv rekursiver Funktionen wieder primitiv rekursiv ist.
• Q ist von der Form LOOP xi DO P END. Dann liefert uns die Induktionshypothese ei-
ne primitiv rekursive Funktion gP und wir konstruieren gQ so, dass gP dem Wert von xi
entsprechend oft angewendet wird:
gQ(x) = run(di(x), x)
run(n, x) =
{
x, falls n = 0
gP (run(n− 1, x)) sonst
D. Sabel, Skript FSK & TIMI,SoSe 2021 131 Stand: 9. Juni 2021
11. ? Primitiv und µ-rekursive Funktionen
Die Funktion run ist primitiv rekursiv und damit ist ebenfalls gQ primitiv rekursiv.
Satz 11.1.6. Jede LOOP-berechenbare Funktion ist primitiv rekursiv.
Beweis. Sei f : Nk → N LOOP-berechenbar. Dann gibt es ein LOOP-Programm P , sodass für
ρ = {x1 7→ n1, . . . , xk 7→ nk} gilt (ρ, P ) −−→
LOOP
∗ (ρ′, ε) und ρ′(x0) = f(n1, . . . , nk) und es gilt
f(n1, . . . , nk) = d0(gP (〈0, n1, . . . , nk, 0, . . . , 0〉)). Da 〈·〉, d0 und gP primitiv rekursiv sind, ist auch
f primitiv rekursiv.
Satz 11.1.7. Jede primitiv rekursive Funktion ist LOOP-berechenbar.
Beweis. Induktion über den Aufbau der primitiv rekursiven Funktion:
• Wenn f eine konstante Funktion, die Nachfolgerfunktion oder eine der Projektionsfunk-
tionen ist, dann ist diese auch LOOP-berechenbar (es ist leicht ein entsprechendes LOOP-
Programm anzugeben).
• Wenn f eine Komposition f(x1, . . . , xk) = h(g1(x1, . . . , xk), . . . , gn(x1, . . . , xk)) ist, dann
liefert die Induktionshypothese LOOP-Programme Ph und Pg,1, . . . , Pg,n, die h, g1,. . . ,gn
berechnen. Wir können das Programm für f nach dem Schema
y1 := g1(x1, . . . , xk); . . . ; yn := gn(x1, . . . , xk);x0 := h(y1, . . . , yn)
konstruieren. Für das genauere Vorgehen werden die Programme Pg,1, . . . , Pg,n, Ph so ab-
geändert, dass sie auf disjunkten Variablenmengen arbeiten und entsprechende Varia-
bleninhalte verdoppelt (wir lassen diese Details hier weg, überzeugen uns aber davon,
dass ein entsprechendes Programm erstellt werden kann).
• f ist rekursiv, d.h.
f(x1, . . . , xk) =
{
g(x2, . . . , xk) wenn x1 = 0
h(f(x1 − 1, x2, . . . , xk), x1 − 1, x2, . . . , xk) sonst
wobei g : Nk−1 → N und h : Nk+1 → N primitiv rekursiv sind. Dann erhalten wir durch
die Induktionshypothese LOOP-Programme Pg, Ph, die g und h berechnet.
Damit erstellen wir das Programm für f nach dem Schema
y := 0;x0 := g(x2, . . . , xk);LOOP x1 DO y := y + 1;x0 := h(x0, y, x2, . . . , xk) END
Die Sätze 11.1.6 und 11.1.7 zeigen:
Theorem 11.1.8. Die primitiv rekursiven Funktionen sind genau die LOOP-berechenbaren Funk-
tionen.
11.2. µ-Rekursive Funktionen
In diesem Abschnitt erweitern wir die Definition der rekursiven Funktionen um dem µ-
Operator, was zu den µ-rekursiven Funktionen führt. Wir argumentieren im Anschluss, dass
Stand: 9. Juni 2021 132 D. Sabel, Skript FSK & TIMI,SoSe 2021
11.2. µ-Rekursive Funktionen
die µ-rekursiven Funktionen mit den WHILE-berechenbaren Funktionen (und damit u.a. auch
mit den Turingberechenbaren und den GOTO-berechenbaren) Funktionen übereinstimmen.
Der µ-Operator „sucht“ nach einer kleinsten Nullstelle einer gegebenen Funktion h. Wenn die-
se jedoch nicht existiert (entweder da h keine Nullstelle hat, oder da h undefiniert ist fürWerte,
die kleiner als die Nullstelle sind), dann ist auch der µ-Operator angewendet auf h undefiniert:
Definition 11.2.1 (µ-Operator). Sei h : Nk+1 → N eine (partielle oder totale) Funktion. Dann ist
(µh) : Nk → N definiert als
(µh)(x1, . . . , xk) =
n falls h(n, x1, . . . , xk) = 0 und für allem < n: h(m,x1, . . . , xk) ist definiert und h(m,x1, . . . , xk) > 0.
undefiniert, sonst
Wie die folgende Definition festlegt, werden die µ-rekursiven Funktionen genauso wie die pri-
mitiv rekursiven Funktionen konstruiert, wobei zusätzlich der µ-Operator verwendet werden
darf:
Definition 11.2.2 (µ-rekursive Funktion). Die Menge aller µ-rekursiven Funktionen sei die
kleinste Menge, so dass gilt:
• Jede konstante Funktion f mit f(x1, . . . , xk) = c ∈ N ist µ-rekursiv.
• Die Projektionsfunktionen πki mit π
k
i (x1, . . . , xk) = xi sind µ-rekursiv.
• Die Nachfolgerfunktion succ(x) = x+ 1 ist µ-rekursiv.
• Wenn g : Nm → N, h1 : Nk → N, . . . , hm : Nk → N µ-rekursiv sind, dann ist auch f mit
f(x1, . . . , xk) = g(h1(x1, . . . , xk), . . . , hm(x1, . . . , xk)) µ-rekursiv.
• Wenn g : Nk−1 → N und h : Nk+1 → N µ-rekursiv, dann ist auch f mit
f(x1, . . . , xk) =
{
g(x2, . . . , xk) wenn x1 = 0
h(f(x1 − 1, x2, . . . , xk), x1 − 1, x2, . . . , xk) sonst
µ-rekursiv.
• Wenn h : Nk+1 → N µ-rekursiv ist, dann ist auch f = µh µ-rekursiv.
Satz 11.2.3. Jede WHILE-berechenbare Funktion ist µ-rekursiv.
Beweis. Wir erweitern den Beweis von Satz 11.1.6, und betrachten nur den Fall einerWHILE-
Schleife (alle anderen Fälle sind komplett analog zum Beweis von Satz 11.1.6).
• Falls P ein WHILE-Programm der FormWHILE xi 6= 0 DO Q END ist, dann liefert die
Induktionshypothese eine µ-rekursive Funktion gQ für Q. Wir definieren:
gP (x) = run(µ(runi)(x), x)
runi(n, x) = di(run(n, x))
run(n, x) =
{
x, falls n = 0
gQ(run(n− 1, x)) sonst
Die Funktion run(n, x) führt n-mal die zum Schleifenkörper zugehörige Funktion gQ aus.
Mit µ(runi)(x)wird berechnet, wie oft die Schleifeminimal durchlaufenwerdenmuss, bis
D. Sabel, Skript FSK & TIMI,SoSe 2021 133 Stand: 9. Juni 2021
11. ? Primitiv und µ-rekursive Funktionen
xi denWert 0 hat. Divergiert die Schleife, so ist µ(runi) undefiniert und dementsprechend
gP undefiniert.
Satz 11.2.4. Jede µ-rekursive Funktion ist WHILE-berechenbar.
Beweis. Bis auf den µ-Operator ist der Beweis analog zum Beweis von Satz 11.1.7. Wir betrach-
ten daher nur diesen neuen Fall.
• Sei f mit dem µ-Operator definiert, d.h. f = µh für eine Funktion h. Dann liefert die
Induktionshypothese ein WHILE-Programm Ph, welches h berechnet. Wir konstruieren
Pf nach dem folgenden Schema:
x0 := 0;
y := h(0, x1, . . . , xn);
WHILE y 6= 0 DO
x0 := x0 + 1; y := h(x0, . . . , xn)
END
Hierbei werden die Berechnungen für h(x0, . . . , xn) durch das ProgrammPh durchgeführt.
DieWHILE-Schleife berechnet den minimalen Wert, sodass h(x0, . . . , xn) = 0 gilt. Wenn
dieser nicht existiert, so terminiert die Schleife nicht. Dies entspricht gerade der Berech-
nung von µh.
Theorem 10.5.3 und Sätze 11.2.3 und 11.2.4 zeigen:
Theorem 11.2.5. Die µ-rekursiven Funktionen entsprechen genau den WHILE-berechenbaren
(und damit auch den GOTO- und Turingberechenbaren) Funktionen.
Stand: 9. Juni 2021 134 D. Sabel, Skript FSK & TIMI,SoSe 2021
12
? Schnell wachsende Funktionen: Die
Ackermannfunktion
In diesem Kapitel betrachten wir die vonWilhelm Ackermann in 1920er Jahren vorgeschlagene
sogenannte Ackermann-Funktion (Ack28), die extrem schnell wächst. Wir geben sie in einer
von Rózsa Péter (Pét35) vereinfachten Variante an. Wir zeigen schließlich in diesem Kapitel,
dass die Ackermannfunktion nicht LOOP-berechenbar (und damit auch nicht primitiv rekursiv)
ist, aber WHILE-berechenbar ist. Da die Ackermannfunktion total ist, zeigt dies, dass die Klas-
se der totalen µ-rekursiven Funktionen echt größer ist als die Klasse der primitiv rekursiven
Funktionen.
Die Ackermann-Funktion a : (N× N)→ N sei definiert als
a(x, y) =
y + 1, falls x = 0
a(x− 1, 1) falls x 6= 0 und y = 0
a(x− 1, a(x, y − 1)) falls x > 0 und y > 0
Einige Werte von a(x, y) zeigen, wie schnell die Werte der Ackermannfunktion riesig groß wer-
den:
y\x 0 1 2 3 4
0 1 2 3 5 13
1 2 3 5 13 65533
2 3 4 7 29 265536 − 3
3 4 5 9 61 a(3, 265536 − 3)
4 5 6 11 125 a(3, a(4, 3))
Die Ackermannfunktion ist total, denn die Rekursion terminiert stets: Entfaltet man die dritte
Zeile jeweils für das zweite Argument, so erhält man
a(x, y) = (a(x− 1, a(x− 1, a(x− 1, . . . , a(x− 1,︸ ︷︷ ︸
y+1−mal
1) . . .))))
Da a(x, y) für x = 0 terminiert und mit dem eben gezeigten alle rekursiven Aufrufe (nach ei-
nigen Schritten) das erste Argument echt verkleinern, folgt mit Induktion, dass a(x, y) stets
terminiert.
Intuitiv ist klar, dass man a(x, y) berechnen kann, und dies auch mit einer üblichen modernen
Programmiersprache tun kann. Wir zeigen, dass aWHILE-berechenbar ist.
Satz 12.0.1. Die Ackermannfunktion a ist WHILE-berechenbar.
Beweis. Der Beweis erstellt ein WHILE-Programm, welches die rekursive Berechnung, durch
Stand: 9. Juni 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
12. ? Schnell wachsende Funktionen: Die Ackermannfunktion
eine Berechnung mit einer WHILE-Schleife und einem Stack bewerkstelligt. Der Stack ist eine
Folge von Zahlen n1, . . . , nk, 0, wobei n1 ganz oben liegt und die 0 am Ende den Stackboden dar-
stellt. Wir stellen den Stack durch zwei Variablen dar: Die erste heißt stacksize und speichert
die Stackgröße, die zweite namens stack speichert den Stackinhalt indem wir die Kodierungs-
funktion 〈·〉 auf ihn anwenden.Wir geben zunächst an, wiewir verschiedene Stack-Operationen
als WHILE-Programm implementieren:
• push(x, stack) legt die Zahl x oben auf den Stack. Als WHILE-Programm erstellen wir
hierfür stack := c(x, stack); stacksize := stacksize+ 1;.
• x := pop(stack) entfernt das oberste Element vom Stack und setzt x auf dessen Wert. Als
WHILE-Programm x := left(stack); stack = right(stack); stacksize := stacksize− 1;
• stacksize 6= 1 prüft ob der Stack nicht nur 1 Element enthält. Als WHILE-Programm kön-
nen wir eine solche Abfrage formulieren.
Das Programmzur Berechnung desWertes von a(x, y) in der Variablen result hat dann folgende
Form:
stack := 0; stacksize := 0;
push(x, stack);
push(y, stack);
WHILE stacksize 6= 1 DO
y := pop(stack);
x := pop(stack);
IF x = 0
THEN push(y + 1, stack);
ELSE
IF y = 0
THEN push(x− 1, stack); push(1, stack)
ELSE push(x− 1, stack); push(x, stack), push(y − 1, stack);
END
END
END
result := pop(stack);
Zur Begründung der Korrektheit: In derWHILE-Schleife werden die aktuellenWerte von y und
x als oberste Elemente des Stacks gelesen. Je nachdem welcher Fall der Ackermannfunktion
zutrifft wird fortgefahren: Wenn x = 0, dann wird y+1 als Ergebnis auf den Stack gelegt. Wenn
dies der letzte Aufruf von a(x′, y′) war, enthält der Stack nur dieses Ergebnis und dieWHILE-
Schleife ist danach beendet. Anderenfalls steht das Ergebnis einer rekursiven Berechnung da-
durch auf dem Stack zur Verfügung. Im Fall y = 0werden neueWerte für x und y (d.h. x−1 und
1) auf den Stack gelegt und der nächste Schleifendurchlauf startet damit die Berechnung von
a(x− 1, 1). Im allgemeinen Fall wird y− 1, x, x− 1 auf den Stack gelegt: Der nächste Schleifen-
durchlauf startet damit die Berechnung von a(x, y−1) und deren Ergebnism liegt anschließend
auf dem Stack. Dadurch startet im Anschluss die Berechnung von a(m,x− 1).
Wir zeigen nun, dass die Ackermannfunktion nicht LOOP-berechenbar ist. Zunächst beweisen
wir einige Eigenschaften:
Lemma 12.0.2. Die folgenden Monotonie-Eigenschaften gelten für die Ackermannfunktion a:
1. y < a(x, y)
Stand: 9. Juni 2021 136 D. Sabel, Skript FSK & TIMI,SoSe 2021
2. a(x, y) < a(x, y + 1)
3. Falls y ≤ y′, dann gilt a(x, y) ≤ a(x, y′)
4. a(x, y + 1) ≤ a(x+ 1, y)
5. a(x, y) < a(x+ 1, y)
6. Falls x ≤ x′ und y ≤ y′, dann gilt auch a(x, y) ≤ a(x′, y′)
Beweis. 1. Wir verwenden Induktionüber das geordnete Paar (x, y)unddie lexikographische
Ordnung für Paare. Falls x = (0, 0), dann ist 0 < 0+1 = a(0, 0). Für den Induktionsschritt
sei (x, y) > (0, 0). Die Induktionshypothese ist, dass y′ < a(x′, y′) für alle (x′, y′) < (x, y).
Falls y = 0, dann gilt a(x, 0) = a(x− 1, 1) und mit der Induktionshypothese ist 1 < a(x−
1, 1). Daher gilt 0 < 1 < a(x, y). Falls y > 0, dann gilt a(x, y) = a(x − 1, a(x, y − 1)) und
mit der Induktionshypothese angewendet für das Paar (x − 1, a(x, y − 1)) folgt a(x, y −
1) < a(x − 1, a(x, y − 1)) und mit nochmaligen Anwenden für das Paar (x, y − 1) folgt
y− 1 < a(x, y− 1) und somit y− 1 < a(x, y− 1) < a(x− 1, a(x, y− 1)), was äquivalent zu
y ≤ a(x, y − 1) < a(x− 1, a(x, y − 1)), ist. Damit folgt y < a(x− 1, a(x, y − 1)) = a(x, y).
2. Wenn x = 0 ist, dann gilt a(0, y) = y + 1 < y + 2 = a(0, y + 1). Für x > 0 gilt a(x, y +
1) = a(x− 1, a(x, y)) aus der Definition der Ackermannfunktion. Mit Punkt 1 folgt daraus
a(x, y) < a(x, y + 1).
3. Dieser Teil folgt fast direkt aus Punkt 2. Verwende Induktion über y′−y: Wenn y′−y = 0,
dann gilt y = y′ und die Behauptung gilt. Falls y′− y > 0, dann betrachte y′′ = y′− 1. Die
Induktionshypothese zeigt a(x, y) ≤ a(x, y′′), da y′ > y gelten muss (und damit y′′ ≤ y).
Punkt 2 zeigt a(x, y′′) ≤ a(x, y′), woraus a(x, y) ≤ a(x, y′) folgt.
4. Wir verwenden Induktion über y. Wenn y = 0, dann gilt a(x+1, 0) = a(x, 1) per Definition
von a. Für y > 0 liefert die Induktionsannahme a(x, y) < a(x + 1, y − 1). Aus Punkt 1
folgt y < a(x, y) und damit auch y + 1 ≤ a(x, y) < a(x + 1, y − 1). Aus Punkt 2 folgt
a(x + 1, y − 1) < a(x + 1, y) und damit y + 1 ≤ a(x + 1, y). Schließlich folgt mit Punkt 3
und der Definition von a: a(x, y + 1) ≤ a(x, a(x+ 1, y)) = a(x+ 1, y)
5. Es gilt a(x, y) < a(x, y + 1) mit Punkt 2 und a(x, y + 1) ≤ a(x + 1, y) mit Punkt 4. Daher
folgt a(x, y) < a(x+ 1, y).
6. Analog zu Punkt 3 können wir aus Punkt 5 folgern, dass aus x ≤ x′ auch a(x, y) ≤ a(x′, y)
folgt. Schließlich folgt mit Punkt 3 aus y ≤ y′ auch a(x′, y) ≤ a(x′, y′).
Lemma 12.0.3. Die beiden folgenden Eigenschaften gelten für die Ackermannfunktion:
1. a(1, y) = y + 2
2. a(2, y) = 2y + 3
Beweis. 1. Induktion über y. Die Basis gilt, denn a(1, 0) = a(0, 1) = 1 + 1 = 2. Für den
Induktionsschritt sei y > 0. Dann gilt a(1, y) = a(0, a(1, y− 1)) = 1 + a(1, y− 1) =I.H. 1 +
(y − 1) + 2 = y + 2
2. Induktion über y. Für die Basis gilt a(2, 0) = a(1, 1) = a(0, a(1, 0)) = 1 + a(1, 0) = 1 +
a(0, 1) = 1 + 2 = 3. Für den Induktionsschritt sei y > 0. Es gilt a(2, y) = a(1, a(2, y−1)) =
(a(2, y − 1)) + 2 mit der Definition von a und mit Punkt 1. Mit der Induktionshypothese
folgt a(2, y − 1)) + 2 = 2(y − 1) + 3 + 2 = 2y + 3.
D. Sabel, Skript FSK & TIMI,SoSe 2021 137 Stand: 9. Juni 2021
12. ? Schnell wachsende Funktionen: Die Ackermannfunktion
Sei P ein LOOP-Programm und seien x0, . . . , xk die im Programm vorkommenden Variablen.
Wir ordnen P die folgende Funktion zu
fP (n) = max
{
k∑
i=0
ρ′(xi) |
k∑
i=0
ρ(xi) ≤ n, (ρ, P ) −−→
LOOP
∗ (ρ′, ε)
}
D.h. wir bestimmen die maximale Zahl, die als Summe aller Endbelegungen ρ′ der Variablen
x0, . . . , xk zustande kommt, über alle initialenVariablenbelegung ρ, die in der SummederWerte
ρ(x0), . . . , ρ(xk) den Wert n nicht überschreiten.
Satz 12.0.4. Für jedes LOOP-Programm P gibt es eine Konstante k, so dass fP (n) < a(k, n) für
alle n ∈ N.
Beweis. Der Beweis erfolgt durch strukturelle Induktion über das LOOP-Programm.
• Wenn das Programm eine Zuweisung der Form xi := xj + c ist und c > 1, dann transfor-
miere das Programm in die Sequenz xi := xj + 1;xi := xi + 1; . . . xi := xi + 1︸ ︷︷ ︸
c−1mal
.
Anschließend können wir für alle Zuweisungen der Form xi := xj ± c annehmen, dass sie
von der Form xi := xj + c mit c ∈ Z und c ≤ 1 sind. Dann gilt für solche Zuweisungen
fP (n) ≤ 2n+ 1, da im maximalen Fall ρ(xk) = 0 für k 6= j, ρ(xj) = n und c = 1 und damit
ρ′(xi) = n+ 1, ρ
′(xj) = n und ρ′(xk) = 0 für k 6= j und k 6= i gilt. Mit Lemma 12.0.3 folgt
fP (n) ≤ 2n+ 1 < 2n+ 3 = a(2, n). D.h. die Aussage gilt mit k = 2.
• Wenn P = P1;P2, dann liefert die Induktionsannahme fP1(n) < a(k1, n) und fP2(n) <
a(k2, n) für irgendwelche Konstanten k1, k2. Es gilt
fP (n) = fP2(fP1(n))
< a(k2, a(k1, n))
≤ a(max{k1, k2}, a(max{k1, k2}, n) (mit Lemma 12.0.2 Punkt 6)
≤ a(max{k1, k2}, a(max{k1, k2}+ 1, n+ 1) (mit Lemma 12.0.2 Punkt 6)
= a(max{k1, k2}+ 1, n+ 1) (Definition von a)
≤ a(max{k1, k2}+ 2, n) (mit Lemma 12.0.2 Punkt 4)
Daher gilt die Behauptung für k = max{k1, k2}+ 2.
• Falls P eine LOOP-Schleife LOOP xi DO Q END ist und xi in Q vorkommt, dann ersetze
LOOP xi DO Q END durch x′i := xi;LOOP x
′
i DO Q END;x
′
i := 0, wobei x
′
i eine neue
Variable ist. Das ändert fP (n) nicht. Nehme daher an, dass xi nicht inQ vorkommt. Dann
gibt es kQmit fQ(n) < a(kQ, n). Da fP (n) eine Maximumberechnung ist, sei ρ so gewählt,
dass fP (n) maximal ist. Wenn ρ(xi) = 0, dann ist fP (n) = n < a(0, n). Wenn ρ(xi) = 1,
Stand: 9. Juni 2021 138 D. Sabel, Skript FSK & TIMI,SoSe 2021
dann ist fP (n) = fQ(n) < a(kQ, n) Sei ρ(xi) ≥ 2. Da xi nicht in Q vorkommt, gilt:
fP (n) = fQ(. . . (fQ︸ ︷︷ ︸
ρ(xi)mal
(n− ρ(xi)) . . .) + ρ(xi) (da xi nicht vorkommt, kann
fQ darauf nicht wirken)
≤ a(k1, . . . , a(k1, n− ρ(xi)) . . .) (ρ(xi)-mal gilt < (für jede
Anwendung von fQ). Daher
≤ und ρ(xi) fällt weg)
< a(k1, . . . , a(k1,︸ ︷︷ ︸
ρ(xi)−1mal
a(k1 + 1, n− ρ(xi)) . . .)) (mit Lemma 12.0.2, Punkt 5)
= a(k1 + 1, n− ρ(xi) + ρ(xi)− 1) (Definition von a)
= a(k1 + 1, n− 1)
≤ a(k1 + 1, n) (mit Lemma 12.0.2, Punkt 2)
Theorem 12.0.5. Die Ackermannfunktion ist nicht LOOP-berechenbar (und damit auch nicht pri-
mitiv rekursiv).
Beweis. Nimm an a ist LOOP-berechenbar. Dann ist auch f(x) = a(x, x) LOOP-berechenbar
und es gibt ein LOOP-Programm P , das f(x1) berechnet. Dann gilt f(x) ≤ fP (x) (da ρ′(x0) =
f(x) nach Ausführung von P gelten muss). Mit Satz 12.0.4 gibt es eine Konstante k, sodass
fP (n) < a(k, n). Wenn P nun mit ρ = {x1 7→ k} gestartet wird, dann gilt f(k) ≤ fP (k) <
a(k, k) = f(k). Da f(k) < f(k) ein Widerspruch ist, war unsere Annahme falsch und a ist nicht
LOOP-berechenbar.
Theorem 12.0.6. Es gibt totale WHILE-berechenbare (bzw. GOTO-berechenbare, Turingbere-
chenbare, µ-rekursive) Funktionen, die nicht LOOP-berechenbar (bzw. primitiv rekursiv) sind.
D. Sabel, Skript FSK & TIMI,SoSe 2021 139 Stand: 9. Juni 2021
13
Unentscheidbarkeit
In diesem Kapitel definieren wir basierend auf dem Begriff der Berechenbarkeit die Entscheid-
barkeit von Problemen und betrachten im Anschluss das Halteproblem für Turingmaschinen
(und Varianten davon) und zeigen, dass dieses Problem nicht entscheidbar ist. Danach erläu-
tern wir die Technik, ein Problem auf ein anderes zu reduzieren und zeigen damit die Unent-
scheidbarkeit von weiteren Problemen.
Definition 13.0.1. Eine Sprache L ⊆ Σ∗ heißt entscheidbar, wenn die charakteristische Funktion
von L, χL : Σ∗ → {0, 1} mit
χL(w) =
{
1, falls w ∈ L
0, falls w 6∈ L
berechenbar ist.
Eine Sprache heißt semi-entscheidbar falls χ′L : Σ
∗ → {0, 1} mit
χ′L(w) =
{
1, falls w ∈ L
undefiniert, falls w 6∈ L
berechenbar ist.
Für Mengen L ⊆ N lässt sich obige Definition sinngemäß anwenden.
Algorithmisch gesehen muss für den Fall der Entscheidbarkeit ein immer anhaltender Algo-
rithmus formuliert werden, während im Falle der Semi-Entscheidbarkeit ein Algorithmus aus-
reicht, der nur im Erfolgsfall (w ∈ L) anhält und ansonsten unendlich lange läuft.
Satz 13.0.2. Ein Sprache L ist genau dann entscheidbar, wenn L und L jeweils semi-entscheidbar
sind.
Beweis. Aus einer Turingmaschine, die χL berechnet, können leicht TMs konstruiert werden,
dieχ′L undχ
′
L
berechnen. Umgekehrt kann aus zwei TMsML undML, dieχ
′
L undχ
′
L
berechnen,
eine TM konstruiert werden, die sich wie folgt verhält und damit χL berechnet:
Starte mit i = 1.
Simuliere i-Schritte vonML.
Wenn diese akzeptiert, dann akzeptiere mit Ausgabe 1.
Ansonsten simuliere i-Schritte vonML.
Wenn diese akzeptiert, dann akzeptiere mit Ausgabe 0.
Ansonsten erhöhe i um 1 und starte von neuem.
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 9. Juni 2021
Korollar 13.0.3. Wenn L entscheidbar ist, dann ist auch L entscheidbar.
Definition 13.0.4. Eine Sprache L ⊆ Σ∗ heißt rekursiv aufzählbar, falls L = ∅ oder falls es eine
totale berechenbare Funktion f : N → Σ∗ gibt, sodass L =
⋃
i∈N f(i). Man sagt dann „f zählt L
auf“.
Lemma 13.0.5. Die Sprache Σ∗ ist rekursiv-aufzählbar.
Beweis. Sei |Σ| = b. Sei n ∈ N. Interpretiere ein Wort w ∈ Σ∗ als b + 1-äre Zahl. Konstruiere
eine TM, die auf einem Band, die Eingabe n in Binärdarstellung erhält und auf dem anderen
Band die b + 1-äre Zahl 0. Anschließend zählt die TM, die Binärzahl herunter und erhöht bei
jedem Herunterzählen die b + 1-äre Zahl um 1. Wenn der Binärzähler auf 0 ist, dann enthält
das andere Band das Wort f(n).
Satz 13.0.6. Eine Sprache ist genau dann rekursiv aufzählbar, wenn sie semi-entscheidbar ist.
Beweis. Sei die Sprache L rekursiv aufzählbar und f die totale und berechenbare Funktion, die
L aufzählt. Der Algorithmus
Für i = 0, 1, 2, 3, . . . tue
wenn f(i) = w dann
stoppe und gebe 1 aus
berechnet χ′L(w).
Sei nun L eine semi-entscheidbare Sprache und M eine TM, die χ′L berechnet. Wenn L = ∅,
dann ist L rekursiv-aufzählbar.
Anderenfalls sei u ∈ L ein Wort. Wir müssen zeigen, dass es eine totale und berechenbare
Funktion f gibt, die L aufzählt. Wir konstruieren eine TM M ′. Sei n eine Eingabe. Wir inter-
pretieren, diese als c(x, y) und berechnen mit left(n) und right(n) die Komponenten x und y.
Anschließend prüfen wir, ob TMM bei Eingabe g(x) nach y Schritten akzeptiert (M ′ simuliert
y Schritte vonM ). Hierbei ist g(x) das zu x zugehörige Wort aus Σ∗ (dieses wird zuvor vonM ′
berechnet, siehe Lemma 13.0.5). Ist dies der Fall, so akzeptiert die TM M ′ mit Ausgabe g(x).
Anderenfalls akzeptiert die TMM ′ mit Ausgabe u.
Die TMM ′ hält daher für jede Eingabe und berechnet eine totale Funktion f :
f(n) =
{
w ∈ L, falls w = g(left(n)) undM akzeptiert w in right(n) Schritten
u ∈ L, sonst
Für jedesw ∈ L gibt es eine Zahl x, sodassw = g(x), und eine Zahl y, sodassM nach y Schritten
bei Eingabe w anhält und dieses Wort akzeptiert. Dann zähltM ′ das Wort w bei Eingabe c(x, y)
auf. Daher ist L aufzählbar.
Insgesamt zeigen unsere bisherigen Definitionen und Resultate, dass die folgenden Aussagen
äquivalent sind:
• L ist vom Typ 0.
• L ist semi-entscheidbar.
• L ist rekursiv-aufzählbar.
• Es gibt eine TuringmaschineM , die L akzeptiert (d.h. L(M) = L).
D. Sabel, Skript FSK & TIMI,SoSe 2021 141 Stand: 9. Juni 2021
13. Unentscheidbarkeit
• χ′L ist Turing-, WHILE-, GOTO-berechenbar.
• Es gibt berechenbare Funktionen, die L als Wertebereich (nämlich die L aufzählende
Funktion) bzw. als Definitionsbereich (nämlich χ′L) haben.
Beachte, dass die rekursive Aufzählbarkeit im Allgemeinen nicht dasselbe ist wie Abzählbar-
keit (siehe auch Abschnitt 2.4): Eine Sprache L ist abzählbar, wenn es eine totale Funktion
f : N → L gibt, sodass
⋃
i∈N f(i) = L. Der wesentliche Unterschied ist, dass Abzählbarkeit
nicht die Berechenbarkeit von f fordert. Daher sind die Begriffe Abzählbarkeit und rekursive
Aufzählbarkeit verschieden.
13.1. Gödelisierung von Turingmaschinen
Wir erläutern, wie Turingmaschinenbeschreibungen als Zahlen in Binärdarstellung, d.h. als
Worte über dem Alphabet {0, 1} dargestellt werden können. Wir wollen dies bewerkstelligen,
um im Anschluss daran, diese Beschreibungen als Eingaben anderer Turingmaschinen zu ver-
wenden.
Sei (Z,Σ,Γ, δ, z0,�, E) eine deterministische Turingmaschine mit Σ = {0, 1}. Wir nehmen an,
dass Γ und Z durchnummeriert sind:
• Γ = {a0, . . . , ak}
• Z = {z0, . . . , zn}
und dass (o.B.d.A) a0 = �, a1 = #, a2 = 0, a3 = 1, z0 der Startzustand ist und E = {zn} gilt.
Jeder Regel δ(zp, ai) = (zq, aj , D) ordnen wir das Wort
wp,i,q,j,D = ##bin(p)#bin(i)#bin(q)#bin(j)#bin(Dm)
mit
Dm =
0, fallsD = L
1, fallsD = R
2, fallsD = N
über dem Alphabet {0, 1,#} zu.
Alle zu δ-zugehörigenWorte, werden (in irgendeiner Reihenfolge) hintereinander geschrieben.
Wir bezeichnen dieses Wort als wδ.
Schließlich kodieren wir das Alphabet {0, 1,#} durch {0 7→ 00, 1 7→ 01,# 7→ 11}. Wir bezeich-
nen die so kodierte TuringmaschineM als Wort wM .
Nicht jedesWort über dem Alphabet {0, 1} entspricht der Kodierung einer Turingmaschine. Sei
M̂ eine beliebige aber feste Turingmaschine. Dann können wir für jedes Wort w ∈ {0, 1}∗ die
zugehörige TuringmaschineMw festlegen als
Mw :=
{
M, wenn w = wM
M̂, sonst
Stand: 9. Juni 2021 142 D. Sabel, Skript FSK & TIMI,SoSe 2021
13.2. Das Halteproblem
13.2. Das Halteproblem
13.2.1. Unentscheidbarkeit des speziellen Halteproblems
Definition 13.2.1 (Spezielles Halteproblem). Das spezielle Halteproblem ist die Sprache
K := {w ∈ {0, 1}∗ |Mw hält für Eingabe w}
Satz 13.2.2. Das spezielle Halteproblem ist nicht entscheidbar (und damit unentscheidbar).
Beweis. Nimm an, K ist entscheidbar. Dann ist χK berechenbar. D.h. es gibt eine TM M , die
χK berechnet.
Wir konstruieren eine TMM ′, die zunächstM ablaufen lässt und anschließend:
• WennM mit 0 auf dem Band endet, dann hältM ′ an und akzeptiert.
• WennM mit 1 auf dem Band endet, dann läuftM ′ in eine Endlosschleife.
Illustriert durch das folgende Bild:
start
M
„Band 1 = 0?“
stop Endlosschleife
ja nein
Betrachte nunM ′ auf der Eingabe wM ′: Es gilt
M ′ hält für Eingabe wM ′
g.d.w. M angesetzt auf wM ′ gibt 0 aus
g.d.w. χK(wM ′) = 0
g.d.w. wM ′ 6∈ K
g.d.w. M ′ hält nicht für Eingabe wM ′
Das ergibt
M ′ hält für Eingabe wM ′ ⇐⇒ M ′ hält nicht für Eingabe wM ′
und stellt daher einenWiderspruch dar. D.h. unsereAnnahmewar falsch,K ist nicht entscheid-
bar.
Der obige Beweis benutzt implizit ein Diagonalisierungsargument, dass wir genauer erläutern:
Betrachte die folgende Tabelle:
w1 w2 w3 w4 . . .
Mw1 ja nein ja . . . . . .
Mw2 nein nein ja . . . . . .
Mw3 ja nein ja . . . . . .
Mw4 . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
D. Sabel, Skript FSK & TIMI,SoSe 2021 143 Stand: 9. Juni 2021
13. Unentscheidbarkeit
Als Spaltenüberschriften enthält sie alle Worte über {0, 1} (indem sie aufgezählt werden)
und als Zeilenbeschriftungen alle Turingmaschinen Mw1 ,Mw2 , . . . die sich aus der Beschrei-
bung von wi ergeben. Nehme an, die Tabelleneinträge in Zeile i und Spalte j sind ja,
wenn Mwi bei Eingabe wj akzeptiert und hält und nein anderenfalls. Sei LD die Sprache
LD = {wi | Mwi hält nicht für Eingabe wi}. Sei wD die Beschreibung einer Turingmaschine,
die LD entscheidet undMwD die Turingmaschine dazu. Dann verhält sich dieMwD genau ge-
gensätzlich zur Diagonalen der obigen Tabelle. Irgendwann jedoch wird in der Tabelle auch das
WortwD selbst aufgezählt, und der Eintrag in der Spalte fürwD und der Zeile fürMwD wäre das
Gegenteil zum selben Eintrag:
w1 w2 w3 w4 . . . wD
Mw1 ja nein ja . . . . . . . . .
Mw2 nein nein ja . . . . . . . . .
Mw3 ja nein ja . . . . . . . . .
Mw4 . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
MwD nein ja nein . . . . . . ?
. . .
Daher entsteht der Widerspruch und es ergibt sich, dass die Beschreibung wD nicht existieren
kann. Die Sprache LD ist daher nicht entscheidbar (und auch nicht semi-entscheidbar).
13.2.2. Reduktionen
Wir führen ein „Hilfsmittel“ ein, um Unentscheidbarkeit von Sprachen L nachzuweisen. Hier-
bei wird eine bereits als unentscheidbar bekannte SpracheL0 verwendet und gezeigt: Wenn die
neu zu betrachtende SpracheL entscheidbar wäre, dannwäre auchL0 entscheidbar. DaL0 aber
bereits als unentscheidbar bekannt ist, kann auch L nicht entscheidbar sein.
Definition 13.2.3 (Reduktion (einer Sprache auf eine andere)). Sei L1 ⊆ Σ∗1 und L2 ⊆ Σ
∗
2
Sprachen. Dann sagen wir L1 ist auf L2 reduzierbar (geschrieben L1 ≤ L2), falls es eine totale und
berechenbare Funktion f : Σ∗1 → Σ
∗
2 gibt, sodass für alle w ∈ Σ
∗
1 gilt: w ∈ L1 ⇐⇒ f(w) ∈ L2.
Satz 13.2.4. Wenn L1 ≤ L2 und L2 entscheidbar (bzw. semi-entscheidbar) ist, dann ist auch L1
entscheidbar (bzw. semi-entscheidbar).
Beweis. Wir betrachten nur den Fall der Entscheidbarkeit. Der Beweis für die Semi-
Entscheidbarkeit ist analog. Sei f die L1 ≤ L2 bezeugende (und berechenbare) Funktion. Da
L2 entscheidbar ist, ist χL2 berechenbar. Damit ist auch χL1(w) := χL2(f(w)) berechenbar.
Offensichtlich gilt
χ(L1)(w) :=
{
1, w ∈ L1
0, w 6∈ L1
}
=
{
1, f(w) ∈ L2
0, f(w) 6∈ L2
}
= χL2(f(w))
Mit Kontraposition folgt aus Satz 13.2.4:
Stand: 9. Juni 2021 144 D. Sabel, Skript FSK & TIMI,SoSe 2021
13.2. Das Halteproblem
Lemma 13.2.5. Sei L1 ≤ L2 und L1 ist unentscheidbar. Dann ist auch L2 unentscheidbar.
Wir verwendenmeistens die Variante in Lemma 13.2.5, um Unentscheidbarkeit von Problemen
zu zeigen. Das Vorgehen dabei ist:
• L1 sei eine bekannt unentscheidbare Sprache
• Reduziere L1 auf L2 durch Angabe einer berechenbaren Funktion f mit w ∈ L1 ⇐⇒
f(w) ∈ L2.
• Damit folgt, dass L2 unentscheidbar ist.
13.2.3. Unentscheidbarkeit des Halteproblems
Definition 13.2.6 ((Allgemeines) Halteproblem). Das (allgemeine) Halteproblem ist definiert
alsH := {w#x | TMMw hält für Eingabe x}
Satz 13.2.7. Das allgemeine Halteproblem ist unentscheidbar.
Beweis. Wir reduzieren das spezielle Halteproblem auf das allgemeine Halteproblem, und zei-
gen daherK ≤ H. Sei f(w) = w#w. Dann gilt
w ∈ K
g.d.w. Mw hält für Eingabe w
g.d.w. w#w ∈ H
g.d.w. f(w) ∈ H
Offensichtlich kann f durch eine TM berechnet werden und ist daher berechenbar.
13.2.4. Halteproblem bei leerer Eingabe
Definition 13.2.8. Das Halteproblem auf leerem Band ist die Sprache
H0 = {w |Mw hält für die leere Eingabe}.
Satz 13.2.9. Das Halteproblem auf leerem Band ist unentscheidbar.
Beweis. Wir reduzieren das Halteproblem auf das Halteproblem auf leerem Band und zeigen
daher H ≤ H0. Sei f(wM#x) = wM0,x , wobei M0,x die Turingmaschine ist, die sich wie M
verhält aber vorher x auf das Eingabeband schreibt. Dann gilt
wM#x ∈ H
g.d.w. Mw hält für Eingabe x
g.d.w. M0,x hält für die leere Eingabe
g.d.w. wM0,x ∈ H0
g.d.w. f(wM#x) ∈ H0
Die Funktion f kann durch eine TM berechnet werden und ist daher berechenbar.
D. Sabel, Skript FSK & TIMI,SoSe 2021 145 Stand: 9. Juni 2021
13. Unentscheidbarkeit
13.3. Der Satz von Rice
Der folgende Satz (vonHenry Gordon Rice im Jahr 1953 veröffentlicht, (Ric53)) zeigt, dass quasi
jede interessante Eigenschaft von Turingmaschinen algorithmisch nicht entscheidbar ist. Z.B.
zeigt der Satz, dass die Sprache L = {w | Mw berechnet eine konstante Funktion} nicht ent-
scheidbar ist.
Satz 13.3.1 (Satz von Rice). Sei R die Klasse aller Turingberechenbaren Funktionen. Sei S eine
beliebige Teilmenge, sodass ∅ ⊂ S ⊂ R. Dann ist die Sprache
C(S) = {w | die vonMw berechnete Funktion liegt in S}
unentscheidbar.
Beweis. Sei Ω die überall undefinierte Funktion. Offensichtlich gilt Ω ∈ R. Nehme an, dass
Ω 6∈ S gilt. Da ∅ ⊂ S, gibt es eine Funktion q ∈ S, die von einer Turingmaschine Q berechnet
wird.
SeiM∗ eine Turingmaschine, die bei Eingabe y und einer weiteren TuringmaschineM das fol-
gende macht:
1. SimuliereM auf leerer Eingabe.
2. WennM anhält, dann simuliere Qmit Eingabe y.
Sei f die Funktion, die aus einer Beschreibung w für TM Mw, die Beschreibung der TM M∗w
erstellt.
Dann gilt: w ∈ H0 =⇒ Mw hält auf leerer Eingabe
=⇒ M∗w berechnet q
=⇒ die vonM∗w berechnete Funktion liegt S
=⇒ f(w) ∈ C(S)
und ebenso: w 6∈ H0 =⇒ Mw hält nicht auf leerer Eingabe
=⇒ M∗w berechnet Ω
=⇒ die vonM∗w berechnete Funktion liegt nicht in S
=⇒ f(w) 6∈ C(S)
Damit haben wir gezeigt: w ∈ H0 ⇐⇒ f(w) ∈ C(S) und somit H0 ≤ C(S) und da H0
unentscheidbar ist, ist damit auch C(S) unentscheidbar.
Wenn Ω ∈ S gilt, dann zeige mit obigem Beweis, dass H0 ≤ C(R \ S). Dann folgt aus der
Unentscheidbarkeit von C(R \ S) auch die Unentscheidbarkeit von C(R \ S) = C(S) (dies ist
eine Konsequenz aus Korollar 13.0.3).
13.4. Das Postsche Korrespondenzproblem
Wir betrachten in diesem Abschnitt ein weiteres unentscheidbares Problem, welches häufig
verwendet wird, um dieses auf andere Probleme zu reduzieren, um deren Unentscheidbarkeit
nachzuweisen. Das Problem ist das Postsche Korrespondenzproblem (PCP, Post Correspon-
dence Problem) welches von Emil Post im Jahr 1946 vorgeschlagen wurde (Pos46).
Stand: 9. Juni 2021 146 D. Sabel, Skript FSK & TIMI,SoSe 2021
13.4. Das Postsche Korrespondenzproblem
Definition 13.4.1 (Postsches Korrespondenzproblem). Gegeben sei ein AlphabetΣ und eine Fol-
ge von Wortpaaren K = {(x1, y1), . . . , (xk, yk)} mit xi, yi ∈ Σ+. Das Postsche Korrespondenz-
problem (PCP) ist die Frage, ob es für die gegebene Folge K eine Folge von Indizes i1, . . . , im mit
ij ∈ {1, . . . , k} gibt, sodass xi1 · · ·xim = yi1 · · · yim gilt.
Das PCP kann als Spiel aufgefasst werden, wobei die einzelnen Spielsteinarten durch die Wort-
paare dargestellt sind, d.h. die Spielsteine haben die Form
[
xi
yi
]
. Gesucht ist eine Aneinander-
reihung der Spielsteine, sodass oben wie unten dasselbe Wort abgelesen werden kann. Dabei
dürfen beliebig (aber endlich) viele Spielsteine verwendet werden.
Beispiel 13.4.2. SeiK = (
[
a
aba
]
,
[
baa
aa
]
,
[
ab
bb
]
). Dann ist I = 1, 2, 3, 2 eine Lösung, da
[
a
aba
] [
baa
aa
] [
ab
bb
] [
baa
aa
]
= abaaabbaa
= abaaabbaa
Für die InstanzK = (
[
ab
bba
]
,
[
ba
baa
]
,
[
ba
aba
]
,
[
bba
b
]
) ist das Finden einer Lösung nicht mehr
so einfach. Die kürzeste Lösung benötigt bereits 66 Paare und ist 2, 1, 3, 1, 1, 2, 4, 2, 1, 3, 1, 3, 1, 1,
3, 1, 1, 2, 4, 1, 1, 2, 4, 3, 1, 4, 4, 3, 1, 1, 1, 2, 4, 2, 4, 4, 4, 3, 1, 3, 1, 4, 2, 4, 1, 1, 2, 4, 1, 4, 4, 3, 1, 4,
4, 3, 4, 4, 3, 4, 2, 4, 1, 4, 4, 3.
Wir zeigen die Unentscheidbarkeit des PCP durch zwei Reduktionen: Wir zeigen sowohl H ≤
MPCP als auch MPCP ≤ PCP. Dabei ist MPCP das modifizierte PCP, welches nur Lösungen er-
laubt, die mit dem Spielstein der ersten Bauart beginnen.
13.4.1. MPCP ≤ PCP
Definition 13.4.3 (Modifiziertes Postsches Korrespondenzproblem). Gegeben sei ein Alphabet
Σ und eine Folge von Wortpaaren K = {(x1, y1), . . . , (xk, yk)} mit xi, yi ∈ Σ+. Das Modifizierte
Postsche Korrespondenzproblem (MPCP) ist die Frage, ob es für die gegebene Folge K eine Folge
von Indizes 1, i2, . . . , im mit ij ∈ {1, . . . , k} gibt, sodass xi1 · · ·xim = yi1 · · · yim gilt.
Lemma 13.4.4. MPCP ≤ PCP
Beweis. Wir müssen eine Funktion f angeben, sodass jede InstanzK des MPCP-Problems eine
Lösung hat genau dann wenn Instanz f(K) eine Lösung für das PCP hat.
SeiK = ((x1, y1), . . . , (xk, yk)) eineMPCP-Instanz über AlphabetΣ und seien $ und# Symbole,
die nicht in Σ vorkommen. Für w = a1 · · · an ∈ Σ+ definieren wir:
w̄ = #a1#a2# · · ·#an#
ẃ = a1#a2# · · ·#an#
ẁ = #a1#a2# · · ·#an
Schließlich sei f(K) = ((x̄1, ỳ1), (x́1, ỳ1), . . . (x́k, ỳk), ($,#$)) = (x′1, y
′
1), . . . , (x
′
k+2, y
′
k+2)).
Wenn 1, i2, . . . , im eine Lösung für das MPCP ist, dann sind die oberen und die un-
teren Worte der Spielsteinfolge (x̄1, ỳ1)(x́i2 , ỳi2) . . . , ( ´xim , `yim)($,#$) ebenfalls gleich. D.h.
D. Sabel, Skript FSK & TIMI,SoSe 2021 147 Stand: 9. Juni 2021
13. Unentscheidbarkeit
1, i2 + 1, . . . , im + 1, . . . , k + 2 ist eine Lösung für die PCP-Instanz f(K). Umgekehrt gilt: Wenn
f(K) eine Lösung (i1, . . . , im) hat, dann muss i1 = 1 gelten, da sonst schon beim ersten Spiel-
stein
[
x′i1
y′i1
]
die beiden Worte unterschiedlich anfangen. Ebenso muss im = k + 2 gelten und
alle Steine zwischendrin (ij mit 2 ≤ j < m) müssen von der Form (x́u, ỳu) sein. Damit ist
klar, dass aus der Lösung für f(K) auch eine MPCP-Lösung für K konstruiert werden kann:
i1, i2 − 1, . . . , im−1 − 1.
13.4.2. H ≤MPCP
Lemma 13.4.5. H ≤MPCP.
Beweis. Sei m#w ein Wort bestehend aus einer Turingmaschinenbeschreibung m und einer
Eingabe w. Wir müssen daraus eine Instanz für MPCP erstellen, so dass diese genau dann ei-
ne Lösung hat, wenn Turingmaschine Mm auf Eingabe w anhält. Der Beweis konstruiert ein
MPCP, dass nur dann eine Lösung hat, wenn es einen akzeptierenden Lauf der Turingmaschi-
ne Mm gibt. Sei Mm = (Z,Σ,Γ, δ, z0,�, E). Das Alphabet für das MPCP sei Γ ∪ Z ∪ {#}. Das
erste Wortpaar ist
[
x1
y1
]
=
[
#
#z0w#
]
. Lösungsfolgen müssen daher mit diesem Wortpaar
beginnen. Die weiteren Paare
[
x2
y2
]
, . . . ,
[
xk
yk
]
können durch vier Gruppen von Paaren be-
schrieben werden:
Kopierregeln:
•
[
a
a
]
für alle a ∈ Γ ∪ {#}
Transitionsregeln:
•
[
za
z′c
]
falls δ(z, a) = (z′, c,N)
•
[
za
cz′
]
falls δ(z, a) = (z′, c, R)
•
[
bza
zbc′
]
falls δ(z, a) = (z′, c, L) für alle b ∈ Γ
•
[
#za
#z′�c
]
falls δ(z, a) = (z′, c, L)
•
[
z#
z′c#
]
falls δ(z,�) = (z′, c,N)
•
[
z#
cz′#
]
falls δ(z,�) = (z′, c, R)
•
[
bz#
z′bc#
]
falls δ(z,�) = (z′, c, L) für alle b ∈ Γ
Löschregeln:
Stand: 9. Juni 2021 148 D. Sabel, Skript FSK & TIMI,SoSe 2021
13.4. Das Postsche Korrespondenzproblem
•
[
aze
ze
]
für alle a ∈ Γ, ze ∈ E
•
[
zea
ze
]
für alle a ∈ Γ, ze ∈ E
Abschlussregeln:
•
[
ze##
#
]
für alle ze ∈ E
Wenn die Turingmaschine einen akzeptierenden Lauf hat, dann gibt es eine Folge von Konfi-
gurationen K0 ` K1 ` . . . ` Kn, wobei K0 = z0w und Kn = uzev für ein ze ∈ E. Dann hat das
MPCP eine Lösung, die oben und unten das Wort#K0#K1# · · ·#Kn#Kn+1# · · ·#Km## er-
zeugt, wobeiKm = ze und jedesKi mit n+ 1 ≤ i ≤ m jeweils ausKi−1 entsteht durch Löschen
eines der benachbarten Zeichen von ze in u′zev′ entsteht.
Bei den Spielsteinfolgen hinkt die obere Folge immer der unteren Folge um eine Konfigura-
tion hinterher, d.h. beim Erstellen sind Zwischenzustände der Spielsteinfolge so, dass oben
#K1#K2# · · ·#Ki# und unten #K1#K2# · · ·#Ki#Ki+1# abzulesen ist. Um diese beiden
Folgen um die nächste Konfiguration zu verlängern, werden zunächst die Kopierregeln ange-
wendet, um in die Nähe des Zustandes zu kommen. Dann wird eine der Überführungsregeln
angewendet, und schließlich weitere Kopierregeln um den Rest der Konfiguration zu erzeugen.
Ist man beiKn angekommen, so werden die Löschregeln angewendet, um die Symbole auf dem
Band zu löschen, bis man in der unteren Folge nur noch ze# stehen hat. Schließlich wird die
Abschlussregel angewendet.
Umgekehrt lässt sich aus jeder Lösung für das MPCP, (welches ja mit dem ersten Spielstein
beginnen muss) eine Konfigurationsfolge ablesen, die bezeugt, dass die Turingmaschine bei
Eingabe w hält.
Schließlich kann die MPCP-Instanz aus der Beschreibungm#w berechnet werden, d.h. es gibt
eine berechenbar Funktion f mit m#w ∈ H ⇐⇒ f(m#w) ∈ MPCP. Damit folgt H ≤ MPCP.
Satz 13.4.6. Das Postsche Korrespondenzproblem (sowie das modifizierte Postsche Korrespon-
denzproblem) ist unentscheidbar.
Beweis. Da H unentscheidbar ist und H ≤ MPCP ≤ PCP gilt, folgt, dass MPCP als auch PCP
unentscheidbar sind.
13.4.3. Varianten und Bemerkungen zum PCP
Bereits für binäre Alphabete, ist das PCP unentscheidbar:
Lemma 13.4.7 (01-PCP). Das Postsche Korrespondenzproblem über dem Alphabet Σmit |Σ| = 2
(01-PCP) ist unentscheidbar.
Beweis. Wir reduzieren PCP auf 01-PCP (und zeigen PCP ≤ 01-PCP). O.b.d.A. sei Σ = {0, 1}.
SeiK = (x1, y1), . . . , (xk, yk) eine Instanz des PCP über demAlphabet {a1, . . . , aj}. Sei f(ε) = ε,
f(ai) = 10
i, f(aiw) = f(ai)f(w) und f(K) = (f(x1), f(y1)), . . . , (f(xk), f(yk)). Dann ist f(K)
D. Sabel, Skript FSK & TIMI,SoSe 2021 149 Stand: 9. Juni 2021
13. Unentscheidbarkeit
eine Instanz des 01-PCPs und offensichtlich gilt: i1, . . . , in ist eine Lösung fürK g.d.w. i1, . . . , in
ist eine Lösung für f(K).
Die Funktion f ist offensichtlich Turingberechenbar und daher folgt PCP ≤ 01-PCP und damit
folgt aus der Unentscheidbarkeit von PCP, dass 01-PCP ebenfalls unentscheidbar ist.
Lemma 13.4.8. Das PCP für unäre Alphabete ist entscheidbar.
Beweis. Sei Σ = {a}. In diesem Fall sind alle Spielsteine von der Form
[
an
am
]
. Wenn für alle
Steine (xi, yi) gilt |xi| < |yi|, dann gibt es keine Lösung. Wenn für alle Steine (xi, yi) gilt |xi| >
|yi|, dann gibt es keine Lösung. Wenn es zwei Steine gibt (xi, yi) = (an, an+r) und (xj , yj) =
(am+s, am) mit s, r ≥ 0, dann ist das PCP immer lösbar: Die Lösung ist die Folge von Indizes
i, . . . , i︸ ︷︷ ︸
s-mal
, j, . . . , j︸ ︷︷ ︸
r-mal
, denn diese erzeugt oben as·n+r·(m+s) undunten as·(n+r)+r·m. Daherwerden oben
wie unten (sn+ rm+ rs)-viele a’s erzeugt.
Eine andere Variante des PCP ist es, die Anzahl der verschiedenen Spielsteinarten zu beschrän-
ken. Hier ist bekannt, dass das PCP für 1 oder 2 Spielsteinarten entscheidbar ist (siehe (EKR82)),
und für 5 Spielsteinarten unentscheidbar ist (das wurde 2015 in (Nea15) gezeigt). Für 3 und 4
Spielsteinarten ist die Frage der Entscheidbarkeit ungeklärt.
13.5. Universelle Turingmaschinen
Das PCP ist semi-entscheidbar, denn man kann einen Algorithmus angeben, der in einer in-
neren Schleife alle Folgen von i-Spielsteinen aufzählt und in einer äußeren Schleife i wachsen
lässt (i = 1, 2, . . .). Der Algorithmus stoppt, wenn er eine Lösung gefunden hat. Der Algorith-
mus kann von einer Turingmaschine ausgeführt werden. Wenn eine Lösung der PCP-Instanz
existiert, dann findet die Turingmaschine diese nach endlich vielen Schritten und akzeptiert.
Existiert keine Lösung, so wird die Turingmaschine nicht anhalten.
Da wir bewiesen haben, dass H ≤ PCP gilt, folgt aus der Semi-Entscheidbarkeit von PCP auch
die Semi-Entscheidbarkeit vonH (siehe Satz 13.2.4). Das bedeutet, dass es eine Turingmaschi-
ne U gibt, die sich bei Eingabe w#x so verhält wieMw auf Eingabe x. Die Turingmaschine U
nenntman eineUniverselle Turingmaschine, da sie sich wie ein Interpreter für Turingmaschinen
verhält, d.h. sie wird durch die Eingabe w quasi programmiert und x ist dann die eigentliche
Eingabe für das Programm.
13.6. ? Unentscheidbarkeitsresultate für Grammatik-Probleme
Dieser Abschnitt wird nicht in der Vorlesung, aber eventuell in der Zentralübung behandelt. Er ist
daher kein Prüfungsstoff.
In diesem Abschnitt beweisen wir die Unentscheidbarkeit von verschiedenen Problemen für
Grammatiken. Als wesentliche Beweistechnik werden wir 01-PCP auf die verschiedenen Pro-
bleme reduzieren. Daher gebenwir zunächst eine berechenbare FunktionF an, die eine Instanz
von 01-PCP in zwei kontextfreie Grammatiken überführt:
Stand: 9. Juni 2021 150 D. Sabel, Skript FSK & TIMI,SoSe 2021
13.6. ? Unentscheidbarkeitsresultate für Grammatik-Probleme
SeiK = ((x1, y1), . . . , (xk, yk)) über demAlphabetΣ = {a, b} (wir verwenden {a, b} statt {0, 1}).
Sei F (K) = (G1, G2) wobei G1, G2 kontextfreie Grammatiken sind.
Dabei sei G1 = ({S,A,B},Σ ·∪{$, 1, . . . , k}, P1, S) und die Produktionen P1 sind:
S → A$B
A→ 1Ax1 | . . . kAxk
A→ 1×1 | . . . kxk
B → y1B1 | . . . ykBk
B → y11 | . . . ykk
wobei yi das Wort yi in umgedrehter Form ist. L(G1) enthält daher genau die Worte
i1 · · · inxin · · ·xi1$yj1 · · · yjmjm · · · j1,
wobei n,m ≥ 1 und ir, js ∈ {1, . . . , k}.
Die Grammatik G2 ist G2 = ({S, T},Σ ·∪{$, 1, . . . , k}, P2, S), sodass P2 aus den folgenden Pro-
duktionen besteht:
S → 1S1 | . . . | kSk | T
T → a1Ta1 | . . . anTan | $
L(G2) enthält daher genau die Worte
i1 · · · inu$uin · · · i1
mit u ∈ Σ∗, ij ∈ {1, . . . , k}, n ≥ 0.
Worte, die sowohl in L(G1) als auch in L(G2) liegen, sind daher von der Form
i1 · · · inxin · · ·xi1$yi1 · · · yinin · · · i1
mit n ≥ 1 und xi1 · · ·xin = yi1 · · · yin . Offensichtlich ist dann i1, . . . , in eine Lösung
von K. Umgekehrt gilt auch: Wenn i1, . . . , in eine Lösung von K ist, dann ist das Wort
i1 · · · inxin · · ·xi1$yi1 · · · yinin · · · i1 mit G1 erzeugbar, und da dann xi1 · · ·xin = yi1 · · · yin gilt,
ist es auch mit G2 erzeugbar.
Insgesamt haben wir damit gezeigt:
Satz 13.6.1. Das Schnittproblem für kontextfreie Grammatiken (also die Frage, obL(G1)∩L(G2) =
∅ für Grammatiken G1, G2 gilt), ist unentscheidbar.
Beweis. Obige Funktion F zeigt, dass 01-PCP auf das Schnittproblem reduzierbar ist. Die Un-
entscheidbarkeit von 01-PCP impliziert daher dieUnentscheidbarkeit des Schnittproblems.
Wenn ein L(G1)∩L(G2) 6= ∅, dann gilt auch, dass L(G1)∩L(G2) =∞, da man die PCP-Lösung
i1, . . . , in Folge beliebig oft wiederholen kann, und entsprechende Worte in den Grammatiken
erzeugen kann. Daher gilt
Satz 13.6.2. Das Problem, ob für kontextfreie Grammatiken G1, G2 gilt, L(G1) ∩ L(G2) = ∞, ist
unentscheidbar.
D. Sabel, Skript FSK & TIMI,SoSe 2021 151 Stand: 9. Juni 2021
13. Unentscheidbarkeit
Wenn L(G1) ∩ L(G2) = ∞, dann ist L(G1) ∩ L(G2) eine nicht kontextfreie Sprache. Dies
lässt sich mit dem Pumping-Lemma nachweisen. Die wesentliche Argumentation dabei ist,
dass (i1 · · · in)o(xin · · ·xi1)o$(yi1 · · · yin)o(in · · · i1)o als gewähltes Wort mit Mindestlänge o, im-
mer nur an maximal zwei der vier (·)o Sequenzen gepumpt werden kann, diese aber über in alle
miteinander verbunden sind, so dass ein Herauspumpen stets möglich ist.
Satz 13.6.3 (Unentscheidbarkeit des Schnittproblems für CFLs). Das Problem, ob der Schnitt
zwei kontextfreier Sprachen kontextfrei ist, ist unentscheidbar.
Beweis. Die Übersetzung F zeigt, dass ein 01-PCP K genau dann lösbar ist, wenn der Schnitt
L(G1)∩L(G2) für F (K) = (G1, G2) nicht kontextfrei ist. Daher haben wir das Komplement von
01-PCP auf das Problem aus dem Satz reduziert und aus der Unentscheidbarkeit von 01-PCP
folgt die Unentscheidbarkeit des Komplements und damit folgt der Satz.
Die Sprachen L(G1) und L(G2) sind nicht nur kontextfrei, sondern sogar deterministisch-
kontextfrei (dies kann man zeigen, indem man entsprechende DPDAs konstruiert).
Da deterministisch-kontextfreie Sprachen unter Komplementbildung abgeschlossen sind und
das Komplement auch berechnet werden kann (wir lassen den Beweis weg, er kann aber in der
entsprechenden Literatur gefunden werden, und konstruiert aus einem DPDA für L einen DP-
DA für L1), können wir deterministisch kontextfreie Grammatiken G′1 und G
′
2 berechnen mit
L(G′i) = Gi. Sei Fi die Funktion, die G
′
i aus Gi berechnet.
Satz 13.6.4. Das Problem, ob für zwei gegebene kontextfreie Grammatiken GA, GB gilt L(GA) ⊆
L(GB) ist unentscheidbar.
Beweis. Wir reduzieren das Komplement von 01-PCP auf das Inklusionsproblem. Sei F ′ die
Funktion, die für eine 01-PCP-InstanzK zunächst F (K) = (G1, G2) und anschließend G2 auf
G′2 abbildet (wobei G
′
2 = F (G2)). Dann ist K unlösbar, genau dann wenn L(G1) ⊆ L(G
′
2) gilt
(da L(G1) ∩ L(G2) = ∅ g.d.w. L(G1) ⊆ L(G2)). Daher zeigt die Funktion F ′, dass das Komple-
ment von 01-PCP auf das Inklusionsproblem reduzierbar ist. Da das 01-PCP unentscheidbar ist,
ist auch das Komplement von 01-PCP unentscheidbar, und daher ist auch Inklusionsproblem
unentscheidbar.
Satz 13.6.5 (Unentscheidbarkeit des Äquivalenzproblems für CFGs). Das Problem, ob für zwei
gegebene kontextfreie Grammatiken GA, GB gilt L(GA) = L(GB) ist unentscheidbar.
Beweis. Wir reduzieren das Komplement von 01-PCP auf das Äquivalenzproblems. Sei F ′′ die
Funktion, die für eine 01-PCP-InstanzK zunächst F (K) = (G1, G2) und anschließend G1 auf
G3 und G2 auf G′2 abbildet, wobei G3 die Vereinigung der Sprachen L(G1) und L(G
′
2) erzeugt
(daher ist G3 kontextfrei aber nicht notwendigerweise deterministisch kontextfrei). Dann gilt
K ist unlösbar, genau dann, wennL(G3) = L(G2)′ gilt (daL(G3) = L(G1)∪L(G′2)). Daher zeigt
die Funktion F ′′, dass 01-PCP auf das Äquivalenzproblem reduzierbar ist. Da das Komplement
von 01-PCP unentscheidbar ist, ist auch Äquivalenzproblem unentscheidbar.
Satz 13.6.6. Das Problem, ob eine kontextfreie Grammatik G mehrdeutig ist, ist unentscheidbar.
1Die Schwierigkeit bei dieser Konstruktion liegt darin, dass der DPDA für L erst so modifiziert werden muss, dass
er alle Worte zu Ende liest und bei der Konstruktion des DPDAs für Lmuss sichergestellt werden, dass er in den
Endzuständen keine ε-Übergänge macht.
Stand: 9. Juni 2021 152 D. Sabel, Skript FSK & TIMI,SoSe 2021
13.6. ? Unentscheidbarkeitsresultate für Grammatik-Probleme
Beweis. Wir reduzieren 01-PCP auf das Mehrdeutigkeitsproblem. Sei F3(K), die Abbildung,
die für jede 01-PCP-Instanz K zunächst F (K) = (G1, G2) und anschließend G4 mit
L(G4) = L(G1) ∪ L(G4) berechnet. Dann gilt K ist lösbar, g.d.w. G4 mehrdeutig ist. Denn nur
wenn L(G1) ∩ L(G2) 6= ∅ ist K lösbar und dann gibt es Worte, die mit zwei unterschiedlichen
Syntaxbäumen hergeleitet werden können (einmal mit G1 und einmal mit G2).
Satz 13.6.7 (Unentscheidbarkeit des Regularitätsproblems für CFGs). Das Problem, ob für eine
CFG G, L(G) eine reguläre Sprache ist, ist unentscheidbar.
Beweis. Sei F4 die Abbildung, die für eine gegebene 01-PCP-InstanzK zuerst F (K) = (G1, G2)
und anschließendG5 mit L(G5) = L(G1)∪L(G2) berechnet (dies ist möglich, daG1, G2 deter-
ministisch kontextfrei sind).
F4 zeigt, dass das Komplement von 01-PCP auf das Regularitätsproblem reduzierbar ist:
Wenn K unlösbar (also K im Komplement von 01-PCP) dann ist L(G5) = Σ∗ (da
L(G1) ∩ L(G2) = ∅ in diesem Fall) und daher ist L(G5) regulär. Wenn K lösbar ist, dann
gilt wie bereits gezeigt L(G1) ∩ L(G2) ist nicht kontextfrei (und damit auch nicht regulär). Da
L(G5) = L(G1) ∪ L(G2) = L(G1) ∩ L(G2) ist L(G5) auch nicht regulär. Da reguläre Sprachen
unter Komplementbildung abgeschlossen sind, kann L(G5) auch nicht regulär sein.
Da 01-PCP unentscheidbar, ist auch das Komplement von 01-PCP unentscheidbar und damit
folgt, dass das Regularitätsproblem unentscheidbar ist.
D. Sabel, Skript FSK & TIMI,SoSe 2021 153 Stand: 9. Juni 2021
Teil III.
Komplexitätstheorie
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 9. Juni 2021
14
Einleitung, Zeitkomplexität, P und NP
Die Komplexitätstheorie beschäftigt sich mit der Einordnung von Problemen in verschiedene
Komplexitätsklassen, d.h. sie betrachtet den Ressourcenverbrauch (Rechenzeit oder Platzbe-
darf) von Problemen und definiert verschiedene Klassen passend zur Komplexität. Ein Unter-
suchungsgegenstand ist das Finden und Analysieren der Laufzeit- und Platzkomplexität von
Algorithmen für konkrete Probleme. Dabei kann einerseits die Suche nach einem möglichst
effizienten Verfahren das Ziel sein, um damit eine obere Schranke für die Komplexität des Pro-
blems anzugeben. Z.B. zeigt der CYK-Algorithmus, dass dasWortproblem für CFGs inChomsky-
NormalformO(|P |·n3) (mit n Länge desWorts, |P |Anzahl an Produktionen) als obere Schranke
hat. Daher ist Problem mit dieser Zeitkomplexität lösbar, aber eventuell gibt es bessere Algo-
rithmen. Die Frage, nach den bestmöglichenAlgorithmen, fokussiert denNachweis von unteren
Schranken, d.h. man zeigt, dass es keinen Algorithmus mit einer besseren Zeit- bzw. Platzkom-
plexität gibt. Im allgemeinen ist dieses Problem schwieriger, da man über alle möglichen (un-
bekannten) Algorithmen, die das Problem lösen, argumentieren muss.
Ein anderer Fokus ist die Betrachtung der Frage, ob und wie sich Nichtdeterminismus gegen-
über Determinismus bezüglich des Ressourcenbedarfs auswirkt. die Frage, welcher Aufwand
beim Wechsel vom Nichtdeterminismus in ein deterministisches Modell entsteht und wie sich
dieser im Ressourcenbedarf niederschlägt. Beispielsweise haben wir für gezeigt, dass DFAs und
NFAs äquivalente Automatenmodelle sind, aber z.B. der benötigte Platz für einen DFA expo-
nentiell größer sein kann als für einen NFA, der dieselbe Sprache erkennt. In diesem Abschnitt
betrachten wir eine (sehr wichtige und bisher ungelöste) Frage, die ähnlich dazu ist. Das ist
die wichtige Frage, ob P = NP oder P 6= NP gilt. Was sich dahinter genau verbirgt, wird in
diesem Teil zur Komplexitätstheorie das zentrale Thema sein.
14.1. Deterministische Zeitkomplexität
Wir interessieren uns nur für Sprachen, die entscheidbar sind. Daher könnenwir für Turingma-
schinen annehmen, dass diese für jede Eingabe anhalten: Damit meinen wir, dass wir für deter-
ministische Turingmaschinen auch „Verwerfe“-Zustände erlauben, die zwar nicht akzeptierend
ist, aber auch (genauwie Konfigurationenmit akzeptierenden Zuständen) keine Nachfolgekon-
figuration besitzen. Wir verzichten darauf, die DTMs mit dieser Anpassung erneut formal zu
definieren, sondern verwenden sie einfach.
Ein weiterer Punkt, der im Rahmen der Komplexitätsbetrachtungen zum Tragen kommt, ist die
Frage, ob wir als Modell für unsere Untersuchungen Einband- oder Mehrbandturingmaschinen
verwendenmöchten.Damitwir „näher“ annormalenmodernenComputern sind, ist es sinnvol-
ler die Mehrbandturingmaschinen zu verwenden, da diese im Vergleich zu Einband-Maschinen
direkten Zugriff auf mehrere Speicherplätze ermöglichen und nicht Rechenzeit „vergeuden“
Stand: 17. Juni 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
14. Einleitung, Zeitkomplexität, P undNP
müssen, um auf dem Band hin- und herzulaufen, um Speicherabschnitte sequentiell zu suchen
und zu modifizieren. Tatsächlich ist der Unterschied quadratisch: Wenn die Mehrbandmaschi-
ne n Schritte ausführt, so kann dies die Simulation der Mehrbandmaschine auf der Einband-
maschine in O(n2) Schritten durchführen
Dieser Unterschied wird tatsächlich in der Klasse P (und auchNP) keinen echten Unterschied
machen, da diese gegen einen solchen quadratischen Faktor abgeschlossen ist, d.h. für diese
Betrachtungen könnten wir sowohl mit Einband- als auch mit Mehrbandmaschinen arbeiten.
Da die Handhabung mit mehreren Bändern i.a. einfacher ist, wählen wir als Modell die Mehr-
bandmaschinen. Mit dieser Anpassung der Definition, definieren wir die Laufzeit einer stets
anhaltenden deterministischen Mehrband-TM.
Definition 14.1.1. SeiM eine stets anhaltende DTMmit Startzustand z0. Für Eingabew definieren
wir
timeM (w) := i, wenn z0w `iM uzw und z ist Endzustand oder Verwerfe-Zustand.
Aufbauend auf diesem Begriff der Rechenzeit, definieren wir nun die Klasse von Sprachen
TIME (f(n)):
Definition 14.1.2. Für eine Funktion f : N→ N sei die Klasse TIME (f(n)) genau die Menge der
Sprachen, für die es eine deterministische, stets anhaltende, Mehrband-TMM gibt, mit L(M) = L
und timeM (w) ≤ f(|w|) für alle w ∈ Σ∗
Eine Sprache ist daher in TIME (f(n)), wenn sie von einer DTM für jede Eingabe der Länge n
in nicht mehr als f(n) Schritten entschieden wird.
Die Klassen TIME (f(n)) sind sehr fein, da sie eine beliebig genaue Funktion f erlauben. Die
Klasse P liefert nun einen wesentlich gröberen Begriff, indem sie nur fordert, dass f ein belie-
biges Polynom ist. Wir definieren zunächst, was ein Polynom ist:
Definition 14.1.3. Ein Polynom ist eine Funktion p : N→ N der Form:
p(n) =
k∑
i=0
ai · ni = aknk + ak−1nk−1 + · · ·+ a1 · n+ a0
mit ai ∈ N und k ∈ N. (Man spricht auch von einem Polynom des Grades k.)
Definition 14.1.4 (Komplexitätsklasse P). Die Klasse P ist definiert als
P =
⋃
p Polynom
TIME (p(n))
Eine Sprache L ist daher in der Klasse P enthalten, wenn es eine stets anhaltende DTMM und
ein Polynom p gibt, sodass L = L(M) und für alle w ∈ Σ∗ : timeM (w) ≤ p(|w|).
Zum Nachweis dass ein Algorithmus polynomielle Komplexität hat, genügt es zu zeige, dass
seine Komplexität O(nk) für eine Konstante k ist. Z.B. ist ein Algorithmus mit der Komplexität
n log n auch als polynomiell anzusehen, da n log n ∈ O(n2). Da Funktionen wie nlogn, 2n, n!
nicht durch ein Polynom von oben beschränkt werden, sind Algorithmen mit diesen Komple-
xitäten nicht polynomiell.
Stand: 17. Juni 2021 156 D. Sabel, Skript FSK & TIMI,SoSe 2021
14.1. Deterministische Zeitkomplexität
Beachte, dass man üblicherweise die Probleme die der Klasse P enthalten sind, als effizient
lösbar ansieht. D.h. es gibt Algorithmen, die diese in polynomiell Zeit lösen. Algorithmen mit
höheren Komplexitäten werden im allgemeinen nicht als effizient angesehen.
Sei M eine DTM mit timeM (w) ≤ f(|w|). Unsere Äquivalenzbeweise zeigen, dass die Tu-
ringmaschinen durch GOTO-Programme simuliert werden können (wobei endlich viele Schrit-
te im GOTO-Programm notwendig sind, um einen Turingmaschinenschritt zu simulieren).
Das GOTO-Programm benötigt daher O(f(|w|)) Schritte. Die GOTO-Programme können in
ein WHILE-Programm transformiert werden mit einer WHILE-Schleife, wobei die Anzahl der
Durchläufe durch dieWHILE-Schleife nicht größer sein kann als f(|w|). Daher kann dieWHILE-
Schleife sogar durch das LOOP-Konstrukt y := f(|w|);LOOP y DO . . .END ersetzt werden. Das
bedeutet: Wenn f selbst LOOP-berechenbar ist, sind auch Funktionenmit der Laufzeitkomple-
xität f(n) noch LOOP-berechenbar. Daher sind z.B. Komplexitätsklassen TIME (2n) oder sogar
TIME (22
2…
2︸ ︷︷ ︸
n-mal
) noch in der Klasse der LOOP-berechenbaren Funktionen enthalten.
14.1.1. Uniformes vs. logarithmisches Kostenmaß
Im allgemeinen macht es keinen asymptotischen Unterschied, ob wir eine Turingmaschine,
oder die WHILE-Sprache oder die GOTO-Sprache verwenden, um ein Problem als effizient lös-
bar zu zeigen. Allerdings müssen wir dabei etwas aufpassen, wenn wir mit großen Zahlen um-
gehen. Eine Zuweisung der Form xi := xj haben wir bisher in der operationalen Semantik der
WHILE- oder GOTO-Sprachenmit einemSchritt gezählt, unabhängig davon, wie groß die in der
Variablenumgebung stehenden Zahlen sind. Geht man so vor, so spricht man vom uniformen
Kostenmaß. Solange alle jemals verwendeten Zahlen eine feste Konstante nicht überschreiten,
so kannman dieses Vorgehen verwenden. Anderenfalls muss man zum logarithmischen Kosten-
maß wechseln: Dieses verbucht für eine solche Zuweisung xi := xj die Anzahl an notwendigen
Bits zur Darstellung von ρ(xj) als Rechenschritte (dies passt zur Turingmaschine: diese muss
so viele Bits kopieren!). Beachte, dass eine Dezimalzahl d, mit dlog2(d)e Bits dargestellt werden
kann.
Betrachte z.B. das WHILE-Programm
x0 := 2;
WHILE x1 6= 0 DO
x0 := x0 ∗ x0;
x1 := x1 − 1;
END
Dieses berechnet 22
x1 als Ergebnis in der Ausgabevariablen x0 (da sie denWert von x0 genau x1-
mal quadriert). Mit uniformen Kostenmaß, läuft die Algorithmus in Zeit O(x1). Die dazu äqui-
valente Turingmaschine, kann das Ergebnis 22
x1 jedoch keinesfalls in weniger als 2×1 Schritten
berechnen, da das Ergebnis schon so viele Bits benötigt und diese auf das Band geschrieben
werden müssen.
Wendet man jedoch das logarithmische Kostenmaß an, so wird dies wieder ausgeglichen (z.B.
verbraucht dann der letzte Schleifendurchlauf mindestens 2×1 Schritte, da die Zuweisung x0 :=
x0 ∗ x0 entsprechend viele Bits benötigt.
D. Sabel, Skript FSK & TIMI,SoSe 2021 157 Stand: 17. Juni 2021
14. Einleitung, Zeitkomplexität, P undNP
Falls notwendig, verwenden wir das logarithmische Kostenmaß, wenn die verwendeten Zahlen
jedoch durch eine Konstante beschränkt sind, verwenden wir das uniforme Kostenmaß auch
für Algorithmen in der WHILE-Sprache.
14.2. Nichtdeterminismus
Wir möchten nun analog zur Klasse P, eine Komplexitätsklasse definieren, die alle Sprachen
erfasst die in Polynomialzeit entschieden werden – allerdings von nichtdeterministischen Tu-
ringmaschinen.
Um eine möglichst einheitliche Definition zu haben, betrachten wir auch für den Nichtdeter-
ministischen Fall nur Turingmaschinen, die stets anhalten – d.h. nur solche NTMs deren Be-
rechnungen auf allen Pfaden anhält. Da für NTMs anhaltenden Nicht-Endzustände sowieso
definiert werden können (durch Zustände z, für die gilt δ(z, a) = ∅ und z 6∈ E), benötigt die-
se keine Anpassung an der Definition der NTMs. Beachte, dass ein solches Anhalten in einem
nicht Endzustand keine Aussage impliziert, ob ein Wort zur erkannten Sprachen gehört oder
nicht. Damit ein Wort sicher nicht zur Sprache gehört, müssen (für eine immer anhaltende
NTM) alle Pfade in einem Nicht-Akzeptanzzustand enden.
Definition 14.2.1. SeiM eine Mehrband-NTM, die für jede Eingabe anhält. Dann definieren wir
die Laufzeit1 vonM als
ntimeM (w) = max{i | z0w `iM uzw und uzw 6` . . .}
Schließlich definieren wir basierend auf diesem Laufzeitmaß die Komplexitätsklasse
NTIME (f(n)) und die KlasseNP:
Definition 14.2.2. Für eine Funktion f : N → N bezeichne NTIME (f(n)) die Klasse aller Spra-
chen L, für die es eine nichtdeterministische Mehrband-TM M gibt mit L(M) = L und für alle
w ∈ Σ∗ gilt ntimeM (w) ≤ f(|w|).
Die KlasseNP ist definiert als
NP =
⋃
p Polynom
NTIME (p(n))
14.3. Das P-vs-NP-Problem
Lemma 14.3.1. Es gilt TIME (f(n)) ⊆ NTIME (f(n)) und damit auch P ⊆ NP .
Beweis. Jede DTM kann leicht als NTM aufgefasst werden, wobei es nur einen möglichen
Berechnungspfad gibt. Dieser bestimmt ntimeM (w) und es gilt für diese Turingmaschine
timeM (w) = ntimeM (w). Damit folgt, dass aus L ∈ TIME (f(n)) auch L ∈ NTIME (f(n)) folgt.
Schließlich zeigt dies auch P ⊆ NP.
1Es gibt hierbei verschiedene Möglichkeiten dieser Definition, welche verschiedene Turingmaschinen erlauben
oder verbieten. Diese Varianten führen jedoch zum selben Begriff der KlasseNP
Stand: 17. Juni 2021 158 D. Sabel, Skript FSK & TIMI,SoSe 2021
14.3. Das P-vs-NP-Problem
Die bis heute ungelöste Frage ist, ob die Inklusion P ⊆ NP echt ist, d.h. P ⊂ NP gilt, oder
P = NP. Es gibt viele gute Gründe, warum die Mehrheit der Forscher, vermuten dass P ⊂ NP
gilt, aber ein Beweis ist bis heute niemanden gelungen.
Das P-vs-NP-Problem ist eines der sieben sogenannten Millennium-Probleme, die vom Clay
Mathematics Institute im Jahr 2000 als Liste ungelöster Probleme der Mathematik herausge-
geben wurde und für dessen Lösung ein Preisgeld von einer Million US Dollar ausgelobt wurde.
Würde das Problem positiv beantwortet mit P = NP so wüsste man, dass Probleme für die
bisher nur Algorithmen bekannt sind, die in (deterministischer) Exponentialzeit laufen, effizi-
ent lösbar sind. Da es für viele Probleme (z.B. das sogenannte Travelling-Salesman-Problem)
leicht ist zu zeigen, dass sie NP-liegen, aber noch niemand einen Algorithmus gefunden hat,
der die Probleme in deterministischer Polynomialzeit löst, ist liegt die Vermutung nahe, dass
diese Probleme inNP \ P liegen und daher P 6= NP gilt.
Die Arbeiten von Steven Cook und Richard Karp (Coo71; Kar72) entwickelten mit dem Be-
griff der NP-Vollständigkeit (die genaue Definition werden in Kapitel 15 sehen) eine Struk-
tur der Klassen NP und P: Für viele der genannten Probleme, die in NP liegen, aber für die
kein Polynomialzeit-Algorithmus gefunden wurde, lässt sich zeigen, dass sie eng untereinan-
der verknüpft sind: Wenn es einen Polynomialzeitalgorithmus gibt der eines dieser Probleme
löst, dann sind alle diese Probleme in Polynomialzeit lösbar (falls P = NP) oder keines (falls
P 6= NP).
Um den Übergang von der Berechenbarkeitstheorie zur Komplexitätstheorie und unseren Be-
trachtungen der Komplexitätsklassen NP und P zu verdeutlichen, kann das in Abb. 14.1 ge-
zeigte Mengendiagramm helfen. Im gezeigten Diagramm sind alle Teilmengenbeziehungen als
echt bekannt bis auf die unterste zwischenNP und P.
alle Sprachen
semi-entscheidbar (Typ 0)
entscheidbare Sprachen
LOOP-berechenbar
NP
P
Abbildung 14.1.: Lage der Komplexitätsklassen P undNP
D. Sabel, Skript FSK & TIMI,SoSe 2021 159 Stand: 17. Juni 2021
15
NP-Vollständigkeit
15.1. Definition der NP-Vollständigkeit
15.1.1. Polynomialzeit-Reduktionen
In Abschnitt 13.2.2 wurden Reduktionen einer Sprache auf eine andere Sprache eingeführt, um
die Entscheidbarkeit (bzw. Unentscheidbarkeit) einer Sprache auf die Entscheidbarkeit (bzw.
Unentscheidbarkeit) der anderen Sprache zurück zu führen. Eine solche Reduktion vonL1 ⊆ Σ∗1
aufL2 ⊆ Σ∗2 (geschriebenL1 ≤ L2) verlangte als Zeugen eine berechenbare und totale Funktion
f , sodass w ∈ L1 g.d.w. f(w) ∈ L2 für alle Worte w ∈ Σ∗1. Eine Polynomialzeit-Reduktion (oder
auch Karp-Reduktion, benannt nach Richard Karp)ist analog definiert mit dem Zusatz, dass
die Funktion f in deterministischer Polynomialzeit berechenbar sein muss (d.h. es gibt eine
Turingmaschine, die f berechnet und für die gilt timeM (w) ∈ O(|w|k) für ein festes k.
Definition 15.1.1 (Polynomialzeit-Reduktion (einer Sprache auf eine andere)). Sei L1 ⊆ Σ∗1
und L2 ⊆ Σ∗2 Sprachen. Dann sagen wir L1 ist auf L2 polynomiell reduzierbar (geschrieben L1 ≤p
L2), falls es eine totale und in deterministischer Polynomialzeit berechenbare Funktion f : Σ∗1 → Σ
∗
2
gibt, sodass für alle w ∈ Σ∗1 gilt: w ∈ L1 ⇐⇒ f(w) ∈ L2.
Während Reduktionen L1 ≤ L2 in Abschnitt 13.2.2 verwendet wurden, um aus der Zugehörig-
keit von L2 zur Klasse der entscheidbaren Sprachen, zu schließen, dass auch L1 entscheidbar
ist, werden Polynomialzeit-Reduktionen L1 ≤p L2 verwendet, um aus der Zugehörigkeit von
L2 zur Klasse P (bzw.NP) zu schließen, dass auch L1 zur selben Klasse gehört:
Lemma 15.1.2. Falls L1 ≤p L2 und L2 ∈ P, dann gilt L1 ∈ P . Ebenso gilt: Falls L1 ≤p L2 und
L2 ∈ NP, dann gilt L1 ∈ NP .
Beweis. Sei L1 ≤p L2 und f die dies bezeugende (totale und in Polynomialzeit berechenbare)
Funktion. Dann gibt es eine deterministische TuringmaschineMf , die f berechnet und dafür
polynomielle Zeit benötigt.
Sei nun L2 ∈ P. Dann gibt es eine deterministische TuringmaschineM2 mit L(M2) = L2 M2
hält stets nach polynomielle Zeit an. Die HintereinanderschaltungMf ;M2 stellt eine Turing-
maschine dar, für die gilt L(Mf ;M2) = L1 undMf ;M2 hält stets in polynomieller Zeit. Daher
gilt L1 ∈ P.
Wenn L2 ∈ NP, dann gibt es eine nichtdeterministische TuringmaschineM ′2 mit L(M
′
2) = L2,
die stets in polynomieller Zeit anhält. Die Konstruktionen Mf ;M ′2 führe erste Mf (deter-
ministisch) aus und anschließend M ′2 als nichtdeterministische Turingmaschine. Für sie gilt
L(Mf ;M
′
2) = L1 undMf ;M
′
2 hält auf allen Berechnungspfaden nach polynomieller Zeit. Dies
zeigt L1 ∈ NP.
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 17. Juni 2021
15.1. Definition der NP-Vollständigkeit
In beiden Teilen des Beweises muss man sich noch verdeutlichen, dass die Berechnung des
Funktionswertes f(w) für einWortw ∈ Σ∗1 „nur“ ein polynomiell großesWort sein kann. Es gilt
sogar: Wenn die Laufzeit von TMMf durch p(|w|) begrenzt ist (für ein Polynom p), Dann muss
auch gelten |f(w)| ≤ |w| + p(|w|), daMf in p(|w|)-vielen Schritten nicht mehr als p(|w|)-viele
Symbole schreiben kann. Wenn die Laufzeit der TMM2 durch ein Polynom q begrenzt ist, ist
die Laufzeit vonMf ;M2 durch die Funktion rmit r(|w|) = p(|w|)+q(|w|+p(|w|)) begrenzt, was
immer noch ein Polynom ist. Analoges gilt für die nichtdeterministische Laufzeit vonMf ;M ′2.
Lemma 15.1.3. Die Relation ≤p ist transitiv, d.h. wenn L1 ≤p L2 und L2 ≤p L3, dann gilt auch
L1 ≤p L3
Beweis. Der Beweis ist analog zum vorherigen und benutzt im Wesentlichen die Eigenschaft,
dass die Komposition von zwei Polynomen immer noch ein Polynom ist.
Wir definieren nun dieNP-Vollständigkeit für Probleme. Diese besteht aus zwei Teilen, einer-
seits, dass das Problem in der KomplexitätsklasseNP-liegt und andererseits, dass jedes andere
Problem aus NP auf das NP-vollständige Problem polynomiell reduzierbar ist. Damit kann
man dieNP-vollständigen Problem als die schwierigsten Probleme inNP ansehen.
Definition 15.1.4 (NP-Vollständigkeit). Eine Sprache L heißt NP-vollständig, wenn gilt
1. L ∈ NP und
2. L ist NP-schwer1: Für alle L′ ∈ NP gilt L′ ≤p L
Die Zugehörigkeit zuNP für eine betrachtete Sprache L nachzuweisen ist im Allgemein nicht
so schwer (es sei denn, dass Problem ist tatsächlich schwieriger). Für den Nachweis der NP-
Schwere können wir ähnlich verfahren, wie bei der Unentscheidbarkeit: Dort haben wir die
Unentscheidbarkeit des speziellen Halteproblems direkt bewiesen, aber die Unentscheidbar-
keit weiterer Probleme durch Reduktion des speziellen Halteproblems auf das weitere Problem
nachgewiesen. Für die NP-Schwere ist es ähnlich: Wenn wir eine NP-vollständige Sprache
L0 haben, dann ist der Nachweis der NP-Schwere für weitere Sprachen L1 im Allgemeinen
einfacher, da wir die Transitivität von ≤p ausnutzen können und zeigen L0 ≤p L1. Da L0 als
NP-vollständig bekannt ist, gilt für alle L′ ∈ NP: L′ ≤p L0 und aufgrund der Transitivität von
≤p damit auch L′ ≤p L1 für alle L′ ∈ NP.
Bevor wir dieses eine Problem direkt alsNP-vollständig beweisen (als Satz von Cook im nächs-
ten Abschnitt), zeigen wir den folgenden Satz:
Satz 15.1.5. Sei L einNP-vollständiges Problem. Dann gilt L ∈ P ⇐⇒ P = NP .
Beweis. Sei L ∈ P und LNP-vollständig. Aus derNP-Schwere von L folgt: jedes andere Pro-
blem L′ ∈ NP liegt ebenfalls in P: Mit L′ ≤p L und Lemma Lemma 15.1.2 folgt L′ ∈ P. Da dies
für alle L′ ∈ NP gilt, folgt P = NP.
Dieser Satz zeigt, dass es ausreicht, für ein NP-vollständiges Problem nachzuweisen, dass es
in P bzw. nicht in P liegt, um die P-vs-NP-Frage ein für allemal beantworten.
1manchmal auchNP-hart genannt
D. Sabel, Skript FSK & TIMI,SoSe 2021 161 Stand: 17. Juni 2021
15. NP-Vollständigkeit
NP
P
NP-vollst.
Abbildung 15.1.: Vermutete Lage der Probleme in P,NP und derNP-vollständigen Probleme
In Abb. 15.1 ist eine Skizze zur vermuteten Lage (wenn P 6= NP gilt) der Klassen NP,P und
der NP-vollständigen Probleme gezeigt. Z.B. ist bekannt (Lad75), dass es unter der Annahme
P 6= NP, Probleme inNP gibt, die nicht in P liegen aber auch nichtNP-vollständig sind. Ein
möglicher Kandidat ist das Graph-Isomorphismus-Problem (siehe z.B. (Sch88)), für welches
zum heutigen Zeitpunkt weder ein polynomieller Algorithmus noch dessen NP-vollständig
bekannt ist.
15.2. Satz von Cook
In diesem Abschnitt weisen wir nach, dass das sogenannte Erfüllbarkeitsproblem der Aussa-
genlogik (kurz SAT)NP-vollständig ist. Nachdem wir die NP-Vollständigkeit dieses Problems
nachgewiesen haben, können wir es verwenden, um die NP-Schwere anderer Probleme mit-
hilfe von Polynomialzeit-Reduktionen einfacher nachzuweisen.
Wir definieren zunächst das SAT-Problem in Form eines gegeben/gefragt Problems:
Definition 15.2.1 (SAT-Problem). Das Erfüllbarkeitsproblem der Aussagenlogik (kurz SAT) ist:
gegeben: Eine aussagenlogische Formel F
gefragt: Ist F erfüllbar, d.h. gibt es eine erfüllende Belegung der Variablen mit den Wahr-
heitswerten 0 und 1, sodass F den Wert 1 erhält.
Beachte, dasswir die zugehörige formale Sprache definieren können, indemwir genau die Spra-
che beschreiben, die alle erfüllenden Formeln enthält. Dabeimüssen die Formeln geeignet über
einem Alphabet Σ dargestellt werden. Bezeichne code(F ) ∈ Σ∗ diese Repräsentation von F .
Dann ist
SAT = {code(F ) ∈ Σ∗ | F ist eine erfüllbare Formel der Aussagenlogik}
Diese Überführung der gegeben/gefragt-Notation in eine formale Sprache ist immer die glei-
che: Die Sprache enthält genau die Instanzen, die mit „ja“ zu beantworten sind.
Lemma 15.2.2. SAT ∈ NP
Stand: 17. Juni 2021 162 D. Sabel, Skript FSK & TIMI,SoSe 2021
15.2. Satz von Cook
Beweis. Sei code(F ) die Eingabe einer nichtdeterministischen TuringmaschineM . Die Maschi-
ne berechnet zunächst (mit einem Durchlauf durch die Eingabe), welche Variablen in der For-
mel F vorkommen. Sei dies die Menge {x1, . . . , xn}. Anschließend verwendet die Maschine den
Nichtdeterminismus, um eine Belegung I : {x1, . . . , xn} → {0, 1} der Variablen zu „raten“. An-
schließend berechnet sie denWert von I(F ), d.h. sie setzt zunächst I(xi) für jedes Vorkommen
einer Variablen ein und rechnet anschließend den Wert von I(F ) aus. Wenn I(F ) = 1, dann
wechselt sie in einen Akzeptanzzustand, und anderenfalls verwirft sie.
Beachte, dass im Rate-Schritt der TM 2n verschiedene mögliche Belegungen I existieren, die
zu 2n verschiedenen nichtdeterministischen Berechnungen der TM führen.
Da jede Belegung überprüft wird, gilt:
M akzeptiert eine Formel F g.d.w. F ∈ SAT.
Jeder Berechnungspfad der Turingmaschine läuft in Polynomialzeit in der Größe der Eingabe
(d.h. in |code(F )|), da die Anzahl der Variablen durch die Eingabegröße beschränkt ist, das Ein-
setzen der Belegung und das Bewerten der variablenfreien Formel jeweils in Polynomialzeit
durchführbar sind.
Der Nachweis, dass ein Problem in NP liegt, kann meistens so geführt werden, wie wir dies
eben getan haben: Man rät alle möglichen Lösungen mithilfe des Nichtdeterminismus und
muss anschließend nur noch zeigen, dassman in polynomieller Zeit prüfen kann, ob diemögli-
che Lösung eine echte Lösung ist. D.h.man zeigt, dass Lösungen in Polynomialzeit verifizierbar
sind.
Bevor wir den zweiten Teil der NP-Vollständigkeit von SAT betrachten, beweisen wir einen
Hilfssatz:
Lemma 15.2.3. Für aussagenlogische Variablen {x1, . . . , xn} gibt es eine aussagenlogische Formel
exactlyOne(x1, . . . , xn), sodass I(exactlyOne(x1, . . . , xn)) = 1 g.d.w. I genau eine der Variablen
xi auf 1 setzt und alle anderen auf 0.
Dabei ist die Größe der Formel exactlyOne(x1, . . . , xn) in O(n2).
Beweis. Die Formel
exactlyOne(x1, . . . , xn) := (x1 ∨ . . . ∨ xn) ∧
∧
1≤i
legung für die dort vorkommenden Variablen. Diese Belegung passt zur Anfangskonfiguration
des Laufs. Für die Transition-Formel, setze I(Statet,z) = 1, I(Post,i) = 1, I(Tapet,i,b) = 1 ent-
sprechend der besuchten Zustände und alle anderen auf 0. Dann ist I(Transition) = 1, da alle
gemachten Übergänge auch genau in den Formeln abgebildet sind. Schließlich wurde durch
die erzeugte Belegung für Transition auch die Variable Statet,ze für ze ∈ E auf 1 gesetzt (da die
Konfigurationsfolge so endet). Insgesamt zeigt dies, dass die Formel erfüllbar ist.
Umgekehrt, wenn es eine erfüllende Belegung I gibt, d.h. I(F ) = 1, dann kann daraus eine
Konfigurationsfolge konstruiert werden, die einen Lauf der Turingmaschine auf der Eingabe w
darstellt und akzeptierend endet.
Damit gilt w ∈ L ⇐⇒ F ist erfüllbar. Schließlich ist noch zu zeigen, dass die Formel F in
(deterministischer) Polynomialzeit berechnet werden kann. Zunächst ist klar, dass die Formel
berechenbar ist. Für die Laufzeit genügt es, die Größe der Formel zu betrachten. Wir nehmen
als Maß die Anzahl an Variablenvorkommen in Bezug auf p(n). Wir nehmen das Alphabet und
die Zustandsanzahl von konstanter Größe an.
Dann hat die FormelRand die GrößeO(p(n)3), Die erste Unterformel ist von der GrößeO(p(n)),
da wir die Zustandsanzahl als konstant annehmen. Für die zweite Teilformel von Rand wen-
den wir Lemma 15.2.3 an: Daher hat jede der exactlyOne(. . .)-Formeln in der Konjunktion die
GrößeO(p(n)2) und davon gibt esO(p(n)) viele in der Konjunktion, was insgesamtO(p(n)3) er-
gibt. Die dritte Formel von Rand hat Größe O(p(n)2), da die inneren exactlyOne(. . .)-Formeln
als konstant angesehen werden (da |Γ| als konstant angenommen ist) und die Konjunktionen
O(p(n)2) als Faktor hinzufügen.
Die Größe der Anfang-Formel ist O(p(n)). Die Größe beider Formeln der Transition-Formeln
ist O(p(n)2) und die Größe der Ende-Formel ist O(p(n)). Insgesamt zeigt dies, dass die Größe
der Formel F polynomielle Länge hat und daher in Polynomialzeit berechnet werden kann.
Satz 15.2.5 (Satz von Cook). Das Erfüllbarkeitsproblem der Aussagenlogik istNP-vollständig.
Beweis. Dies gilt, da SAT ∈ NP (gezeigt in Lemma 15.2.2) und SAT NP-schwer ist (gezeigt in
Lemma 15.2.4).
Stand: 17. Juni 2021 166 D. Sabel, Skript FSK & TIMI,SoSe 2021
16
Eine Auswahl NP-vollständiger Probleme
In diesemKapitel betrachtenwir verschiedene Problemeund zeigen derenNP-Vollständigkeit,
indem wir Reduktionen bekannter NP-vollständiger Probleme auf die neuen Probleme ange-
ben (der NP-Schwere-Beweis ist dadurch erbracht) und stets kurz argumentieren, dass das
gegebene Problem in NP liegt. Für den zweiten Schritt ist das Vorgehen in allen Fällen, ei-
ne mögliche Lösung nichtdeterministisch zu raten und anschließend in polynomieller Zeit zu
verifizieren.
Sinn und Zweck dieses Kapitels ist es, den Umgang mit polynomiellen Reduktionen und der
NP-Vollständigkeit zu üben, aber auch einen Katalog anNP-vollständigen Problemen zu ken-
nen, damit man diese verwenden kann, um sie auf neue Probleme zu reduzieren.
Das folgende Diagramm zeigt unser Vorgehen: Es zeigt die in diesem Kapitel betrachteten Pro-
bleme und die Polynomialzeitreduktionen die wir präsentieren werden:
SAT
3-CNF-SAT
CLIQUE
INDEPENDENT SET
VERTEX-COVER
SETCOVER SUBSETSUM
DIRECTED-
HAMILTON-
CYCLE
GRAPH-
COLORING
KNAPSACK PARTITION
BINPACKING
UNDIRECTED-
HAMILTON-
CYCLE
TRAVELLING-SALESMAN
Für die in diesem Kapitel betrachteten Graphenprobleme nehmen wir stets an, dass der Graph
schlingenfrei ist (d.h. für jede Kante {u, v} eines Graphen gilt stets: u 6= v).
16.1. Das 3-CNF-SAT-Problem
Definition 16.1.1 (3-CNF-SAT). Das 3-CNF-SAT-Problem lässt sich in der gegeben/gefragt-
Notation formulieren als:
Stand: 17. Juni 2021 D. Sabel, Skript FSK & TIMI,SoSe 2021
16. Eine Auswahl NP-vollständiger Probleme
gegeben: Eine aussagenlogische Formel F in konjunktiver Normalform, sodass jede Klausel
höchstens 3 Literale enthält.
gefragt: Ist F erfüllbar? Genauer: Gibt es eine erfüllende Belegung der Variablen mit den
Wahrheitswerten 0 und 1, sodass F den Wert 1 erhält?
Zur Erinnerung: Eine aussagenlogische Formel ist in konjunktiver Normalform, wenn sie von
der Form
∧m
i=1(
∨ni
j=1 Li,j) ist, wobei ein Literal Li,j eine aussagenlogische Variable oder deren
Negation ist. Die Subformeln (
∨ni
j=1 Li,j) bezeichnetman dabei als Klausel. Oft schreibtman ei-
ne konjunktive Normalform alsMenge vonMengen: {{L1,1, . . . , L1,n1}, . . . , {Lm,1, . . . , Lm,nm}}.
Wir nehmen stets an, dass eine CNF keine Klauseln enthält, die x und ¬x enthält: Da diese
Klauseln immer wahr sind, können sie stets gelöscht werden.
Beachte, dass eine erfüllende Belegung einer CNF, mindestens ein Literal pro Klausel wahr
machen muss.
Jede aussagenlogische Formel kann in eine äquivalente konjunktive Normalform gebracht wer-
den (der Algorithmus dazu ist in Kurzform: Implikation und Biimplikation auflösen, Negatio-
nen nach innen schieben und anschließend Ausmultiplizieren (Distributivität, Kommutativi-
tät, Assoziativität anwenden), um konjunktive Normalform herzustellen). Allerdings hat die-
ser Algorithmus im worst case exponentielle Laufzeit (und erzeugt im worst case exponentiell
große konjunktive Normalformen). Daher kann dieser Algorithmus nicht verwendet werden,
um eine Polynomialzeitreduktion von SAT auf 3-CNF-SAT anzugeben.
Satz 16.1.2. 3-CNF-SAT istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• 3-CNF-SAT ∈ NP: Eine NTM liest zuerst die Eingabe und die Menge der vorkommenden
Variablen. Dann rät sie nicht-deterministisch eine Belegung der Variablen und schließ-
lich verifiziert sie, ob die geratene Belegung die Formel erfüllt. Die NTM akzeptiert, wenn
die Belegung eine erfüllende Belegung ist. Das Verifizieren kann in Polynomialzeit durch-
geführt werden, da die Belegung angewendet werden muss und anschließend die Opera-
toren ausgewertet werden.
• 3-CNF-SAT ist NP-schwer: Wir zeigen SAT ≤p 3-CNF-SAT. Dafür müssen wir eine poly-
nomiell berechenbare, totale Funktion f angeben, die jede aussagenlogische Formel F in
eine 3-CNF überführt, sodass F erfüllbar g.d.w. f(F ) erfüllbar. Die Transformation muss
daher nicht die Äquivalenz, sondern nur die Erfüllbarkeitsäquivalenz erhalten.
– 1. Schritt: Schiebe alle Negationen nach innen vor die Variablen. Dafür werden die
Regeln ¬¬F → F , ¬(F ∧ G) → ¬F ∨ ¬G, ¬(F ∨ G) → ¬F ∧ ¬G, ¬(F ⇐⇒ G) →
(¬F ) ⇐⇒ G und ¬(F =⇒ G)→ F ∧ ¬G angewendet.
– 2. Schritt: Betrachte den Syntaxbaum, der die Formel repräsentiert, wobei wie Blät-
ter mit Literalen identifizieren (d.h. Negationen tauchen nur in den Blattmarkierun-
gen auf, aber sonst nirgends). Für jeden Nichtblatt-Knoten führe eine neue aussa-
genlogische Variable ein.
– 3. Schritt: Durchlaufe den Baum von oben nach unten und erzeuge für jede Gabelung
⊗
X
L1 L2
Stand: 17. Juni 2021 168 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.2. Das CLIQUE-Problem
wobei ⊗ ∈ { ⇐⇒ ,∧,∨, =⇒ } und L1, L2 entweder die aussagenlogische-Variable
(für Nichtblatt-Knoten) oder das Literal am Blatt, die Formel (X ⇐⇒ (L1 ⊗ L2))
Konjugiere alle diese Formeln und zusätzlich die Formel W , wobei W die Varia-
ble für die Wurzel der Formel ist. Damit erhält man eine Formel von der Form
W ∧
∧
i,j,k(Xi ⇐⇒ (Xj ⊗i Xk)), wobeiXr Literale sind.
– 4.Schritt: Schließlich berechne für jede Subformel (Xi ⇐⇒ (Xj ⊗i Xk)) die CNF
mit dem üblichen Algorithmus. Die Größe dieser CNFs ist jeweils konstant und die
Berechnung pro CNF ist auch konstant. Außerdem kann jede Klausel nur drei Lite-
rale enthalten, da nur drei Variablen vorkommen und – falls eine Variable mehrfach
vorkommt, kann entweder die Kopie eliminiert werden, oder die gesamte Klausel
gelöscht werden. Schließlich liefert die Konjunktion all dieser Klauseln eine 3-CNF.
Die Größe der 3-CNF ist polynomiell in der ursprünglichen Formel und die 3-CNF kann
in Polynomialzeit berechnet werden. Sei f die Funktion, die aus der aussagenlogischen
Formel F diese 3-CNF berechnet. Dann gilt F erfüllbar g.d.w. f(F ) erfüllbar: Wenn es
eine Belegung I gibt, sodass I(F ) = 1 gilt, dann kann I erweitert werden zu I ′, sodass
I ′(f(F )) = 1: Setze I ′(X) = I(X) für alle Variablen, die in F vorkommen und setze
I ′(W ) = 1 für die VariableW an der Wurzel. Für alle anderen neuen Variablen X, setze
I ′(X) so, dass I ′(X) = I ′(L1⊗L2) gilt. Umgekehrt, wennBelegung J die Formel f(F )wahr
macht (d.h. J(f(F )) = 1), dann gilt auch, dass die Restriktion von J auf die Variablen von
F , die Formel F wahr macht.
Damit haben wir gezeigt SAT ≤p 3-CNF-SAT. Da SATNP-schwer, ist somit auch 3-CNF-
SATNP-schwer.
16.2. Das CLIQUE-Problem
Für einen ungerichteten Graph G = (V,E)mit Knotenmengen V und Kantenmenge E ist eine
Clique der Größe k eine Menge V ′ ⊆ V , sodass |V ′| = k und für alle u, v ∈ V ′ mit u 6= v gilt:
{u, v} ∈ E.
Beispiel 16.2.1. Der Graph G = (V,E) mit Knotenmenge V = {1, . . . , 9} und Kantenmen-
ge E = {{1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {2, 6}, {3, 4}, {3, 5}, {3, 5}, {4, 7}, {6, 7}, {6, 8}, {8, 9}}
gezeichnet als
1
2 3
4
5
6
7
8
9
hat eine Clique der Größe 4, nämlich {1, 2, 3, 4} und z.B. sind dieMengen {1, 2, 3}, {1, 2, 4}, {1, 3, 4},
{2, 3, 4}, {3, 4, 5} Cliquen der Größe 3.
Definition 16.2.2 (CLIQUE-Problem). Das CLIQUE-Problem lässt sich in der gegeben/gefragt-
Notation formulieren durch:
D. Sabel, Skript FSK & TIMI,SoSe 2021 169 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
gegeben: Ein ungerichteter Graph G = (V,E) und eine Zahl k ∈ N.
gefragt: Besitzt G eine Clique der Größe mindestens k?
Satz 16.2.3. CLIQUE istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• CLIQUE ∈ NP: Es gibt eine NTM, die zunächst alle Knoten und die Zahl k aus der Be-
schreibung extrahiert und anschließend nichtdeterministisch eine Menge von k Knoten
rät und für jede der nichtdeterministischen Möglichkeiten verifiziert, ob die Menge eine
CLIQUE ist. Die Verifikation kann in quadratischer Laufzeit durchgeführt werden. Daher
ist die Laufzeit der NTM polynomiell beschränkt.
• CLIQUE ist NP-schwer. Wir zeigen 3-CNF-SAT ≤p CLIQUE. Daher müssen wir eine in
Polynomialzeit berechenbare, totale Funktion f angeben, die jeder 3-CNF F einen Graph
f(F ) zuordnet, sodass gilt: F ist erfüllbar g.d.w. f(F ) eine Clique der Größe mindestens
k hat (wobei wir k selbst festlegen dürfen).
Sei F = K1 ∧ . . .∧Km eine 3-CNF, wobeiKi = (Li,1 ∨Li,2 ∨Li,3) für i = 1, . . . ,m. Hierbei
nehmenwir also an, dass jede Klausel aus genau 3 Literalen besteht (ist dies nicht der Fall,
so vervielfachen wir das erste Literal). Für jedes Li,j erzeugen wir einen Knoten (i, j) im
Graphen, d.h. V =
⋃m
i=1 {(i, 1), (i, 2), (i, 3)}. Für die Kantenmenge ziehen wir keine Kante
innerhalb der drei Knoten, die aus einer Klausel stammen, sondern nur Kanten zwischen
„verschiedenen Klauseln“, d.h. E ⊆ {{(i, j), (i′, j′)} | i 6= i′ ∧ i, i′ ∈ {1, . . . ,m} ∧ j, j′ ∈
{1, 2, 3}}. Dabei wird die maximale Menge an Kanten genommen, sodass sich niemals
zwei verbundene Literale Li,j und Li′,j′ widersprechen (d.h. Li,j 6= Li′,j′ , wobei L das
negierte Literal zu L ist: x = ¬x und ¬x = x).
Das ergibt E := {{(i, j), (i′, j′)} | i 6= i′ ∧ i, i′ ∈ {1, . . . ,m} ∧ j, j′ ∈ {1, 2, 3}, Li,j 6= Li′,j′}.
Die Abbildung f(F ) = ((V,E),m) ist in Polynomialzeit berechenbar und total.
Es verbleibt zu zeigen, dass F erfüllbar ist g.d.w. (V,E) eine Clique der Größe min-
destens m hat. Wenn F erfüllbar ist, dann gibt es eine Belegung I der Variablen, die
in jeder Klausel mindestens ein Literal wahr macht. D.h. es gibt L1,j1 , . . . , Lm,jm mit
I(L1,j1) = 1, . . . , I(Lm,jm) = 1. Daher können sich diese Literale nicht widersprechen und
sie sind im Graphen paarweise miteinander verbunden, d.h. sie formen eine Clique der
Größe m. Umgekehrt, wenn (V,E) eine Clique der Größe mindestens m hat, dann muss
es eine Knotenmenge V ′ = {(i1, j1), . . . (im, jm)} geben, die eine Clique der Größem for-
men. Da Knoten (i, x) und (i, y) nie miteinander verbunden sind, müssen alle i1, . . . , im
paarweise verschieden sein, also {i1, . . . , im} = {1, . . . ,m} gelten. Damit folgt: Die Lite-
rale Li1,j1 , . . . Lim, jm widersprechen sich paarweise nicht und wir können eine Belegung
I konstruieren mit I(x) = 1 wenn Lik,jk = x und I(x) = 0 wenn Li,k,jk = ¬x und I(y) = 1
für alle anderen Variablen, die nicht dadurch bestimmt werden. Da I je ein Literal in jeder
Klausel wahr macht, gilt I(F ) = 1.
Beispiel 16.2.4. Sei F = (x1 ∨ x2 ∨ ¬x3) ∧ (¬x1 ∨ x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ ¬x3)
Dann ist f(F ) = (V,E, 3) mit V = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)} und
E = { {(1, 1), (2, 2)}, {(1, 1), (2, 3)}, {(1, 1), (3, 1)}, {(1, 1), (3, 2)}, {(1, 1), (3, 3)}, {(1, 2), (2, 1)},
{(1, 2), (2, 2)}, {(1, 2), (2, 3)}, {(1, 2), (3, 1)}, {(1, 2), (3, 3)}, {(1, 3), (2, 1)}, {(1, 3), (2, 2)},
{(1, 3), (2, 3)}, {(1, 3), (3, 1)}, {(1, 3), (3, 2)}, {(2, 1), (3, 2)}, {(2, 1), (3, 3)}, {(2, 2), (3, 1)},
{(2, 2), (3, 3)}, {(2, 3), (3, 1)}, {(2, 3), (3, 2)}} und kann wie in Abb. 16.1 dargestellt gezeichnet
Stand: 22. Juni 2021 170 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.3. Das INDEPENDENT-SET-Problem
werden. Z.B. ist {(1, 1), (2, 2), (3, 3)} eine Clique der Größe 3. Die zugehörige Belegung ist
(1,1) (1,2) (1,3)
(2,1) (2,2) (2,3)
(3,1) (3,2) (3,3)
Abbildung 16.1.: Graph zu Beispiel Beispiel 16.2.4
I(x1) = 1, I(x2) = 1, I(x3) = 0.
16.3. Das INDEPENDENT-SET-Problem
Für einen ungerichteten Graphen G = (V,E) ist V ′ ⊆ V eine unabhängige Knotenmenge, wenn
keine zwei Knoten aus V ′ über eine Kante verbunden sind, d.h. u, v ∈ V ′ =⇒ {u, v} 6∈ E.
Beispiel 16.3.1. Der Graph
1
2 3
4
5
6
7
8
9
hat mehrere unabhängige Knotenmengen der Größe 4, z.B.{2, 5, 7, 8}, aber keine unabhängige Kno-
tenmenge der Größe 5.
Für einen Graphen G = (V,E) ist der Komplementgraph zu G, der Graph G = (V,E) mit E =
{{u, v} | u, v ∈ V, u 6= v, {u, v} 6∈ E}.
Lemma 16.3.2. Für jeden ungerichteten Graph G gilt: G hat eine unabhängige Knotenmenge der
Größe k genau dann, wenn G eine Clique der Größe k hat.
D. Sabel, Skript FSK & TIMI,SoSe 2021 171 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
Beweis. Sei G = (V,E). Dann gilt:
V ′ ist unabhängige Knotenmenge der Größe k
g.d.w. V ′ ⊆ V mit u, v ∈ V ′ =⇒ {u, v} 6∈ E und |V ′| = k
g.d.w. u, v ∈ V ′ =⇒ {u, v} ∈ E
g.d.w. V ′ ist eine Clique der Größe k in G
Beispiel 16.3.3. Der Graph
1
2 3
4
5
6
7
8
9
hat eine Clique der Größe 4, nämlich {1, 2, 3, 4}. Der Komplementgraph dazu ist:
1
2 3
4
5
6
7
8
9
Der Komplementgraph hat {1, 2, 3, 4} als unabhängige Knotenmenge.
Definition 16.3.4 (INDEPENDENT-SET-Problem). Das INDEPENDENT-SET-Problem lässt sich
in der gegeben/gefragt-Notation formulieren durch:
gegeben: Ein ungerichteter Graph G = (V,E) und eine Zahl k ∈ N.
gefragt: Besitzt G eine unabhängige Knotenmenge der Größe mindestens k?
Satz 16.3.5. INDEPENDENT-SET istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• INDEPENDENT-SET ∈ NP: Es gibt eine NTM, die zunächst alle Knoten und die Zahl
k aus der Beschreibung extrahiert und anschließend nichtdeterministisch eine Menge
von k Knoten rät und für jede der nichtdeterministischen Möglichkeiten verifiziert, ob
für jedes Paar {u, v} aus der geratenen Menge gilt {u, v} 6∈ E. Die Verifikation kann in
polynomieller Laufzeit durchgeführt werden. Daher ist die Laufzeit der NTM polynomiell
beschränkt.
Stand: 17. Juni 2021 172 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.4. Das VERTEX-COVER-Problem
• INDEPENDENT-SET ist NP-schwer. Wir zeigen CLIQUE ≤p INDEPENDENT-SET. Sei
f((V,E,m)) = (V,E,m) wobei E = {{u, v} | u, v ∈ V, {u, v} 6∈ E}. Dann gilt (V,E)
hat eine Clique der Größe m genau dann, wenn (V,E) eine unabhängige Knotenmenge
der Größe m hat. Da die Funktion f in Polynomialzeit berechnet werden kann, gilt CLI-
QUE≤p INDEPENDENT-SET und da CLIQUENP-schwer, folgt auch INDEPENDENT-SET
istNP-schwer.
16.4. Das VERTEX-COVER-Problem
Für einen ungerichteten Graph G = (V,E) ist eine überdeckende Knotenmenge eine Teilmenge
V ′ ⊆ V aller Knoten, sodass jede Kante mindestens einen ihrer beiden Knoten in der Menge
hat, d.h. es gilt für alle Knoten u, v ∈ V : {u, v} ∈ E =⇒ u ∈ V ′ ∨ v ∈ V ′.
Lemma 16.4.1. G = (V,E) hat eine unabhängige Knotenmenge der Größe k, g.d.w. G hat eine
überdeckende Knotenmenge der Größe |V | − k.
Beweis.
Es gilt:
V ′ ⊆ V ist unabhängige Knotenmenge
g.d.w. u, v ∈ V ′ =⇒ {u, v} 6∈ E
g.d.w. {u, v} ∈ E =⇒ u 6∈ V ′ ∨ v 6∈ V ′
g.d.w. {u, v} ∈ E =⇒ (u ∈ V \ V ′) ∨ (v ∈ V \ V ′)
g.d.w. V \ V ′ ist überdeckende Knotenmenge
Beispiel 16.4.2. Der Graph
1
2 3
4
5
6
7
8
9
hat mehrere unabhängige Knotenmengen der Größe 4, z.B.{2, 5, 7, 8}. Nach dem vorherigen Lemma
gilt V \ {2, 5, 7, 8} = {1, 3, 4, 6, 9} ist eine überdeckende Knotenmenge, was sich auch am Graphen
verifizieren lässt: Jede Kante enthält mindestens einen weißen Knoten.
Definition 16.4.3 (VERTEX-COVER-Problem). Das VERTEX-COVER-Problem lässt sich in der
gegeben/gefragt-Notation formulieren durch:
gegeben: Ein ungerichteter Graph G = (V,E) und eine Zahl k ∈ N.
gefragt: Besitzt G eine überdeckende Knotenmenge der Größe höchstens k?
Satz 16.4.4. VERTEX-COVER istNP-vollständig.
D. Sabel, Skript FSK & TIMI,SoSe 2021 173 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
Beweis. Wir zeigen die beiden benötigten Teile. Sei G = (V,E) ein ungerichteter Graph.
• VERTEX-COVER∈ NP: Es gibt eineNTM, die zunächst alle Knoten und die Zahl k aus der
Beschreibung extrahiert und anschließend nichtdeterministisch eine Menge V ′ ⊆ V von
k Knoten rät und für jede der nichtdeterministischenMöglichkeiten verifiziert, ob für jede
Kantemindestens einer ihrer beteiligtenKnoten in derMenge ist. Die Verifikation kann in
polynomieller Laufzeit durchgeführt werden. Daher ist die Laufzeit der NTM polynomiell
beschränkt.
• VERTEX-COVER istNP-schwer.Wir zeigen INDEPENDENT-SET≤p VERTEX-COVER. Sei
f((V,E,m)) = (V,E, |V | −m). Dann gilt (wie eben gezeigt) (V,E) hat eine unabhängige
Knotenmenge der Größe mindestensm g.d.w. (V,E) hat eine überdeckende Knotenmen-
ge der Größe höchstens |V | − m. Da f in Polynomialzeit berechnet werden kann, gilt
INDEPENDENT-SET ≤p VERTEX-COVER.
16.5. Das SETCOVER-Problem
Definition 16.5.1 (SETCOVER-Problem). Das SETCOVER-Problem lässt sich in der
gegeben/gefragt-Notation formulieren durch:
gegeben: Ein System von Mengen T1, . . . , Tk mit T1, . . . , Tk ⊆ M , wobei M eine endliche
Grundmenge ist und eine Zahl n ≤ k.
gefragt: Gibt es eine Auswahl von nMengen Ti1 , . . . , Tin (ij ∈ {1, . . . , k}) mit Ti1∪ . . .∪Tin =
M?
Beispiel 16.5.2. Für T1 = {1, 2, 3, 5}, T2 = {1, 2}, T3 = {3, 4}, T4 = {3} (mitM = {1, 2, 3, 4, 5})
und n = 2 gibt es die Lösung T1, T3, da T1 ∪ T3 = M .
Satz 16.5.3. SETCOVER istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• SETCOVER ∈ NP: Es gibt eine NTM, die zunächst alle Mengen und die Zahl n aus der Be-
schreibung extrahiert und anschließend nichtdeterministisch nMengen des Mengensys-
tems rät. Für jede der nichtdeterministischen Möglichkeiten wird anschließend (jeweils
deterministisch) verifiziert, ob die Vereinigung der geratenen Menge die GrundmengeM
ergibt. Die Verifikation kann in polynomieller Laufzeit durchgeführt werden. Daher ist
die Laufzeit der NTM polynomiell beschränkt.
• SETCOVER istNP-schwer. Wir zeigen 3-CNF-SAT≤p SETCOVER. Sei F = K1 ∧ . . .∧Km
eine 3-CNF. Seien {x1, . . . , xn} die aussagenlogischen Variablen, die in F vorkommen.
SetzeM = {1, . . . ,m,m+ 1, . . . ,m+ n}. Für i = 1, . . . , n sei
Ti,a = {j | Literal xi kommt in KlauselKj vor} ∪ {m+ i}
Ti,b = {j | Literal ¬xi kommt in KlauselKj vor} ∪ {m+ i}
Das Mengensystem sei T1,a, . . . , Tn,a, T1,b, . . . , Tn,b ⊆M .
Wenn F erfüllbar, dann hat SETCOVER eine Lösung: Sei I eine Belegung mit I(F ) = 1.
Wenn I(xi) = 1 ,dann wähle die Menge Ti,a und wenn I(xi) = 0, dann wähle die Menge
Ti,b. Die so gewählten Mengen bestehen aus n Mengen und jede Zahl aus M kommt in
Stand: 17. Juni 2021 174 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.6. Das SUBSETSUM-Problem
ihnen vor: Da jede Klausel durch I wahr gemacht wird, kommt jede Zahl 1, . . . ,m vor, da
jede Variable mit 0 oder 1 belegt wurde, kommt jede Zahlm+ 1, . . . ,m+ n vor.
Umgekehrt gilt: Wenn es n Mengen U1, . . . , Un ⊆ T1,a, . . . , Tn,a, T1,b, . . . , Tn,b gibt, sodass
U1 ∪ . . . ∪ Un = M , dann ist F erfüllbar: Damit die Zahlen m + i für i = 1, . . . , n alle
enthalten sind, muss Ti,a oder Ti,b für jedes i = 1, . . . , n unter den Ui sein. Daher O.B.d.A.
Ui ∈ {Ti,a, Ti,b} für i = 1, . . . , n. Wenn wir nun I(xi) = 1 setzen, wenn Ui = Ti,a und
I(xi) = 0, wenn Ui = Ti,b, dann erfüllt I die Formel F : Da die Zahlen 1, . . . ,m alle enthal-
ten sind in
⋃
Ui, wird in jeder Klausel mindestens ein Literal auf wahr gesetzt.
Sei f die Funktion die aus F , dass Mengensystem T1,a, . . . , Tn,a, T1,b, . . . , Tn,b ⊆ M und
n als Zahl berechnet. Dann ist f in Polynomialzeit berechenbar und hat die Eigenschaft
dass F erfüllbar ist g.d.w. f(F ) lösbare SETCOVER-Instanz ist. Damit haben wir 3-CNF-
SAT ≤p SETCOVER gezeigt.
16.6. Das SUBSETSUM-Problem
Definition 16.6.1 (SUBSETSUM-Problem). Das SUBSETSUM-Problem lässt sich in der
gegeben/gefragt-Notation wie folgt formulieren:
gegeben: Natürliche Zahlen a1, . . . , ak ∈ N und s ∈ N
gefragt: Gibt es eine Teilmenge I ⊆ {1, . . . , k}, sodass
∑
i∈I ai = s?
Satz 16.6.2. Das SUBSETSUM-Problem istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• SUBSETSUM ∈ NP: Rate nichtdeterministisch eine Teilmenge I ⊆ {1, . . . , k} und an-
schließend verifiziere, dass
∑
i∈I ai = s gilt.
• SUBSETSUM ist NP-schwer: Wir geben eine Polynomialzeitreduktion von 3-CNF-SAT
auf SUBSETSUM an. Sei F = K1 ∧ . . .∧Km eine 3-CNF, wobei jede Klausel genau drei Li-
terale habe (dies kann durch Vervielfachen von Literalen stets hergestellt werden). Seien
x1, . . . , xn die aussagenlogischen Variablen, die in F vorkommen. Wir erzeugen n + m-
stellige Zahlen ti, fi für i = 1, . . . , n:
– In ti ist die i-te Stelle 1, und für j = 1, . . . ,m ist jede n + j-te Stelle 1, falls Klausel
Kj das Literal xi enthält.
– In fi ist die i-te Stelle 1 und für j = 1, . . . ,m ist jede n + j-te Stelle 1, falls Klausel
Kj das Literal ¬xi enthält.
– Alle anderen Stellen der Zahlen ti, fi sind 0.
Schließlich gibt es noch Zahlen cj , dj für j = 1, . . . ,m:
– In cj ist genau die n+ j-te Stelle 1 und alle anderen sind 0.
– In dj ist genau die n+ j-te Stelle 2 und alle anderen sind 0.
Schließlich sei s = 1 . . . 1︸ ︷︷ ︸
n−mal
4 . . . 4︸ ︷︷ ︸
m−mal
.
Sei also f(F ) = ((t1, . . . , tn, f1, . . . , fn, c1, . . . , cm, d1, . . . , dm), s). Offensichtlich kann f in
Polynomialzeit berechnet werden. Die folgenden Aussagen gelten:
– Die Summe jeder Teilmenge der Zahlen erzeugt keine Überträge.
D. Sabel, Skript FSK & TIMI,SoSe 2021 175 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
– Die n Einsen in s sorgen dafür, dass in I jeweils ti oder fi enthalten ist aber nicht
beide.
– DieWahl der ti und fi zählt gleichzeitig in den Stellenn+1 bisn+m, welche Klauseln
durch Setzen von xi auf 1 (bzw. xi auf 0) wahr gemacht werden. In der Summe kann
dies pro Klausel eine Zahl zwischen 0 und 3 sein (je nachdem, ob 0,1,2 oder 3 Literale
der Klausel auf wahr gesetzt werden). Durch Hinzunahme der cj und/oder dj kann
die Zielsumme 4 pro Stelle j stets erreicht werden, wenn mindestens 1 Literal wahr
ist.
Daher gilt:
Wenn SUBSETSUM-Instanz ((t1, . . . , tn, f1, . . . , fn, c1, . . . , cm, d1, . . . , cm), s) eine Lösung I
hat, kann daraus eine erfüllende BelegungB für F konstruiert werden: Setze für i ∈ I mit
1 ≤ i ≤ n:B(xi) = 1 und setze für i ∈ I mit n+1 ≤ i ≤ n+n:B(xi) = 0. Umgekehrt kann
eine BelegungB für F benutzt werden, um die Indizes I der Lösung für das SUBSETSUM-
Problem zu konstruieren: I enthält den Index von ti wennB(xi) = 1, I enthält den Index
von fi wenn B(xi) = 0, I enthält die Indizes der cj , dj , sodass sich die hinterenm Stellen
zu 4 aufsummieren, wobei für jede Stelle die Summe schon mindestens 1 durch die Wahl
der ti, fi ist (da B erfüllende Belegung).
Damit haben wir gezeigt 3-CNF-SAT ≤p SUBSETSUM und aus der NP-Schwere von 3-
CNF-SAT folgt dieNP-Schwere von SUBSETSUM.
Beispiel 16.6.3. Die 3-CNF (x1 ∨ x1 ∨ x1) ∧ (¬x1 ∨ ¬x1 ∨ ¬x1) wird durch die eben eingeführte
Übersetzung f in die SUBSETSUM-Instanz
a1 = t1 = 110
a2 = f1 = 101
a3 = c1 = 010
a4 = c2 = 001
a5 = d1 = 020
a6 = d2 = 002
s = 144
transformiert. Diese ist unlösbar (was dazu passt, dass die Formel unerfüllbar ist).
Beispiel 16.6.4. Betrachte die 3-CNF
(x1 ∨ x2 ∨ ¬x4) ∧ (¬x1 ∨ x2 ∨ ¬x3) ∧ (x1 ∨ ¬x2 ∨ x4) ∧ (¬x1 ∨ x2 ∨ ¬x3) ∧ (¬x2 ∨ x3 ∨ x4)
Stand: 17. Juni 2021 176 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.7. Das KNAPSACK-Problem
Dann erzeugt f die Zahlen:
a1 = t1 = 100010100
a2 = t2 = 010011010
a3 = t3 = 001000001
a4 = t4 = 000100101
a5 = f1 = 100001010
a6 = f2 = 010000101
a7 = f3 = 001001010
a8 = f4 = 000110000
a9 = c1 = 000010000
a10 = c2 = 000001000
a11 = c3 = 000000100
a12 = c4 = 000000010
a13 = c5 = 000000001
a14 = d1 = 000020000
a15 = d2 = 000002000
a16 = d3 = 000000200
a17 = d4 = 000000020
a18 = d5 = 000000002
s = 111144444
Eine Lösung ist I = {2, 4, 5, 7, 9, 10, 11, 12, 13, 14, 16, 18}. Die zugehörige erfüllende Belegung ist
B(x1) = 0, B(x2) = 1, B(x3) = 0, B(x4) = 1.
16.7. Das KNAPSACK-Problem
Definition 16.7.1 (KNAPSACK-Problem). Das KNAPSACK-Problem lässt sich in der
gegeben/gefragt-Notation wie folgt formulieren:
gegeben: k Gegenstände mit Gewichten w1, . . . , wk ∈ N und Nutzenwerten n1, . . . , nk ∈ N,
sowie zwei Zahlen sw, sn ∈ N.
gefragt: Gibt es eine Teilmenge I ⊆ {1, . . . , k}, sodass
∑
i∈I wi ≤ sw und
∑
i∈I ni ≥ sn?
Beachte für wi = ni und sn = sw ergibt sich genau das SUBSETSUM-Problem, es ist daher ein
Spezialfall. Daher ist die Reduktion SUBSETSUM ≤p KNAPSACK sehr einfach.
Satz 16.7.2. KNAPSACK istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• KNAPSACK ∈ NP: Rate eine Teilmenge I ⊆ {1, . . . , k} nichtdeterministisch, anschlie-
ßend prüfe, ob
∑
i∈I wi ≤ sw und
∑
i∈I ni ≥ sn gilt. Falls ja, dann akzeptiere. Die Laufzeit
der dies ausführenden NTM ist polynomiell beschränkt.
• KNAPSACK ist NP-schwer: Sei ((a1, . . . , ak), s) eine SUBSETSUM-Instanz, dann sei
f((a1, . . . , ak), s) = ((w1, . . . , wk), (n1, . . . , nk), sw, sm) mit wi = ai, ni = ai für i = 1, . . . , k
und sw = s und sm = s. Es gilt ((a1, . . . , ak), s) hat eine Lösung g.d.w. f((a1, . . . , ak), s)
hat eine Lösung und f ist in polynomieller Zeit von einer DTM berechenbar. Daher gilt
SUBSETSUM≤p KNAPSACK. Damit folgt aus derNP-Schwere von SUBSETSUM auch die
NP-Schwere von KNAPSACK.
16.8. Das PARTITION-Problem
Definition 16.8.1 (PARTITION-Problem). Das PARTITION-Problem lässt sich in der
gegeben/gefragt-Notation wie folgt formulieren:
D. Sabel, Skript FSK & TIMI,SoSe 2021 177 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
gegeben: Natürliche Zahlen a1, . . . , ak ∈ N
gefragt: Gibt es eine Teilmenge I ⊆ {1, . . . , k} sodass
∑
i∈I ai =
∑
i∈{1,…,k}\I ai?
Satz 16.8.2. PARTITION istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• PARTITION ∈ NP: Rate nichtdeterministisch I ⊆ {1, . . . , k} und prüfe anschließend, ob∑
i∈I ai =
∑
i∈{1,…,k}\I ai gilt. Die dazu passende NTM läuft in (nichtdeterministischer)
Polynomialzeit.
• PARTITION ist NP-schwer: Wir zeigen SUBSETSUM ≤p PARTITION. Sei
f((a1, . . . , ak), s) = (a1, . . . , ak, ak+1, ak+2) mit ak+1 = A + s und ak+2 = 2A − s,
wobei A =
∑k
i=1 ak. Die Funktion f kann von einer DTM in polynomieller Zeit berechnet
werden.
Wenn (a1, . . . , ak, ak+1, ak+2) eine PARTITION-Lösung I ⊆ {1, . . . , k + 2} hat, dann gilt∑
i∈I ai = 2A =
∑
i∈{1,…,k+2}\I ai. Dann können nicht beide Indizes k + 1 und k + 2 in I
liegen, da sonst die Summe zu groß ist. Wenn k + 2 ∈ I, dann sei I ′ = I \ {k + 2} und
damit
∑
i∈I′ = 2A − (2A − s) = s, d.h. I
′ ist eine Lösung für die SUBSETSUM-Instanz
((a1, . . . , ak), s). Wenn k + 1 ∈ I, dann sei I ′ = {1, . . . , k} \ I und damit
∑
i∈I′ = 2A −
(2A− s) = s und I ′ ist eine Lösung für die SUBSETSUM-Instanz ((a1, . . . , ak), s).
Wenn I ⊆ {1, . . . , k} eine Lösung für die SUBSETSUM-Instanz ((a1, . . . , ak), s), dann ist
I ∪ {k + 2} eine Lösung für die PARTITION-Instanz (a1, . . . , ak, ak+1, ak+2).
Daher gilt ((a1, . . . , ak), s) ist lösbar g.d.w. f((a1, . . . , ak), s) ist lösbar. Damit haben wir
SUBSETSUM ≤p PARTITION gezeigt. Da SUBSETSUM NP-schwer ist, ist auch PARTITI-
ONNP-schwer.
Beispiel 16.8.3. Sei ((1,2,3,4,5,6),14) eine SUBSETSUM-Instanz. Dann ist (1,2,3,4,5,6,35,28) die
von der Funktion f erzeugte PARTITION-Instanz. Eine Lösung ist I = {1, 3, 4, 6, 8} da 1 + 3 + 4 +
6 + 28 = 42 = 2 + 5 + 35. Damit ist I ′ = {1, 3, 4, 6} eine Lösung der SUBSETSUM-Instanz (was
auch stimmt, da 1 + 3 + 4 + 6 = 14).
16.9. Das BINPACKING-Problem
Definition 16.9.1 (BINPACKING-Problem). Das BINPACKING-Problem lässt sich in der
gegeben/gefragt-Notation wie folgt formulieren:
gegeben: Natürliche Zahlen a1, . . . , ak ∈ N, die Behältergröße b ∈ N, und die Anzahl der
Behälterm
gefragt: Kannman alle gegeben Zahlen, so auf die Behälter aufteilen, sodass keiner der Behäl-
ter überläuft? Formal: Gibt es eine totale Funktion assign : {1, . . . , k} → {1, . . . ,m},
sodass für alle j ∈ {1, . . . ,m} gilt:
∑
assign(i)=j ai ≤ b?
Satz 16.9.2. BINPACKING istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
Stand: 17. Juni 2021 178 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.10. Das DIRECTED-HAMILTON-CYCLE-Problem
• BINPACKING ∈ NP: Rate nichtdeterministisch für jede Zahl ai in welchen Behälter sie
gehört. (D.h. rate die Funktion assign.) Anschließend verifiziere, dass die geratene Funk-
tion eine Lösung ist. Dies kann in Polynomialzeit auf einer NTM durchgeführt werden.
• BINPACKING ist NP-schwer. Sei (a1, . . . , ak) eine PARTITION-Instanz. Dann sei
f(a1, . . . , ak) die BINPACKING-Instanzmit Zahlen a1, . . . , ak, Behältergröße b = b
∑k
i=1 ai
2
c
undm = 2 Behältern.
Wenn
∑k
i=1 ai eine ungerade Zahl ist, dann ist die PARTITION-Instanz unlösbar und die
BINPACKING-Instanz ebenso (da die Behälter nicht ausreichen). Anderenfalls sei I ⊆
{1, . . . , k} eine Lösung für die PARTITION-Instanz, dann ist
assign(i) =
{
1, wenn i ∈ I
2, wenn i 6∈ I
eine Lösung für die BINPACKING-Instanz. Umgekehrt kann aus einer Lösung für die
BINPACKING-Instanz mit I = {i | 1 ≤ i ≤ k, assign(i) = 1} eine Lösung für die
PARTITION-Instanz erstellt werden. Da f in Polynomialzeit berechnet werden kann,
gilt PARTITION ≤p BINPACKING. Aus der NP-Schwere von PARTITION folgt die NP-
Schwere von BINPACKING.
16.10. Das DIRECTED-HAMILTON-CYCLE-Problem
Definition 16.10.1 (DIRECTED-HAMILTON-CYCLE-Problem). Das DIRECTED-HAMILTON-
CYCLE-Problem lässt sich in der gegeben/gefragt-Notation wie folgt formulieren:
gegeben: Ein gerichteter Graph G = (V,E) mit V = {v1, . . . , vn}
gefragt: Gibt es einen Hamilton-Kreis in G, d.h. einen Kreis, der genau alle Knoten einmal
besucht? Formaler kann dies als Frage formuliert werden: Gibt es eine Permutation
π : {1, . . . , n} → {1, . . . , n}, sodass (vπ(i), vπ(i+1)) ∈ E und (vπ(n), vπ(1)) ∈ E?
Satz 16.10.2. DIRECTED-HAMILTON-CYCLE istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• DIRECTED-HAMILTON-CYCLE ∈ NP: Rate nichtdeterministisch die Permutation π und
verifiziere anschließend, ob (vπ(i), vπ(i+1)) ∈ E und (vπ(n), vπ(1)) ∈ E gilt. Dies kann auf
einer NTM in Polynomialzeit entschieden werden.
• DIRECTED-HAMILTON-CYCLE istNP-schwer: Wir geben eine Polynomialzeitreduktion
von 3-CNF-SAT auf DIRECTED-HAMILTON-CYCLE an. Sei F = K1∧ . . .∧Km eine 3-CNF,
sodass jede KlauselKi genau 3 Literale enthält. Seien {x1, . . . , xn} die aussagenlogischen
Variablen, die in F vorkommen.
Dann erzeugen wir zunächst einen Graph der Form
x1 x2 · · · xn
D. Sabel, Skript FSK & TIMI,SoSe 2021 179 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
Die Idee dabei ist, dass der Hamilton-Kreis Knoten xi oben durchläuft, wenn xi in der
erfüllenden Belegung auf 1 gesetzt wird und xi unten durchläuft, wenn xi in der erfüllen-
den Belegung auf 0 gesetzt wird. Da nur einer der beiden Durchläufe möglich ist, ist die
Belegung dadurch wohl-definiert.
Für das Auftreten der xi in den Klauseln betrachten wir zunächst den folgenden Teilgra-
phen, den wir mitKj bezeichnen:
in
j
1 out
j
1
in
j
2 out
j
2
in
j
3 out
j
3
Dieser Teilgraph hat sehr besondere Eigenschaften:
– Jeder Hamilton-Kreis, der durch den Eingang inji in Kj hereingeht, muss Kj durch
den Knoten outji verlassen: Anderenfalls gibt es „blockierte Knoten“, die durch den
Hamilton-Kreis nicht mehr besucht werden können (betrachte alle endlich vielen
Fälle).
– Ein Hamilton-Kreis, der in inj1 in Kj hereingeht und Kj durch out
j
1 verlässt, kann
durch
* in
j
1, out
j
1, oder
* in
j
1, in
j
3, out
j
3, out
j
1, oder
* in
j
1, in
j
3, in
j
2, out
j
2, out
j
3, out
j
1
in dieser Reihenfolge laufen.
– Ein Hamilton-Kreis, der in inj2 in Kj hereingeht und Kj durch out
j
2 verlässt, kann
durch
* in
j
2, out
j
2, oder
* in
j
2, in
j
1, out
j
1, out
j
1, oder
* in
j
2, in
j
1, in
j
3, out
j
3, out
j
1, out
j
2
in dieser Reihenfolge laufen.
– Ein Hamilton-Kreis, der in inj3 in Kj hereingeht und Kj durch out
j
3 verlässt, kann
durch
* in
j
3, out
j
3, oder
* in
j
3, in
j
2, out
j
2, out
j
3, oder
* in
j
3, in
j
2, in
j
1, out
j
1, out
j
2, out
j
3
in dieser Reihenfolge laufen.
– Je nachdem, wie daher Kj durch einen Hamilton-Kreis durchlaufen wird, kann Kj
einmal, zweimal, oder dreimal durchquert werden.
Stand: 17. Juni 2021 180 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.10. Das DIRECTED-HAMILTON-CYCLE-Problem
Wir stellenKj abstrakt durch
Kj
dar. Für jede KlauselKj gibt es einen TeilgraphenKj . WennKj = L
j
1∨L
j
2∨L
j
3, dann wird
Eingang inj1 und Ausgang out
j
1 entsprechend L
j
1, Eingang in
j
2 und Ausgang out
j
2 entspre-
chend Lj2, Eingang in
j
3 und Ausgang out
j
3 entsprechend L
j
3 verbunden.
Wenn Ljk = xi, dann liegt in
j
k nach out
j
k auf dem oberen Pfad zwischen Knoten xi und xi+1
(bzw. xn und x1 für i = n).
Wenn Ljk = ¬xi, dann liegt in
j
k nach out
j
k auf dem unteren Pfad zwischen Knoten xi und
xi+1 (bzw. xn und x1 für i = n).
Beachte, dass zwischen xi und xi+1 alleKj durchlaufen werden, deren zugehörige Klau-
seln Kj die Variable xi (als positives oder negative Literal) enthalten. Die Reihenfolge
derKj ist dabei irrelevant (wir nehmen die geordnete Reihenfolge an: WennKj undKj′
zwischen xi und xi+1 durch denselben Pfad (den oberen oder den unteren) durchlaufen
werden, und j < j′, dann laufe erst durchKj und dann durchKj′ .
Beachte, dass diese Konstruktion in Polynomialzeit durchgeführt werden kann, indem
zunächst die Knoten x1, . . . , xn erzeugt werden und die jeweils oberen und unteren Pfade
von xi und xi+1 direkt verbunden werden. Anschließend werden die KlauselnK1, . . . ,Km
in dieser Reihenfolge abgearbeitet werden, um die Verbindungen zwischen xi undKj und
Kj und xi+1 zu erzeugen (durch Auftrennen der bestehenden Verbindungen).
Insgesamtwerden dadurch alle Ein- undAusgänge jedesKi angeschlossen, d.h. derGraph
ist wohl geformt.
Wenn der Graph einen Hamilton-Kreis hat, dann läuft der Kreis entweder oben durch xi
oder unten durch xi. Dementsprechend konstruieren wir die Belegung I(xi) = 1 bzw.
I(xi) = 0. Der Hamilton-Kreis durchläuft jedes Kj mindestens einmal (bis zu dreimal).
Die Anzahl der Durchläufe korrespondiert genau dazu, wie viele Literale in der Klausel
durch I wahr gemacht werden. Daher ist I(F ) = 1. Umgekehrt, wenn I eine Belegungmit
I(F ) = 1 ist, dann hat der Graph einen Hamilton-Kreis: Durchlaufe die Knoten xi oben,
wenn I(xi) = 1 und unten, wenn I(xi) = 0. Dabei wirdKj ein bis drei Mal (entsprechend
der oben gezeigtenMöglichkeiten) durchlaufen, je nachdemwelche undwie viele Literale
in der KlauselKj durch I wahr gemacht werden.
Dies zeigt: 3-CNF-SAT ≤p DIRECTED-HAMILTON-CYCLE und damit die NP-Schwere
von DIRECTED-HAMILTON-CYCLE.
Beispiel 16.10.3. Sei F = K1 ∧K2 ∧K3 ∧K4 eine 3-CNF, sodass
• xi kommt an 2. Position inK1 vor
• xi kommt an 3. Position inK2 vor
• ¬xi kommt an 2. Position inK3 vor
• ¬xi kommt an 1. und 2. Position inK4 vor
Der konstruierte Ausschnitt des Graphen dazu ist
D. Sabel, Skript FSK & TIMI,SoSe 2021 181 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
xi xi+1
K1 K2
K3 K4
16.11. Das UNDIRECTED-HAMILTON-CYCLE-Problem
Definition 16.11.1 (UNDIRECTED-HAMILTON-CYCLE-Problem). Das UNDIRECTED-
HAMILTON-CYCLE-Problem lässt sich in der gegeben/gefragt-Notation wie folgt formulieren:
gegeben: Ein ungerichteter Graph G = (V,E) mit V = {v1, . . . , vn}
gefragt: Gibt es einen Hamilton-Kreis in G, d.h. einen Kreis, der genau alle Knoten einmal
besucht? Formaler kann dies als Frage formuliert werden: Gibt es eine Permutation
π : {1, . . . , n} → {1, . . . , n}, sodass {vπ(i), vπ(i+1)} ∈ E und {vπ(n), vπ(1)} ∈ E?
Satz 16.11.2. UNDIRECTED-HAMILTON-CYCLE istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• UNDIRECTED-HAMILTON-CYCLE ∈ NP: Rate die Permutation π nichtdeterministisch
und verifiziere anschließend, ob {vπ(i), vπ(i+1)} ∈ E und {vπ(n), vπ(1)} ∈ E gilt. Dies kann
auf einer NTM in Polynomialzeit durchgeführt werden.
• UNDIRECTED-HAMILTON-CYCLE ist NP-schwer. Wir zeigen DIRECTED-HAMILTON-
CYCLE ∈ NP ≤p UNDIRECTED-HAMILTON-CYCLE ∈ NP. Sei f die Funktion, die aus
einem gerichteten Graphen (V,E) einen ungerichteten Graphen macht, sodass
f(V ) =
⋃
{{vin, v, vout} | v ∈ V }
f(E) = {{uout, vin} | (u, v) ∈ E} ∪
⋃
{{{vin, v}, {v, vout}} | v ∈ V }
D.h. jeder Knoten v mit Ein- und Ausgängen
v
wird ersetzt durch
vvin vout
Stand: 17. Juni 2021 182 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.12. Das TRAVELLING-SALESMAN-Problem
Damit kann der Knoten v im ungerichteten Graph durch einen Hamilton-Kreis nur in ei-
ner Richtung durchlaufen werden (von vin durch v durch vout oder umgekehrt). Da dies
für alle Kanten und Knoten gemacht wird, gibt es nur dann einen Hamilton-Kreis im un-
gerichteten Graphen, wenn alle Knoten in der gleichen Reihenfolge durchlaufen werden.
Daher gilt: Falls
vin,π(1), vπ(1), vout,π(1), . . . vin,π(n), vπ(n), vout,π(n), vin,π(1)
ein ungerichteter Hamilton-Kreis, dann ist vπ(1), . . . , vπ(n), vπ(1) der gerichtete Hamilton
Kreis; und bei ungerichtetem Hamilton-Kreis
vout,π(1), vπ(1), vin,π(1), . . . vout,π(n), vπ(n), vin,π(n), vout,π(1)
gibt es den gerichteten Hamilton Kreis vπ(1), . . . , vπ(n), vπ(1).
Auch umgekehrt ist klar, dass es für jeden gerichteten Hamilton-Kreis einen gerichte-
ten gibt. Da f in Polynomialzeit berechenbar ist, haben zusammenfassend gezeigt, dass
DIRECTED-HAMILTON-CYCLE ≤p UNDIRECTED-HAMILTON-CYCLE gilt.
16.12. Das TRAVELLING-SALESMAN-Problem
Definition 16.12.1 (TRAVELLING-SALESMAN-Problem). Das TRAVELLING-SALESMAN-
Problem lässt sich in der gegeben/gefragt-Notation wie folgt formulieren:
gegeben: Ein Menge von Knoten (Städten) V = {v1, . . . , vn}, eine (n × n)-Matrix (Mi,j) Ent-
fernungenMi,j ∈ N zwischen den Städten vi und vj , sowie eine Zahl k ∈ N.
gefragt: Gibt es eine Rundreise, die alle Städte besucht und der Startort gleich dem Zielort
ist?
Formal: Gibt es eine Permutation π : {1, . . . , n} → {1, . . . , n}, sodass
(
∑n−1
i=1 Mπ(i),π(i+1)) +Mπ(n)+π(1) ≤ k?
Satz 16.12.2. Das TRAVELLING-SALESMAN-Problem istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• TRAVELLING-SALESMAN ∈ NP: Rate die Permutation π nichtdeterministisch und veri-
fiziere anschließend, dass (
∑n−1
i=1 Mπ(i),π(i+1)) + Mπ(n)+π(1) ≤ k gilt. Dies kann auf einer
NTM in Polynomialzeit durchgeführt werden.
• TRAVELLING-SALESMAN ist NP-schwer: Wir reduzieren UNDIRECTED-HAMILTON-
CYCLE in Polynomialzeit auf TRAVELLING-SALESMAN: Sei G = (V,E) mit
V = {1, . . . , n}. Dann sei f(G) = (V, (Mi,j , n))mit
Mi, j =
{
1, wenn {i, j} ∈ E
2, wenn {i, j} 6∈ E
Wenn G einen ungerichteten Hamilton-Kreis hat, dann repräsentiert dieser Kreis eine
Rundreise der Länge n. Wenn f(G) eine Rundreise der Länge ≤ n hat, dann muss die
Länge genaun sein. Daher könnennur Kantenmit Entfernung 1 verwendetwerden. Daher
hat G einen ungerichteten Hamilton-Kreis.
D. Sabel, Skript FSK & TIMI,SoSe 2021 183 Stand: 17. Juni 2021
16. Eine Auswahl NP-vollständiger Probleme
Die Funktion f kann in Polynomialzeit von einer DTM berechnet werden. Damit folgt
UNDIRECTED-HAMILTON-CYLE ≤p TRAVELLING-SALESMAN.
16.13. Das GRAPH-COLORING-Problem
Definition 16.13.1 (GRAPH-COLORING-Problem). Das GRAPH-COLORING-Problem lässt sich
in der gegeben/gefragt-Notation wie folgt formulieren:
gegeben: Ein ungerichteter Graph G = (V,E) und eine Zahl k ∈ N.
gefragt: Gibt es Färbung der Knoten in V mit ≤ k Farben, sodass keine zwei benachbarten
Knoten in G, die gleiche Farbe erhalten?
Satz 16.13.2. GRAPH-COLORING istNP-vollständig.
Beweis. Wir zeigen die beiden benötigten Teile:
• GRAPH-COLORING ∈ NP: Rate nichtdeterministisch die Farbe aus {1, . . . , k} für jeden
Knoten v ∈ V . Anschließend verifiziere, dass die Farben von u und v stets verschieden
sind, für alle {u, v} ∈ E. Die Verifikation kann in Polynomialzeit durchgeführt werden.
Daher kann GRAPH-COLORING auf einer NTM mit polynomieller Zeit entschieden wer-
den.
• GRAPH-COLORING ist NP-schwer. Wir zeigen 3-CNF-SAT ≤p GRAPH-COLORING. Sei
F = K1 ∧ . . . ∧ Km eine 3-CNF, sodass jede Klausel Ki genau 3 Literale enthält. Seien
{x1, . . . , xn} die aussagenlogischen Variablen, die in F vorkommen.
Wir erzeugen ein GRAPH-COLORING Problem mit k = 3, d.h. der Graph muss mit drei
Farben färbbar sein.
Konstruiere zunächst den Teilgraphen
N
T
F
x1
¬x1
x2
¬x2
· · ·
xn
¬xn
Wenn der Graph 3-färbbar ist, dann müssen T,N, F mit allen drei Farben gefärbt werden.
O.B.d.A. seien dies genau die Farben T,N, F und die Knoten entsprechend gefärbt (T mit T ,
N mit N , F mit F ). dann muss für eine Färbung stets (xi,¬xi) mit (T, F ) oder (F, T ) gefärbt
werden. D.h. dieser Teilgraph sorgt dafür, dass die Färbung genau eine Belegung der aussagen-
logischen Variablen erzeugt.
Für jede Klausel Kj wird der folgende Teilgraph Gj erzeugt, bestehend aus den Knoten
l1,j , l2,j , l3,j , Aj , Bj , Cj , der das logische „oder“ der drei Literale „berechnen“ soll. SeiKj:
Stand: 17. Juni 2021 184 D. Sabel, Skript FSK & TIMI,SoSe 2021
16.13. Das GRAPH-COLORING-Problem
l1,j
l2,j
Aj Bj
l3,j
Cj
Verbindet man die “Eingänge” l1,j , l2,j , l3,j mit den zugehörigen Literalen L1, L2, L3 (d.h. den
Knoten xi, bzw. ¬xi):
l1,j
l2,j
Aj Bj
l3,j
Cj
L1
L2
L3
dann gilt:
Wenn L1, L2, L3 mit Farben T und F gefärbt sind, dann:
• Cj kann nicht mit T gefärbt werden, wenn L1, L2, L3 alle mit F gefärbt sind.
• Wennmindestens ein Li (mit i = 1, 2, 3) mit T gefärbt ist, dann kann der Graph so gefärbt
werden, dass Cj mit T gefärbt wird.
Beide Aussagen lassen sich durch probieren aller Möglichkeiten verifizieren.
Schließlich erzeuge alle TeilgraphenGj fürK1, . . . ,Km und verbinde li,j mit xk wenn Li,j = xk
und mit ¬xk wenn Li,j = ¬xk. Schließlich verbinde jeweils Cj mit N und Cj mit F .
Damit gilt: Der entstandene Graph ist 3-färbbar, wenn alle Cj mit T gefärbt werden, was der
Fall ist, wenn jedes Gj mit einem mit T gefärbten Literal am Eingang verbunden ist. Da dies
genau den Literalen der Klausel Kj entspricht, erfüllt die Belegung I(xi) = 1, wenn xi mit T
gefärbt wird, und I(xi) = 0 sonst, die 3-CNF.
Umgekehrt lässt sich aus einer erfüllendenBelegung eine 3-Färbung für denGraphen erzeugen.
Da f in Polynomialzeit berechnet werden kann, haben wir 3-CNF-SAT ≤p GRAPH-COLORING
gezeigt.
D. Sabel, Skript FSK & TIMI,SoSe 2021 185 Stand: 17. Juni 2021
Literatur
Ackermann, Wilhelm: Zum Hilbertschen Aufbau der reellen Zahlen. In: Mathemati-
sche Annalen 99 (1928), Dec, Nr. 1, S. 118–133. – ISSN 1432–1807
Cocke, John: Programming Languages and Their Compilers: Preliminary Notes. New
York, NY, USA : New York University, 1969
Cook, Stephen A.: The Complexity of Theorem-proving Procedures. In: Proceedings
of the Third Annual ACM Symposium on Theory of Computing. New York, NY, USA :
ACM, 1971 (STOC ’71), S. 151–158
Ehrenfeucht, Andrzej ; Karhumäki, Juhani ; Rozenberg, Grzegorz: The (Generalized)
Post Correspondence Problem with Lists Consisting of two Words is Decidable.
In: Theor. Comput. Sci. 21 (1982), S. 119–144
Hopcroft, John E. ; Motwani, Rajeev ; Ullman, Jeffrey D.: Introduction to Automata
Theory, Languages, and Computation (3rd Edition). Boston, MA, USA : Addison-
Wesley Longman Publishing Co., Inc., 2006
Karp, Richard M.: Reducibility Among Combinatorial Problems. In: Miller, Ray-
mond E. (Hrsg.) ; Thatcher, James W. (Hrsg.): Proceedings of a symposium on the
Complexity of Computer Computations, held March 20-22, 1972, at the IBM Thomas
J. Watson Research Center, Yorktown Heights, New York, USA, Plenum Press, New
York, 1972 (The IBM Research Symposia Series), 85–103
Kasami, Tadao: An efficient recognition and syntax analysis algorithm for context-
free languages / Air Force Cambridge Research Laboratory. 1965 (AFCRL-65-758).
– Forschungsbericht
Ladner, Richard E.: On the Structure of Polynomial Time Reducibility. In: J. ACM 22
(1975), Nr. 1, S. 155–171
Neary, Turlough: Undecidability in Binary Tag Systems and the Post Correspondence
Problem for Five Pairs of Words. In: Mayr, Ernst W. (Hrsg.) ; Ollinger, Nicolas
(Hrsg.): 32nd International Symposium on Theoretical Aspects of Computer Science
(STACS 2015) Bd. 30. Dagstuhl, Germany : Schloss Dagstuhl–Leibniz-Zentrum fu-
er Informatik, 2015 (Leibniz International Proceedings in Informatics (LIPIcs)). –
ISSN 1868–8969, 649–661
Ogden,WilliamF.: AHelpful Result for Proving InherentAmbiguity. In:Mathematical
Systems Theory 2 (1968), Nr. 3, S. 191–194
Péter, Rózsa: Konstruktion nichtrekursiver Funktionen. In: Mathematische Annalen
111 (1935), Dec, Nr. 1, S. 42–60. – ISSN 1432–1807
Post, Emil L.: A variant of a recursively unsolvable problem. In: Bull. Amer. Math. Soc.
52 (1946), 04, Nr. 4, S. 264–268
Rice, Henry G.: Classes of Recursively Enumerable Sets and Their Decision Problems.
In: Trans. Amer. Math. Soc. 74 (1953), S. 358–366
Rabin, Michael O. ; Scott, Dana S.: Finite Automata and Their Decision Problems. In:
IBM J. Res. Dev. 3 (1959), April, Nr. 2, S. 114–125. – ISSN 0018–8646
Schöning, Uwe: Graph Isomorphism is in the Low Hierarchy. In: J. Comput. Syst. Sci.
37 (1988), Nr. 3, S. 312–323
Schöning, Uwe: Theoretische Informatik – kurz gefasst. 5. Auflage. Spektrum Akade-
mischer Verlag, 2008
D. Sabel, Skript FSK & TIMI,SoSe 2021 Stand: 17. Juni 2021
LITERATUR
Wegener, Ingo: Theoretische Informatik - eine algorithmenorientierte Einführung (2.
Auflage). Teubner, 1999
Younger, Daniel H.: Recognition and Parsing of Context-Free Languages in Time nˆ3.
In: Information and Control 10 (1967), Nr. 2, S. 189–208
D. Sabel, Skript FSK & TIMI,SoSe 2021 187 Stand: 17. Juni 2021
Einleitung
Grundlagen
Natürliche Zahlen, Alphabete, Worte und Sprachen
Relationen
Funktionen
Abzählbarkeit und Überabzählbarkeit
Asymptotische Notation
Formale Sprachen und Automatentheorie
Chomsky-Grammatiken und die Chomsky-Hierarchie
Grammatiken
Die Chomsky-Hierarchie
Erzeugung des leeren Worts und -Produktionen
Beziehungen zwischen den Typ i-Sprachen
Das Wortproblem
Weitere Probleme für Formale Sprachen
Syntaxbäume
Die Backus-Naur-Form für Grammatiken
Reguläre Sprachen
Deterministische endliche Automaten
DFAs akzeptieren reguläre Sprachen
Nichtdeterministische Endliche Automaten
Reguläre Sprachen können durch NFAs erkannt werden
Überführung von NFAs in DFAs
NFAs mit -Übergängen
Reguläre Ausdrücke
Zusammenfassende Darstellung der Formalismen für reguläre Sprachen
Das Pumping Lemma
Der Satz von Myhill und Nerode
Minimierung von Automaten
Abschlusseigenschaften der regulären Sprachen
Entscheidbarkeitsresultate zu regulären Sprachen
Kontextfreie Sprachen
Einfache Operationen auf CFGs
Chomsky-Normalform
Entfernen von Einheitsproduktionen
Herstellen der Chomsky-Normalform
Greibach-Normalform
Herstellen der Greibach-Normalform
Widerlegen der Kontextfreiheit
Abschlusseigenschaften kontextfreier Sprachen
Effiziente Lösung des Wortproblems: Der CYK-Algorithmus
Kellerautomaten
Akzeptanz durch Endzustände
Äquivalenz von Kellerautomaten und kontextfreien Sprachen
Kontextfreie Sprachen werden durch Kellerautomaten erkannt
Kellerautomaten, die maximal 2 Symbole auf den Keller legen
Kellerautomaten akzeptieren kontextfreie Sprachen
Kellerautomaten und kontextfreie Sprachen
Deterministisch kontextfreie Sprachen
Entscheidbarkeitsresultate
Ein entscheidbares Problem
Kontextsensitive und Typ 0-Sprachen
Die Kuroda-Normalform für kontextsensitive Grammatiken
Turingmaschinen
Linear beschränkte Turingmaschinen und kontextsensitive Sprachen
Beweis des Satzes von Kuroda
Turingmaschinen und Typ 0-Grammatiken
LBA-Probleme
Zusammenfassung und Überblick
Berechenbarkeitstheorie
Der intuitive Berechenbarkeitsbegriff
Turings Modell der Berechenbarkeit
Turingmaschinen und Turingberechenbarkeit
Mehrspuren- und Mehrband-Turingmaschinen
Mehrspuren-Turingmaschinen
Mehrband-Turingmaschinen
Modulare Konstruktion von Turingmaschinen
Notation
Einfache Rechenoperationen
Komposition von Turingmaschinen
LOOP-, WHILE-, und GOTO-Berechenbarkeit
LOOP-Programme
Syntax von LOOP-Programmen
Semantik von LOOP-Programmen
LOOP-Berechenbarkeit
Eigenschaften von LOOP-Programmen und der LOOP-Berechenbarkeit
WHILE-Programme
Syntax der WHILE-Programme
Semantik der WHILE-Programme
WHILE-Berechenbarkeit
GOTO-Programme
Syntax der GOTO-Programme
Semantik der GOTO-Programme
GOTO-Berechenbarkeit
Äquivalenz der WHILE- und GOTO-Berechenbarkeit
Simulation von Turingmaschinen mit GOTO-Programmen
Darstellung von Worten als natürliche Zahlen
Darstellung von TM-Konfigurationen mit GOTO-Programmvariablen
Primitiv und -rekursive Funktionen
Primitiv rekursive Funktionen
Definition der primitiv rekursiven Funktionen
Einfache Beispiele und Konstruktionen primitiv rekursiver Funktionen
Primitiv rekursive Funktionen zur Gödelisierung von Tupeln natürlicher Zahlen
Äquivalenz von LOOP-berechenbaren und primitiv rekursiven Funktionen
-Rekursive Funktionen
Schnell wachsende Funktionen: Die Ackermannfunktion
Unentscheidbarkeit
Gödelisierung von Turingmaschinen
Das Halteproblem
Unentscheidbarkeit des speziellen Halteproblems
Reduktionen
Unentscheidbarkeit des Halteproblems
Halteproblem bei leerer Eingabe
Der Satz von Rice
Das Postsche Korrespondenzproblem
MPCP PCP
H MPCP
Varianten und Bemerkungen zum PCP
Universelle Turingmaschinen
Unentscheidbarkeitsresultate für Grammatik-Probleme
Komplexitätstheorie
Einleitung, Zeitkomplexität, P und NP
Deterministische Zeitkomplexität
Uniformes vs. logarithmisches Kostenmaß
Nichtdeterminismus
Das P-vs-NP-Problem
NP-Vollständigkeit
Definition der NP-Vollständigkeit
Polynomialzeit-Reduktionen
Satz von Cook
Eine Auswahl NP-vollständiger Probleme
Das 3-CNF-SAT-Problem
Das CLIQUE-Problem
Das INDEPENDENT-SET-Problem
Das VERTEX-COVER-Problem
Das SETCOVER-Problem
Das SUBSETSUM-Problem
Das KNAPSACK-Problem
Das PARTITION-Problem
Das BINPACKING-Problem
Das DIRECTED-HAMILTON-CYCLE-Problem
Das UNDIRECTED-HAMILTON-CYCLE-Problem
Das TRAVELLING-SALESMAN-Problem
Das GRAPH-COLORING-Problem
Literatur