Logik, Berechenbarkeit und Komplexitaet

Werbung
Skript zur Vorlesung
Logik, Berechenbarkeit und Komplexität
Sommersemester 2012
Prof. Dr. Steffen Reith
Steff[email protected]
Hochschule RheinMain
Fachbereich Design Informatik Medien
Erstellt von:
Zuletzt überarbeitet von:
Email:
Erste Version vollendet:
Version:
Date:
Steffen Reith
Steffen Reith
Steff[email protected]
Juli 2006
1176
2010-06-21
Durch nichts zeigt sich mathematischer
Unverstand deutlicher als durch ein Übermaß
an Genauigkeit im Zahlenrechnen.
Carl Friedrich Gauß
Die größte Sorgfalt zu Beginn eines jeden
Unternehmens sollte man auf die gleichmässige
Verteilung der Kräfte legen.
Prinzessin Irulan
Dieses Skript ist aus der Vorlesung Logik, Berechenbarkeit und Komplexität“ des Master”
Studiengangs Informatik“ an der Fachhochschule Wiesbaden hervorgegangen. Ich danke allen
”
Höreren dieser Vorlesung für konstruktive Anmerkungen und Verbesserungen, wobei ich besonders Frau Daniela Choquet erwähnt werden soll. Naturgemäß ist ein Skript nie fehlerfrei (ganz
im Gegenteil!) und es ändert (mit Sicherheit!) sich im Laufe der Zeit. Deshalb bin ich auf weitere Verbesserungvorschläge angewiesen und freue mich auch über weitere Anregungen durch die
Hörer.
Inhaltsverzeichnis
1. Logik
1.1. Aussagenlogik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1. Syntax und Semantik der Aussagenlogik . . . . . . . . . . . . . . .
1.1.2. Einige grundlegende Eigenschaften von aussagenlogischen Formeln
1.1.3. Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.4. Hornformeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.5. Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.6. Folgern und Schließen . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Prädikatenlogik der ersten Stufe (PL1) . . . . . . . . . . . . . . . . . . . .
1.2.1. Syntax und Semantik . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2. Einige grundlegende Eigenschaften von Formeln der PL1 . . . . . .
1.2.3. Die Pränexnormalform . . . . . . . . . . . . . . . . . . . . . . . . .
2. Berechenbarkeit
2.1. Die Unentscheidbarkeit der PL1 . . . . . . . . . . . . . . .
2.2. Berechenbarkeit und die Churchsche These . . . . . . . .
2.2.1. Turingmaschinen und Turingberechenbarkeit . . .
2.2.2. RAMs und RAM-Berechenbarkeit . . . . . . . . .
2.2.3. Die Churchsche These . . . . . . . . . . . . . . . .
2.3. Entscheidbarkeit, das Halteproblem und der Satz von Rice
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
5
7
10
13
17
23
23
29
30
.
.
.
.
.
.
31
31
35
36
38
40
41
3. Komplexität
3.1. Effizient lösbare Probleme: die Klasse P . . . . . . . . . . . . . . .
3.1.1. Das Problem der 2-Färbbarkeit . . . . . . . . . . . . . . . .
3.2. Effizient überprüfbare Probleme: die Klasse NP . . . . . . . . . .
3.3. Schwierigste Probleme in NP: der Begriff der NP-Vollständigkeit .
3.3.1. Traveling Salesperson ist NP-vollständig . . . . . . . . . .
3.4. Die Auswirkungen der NP-Vollständigkeit . . . . . . . . . . . . . .
3.5. Der Umgang mit NP-vollständigen Problemen in der Praxis . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
46
46
48
51
54
56
57
58
A. Grundlagen und Schreibweisen
A.1. Mengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.1.1. Die Elementbeziehung und die Enthaltenseinsrelation
A.1.2. Definition spezieller Mengen . . . . . . . . . . . . . . .
A.1.3. Operationen auf Mengen . . . . . . . . . . . . . . . . .
A.1.4. Gesetze für Mengenoperationen . . . . . . . . . . . . .
A.1.5. Tupel (Vektoren) und das Kreuzprodukt . . . . . . . .
A.1.6. Die Anzahl von Elementen in Mengen . . . . . . . . .
A.2. Relationen und Funktionen . . . . . . . . . . . . . . . . . . .
A.2.1. Eigenschaften von Relationen . . . . . . . . . . . . . .
A.2.2. Eigenschaften von Funktionen . . . . . . . . . . . . . .
A.2.3. Permutationen . . . . . . . . . . . . . . . . . . . . . .
A.3. Summen und Produkte . . . . . . . . . . . . . . . . . . . . . .
A.3.1. Summen . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3.2. Produkte . . . . . . . . . . . . . . . . . . . . . . . . .
A.4. Gebräuchliche griechische Buchstaben . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
63
63
64
64
65
65
66
66
66
67
68
68
69
69
B. Einige formale Grundlagen von Beweistechniken
B.1. Direkte Beweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.1. Die Kontraposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
70
71
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
B.2.
B.3.
B.4.
B.5.
B.6.
Der Ringschluss . . . . . . . . . . . . . . . . .
Widerspruchsbeweise . . . . . . . . . . . . . .
Der Schubfachschluss . . . . . . . . . . . . . .
Gegenbeispiele . . . . . . . . . . . . . . . . .
Induktionsbeweise und das Induktionsprinzip
B.6.1. Die vollständige Induktion . . . . . . .
B.6.2. Induktive Definitionen . . . . . . . . .
B.6.3. Die strukturelle Induktion . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
72
73
73
73
74
74
75
76
Index
77
Literaturverzeichnis
81
1
1. Logik
1.1. Aussagenlogik
Die Aussagenlogik studiert die Verknüpfung von Aussagen (≜ sprachliche atomare Gebilde).
Dabei interessiert nur der Wahrheitswert (kurz: WW) einer Aussage:
i) Wahrheitswert 1 ≜ Aussage wahr
ii) Wahrheitswert 0 ≜ Aussage falsch
Damit sind die Aussagen
Wiesbaden liegt am Rhein“ und 2 + 5 = 7“
”
”
logisch gleichwertig. Aber auch die Aussagen
Wiesbaden liegt am Mittelmeer“ und 2 + 5 = 6“
”
”
sind gleichwertig, da sie beide falsch sind.
Im weiteren verwenden wir für solche Aussagen spezielle Variablen, so genannte Wahrheitswertevariablen (kurz: WW-Variable), die nur die Werte 0 oder 1 annehmen können.
Beliebige Aussagen verknüpfen wir durch Konnektoren:
Umgangssprachlicher Name
und
oder
nicht
wenn . . . so (dann)
genau dann, wenn
Symbol
∧
∨
¬
→
↔
Name in der Logik
Konjunktion
Alternative, Disjunktion
Negation
Implikation
Äquivalenz
Wie wollen wir nun die Verknüpfungen von Aussagen konstruieren?
Beispiel 1.1 Seien A, B und C Aussagenvariablen für drei beliebige Aussagen. Ist die folgende
Gesamtaussage wahr (unabhängig vom Wahrheitsgehalt der Einzelaussagen A, B und C)?
Genau dann, wenn aus C folgt, dass A nicht gilt und wenn aus A und dem Nichtgelten
von B folgt, dass B gilt oder C nicht gilt, können nicht gleichzeitig A und C gelten.
Dies kann man mit den oben eingeführten Konnektoren als
(((C → ¬A) ∧ ((A ∧ ¬B) → (B ∨ ¬C))) ↔ ¬(A ∧ C))
schreiben.
1.1.1. Syntax und Semantik der Aussagenlogik
Obwohl die Syntax von Formeln der Aussagenlogik anschaulich klar ist, brauchen wir präzise
Definitionen von Syntax und Semantik, um später mathematische Beweise führen zu können:
Definition 1.2 (Syntax der Aussagenlogik) Die Menge der Formeln der Aussagenlogik ist
induktiv wie folgt definiert:
(IA) Atomare Formeln: Das sind die Aussagenvariablen x1 , x2 , x3 , . . . (oft auch x, y und z)
2
1
LOGIK
(IS) Zusammengesetzte Formeln:
• Ist H eine Formel, so auch ¬H.
• Sind H1 und H2 Formeln, so auch (H1 ∧ H2 ), (H1 ∨ H2 ), (H1 → H2 ) und (H1 ↔ H2 ).
LAL =def {H | H ist eine aussagenlogische Formel}
Bemerkung 1.3
• Bis jetzt haben aussagenlogische Formeln keinerlei Bedeutung, sondern sind rein syntaktische Gebilde ( Strings“).
”
• Treten in einer Formel H die Variablen x1 , . . . , xn auf, so soll dies durch H(x1 , . . . , xn )
notiert werden.
Zur Definition der Bedeutung / Semantik von Formeln der Aussagenlogik benötigen wir Boolesche Funktionen:
Definition 1.4 Eine Funktion f : {0, 1}n → {0, 1} heißt (n-stellige) Boolesche Funktion.
Da der Definitionsbereich einer Booleschen Funktion endlich ist, können sie durch Wahrheitswertetabellen (kurz: WW-Tabelle) angegeben werden:
Definition 1.5 Einstellige Boolesche Funktionen:
x id(x) not(x)
0
0
1
1
1
0
Zweistellige Boolesche Funktionen (Auswahl):
x
0
0
1
1
y and(x, y) or(x, y) imp(x, y) aeq(x, y) xor(x, y)
0
0
0
1
1
0
1
0
1
1
0
1
0
0
1
0
0
1
1
1
1
1
1
0
n
Lemma 1.6 Es gibt 22 n-stellige Boolesche Funktionen.
Beweis: Übung.
#
Nun können wir die Semantik / Bedeutung der aussagenlogischen Formeln festlegen:
Definition 1.7 (Semantik der Aussagenlogik) Die Funktion I : LAL → {0, 1} ( Interpre”
tationsfunktion“) ist induktiv wie folgt definiert:
(IA) I(x1 ), I(x2 ), I(x3 ), . . . ist gegeben ( Belegung der Aussagenvariablen).
(IS) Seien H, H1 , H2 ∈ LAL , dann
• I(¬H) =def not(I(H))
• I(H1 ∧ H2 ) =def and(I(H1 ), I(H2 ))
• I(H1 ∨ H2 ) =def or(I(H1 ), I(H2 ))
• I(H1 → H2 ) =def imp(I(H1 ), I(H2 ))
• I(H1 ↔ H2 ) =def aeq(I(H1 ), I(H2 ))
1.1 Aussagenlogik
3
• I(H1 ⊕ H2 ) =def xor(I(H1 ), I(H2 ))
Mit Hilfe einer Interpretationsfunktion I (≜ Belegung der Wahrheitswertevariablen) wird einer
Formel H(x1 , . . . , xn ) ein Wahrheitswert zugeordnet, d.h. jede aussagenlogische Formel H legt
eine Boolesche Funktion fH fest:
fH (a1 , . . . , an ) =def I(H(x1 , . . . , xn )), wobei I(xi ) = ai ∈ {0, 1} für 1 ≤ i ≤ n
Beispiel 1.8 Bestimme fH1 für H1 = ¬(¬x ∨ ¬y). Es gilt also I(H1 ) = I(¬(¬x ∨ ¬y)) =
not(I(¬x ∨ ¬y)) = not(or(I(¬x), I(¬y))) = not(or(not(I(x)), not(I(y)))).
I(x) I(y) not(I(x)) not(I(y)) or(. . . ) not(. . . )
0
0
1
1
1
0
0
1
1
0
1
0
1
0
0
1
1
0
1
1
0
0
0
1
Also gilt fH1 (x, y) = and(x, y) = fx∧y (x, y), d.h. syntaktisch verschiedene Formeln können semantisch gleich sein.
Bemerkung 1.9
• Oft werden die Spalten einer WW-Tabelle aus Bequemlichkeitsgründen mit den entsprechenden (Sub)formeln benannt (statt der dazugehörigen Booleschen Funktion).
• Abweichend von der Definition der Syntax lassen wir aus Übersichtlichkeits- oder Bequemlichkeitsgründen manchmal Klammern weg, wenn die vollständige Klammerung durch den
Kontext klar ist.
Beispiel 1.10 Der Fachbereichsrat einer hessischen Informatikfakultät beschloss eine neue Prüfungsordnung, in der auch die erlaubten Fächerkombinationen geregelt wurden. Zur Auswahl stehen die Fächer Theologik, Praxologie und Schaltkreislöten, sowie ein Äppelwoipraktikum. Es
wurde festgelegt, dass eine gültige Fächerkombination alle folgenden Bedingungen erfüllen muss:
i) Wurde das Äppelwoipraktikum nicht erfolgreich absolviert, so muss die Praxologieprüfung
bestanden werden.
ii) War ein Student in der Praxologie- oder Schaltkreisprüfung nicht erfolgreich, so muss Theologik und das Äppelwoipraktikum bestanden werden.
iii) Hat ein Kandidat weder die Prüfung in Theologik noch in Praxologie bestanden, so muss
die Schaltkreisvorlesung und das Äppelwoipraktikum bestanden werden.
Obwohl diese Prüfungsordnung das Ergebnis eines sehr schwierigen Abstimmungsprozesses war,
lehnte das Ministerium die Prüfungsordnung wegen undurchsichtigen Formulierungen“ ab. Die
”
Fakultät wurde aufgefordert, die Prüfungsbedingungen äquivalent so umzuformen, dass möglichst
wenige, einfache Alternativen entstehen. Helfen Sie dem Dekan bei dieser schweren Arbeit.
4
1
LOGIK
Zur Lösung führen wir folgende WW-Variablen ein:
• t ≜ Hat Theologik bestanden“
”
• p ≜ Hat Praxologie bestanden“
”
• s ≜ Hat Schaltkreislöten bestanden“
”
• a ≜ Hat Äppelwoipraktikum bestanden“
”
und formalisieren die Aussagen zu:
i) (¬a → p) ≡ a ∨ p
ii) (¬p ∨ ¬s) → (t ∧ a)
iii) (¬t ∧ ¬p) → (s ∧ a)
Nun stellen wir folgende WW-Tabelle auf:
t
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
p
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
s
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
a
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
(b) (c) (d) (e) (f ) (g) (h) (i)
0
1
0
0
1
0
0
0
1
1
0
0
1
0
0
0
0
1
0
0
1
0
0
0
1
1
0
0
1
1
1
0
1
1
0
0
0
0
1
0
1
1
0
0
0
0
1
0
1
0
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
0
0
0
0
1
0
1
1
1
1
0
0
1
1
0
1
0
0
0
0
1
0
1
1
1
1
0
1
1
1
1
1
0
0
0
0
1
0
1
1
1
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
1
1
0
1
1
1
Wobei die Bezeichnungen der Spalten gegeben sind durch:
• (b) ≜ ¬a → p
• (f ) ≜ (¬t ∧ ¬p)
• (c) ≜ (¬p ∨ ¬s)
• (g) ≜ (s ∧ a)
• (d) ≜ (t ∧ a)
• (h) ≜ (¬t ∧ ¬p) → (s ∧ a)
• (e) ≜ (¬p ∨ ¬s) → (t ∧ a)
• (i) ≜ (b) ∧ (e) ∧ (h)
Also kann man die Anweisungen vereinfachen zu: Es müssen das Äppelwoipraktikum und die
Theologik bestanden werden oder Praxologie und Schaltkreislöten muss erfolgreich absolviert werden.
Beispiel 1.11 Folgende Aussagen sind gegeben:
i) Jeder, der ein gutes Gehör hat, kann richtig singen.
ii) Niemand ist ein wahrhafter Musiker, wenn er nicht seine Zuhörer begeistern kann.
iii) Niemand, der kein gutes Gehör hat, kann seine Zuhörerschaft begeistern.
iv) Niemand, außer einem wahrhaften Musiker, kann eine Sinfonie schreiben.
1.1 Aussagenlogik
5
Nun stellt sich die Frage: Welche Eigenschaften muss jemand notwendigerweise besitzen, wenn
er eine Sinfonie geschrieben hat?
Zur Lösung führen wir folgende WW-Variablen ein:
• xG ≜ Hat ein gutes Gehör“
”
• xS ≜ Kann richtig singen“
”
• xZ ≜ Kann seine Zuhörer begeistern“
”
• xM ≜ Ist ein wahrhafter Musiker“
”
• xI ≜ Kann Sinfonie schreiben“
”
und formalisieren die Aussagen zu:
i) xG → xS
iii) xZ → xG
ii) xM → xZ
iv) xI → xM
Nun sind erfüllende Belegungen gesucht mit I(xI ) = 1. Folgende Idee vereinfacht die Aufgabe:
Seien H1 , H2 aussagenlogische Formeln, dann I(H1 → H2 ) = 1 gdw. I(H1 ) ≤ I(H2 ). Da I(xI ) =
1 muss auch I(xM ) = I(xZ ) = I(xG ) = I(xS ) = 1 gelten. D.h. jemand der eine Sinfonie
geschrieben hat, muss alle anderen angesprochenen Eigenschaften haben.
1.1.2. Einige grundlegende Eigenschaften von aussagenlogischen Formeln
Definition 1.12
i) Zwei aussagenlogische Formeln H1 , H2 heißen (logisch) äquivalent (Schreibweise: H1 ≡ H2 )
genau dann wenn (kurz: gdw.) für jede Interpretation I gilt I(H1 ) = I(H2 ).
ii) Eine aussagenlogische Formel H heißt erfüllbar gdw. es eine Interpretation I gibt mit
I(H) = 1.
iii) Eine aussagenlogische Formel H heißt allgemeingültig ( Tautologie) gdw. für alle Interpretationen I gilt I(H) = 1.
iv) Gilt für eine Interpretation I und eine aussagenlogische Formel H I(H) = 1, dann heißt I
Modell von H (Schreibweise: I |= H). Ist I ein Modell von H, so vereinbaren wir auch die
Sprechweise: H gilt unter der Belegung I.
Damit ergibt sich die folgende Eigenschaft:
H erfüllbar gdw. ¬H nicht allgemeingültig
Eigenschaft 1.13 Die folgenden Eigenschaften sind äquivalent:
i) H1 ≡ H2
ii) fH1 = fH2
iii) (H1 ↔ H2 ) ist allgemeingültig
Beweis: Übung
#
Es gelten die folgenden Äquivalenzen, die durch Aufstellen der WW-Tabelle gezeigt werden
können:
6
1
LOGIK
Satz 1.14 Es gelten die folgenden Äquivalenzen:
H1 ∧ H2 ≡ H2 ∧ H1
H1 ∨ H2 ≡ H2 ∨ H1
Kommutativgesetz
Kommutativgesetz
H1 ∧ (H2 ∧ H3 ) ≡ (H1 ∧ H2 ) ∧ H3
H1 ∨ (H2 ∨ H3 ) ≡ (H1 ∨ H2 ) ∨ H3
Assoziativitätsgesetz
Assoziativitätsgesetz
H1 ∧ (H2 ∨ H3 ) ≡ (H1 ∧ H2 ) ∨ (H1 ∧ H3 )
H1 ∨ (H2 ∧ H3 ) ≡ (H1 ∨ H2 ) ∧ (H1 ∨ H3 )
Distributivgesetz
Distributivgesetz
H1 ∨ H1 ≡ H1
H1 ∧ H1 ≡ H1
H1 ∧ (H1 ∨ H2 ) ≡ H1
H1 ∨ (H1 ∧ H2 ) ≡ H1
¬(H1 ∧ H2 ) ≡ ¬H1 ∨ ¬H2
¬(H1 ∨ H2 ) ≡ ¬H1 ∧ ¬H2
¬¬H ≡ H
H1 → H2 ≡ ¬H1 ∨ H2
Duplizitätsgesetz
Duplizitätsgesetz
Absorptionsgesetz
Absorptionsgesetz
de-Morgansche Regel
de-Morgansche Regel
doppelte Verneinung
Auflösung der Implikation
H1 ↔ H2 ≡ ((H1 ∧ H2 ) ∨ (¬H1 ∧ ¬H2 )) Auflösung der Äquivalenz
H1 → H2 ≡ ¬H2 → ¬H1
Kontraposition
Bemerkung 1.15
• Man kann beobachten, dass die Äquivalenzen aus Theorem 1.14 analog auch für die Mengenoperationen Schnitt ( ∩ ≜ ∧), Vereinigung ( ∪ ≜ ∨) und Komplement ( ≜ ¬) gelten.
• Die Konnektoren →“ und ↔“ können durch die Konnektoren ∧“, ∨“ und ¬“ äquiva”
”
”
”
”
lent ersetzt werden.
Damit können die Definitionen von Syntax und Semantik der Aussagenlogik abgespeckt“
”
werden (die Fälle für →“ und ↔“ bzw. imp“ und aeq“ einfach entfernen).
”
”
”
”
D.h. wir verwenden H1 → H2 als Abkürzung für ¬H1 ∨ H2 und H1 ↔ H2 als Abkürzung
von ((H1 ∧ H2 ) ∨ (¬H1 ∧ ¬H2 )).
• Da ∧ (bzw. ∨) kommutativ und assoziativ sind, können wir uns im folgenden Fall die
Klammerung sparen und vereinfachen wie folgt:
n
∧
Hi =def (H1 ∧ H2 ∧ . . . ∧ Hn ) =def (H1 ∧ (H2 ∧ (H3 ∧ . . . (Hn−1 ∧ Hn ) . . . )))
i=1
bzw.
n
∨
i=1
Hi =def (H1 ∨ H2 ∨ . . . ∨ Hn ) =def (H1 ∨ (H2 ∨ (H3 ∨ . . . (Hn−1 ∨ Hn ) . . . )))
1.1 Aussagenlogik
7
Beispiel 1.16 Mit Hilfe dieser Regeln können wir Beispiel 1.10 nun auch durch Umformungen
lösen:
(¬a → p) ∧ ((¬p ∨ ¬s) → (t ∧ a)) ∧ ((¬t ∧ ¬p) → (s ∧ a))
≡
(a ∨ p) ∧ ((p ∧ s) ∨ (t ∧ a)) ∧ ((t ∨ p) ∨ (s ∧ a))
≡
(a ∨ p) ∧ ((p ∧ s) ∨ (t ∧ a)) ∧ (t ∨ p ∨ s) ∧ (t ∨ p ∨ a)
Absorb.
≡
≡
≡
Absorb.+Dupl.
≡
2×Distr.
≡
Distr.
≡
(a ∨ p) ∧ ((p ∧ s) ∨ (t ∧ a)) ∧ (t ∨ p ∨ s)
(a ∨ p) ∧ ((p ∧ s) ∨ t) ∧ ((p ∧ s) ∨ a) ∧ (t ∨ p ∨ s)
(a ∨ p) ∧ (p ∨ t) ∧ (s ∨ t) ∧ (p ∨ a) ∧ (s ∨ a) ∧ (t ∨ p ∨ s)
(a ∨ p) ∧ (p ∨ t) ∧ (s ∨ t) ∧ (s ∨ a)
(a ∨ (p ∧ s)) ∧ (t ∨ (p ∧ s))
(a ∧ t) ∨ (p ∧ s)
Wodurch sich die schon bekannten Regeln der Prüfungsordnung ergeben: Es müssen das Appelwoipraktikum und die Theologik bestanden werden oder Praxologie und Schaltkreislöten muss
erfolgreich absolviert werden.
Wir definieren die folgenden weiteren Abkürzungen: H 1 =def H und H 0 =def ¬H.
Lemma 1.17 Für jede Interpretation I gilt:
i) I(H σ ) = 1 gdw. I(H) = σ für σ ∈ {0, 1}
∧
ii) I( ni=1 Hi ) = 1 gdw. für alle i ∈ {1, . . . , n} gilt I(Hi ) = 1
∨
iii) I( ni=1 Hi ) = 1 gdw. es gibt ein i ∈ {1, . . . , n} mit I(Hi ) = 1
Beweis: Übung
#
1.1.3. Normalformen
Definition 1.18
• Ein Literal ist eine WW-Variable oder eine negierte WW-Variable. Dabei wird eine unnegierte WW-Variable als positives und eine negierte WW-Variable als negatives Literal
bezeichnet.
∨
• Eine Disjunktion von Literalen heißt Klausel, d.h. eine Klausel ist von der Form m
i=1 Li =
(L1 ∨ L2 ∨ . . . ∨ Lm ), wobei m ∈ N ist und L1 , . . . , Lm Literale sind.
• Eine Formel H ist in konjunktiver Normalform (kurz: KNF), falls sie eine Konjunktion
von Klauseln ist:
mi
n ∨
∧
H=( (
Li,j )), wobei n, m1 , . . . , mn ∈ N und Li,j Literale
i=1 j=1
• Eine Formel H ist in disjunktiver (alternativer) Normalform (kurz: DNF), falls sie eine
Disjunktion von Konjunktionen von Literalen ist:
mi
n ∧
∨
H=( (
Li,j )), wobei n, m1 , . . . , mn ∈ N und Li,j Literale
i=1 j=1
Beispiel 1.19
• KNF-Formeln: ((x ∨ y ∨ z) ∧ (¬x ∨ ¬y ∨ ¬z)), x ∨ y, x
8
1
LOGIK
• DNF-Formeln: ((x ∧ y ∧ ¬z) ∨ (¬x ∧ ¬y ∧ ¬z)), x ∨ y, x
Satz 1.20 Jede Formel H ist äquivalent zu einer Formel in disjunktiver Normalform. Es gilt:
H(x1 , . . . , xn ) =
∨
n
∧
a
xj j
fH (a1 ,...,an )=1 j=1
Beispiel 1.21
H(x1 , x2 , x3 ) = x
∨1 ∧ (x2 ∨ x3 ) a1
a2
a3
≡
fH (a1 ,a2 ,a3 )=1 (x1 ∧ x2 ∧ x3 )
≡ (x1 ∧ ¬x2 ∧ x3 ) ∨ (x1 ∧ x2 ∧ ¬x3 ) ∨ (x1 ∧ x2 ∧ x3 )
D.h. die DNF von H kann man aus der WW-Tabelle ablesen“.
”
Beweis: Für jede Interpretation I gilt:
∨
∧
a
I( fH (a1 ,...,an )=1 nj=1 xj j ) = 1 gdw.
es gibt (a1 , . . . , an ) ∈ {0, 1}n mit fH (a1 , . . . , an ) = 1
∧
a
und I( nj=1 xj j ) = 1
es gibt (a1 , . . . , an ∈ {0, 1}n ) mit fH (a1 , . . . , an ) = 1
a
und I(xj j ) = 1 für alle 1 ≤ j ≤ n
es gibt (a1 , . . . , an ) ∈ {0, 1}n mit fH (a1 , . . . , an ) = 1
und I(xj ) = aj für alle 1 ≤ j ≤ n
fH (I(x1 ), . . . , I(xn )) = 1
I(H(x1 , . . . , xn )) = 1
gdw.
gdw.
gdw.
gdw.
D.h. I |= H gdw. I |=
∨
∧n
fH (a1 ,...,an )=1
aj
j=1 xj ,
also H(x1 , . . . , xn ) ≡
∨
fH (a1 ,...,an )=1
∧n
aj
j=1 xj .
#
Bemerkung 1.22
• Der Beweis von Satz 1.20 liefert einen Algorithmus, der zu einer beliebigen aussagenlogischen Formel H eine äquivalente DNF-Formel berechnet: H −→ Wahrheitswertetabelle
von H berechnen −→ DNF-Formel ablesen.
• Zu einer Formel H kann es verschiedene äquivalente DNF-Formeln geben:
x ∨ y ≡ (x ∧ ¬y) ∨ (¬x ∧ y) ∨ (x ∧ y)
• Die mit Hilfe von Satz 1.20 konstruierte Formel hat eine besondere Eigenschaft: In jedem
Disjunkt kommt jede Variable (negiert oder unnegiert) genau einmal vor. Eine solche DNFFormel heißt in kanonisch disjunktiver Normalform (kurz: kDNF).
Satz 1.23 Jede Formel H ist äquivalent zu einer Formel in konjunktiver Normalform. Es gilt:
H(x1 , . . . , xn ) =
∧
n
∨
1−aj
xj
fH (a1 ,...,an )=0 j=1
Beispiel 1.24
H(x1 , x2 , x3 ) = x1 ∨ (x2 ∧ x3 )
≡ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ ¬x3 ) ∧ (x1 ∨ ¬x2 ∨ x3 )
D.h. die KNF von H kann man aus der WW-Tabelle ablesen“.
”
1.1 Aussagenlogik
9
Beweis:
∧n
∨
H ≡ ¬¬H ≡ ¬(
aj
j=1 xj )
∧
a
¬ nj=1 xj j ) (via Regel von de-Morgan)
f¬H (a1 ,...,an )=1
∧
∨n
aj
≡ (
j=1 ¬xj ) (via Regel von de-Morgan)
≡ (
∧
(vgl. Satz 1.20 für ¬H)
f¬H (a1 ,...,an )=1
f¬H (a1 ,...,an )=1
≡ (
∧
∨n
1−aj
)
j=1 xj
fH (a1 ,...,an )=0
Die letzte Zeile gilt, da ¬xσ ≡ x1−σ , denn ¬x0 ≡ ¬¬x ≡ x ≡ x1 bzw. ¬x1 ≡ ¬x ≡ x0 .
#
Bemerkung 1.25
• Der Beweis von Satz 1.23 liefert einen Algorithmus, der zu einer beliebigen aussagenlogischen Formel H eine äquivalente KNF-Formel berechnet: H −→ Wahrheitswertetabelle
von H berechnen −→ KNF-Formel ablesen.
• Zu einer Formel H kann es verschiedene äquivalente KNF-Formeln geben:
(x ∨ y) ∧ (¬x ∨ z) ≡ (x ∨ y ∨ z) ∧ (x ∨ y ∨ ¬z) ∧ (¬x ∨ y ∨ z) ∧ (¬x ∨ ¬y ∨ z)
• Der oben skizzierte Algorithmus liefert eine KNF-Formel mit der Eigenschaft, dass in
jeder Klausel jede Variable (negiert oder unnegiert) genau einmal vorkommt. Eine solche
KNF-Formel heißt in kanonisch konjunktiver Normalform (kurz: kKNF).
Ein sehr wichtiges (Berechnungs-) Problem, das in der Theoretischen Informatik häufig benutzt wird und dessen Varianten auch von großer praktischer Relevanz sind, ist das so genannte
Erfüllbarkeitsproblem (engl. satisfiability problem“):
”
Problem:
Eingabe:
Frage:
SAT
Aussagenlogische Formel H
Hat H eine erfüllende Belegung?
Für dieses Problem ist kein effizienter Algorithmus bekannt1 , d.h. man muss im schlimmsten
Fall alle 2n Belegungen von H(x1 , . . . , xn ) durchprobieren. SAT ist ein typisches Problem für
eine ganze Klasse von (schweren) Problemen für die kein praktisch brauchbarer Algorithmus
bekannt ist (Stichwort: NP-Vollständigkeit, siehe z.B. Abschnitt 3 oder [RV01b]).
Sogar die Einschränkung auf KNF-Formeln mit drei Variablen pro Klausel (3 -SAT) ist noch
ein schweres Problem und von gleicher Schwierigkeit wie SAT. Ähnlich schwer ist TAUT, ein
Problem bei dem gefragt wird, ob eine Formel eine Tautologie ist.
Problem:
Eingabe:
Frage:
3 -SAT
Aussagenlogische Formel H in KNF mit max. 3 Literalen pro Klausel
Hat H eine erfüllende Belegung?
Damit ist offensichtlich
Problem:
Eingabe:
Frage:
1
KNF-SAT
Aussagenlogische Formel H in KNF
Hat H eine erfüllende Belegung?
D.h. man kennt keinen Algorithmus, der für eine gegebene Formel H(x1 , . . . , xn ) das Erfüllbarkeitsproblem in
höchstens p(n) Schritten löst, wobei p ein festes Polynom ist (Polynomialzeit).
10
1
LOGIK
auch eine schweres Problem.
Beispiel 1.26 Eine Formel H legt die gegebene WW-Tabelle fest:
Damit ergibt sich die folgende kanonische DNF:
x1 x2 x3 H
H ≡ (¬x1 ∧ ¬x2 ∧ ¬x3 ) ∨ (x1 ∧ ¬x2 ∧ ¬x3 )∨
0 0 0 1
(x1 ∧ ¬x2 ∧ x3 )
0 0 1 0
0 1 0 0
und die kanonische KNF:
0 1 1 0
H ≡ (x1 ∨ x2 ∨ ¬x3 ) ∧ (x1 ∨ ¬x2 ∨ x3 )∧
1 0 0 1
(x1 ∨ ¬x2 ∨ ¬x3 ) ∧ (¬x1 ∨ ¬x2 ∨ x3 )∧
1 0 1 1
(¬x1 ∨ ¬x2 ∨ ¬x3 )
1 1 0 0
1 1 1 0
Bemerkung 1.27
• Die Umformung in eine DNF- oder KNF-Formel kann zu einer sehr langen Formel führen
(Wenn die Ausgangsformel die Länge n hat, kann eine Formel der Länge O(2n ) entstehen.
Stichwort: Die Anwendung der Distributivgesetze kann in einem Umformungsschritt die
Länge etwa verdoppeln).
• Oft hat eine kurze Formel in DNF eine lange Darstellung in KNF (und umgekehrt).
1.1.4. Hornformeln
Wir haben gesehen, dass das Erfüllbarkeitsproblem für aussagenlogische Formeln sehr schwer ist.
Für einen in der Praxis wichtigen Spezialfall ist das nicht so. Diese speziellen aussagenlogischen
Formeln heißen Hornformeln (nach dem Mathematiker Alfred Horn)2 .
Definition 1.28 Eine KNF-Formel heißt Hornformel, wenn jede ihrer Klauseln höchstens eine
unnegierte Variable (≜ positives Literal) enthält.
Beispiel 1.29 Die Formel H(x1 , . . . , x5 ) ist eine Hornformel:
H ≡ (¬x1 ∨ ¬x2 ∨ x5 ) ∧ (x2 ∨ ¬x3 ∨ ¬x4 ∨ ¬x6 ) ∧ (¬x5 ∨ ¬x6 ) ∧ (x4 )∧
(¬x1 ∨ x3 ∨ ¬x4 ) ∧ (x1 ∨ ¬x4 ) ∧ (x1 ∨ ¬x5 )
Hornformeln sind deshalb so wichtig, weil man ihre Klauseln wie folgt umformen kann:
(¬x1 ∨ ¬x2 ∨ . . . ∨ ¬xm ∨ xk ) ≡ (¬(x1 ∧ x2 ∧ . . . ∧ xm ) ∨ xk )
≡ (x1 ∧ x2 ∧ . . . ∧ xm ) → xk
Solche Bedingungsmengen haben große Bedeutung für Datenbanken und in der künstlichen
Intelligenz (z.B. bedeutet die PROLOG-Anweisung spass :- witz,lustig“ eigentlich: Wenn Witz“
”
”
und Lustig“, dann Spass“).
”
”
Beispiel 1.30 Wir verwenden hier zusätzlich die Konstanten 0 und 1 (also Abkürzungen für
eine unerfüllbare Formel und eine Tautologie). Für jede Interpretation gilt: I(0) =def 0 und
I(1) =def 1. Dann kann man die Hornformel aus Beispiel 1.29 schreiben als:
H ≡ ((x1 ∧ x2 ) → x5 ) ∧ ((x3 ∧ x4 ∧ x6 ) → x2 ) ∧ ((x5 ∧ x6 ) → 0) ∧ (1 → x4 )∧
((x1 ∧ x4 ) → x3 ) ∧ (x4 → x1 ) ∧ (x5 → x1 )
2
*1918 Lower East Side, Manhattan (USA) - †2001 in Pacific Palisades (USA)
1.1 Aussagenlogik
11
Definition 1.31 Die Klausel, die kein Literal enthält, nennen wir leere Klausel (Schreibweise:
()). Für jede Interpretation I gilt I(()) = 0, d.h. die leere Klausel ist unerfüllbar.
Wir betrachten nun folgenden Algorithmus, der die Erfüllbarkeit von Hornformeln effizient
testet:
Algorithmus 1 : Hornalgorithmus
Data : Hornformel H(x1 , . . . , xn )
Result : true, wenn H erfüllbar, false sonst
while (es gibt ein i, so dass die Klausel (xi ) in H vorkommt) do
nimm das kleinste solche i;
eliminiere alle Klauseln in denen xi unnegiert vorkommt;
/* Nur hier kann die leere Klausel entstehen */
eliminiere ¬xi aus allen Klauseln;
end
if (Klausel () entstanden) then
return false;
else
return true;
end
Beispiel 1.32 Sei die folgende Formel H(x1 , . . . , x5 ) als Eingabe für Algorithmus 1 gegeben:
H ≡ (¬x1 ∨ ¬x2 ∨ x5 ) ∧ (x2 ∨ ¬x3 ∨ ¬x4 ∨ ¬x6 ) ∧ (¬x5 ∨ ¬x6 ) ∧ (x4 )∧
(¬x1 ∨ x3 ∨ ¬x4 ) ∧ (x1 ∨ ¬x4 ) ∧ (x1 ∨ ¬x5 )
Nach Ausführung des 1. Durchlaufs der while-Schleife (i = 4):
(¬x1 ∨ ¬x2 ∨ x5 ) ∧ (x2 ∨ ¬x3 ∨ ¬x6 ) ∧ (¬x5 ∨ ¬x6 ) ∧ (¬x1 ∨ x3 ) ∧ (x1 ) ∧ (x1 ∨ ¬x5 )
Nach Ausführung des 2. Durchlaufs der while-Schleife (i = 1):
(¬x2 ∨ x5 ) ∧ (x2 ∨ ¬x3 ∨ ¬x6 ) ∧ (¬x5 ∨ ¬x6 ) ∧ (x3 )
Nach Ausführung des 3. Durchlaufs der while-Schleife (i = 3):
(¬x2 ∨ x5 ) ∧ (x2 ∨ ¬x6 ) ∧ (¬x5 ∨ ¬x6 )
Nach diesem Schritt bricht die while-Schleife ab, da keine Klausel der Form (xi ) vorhanden
ist. Auch die Klausel () kommt nach dem 3. Durchlauf nicht vor, deshalb ist die Hornformel H
erfüllbar.
Zum jetzigen Zeitpunkt ist nicht klar, warum Algorithmus 1 korrekt ist. Dies wollen wir nun
klären.
Lemma 1.33 (Schleifeninvariante) Entsteht bei einem Durchlauf der while-Schleife des Hornalgorithmus (Algorithmus 1) aus einer Formel H die Formel H ′ durch das Eliminieren der
Variablen xi , so gilt für jede Interpretation I:
I(H) = 1 gdw. (I(H ′ ) = 1 und I(xi ) = 1)
Beweis:
⇒“ Sei I(H) = 1, dann auch I(K) = 1 für jede Klausel K von H. Insbesondere für die Klausel
”
(xi ) gilt I((xi )) = 1, also I(xi ) = 1. Sei nun K eine beliebige Klausel in H ′ :
12
1
LOGIK
Fall 1: (K ∨ ¬xi ) ist Klausel in H, dann I(K) = or(I(K), 0) = I(K ∨ ¬xi ) = 1.
Fall 2: K ist Klausel in H, dann ist sowieso I(K) = 1.
Also ist I(K) = 1 für alle Klauseln K von H ′ und damit I(H ′ ) = 1.
⇐“ Sei I(H ′ ) = 1 und I(xi ) = 1, also I(K ′ ) = 1 für alle Klauseln K ′ von H ′ . Sei K nun eine
”
beliebige Klausel in H:
Fall 1: Wenn K = (K ′ ∨ xi ), dann I(K) ≥ I(xi ) = 1.
Fall 2: Wenn K = (K ′ ∨ ¬xi ), dann ist K ′ Klausel in H ′ und damit I(K) ≥ I(K ′ ) = 1.
Fall 3: Weder xi noch ¬xi kommen in K vor, dann ist K auch Klausel in H ′ , also I(K) = 1.
Zusammen: Für alle Klauseln K von H gilt I(K) = 1, also ergibt sich I(H) = 1.
#
Folgerung 1.34 Ist aus der Hornformel H nach Verlassen der while-Schleife des Hornalgorithmus (Algorithmus 1) die Formel H ′ entstanden, dann gilt für jede Interpretation I:
I(H) = 1 gdw. (I(H ′ ) = 1 und I(xi ) = 1)
Beweis: Direkte Folge von Lemma 1.33
#
Lemma 1.35 Ist aus der Hornformel H nach Verlassen der while-Schleife des Hornalgorithmus
(Algorithmus 1) die Formel H ′ entstanden, so gilt:
i) Kommt die Klausel () in H ′ vor, so gilt I(H) = 0 für jede Interpretation I.
ii) Kommt die Klausel () in H ′ nicht vor, so gilt I(H) = 1 für die Interpretation I mit I(xi ) = 1
gdw. (xi wurde durch den Hornalgorithmus eliminiert ).
Beweis:
Aussage i): Die leere Klausel () kommt in H ′ vor, dann gilt I(H ′ ) = 0 für jede Interpretation
I. Also muss aufgrund von Folgerung 1.34 I(H) = 0 gelten.
Bem.: () ist entstanden, weil negative Literale ¬xi gestrichen wurden, aber es gilt I(xi ) = 1
laut Folgerung 1.34.
Aussage ii): Die Klausel () kommt in H ′ nicht vor, dann muss in jeder Klausel K ′ mindestens
ein negatives Literal existieren. Wir wählen
{
I(xi ) = 1 , falls xi durch den Hornalgorithmus eliminiert wurde
I(xi ) =
I(xi ) = 0 , sonst
Dann gilt I(K ′ ) = 1 für jede Klausel K ′ von H ′ , also I(H ′ ) = 1. Mit Folgerung 1.34 gilt
dann I(H) = 1.
#
Bemerkung 1.36
• Die von uns konstruierte Belegung ist die, die kleinstmögliche Wahrheitswerte zuordnet.
• Es kann noch weitere erfüllende Belegungen geben, denn wurde xi nicht eliminiert, so muss
nicht immer I(xi ) = 0 gewählt werden.
Beispiel 1.37 Im Beispiel 1.32 wurden x1 , x3 und x4 eliminiert. Also ist I0 (x1 ) = I0 (x3 ) =
I0 (x4 ) = 1 und I0 (x2 ) = I0 (x5 ) = I0 (x6 ) = 0 eine erfüllende Belegung. Aber auch I1 und I2
I0
I1
I2
sind erfüllende Belegungen.
x1 x2 x3 x4 x5 x6
1 0 1 1 0 0
1 0 1 1 1 0
1 1 1 1 1 0
1.1 Aussagenlogik
13
Satz 1.38 Der Hornalgorithmus (Algorithmus 1) ist korrekt und benötigt O(|H|4 ) Schritte.
Beweis:
• Die Korrektheit folgt direkt aus Lemma 1.35.
• Mit |H| =def Anzahl der Buchstaben von H“ bezeichnen wir die Länge der Formel3 H.
”
Sei H(x1 , . . . , xn ) die Eingabe des Hornalgorithmus:
– Da in jedem Durchlauf genau eine Variable eliminiert wird, haben wir maximal n
Schleifendurchläufe.
– Bei einem Durchlauf muss jede Klausel betrachtet (suchen) und evtl. geändert werden.
Laufzeit: O(|K|2 ).
# der Klauseln
Gesamte Laufzeit:
n
|{z}
·
z}|{
m
·O(|K|2 ) ≤ n · |H| · O(|H|2 ) = O(|H|4 ).
#Schleifendurchläufe
Diese Abschätzung ist extrem grob, zeigt aber, dass der Hornalgorithmus in Polynomialzeit
arbeitet.
1.1.5. Resolution
Wir wissen schon: Für SAT und 3 -SAT gibt es vermutlich keine Algorithmen, die in der Praxis
ausreichend schnell sind und für alle aussagenlogischen Formeln die Erfüllbarkeit testen. D.h. wir
können nicht hoffen, dass ein Algorithmus A für SAT oder 3 -SAT existiert mit:
• Wenn H erfüllbar, dann stoppt A mit dem Ergebnis erfüllbar“
”
• Wenn H unerfüllbar, dann stoppt A mit dem Ergebnis unerfüllbar“
”
k
• A arbeitet max. O(|H| ) Schritte für ein festes k ∈ N ( Polynomialzeit“)
”
Ein einfacher, aber nicht schneller Algorithmus für SAT ist
Algorithmus 2 : Erfüllbarkeit von aussagenlogischen Formeln
Data : Formel H(x1 , . . . , xn )
Result : true, wenn H erfüllbar, false sonst
stelle die WW-Tabelle von H auf;
prüfe alle Einträge der WW-Tabelle;
if (eine Zeile der WW-Tabelle hat eine 1 in der Spalte H) then
return true;
else
return false;
end
Eine Formel H hat maximal |H| Variablen, d.h. die WW-Tabelle kann maximal 2|H| Einträge
haben und damit ist die Rechenzeit des obigen Algorithmus mindestens O(2|H| ) (kein Polynom!). Damit ist dieser Algorithmus für die Praxis unbrauchbar (vgl. Abbildung 7 auf Seite 50).
Wesentlich bessere Algorithmen sind für SAT und 3 -SAT aber nicht bekannt.
Hoffnung: Wir können das Erfüllbarkeitsproblem wenigstens für einen (möglichst großen) Teil
der Formeln schnell lösen. Der Resolutionsalgorithmus für KNF-SAT soll dies leisten.
Wir legen fest: Klauseln enthalten nie eine Variable negiert und unnegiert (solche Klauseln
könnte man sowieso streichen, denn sie sind allgemeingültig).
3
z.B. |(x ∨ y)| = 5 und |((x ∧ y) → z)| = 9
14
1
LOGIK
Definition 1.39 Sind (C1 ∨ x) und (C2 ∨ ¬x) Klauseln und kommt in der Klausel (C1 ∨ C2 )
keine Variable negiert und unnegiert vor, so heißt (C1 ∨C2 ) Resolvent von (C1 ∨x) und (C2 ∨¬x).
Beispiel 1.40 Sei H = (x ∨ y) ∧ (¬y) ∧ (¬x ∨ z) ∧ (x ∨ ¬y ∨ z) ∧ (y ∨ ¬z), dann sind die Resol| {z } |{z} | {z } |
{z
} | {z }
=K1
=K2
=K3
=K4
=K5
venten der Klauseln von H:
• K6 = (x) ist Resolvent von K1 und K2 ,
• K7 = (y ∨ z) ist Resolvent von K1 und K3 ,
• K8 = (x ∨ z) ist Resolvent von K1 und K4 ,
• K9 = (¬z) ist Resolvent von K2 und K5 ,
• K10 = (¬y ∨ z) ist Resolvent von K3 und K4 und
• K11 = (¬x ∨ y) ist Resolvent von K3 und K5 .
Der Resolvent von (x) und (¬x) ist die leere Klausel (). Für jede Interpretation I gilt wieder
I(()) = 0.
Definition 1.41 Sei H eine KNF-Formel und R1 , . . . , Rm alle Resolventen von Klauseln in H,
die nicht schon Klauseln in H sind, dann ist
Res(H) =def H ∧ R1 ∧ R2 ∧ . . . ∧ Rm .
Beispiel 1.42 Mit Beispiel 1.40 gilt deshalb Res(H) = H ∧ K6 ∧ K7 ∧ . . . ∧ K11 .
Definition 1.43 Sei H eine KNF-Formel, dann definieren wir induktiv für k ∈ N:
• Res0 (H) =def H
• Resk+1 (H) =def Res(Resk (H))
Beispiel 1.44 Mit Bezug auf Beispiel 1.40 ergibt sich:
• Res0 (H) = H,
• Res1 (H) = H ∧ K6 ∧ . . . ∧ K11 ,
• Res2 (H) = Res1 (H) ∧ K12 ∧ . . . ∧ K15 , wobei
– K12 = (y) ist Resolvent von K1 und K11 ,
– K13 = (z) ist Resolvent von K2 und K7 ,
– K14 = (¬x) ist Resolvent von K2 und K11 und
– K15 = (x ∨ ¬y) ist Resolvent von K4 und K9 ,
• Res3 (H) = Res2 (H) ∧ K16 ∧ K17 , wobei
– K16 = () ist Resolvent von K2 und K12 und
– K17 = (x ∨ ¬z) ist Resolvent von K5 und K15 ,
• Res4 (H) = Res3 (H),
• Res5 (H) = Res4 (H) und deshalb
• Resn (H) = Res3 (H) für n ≥ 3.
1.1 Aussagenlogik
15
Im Beispiel 1.44 zeigte es sich, dass nach 3 Schritten keine neuen Resolventen mehr gebildet werden können. Das nächste Lemma zeigt, dass für jede KNF-Formel dieser Zustand nach
endlich vielen Schritten erreicht ist. Diese Eigenschaft werden wir später dazu benutzen, einen
Algorithmus zu formulieren, der berechnet, ob eine KNF-Formel unerfüllbar ist.
Lemma 1.45 Für jede KNF-Formel H gilt:
i) Es gibt ein k ≥ 0 mit Resk (H) = Resk+1 (H) ( Fixpunkt von Res(·) (·)“)
”
ii) Aus Resk (H) = Resk+1 (H) folgt Resk+i (H) = Resk (H) für alle i ≥ 0.
Beweis:
i): Bei jedem Schritt von Resk (H) nach Resk+1 (H) kommen höchstens Klauseln dazu. Bei n
Variablen gibt es höchstens 3n verschiedene Klauseln, denn jede der n Variablen kann in einer
Klausel nicht vorkommen, unnegiert vorkommen oder negiert vorkommen. Also gibt es maximal
3n verschiedene k mit Resk (H) ̸= Resk+1 (H) und deshalb muss es ein k ∈ N mit Resk (H) =
Resk+1 (H) geben.
ii): Wir zeigen die Aussage via Induktion über i:
(IA) Sei i = 0, dann gilt Resk+0 (H) = Resk (H).
(IV) Es gibt ein k, so dass für alle i ≥ 0 gilt Resk+i (H) = Resk (H).
(IV)
(IV)
(IS) i → i + 1: Es gilt Resk+(i+1) (H) = Res(Resk+i (H)) = Res(Resk (H)) = Resk+1 (H) =
Resk (H).
#
Definition 1.46 Für die KNF-Formel H sei kH das kleinste k mit Resk (H) = Resk+1 (H). Wir
legen fest:
Res∗ (H) =def ReskH (H)
Mit Hilfe des folgenden Lemmas zeigen wir, dass die Hinzunahme der Resolventen zu einer
logisch äquivalenten Formel führt. Damit verändert die Resolventenbildung die Eigenschaft der
Unerfüllbarkeit einer KNF-Formel nicht.
Lemma 1.47 Seien H, K1 und K2 Formeln und ist x eine Aussagenvariable, dann gilt:
H ∧ (K1 ∨ x) ∧ (K2 ∨ ¬x) ≡ H ∧ (K1 ∨ x) ∧ (K2 ∨ ¬x) ∧ (K1 ∨ K2 )
Beweis: Wir müssen zeigen, dass für alle I gilt I(H ∧ (K1 ∨ x) ∧ (K2 ∨ ¬x)) = I(H ∧ (K1 ∨ x) ∧
(K2 ∨ ¬x) ∧ (K1 ∨ K2 )).
⇒“ Sei I(H ∧ (K1 ∨ x) ∧ (K2 ∨ ¬x)) = 1, dann I(H) = I(K1 ∨ x) = I(K2 ∨ ¬x) = 1.
”
Fall 1: Wenn I(x) = 1, dann I(K2 ∨ ¬x) = I(K2 ) = 1 und damit I(K1 ∨ K2 ) = 1.
Fall 2: Wenn I(x) = 0, dann I(K1 ∨ x) = I(K1 ) = 1 und damit I(K1 ∨ K2 ) = 1.
In beiden Fällen ergibt sich I(H ∧ (K1 ∨ x) ∧ (K2 ∨ ¬x)) = 1
⇐“ Sei I(H ∧ (K1 ∨ x) ∧ (K2 ∨ ¬x) ∧ (K1 ∨ K2 )) = 1, dann sicherlich auch I(H ∧ (K1 ∨ x) ∧
”
(K2 ∨ ¬x)) = 1.
#
Lemma 1.48 Für jede KNF-Formel H gilt:
i) H ≡ Res(H)
ii) H ≡ Resk (H) für jedes k ≥ 0
iii) H ≡ Res∗ (H)
16
1
LOGIK
Beweis: Aussage i) ist eine direkte Folge von Lemma 1.47, Aussage ii) folgt aus Aussage i) und
Punkt iii) ergibt sich mit ii).
#
Der nächste Satz zeigt die Korrektheit des Resolutionsmethode, mit der wir entscheiden können,
ob eine gegebene KNF-Formel erfüllbar ist.
Satz 1.49 Eine KNF-Formel H ist genau dann erfüllbar, wenn die leere Klausel () nicht in
Res∗ (H) enthalten ist.
Beweis:
⇒“ Sei H erfüllbar. Es gilt mit Lemma 1.48 auch H ≡ Res∗ (H). Da H erfüllbar ist, existiert
”
ein I mit I(H) = I(Res∗ (H)) = 1. Dann kann () keine Klausel von Res∗ (H) sein, da für
alle I gilt: I(()) = 0.
⇐“ Wir zeigen diese Aussage durch Kontraposition (siehe Abschnitt B.1.1 auf Seite 71) und
”
Induktion über die Anzahl n der Variablen in der Formel H.
(IA) Sei n = 0, dann ist H = () die einzig mögliche Formel und damit () ∈ Res∗ (H).
(IV) Sei H(x1 , . . . , xn ) nicht erfüllbar, dann gilt () ∈ Res∗ (H).
(IS) n → n + 1: H(x1 , . . . , xn+1 ) sei nicht erfüllbar und habe die Form
x
alle Klauseln mit xn+1
kommt nicht vor
n+1
z
}|
{
z
}|
{
H1 ∧ H2 ∧ . . . ∧ Hk ∧ (H1′ ∨ xn+1 ) ∧ (H2′ ∨ xn+1 ) ∧ . . . ∧ (Hl′ ∨ xn+1 )
′′
∧ (H1′′ ∨ ¬xn+1 ) ∧ (H2′′ ∨ ¬xn+1 ) ∧ . . . ∧ (Hm
∨ ¬xn+1 )
|
{z
}
alle Klauseln mit ¬xn+1
′′ kommen sowohl x
D.h. in H1 , . . . , Hk , H1′ , . . . , Hl′ und H1′′ , . . . , Hm
n+1 als auch ¬xn+1 nicht
vor.
Wir definieren
• F0 (x1 , . . . , xn ) =def H1 ∧ . . . Hk ∧ H1′ . . . ∧ Hl′ und
′′
• F1 (x1 , . . . , xn ) =def H1 ∧ . . . Hk ∧ H1′′ . . . ∧ Hm
Beh. F0 und F1 sind nicht erfüllbar.
Ann. F0 wäre erfüllbar, dann existiert ein I mit I |= F0 , d.h. I(H1 ) = · · · = I(Hk ) =
I(H1′ ) = . . . I(Hl′ ) = 1. Da xx+1 in F0 nicht vorkommt, können wir I(xn+1 ) = 0 wählen.
Dann gilt:
• I(Hi ) = 1 für 1 ≤ i ≤ k,
• I(Hi′ ∨ xn+1 ) = or(I(Hi′ ), I(xn+1 )) = or(I(Hi′ ), 0) = I(Hi′ ) = 1 für 1 ≤ i ≤ l und
• I(Hi′′ ∨ ¬xn+1 ) = or(I(Hi′′ ), I(¬xn+1 )) = or(I(Hi′ ), not(I(xn+1 ))) = or(I(Hi′ ), 1) = 1
für 1 ≤ i ≤ m.
Damit ist I(H) = 1, d.h. H wäre erfüllbar. Widerspruch. Also war die Annahme falsch
und damit ist F0 unerfüllbar.
Analog: F1 nicht erfüllbar.
Die Formeln F0 und F1 haben nur n Variablen und sind unerfüllbar, also gilt mit der
Induktionsvoraussetzung, dass die leere Klausel in Res∗ (F0 ) und Res∗ (F1 ) vorkommt. Nun
unterscheiden wir für F0 zwei Fälle:
1.1 Aussagenlogik
17
Fall 1: () ist Klausel in Res∗ (H1 ∧ . . . ∧ Hk ), dann ist auch () Klausel in Res∗ (H).
Fall 2: () ist nicht Klausel in Res∗ (H1 ∧ . . . ∧ Hk ), also muss die leere Klausel () in
Res∗ (H1 ∧ . . . ∧ Hk ∧ H1′ ∧ . . . ∧ Hl′ ) enthalten sein, wobei bei der Resolventenbildung
|
{z
}
F0
auch mindestens eine Klausel H1′ , . . . , Hl′ verwendet wurde. Dann muss aber (xn+1 )
eine Klausel in Res∗ (H1 ∧ . . . ∧ Hk ∧ (H1′ ∨ xn+1 ) ∧ . . . ∧ (Hl′ ∨ xn+1 )) sein.
Also gilt () oder (xn+1 ) ist Klausel in Res∗ (H). Mit der analogen Betrachtung (Fall 1 und
Fall 2) für F1 erhalten wir, dass () oder (¬xn+1 ) eine Klausel in Res∗ (H) ist.
Alles zusammen:
• () ist Klausel in Res∗ (H) oder
• (xn+1 ) und (¬xn+1 ) sind Klauseln in Res∗ (H), dann aber auch () ∈ Res∗ (H), da die
leere Klausel Resolvent von (xn+1 ) und (¬xn+1 ) ist.
Also gilt, dass () ∈ Res∗ (H).
#
Bemerkung 1.50 Wir haben hier ein Sammlung von einfachen, mechanisch anzuwendenden
Regeln mit denen man die Erfüllbarkeit von KNF-Formeln testen kann. Eine solche Kollektion
von Umformungsregeln nennt man auch Kalkül. Kalküle bieten sich wegen ihrer mechanischen
Arbeitsweise dazu an, auf einem Computer implementiert zu werden. Mit Satz 1.49 haben wir
die Vollständigkeit (≜ jede unerfüllbare Formel wird identifiziert) und die Korrektheit (≜ keine
erfüllbare Formel wird als unerfüllbar bezeichnet) des Resolutionskalküls gezeigt.
Damit schließen wir unsere Betrachtungen über die Aussagenlogik ab und wenden uns der
mächtigeren Prädikatenlogik zu, die ebenfalls vielfältige Anwendungen in der Informatik hat.
1.1.6. Folgern und Schließen
Wie werden in diesem Abschnitt Mengen von Formeln mit Φ oder Ψ (und Variationen davon)
bezeichen.
Definition 1.51 Sei I eine beliebige Interpretation und Φ ⊆ LAL , dann
i) I(Φ) = 1 gdw. I(H) = 1 für alle H ∈ Φ.
ii) I heißt Modell von Φ gdw. I(Φ) = 1.
Mit dieser Definition gilt I(∅) = 1 für jede Interpretation I, denn es gibt ja kein H ∈ ∅ mit
I(H) = 0.
Definition 1.52 Seien Φ ⊆ LAL und H ∈ LAL , dann
i) Φ |= H gdw. aus I(Φ) = 1 folgt I(H) = 1 für alle Interpretationen I, d.h. immer wenn alle
Formeln aus Φ wahr sind, dann ist auch H wahr.
Sprechweise: H folgt aus Φ.
ii) Φ|= =def {H ∈ LAL | Φ |= H}, d.h. Φ|= ist die Menge aller Formeln, die aus Φ gefolgert
werden können. Dabei wird |= als der Folgerungsoperator bezeichnet.
Lemma 1.53 Der Folgerungsoperator ist ein Hüllenoperator, d.h. es gelten die folgenden Eigenschaften:
i) Φ ⊆ Φ|= (Einbettungseigenschaft)
|=
|=
ii) Wenn Φ1 ⊆ Φ2 , dann Φ1 ⊆ Φ2 (Monotonie)
18
1
LOGIK
|=
iii) (Φ|= ) = Φ|= (Abgeschlossenheit)
Beweis: Übung
#
Lemma 1.54 Seien H, H1 , . . . , Hn ∈ LAL und Φ ⊆ LAL , dann gilt
i) H ist allgemeingültig gdw. ∅ |= H,
ii) H1 ≡ H2 gdw. für alle Φ gilt Φ |= H1 genau dann, wenn Φ |= H2 ,
iii) (H1 → H2 ) ist allgemeingültig gdw. {H1 } |= H2
iv) {H1 , . . . , Hm }|= = {H1 ∧ H2 ∧ . . . ∧ Hm }|=
Beweis: Übung
#
Ist Φ eine Menge von Voraussetzungen (Axiome), dann ist Φ|= die Menge aller Formeln, die
aus Φ gefolgert werden können. Damit stellt sich die Frage, ob man H ∈ Φ|= auch algorithmisch
überprüfen kann, d.h. ob es einen (effizienten) Algorithmus für das folgende Problem gibt:
Problem:
Eingabe:
Frage:
FOLGERUNG
H ∈ LAL und Φ ⊆ LAL
Gilt H ∈ Φ|= ?
Das nächste Lemma zeigt, dass dies für die Aussagenlogik prinzipiell, wenn auch mit kaum
praktikabler Laufzeit, der Fall ist.
Lemma 1.55 Es gibt einen Algorithmus, der für eine beliebige endliche Formelmenge Φ ⊆ LAL
und H ∈ LAL entscheidet, ob Φ |= H gilt.
Beweis: Mit Hilfe von Lemma 1.54 gilt für Φ = {H1 , . . . , Hm }
Φ |= H gdw. {H1 ∧ H2 ∧ . . . ∧ Hm } |= H
gdw. (H1 ∧ H2 ∧ . . . ∧ Hm ) → H ist Tautologie
Der Algorithmus berechnet die WW-Tabelle von (H1 ∧ H2 ∧ . . . ∧ Hm ) → H und überprüft, ob
alle Zeilen/Belegungen erfüllend sind.
#
Bemerkung 1.56 Die Existenz des Algorithmus aus dem Beweis von Lemma 1.55 wirft direkt
einige Fragen auf:
• Bei unendlichen Formelmengen und in der Prädikatenlogik (vgl. Abschnitt 1.2 ab Seite
23) ist solch ein Test nicht möglich, da dann potentiell unendlich viele Belegungen zu
überprüfen wären.
• Kann dieser aufwändige Algorithmus durch mechanische/syntaktische Ableitungsregeln vereinfacht oder ersetzt werden? Wir werden sehen, dass dies in der Aussagenlogik (und in
anderen wichtigen Logiken) der Fall ist.
Wir haben schon gesehen, dass die Konnektoren → und ↔ aus der Syntax der Aussagenlogik
entfernt werden können, ohne die Ausdrucksstärke zu verkleinern, da → und ↔ durch ∧, ∨ und
¬ ersetzt werden können. Um die weiteren Beweise zu vereinfachen, betrachten wir im folgenden
nur noch Formeln, die mit den Konnektoren ∧, ∨ und ¬ aufgebaut wurden, was dann keine
künstliche Einschränkung darstellt.
Definition 1.57 (Schließen, Ableiten, Beweisen) Seien Φ ⊆ LAL und H, H ′ ∈ LAL , dann
wird der binäre Operator ⊢ induktiv wie folgt definiert:
1.1 Aussagenlogik
19
(IA) Wenn H ∈ Φ, dann gilt Φ ⊢ H.
(IS) Nun sollen sechs verschiedene Regeln festgelegt werden, mit deren Hilfe eine Ableitung
durchgeführt werden kann
i) Wenn (Φ ∪ {H ′ }) ⊢ H und (Φ ∪ {¬H ′ }) ⊢ H, dann gilt Φ ⊢ H. ( Fallunterscheidung“)
”
ii) Wenn (Φ ∪ {¬H}) ⊢ H ′ und (Φ ∪ {¬H}) ⊢ ¬H ′ , dann gilt Φ ⊢ H. ( Indirekter Beweis“)
”
iii) Wenn Φ ⊢ (H ′ ∨ H) und Φ ⊢ ¬H ′ , dann gilt Φ ⊢ H. ( Modus Ponens, Abtrennungsregel“)
”
Bemerkung: (H ′ ∨ H) ≡ ¬H ′ → H.
iv) Wenn Φ ⊢ H, dann gilt Φ ⊢ (H ∨H ′ ) und Φ ⊢ (H ′ ∨H) für beliebige H ′ ∈ LAL . ( Einführung
”
der Alternativen“)
v) Wenn Φ ⊢ H und Φ ⊢ H ′ , dann gilt Φ ⊢ (H ∧ H ′ ). ( Einführung der Konjunktion“)
”
vi) Wenn Φ ⊢ (H ∧ H ′ ), dann gilt Φ ⊢ H und Φ ⊢ H ′ . ( Auflösung der Konjunktion“).
”
Dabei heißt ⊢ Ableitungsoperator und die Menge der aus Φ ableitbaren Formeln wird durch
Φ⊢ =def {H ∈ LAL | Φ ⊢ H}.
festgelegt.
Lemma 1.58 Der Ableitungsoperator ⊢ ist ein Hüllenoperator.
Beweis: Übung
#
Lemma 1.59 (Endlichkeitssatz) Ist H ∈ Φ⊢ , dann gibt es eine endliche Menge Φ0 ⊆ Φ, so
dass H ∈ Φ⊢0 .
Beweis: Wird eine Formel H durch die einmalige Anwendung von ⊢ abgeleitet, so werden nur
endliche viele (maximal zwei) Formeln zusätzlich benötigt, wie leicht aus Definition 1.57 ersichtlich ist. Werden nun endlich viele Ableitungsschritte durchgeführt, so werden nur endlich viele
Formeln aus Φ benötigt, d.h. es gibt ein Φ0 ⊆ Φ, das endlich ist und für das Φ0 ⊢ H gilt.
#
Der Rest dieses Abschnitts beschäftigt sich mit dem Beweis der Tatsache, dass Φ|= = Φ⊢ gilt,
d.h. syntaktisches Beweisen und semantisches Folgern leisten das gleiche. Der Beweis wird in
zwei Schritten durchgeführt werden:
Satz 1.60: Φ⊢ ⊆ Φ|= ( Korrektheitssatz“)
”
Satz 1.66: Φ|= ⊆ Φ⊢ ( Vollständigkeitssatz“) auf Seite 22.
”
Der Beweis des nun folgenden Korrektheitssatzes zeigt, dass jede Formel H, die aus einer
Formelmenge Φ abgeleitet werden kann, auch aus Φ folgerbar ist. Dies ist eine notwendige
Bedingung, um den Folgerungsbegriff zu mechanisieren, denn Definition 1.57 würde sicherlich
keinen Sinn machen, wenn es eine Möglichkeit gäbe Formeln (mechanisch) abzuleiten, die nicht
gefolgert werden können.
Satz 1.60 ( Korrektheitssatz“) Sei Φ ⊆ LAL , dann gilt Φ⊢ ⊆ Φ|= .
”
Beweis: Die unendliche Folge Φ⊢0 ⊆ Φ⊢1 ⊆ Φ⊢2 ⊆ Φ⊢3 ⊆ . . . von Mengen von Formeln wird induktiv
durch definiert:
(IA) Φ⊢0 =def Φ
20
1
LOGIK
(IS) Die Menge Φ⊢n wird zur Menge Φ⊢n+1 erweitert, indem alle Formel hinzugenommen werden,
die durch einen Ableitungsschritt erzeugt werden können:
{H | es ex. ein H ′ mit H ∈ (Φ ∪ {H ′ })⊢n und H ∈ (Φ ∪ {¬H ′ })⊢n }
{H | es ex. ein H ′ mit H ′ , ¬H ′ ∈ (Φ ∪ {¬H})⊢n }
{H | es ex. ein H ′ mit (H ′ ∨ H), ¬H ′ ∈ Φ⊢n }
{(H ∨ H ′ ) | H ∈ Φ⊢n und H ′ beliebig}
{(H ′ ∨ H) | H ∈ Φ⊢n und H ′ beliebig}
{(H ∧ H ′ ) | H, H ′ ∈ Φ⊢n }
{H | es ex. ein H ′ mit (H ∧ H ′ ) ∈ Φ⊢n }
{H | es ex. ein H ′ mit (H ′ ∧ H) ∈ Φ⊢n }
∪
Offensichtlich gilt dann Φ⊢0 ⊆ Φ⊢1 ⊆ Φ⊢2 ⊆ Φ⊢3 ⊆ . . . und Φ⊢ = n≥0 Φ⊢n . Wir zeigen nun via
Induktion über n, dass Φ⊢n ⊆ Φ|= und damit Φ⊢ ⊆ Φ|= gilt.
(IA) Aufgrund der Einbettungseigenschaft (vgl. Lemma 1.53) des Folgerungsoperators ergibt
sich sofort Φ⊢0 = Φ ⊆ Φ|= .
(IV) Φ⊢n ⊆ Φ|=
(IS) Sei H ∈ Φ⊢n+1 , dann müssen die folgenden neun Fälle unterschieden werden:
Φ⊢n+1 =def Φ⊢n ∪
∪
∪
∪
∪
∪
∪
∪
i) Wenn sogar H ∈ Φ⊢n , dann gilt nach (IV) H ∈ Φ|= .
ii) Es ex. ein H ′ mit H ∈ (Φ ∪ {H ′ })⊢n und H ∈ (Φ ∪ {¬H ′ })⊢n . Nach (IV) gilt dann, dass
H ∈ (Φ ∪ {H ′ })|= und H ∈ (Φ ∪ {¬H ′ })|= . Wenn nun I(Φ) = 1, dann ist entweder I(Φ ∪
{H ′ }) = 1 oder I(Φ ∪ {¬H ′ }) = 1, d.h. I(H) = 1 und H ∈ Φ|= .
iii) Es ex. ein H ′ mit H ′ , ¬H ′ ∈ (Φ ∪ {¬H})⊢n . Nach (IV) gilt dann H ′ , ¬H ′ ∈ (Φ ∪ {¬H})|= .
Wenn I(Φ) = 1, dann muss I(¬H) = 0 gelten, da ja I(Φ ∪ {¬H}) = 1 = I(H ′ ) = I(¬H ′ )
nicht sein kann. Also ist I(H) = 1 und somit H ∈ Φ|= .
iv) Es ex. ein H ′ mit (H ′ ∨ H), ¬H ′ ∈ Φ⊢n , dann gilt nach (IV) (H ′ ∨ H), ¬H ′ ∈ Φ|= . Wenn
I(Φ) = 1, dann gilt somit I(H ′ ∨ H) = 1 = I(∧H ′ ) und deshalb I(H) = 1. Also ist H ∈ Φ|= .
v) Seien H = (H ′ ∨ H ′′ ) und H ′ ∈ Φ⊢n . Nach (IV) gilt H ′ ∈ Φ|= . Wenn I(Φ) = 1, dann gilt
auch I(H ′ ) = 1 und somit I(H) = 1. Also ist H ∈ Φ|= .
vi) Sei H = (H ′′ ∨ H ′ ), dann kann dieser Fall analog zum Fall v) gezeigt werden.
vii) Seien H = (H ′ ∧ H ′′ ) und H ′ , H ′′ ∈ Φ⊢n . Nach (IV) gilt H ′ , H ′′ ∈ Φ|= . Ist I(Φ) = 1, dann
auch I(H ′ ) = I(H ′′ ) = 1. Also gilt I(H ′ ∧ H ′′ ) = 1 und somit H ′ ∧ H ′′ ∈ Φ|= .
viii) Es ex. ein H ′ mit (H ∧ H ′ ) ∈ Φ⊢n . Nach (IV) ist dann (H ∧ H ′ ) ∈ Φ|= . Wenn I(Φ) = 1, dann
I(H ∧ H ′ ) = I(H) = 1. Also gilt H ∈ Φ|= .
ix) Der Fall, dass ein H ′ existiert mit (H ′ ∧ H) ∈ Φ⊢n kann analog zum Fall viii) behandelt
werden.
Damit ist gezeigt, dass für jede Möglichkeit den Ableitungsoperator anzuwenden gilt, dass die
so abgeleiteten Formeln auch gefolgert werden können, was die Koorektheit zeigt.
#
Definition 1.61 Sei Φ ⊆ LAL , dann heißt Φ konsistent ( widerspruchsfrei) gdw. es keine Formel
H ∈ LAL mit H, ¬H ∈ Φ⊢ gibt.
Satz 1.62 Sei Φ ⊆ LAL , dann gilt
i) ist Φ nicht konsistent, dann Φ⊢ = LAL und
ii) ist Φ konsistent, so ist Φ ∪ {H} oder Φ ∪ {¬H} konsistent.
1.1 Aussagenlogik
21
Beweis:
i) Ist Φ nicht konsistent, dann gibt es ein H ′ mit H ′ , ¬H ′ ∈ Φ⊢ . Also H ′ , ¬H ′ ∈ (Φ ∪ {¬H})⊢
für alle H ∈ LAL . Mit der Regel des indirekten Beweises (siehe Def. 1.57 ii) auf Seite 18)
gilt dann H ∈ Φ⊢ , d.h. LAL = Φ⊢ .
ii) Der Beweis wird durch Kontraposition geführt. Sind Φ∪{H} und Φ∪{¬H} nicht konsistent,
dann wurde gerade gezeigt, dass H, ¬H ∈ (Φ ∪ {H})⊢ und H, ¬H ∈ (Φ ∪ {¬H})⊢ . Mit der
Regel der Fallunterscheidung (siehe Def. 1.57 i) auf Seite 18) gilt dann H, ¬H ∈ Φ⊢ , d.h. Φ
ist nicht konsistent.
#
Definition 1.63 Sei Φ ⊆ LAL , dann heißt Φ vollständig gdw. für jedes H ∈ LAL gilt H ∈ Φ
oder ¬H ∈ Φ.
Lemma 1.64 Sei Φ ⊆ LAL konsistent und vollständig, dann gelten die folgenden Aussagen:
i) Φ = Φ⊢
ii) ¬H ∈ Φ gdw. H ̸∈ Φ
iii) (H1 ∨ H2 ) ∈ Φ gdw. H1 ∈ Φ oder H2 ∈ Φ
iv) (H1 ∧ H2 ) ∈ Φ gdw. H1 ∈ Φ und H2 ∈ Φ
Beweis:
i) Sowieso gilt Φ ⊆ Φ⊢ , denn ⊢ ist ein Hüllenoperator (vgl. Lemma 1.58). Angenommen
Φ ⊂ Φ⊢ , dann ex. ein H ∈ Φ⊢ \Φ. Da Φ vollständig ist und H ̸∈ Φ, gilt ¬H ∈ Φ ⊂ Φ⊢ ,
d.h. Φ ist nicht konsistent. Dies ist ein Widerspruch und damit ergibt sich Φ = Φ|= .
ii) Da Φ vollständig ist, gilt H ∈ Φ oder ¬H ∈ Φ. Wegen der Konsistenz von Φ gilt dann
H ̸∈ Φ⊢ = Φ oder ¬H ∈
̸ Φ⊢ = Φ. Zusammen ergibt sich ¬H ∈ Φ gdw. H ∈ Φ.
iii) ⇒“: Sei (H1 ∨ H2 ) ∈ Φ, dann können zwei Fälle unterschieden werden:
”
Fall 1: H1 ∈ Φ, dann ist die Behauptung schon gezeigt.
Fall 2: H1 ̸∈ Φ. Da Φ vollständig ist, gilt ¬H1 = Φ = Φ⊢ . Da (H1 ∨ H2 ) ∈ Φ = Φ⊢ gilt
mit Modus Ponens (siehe Def. 1.57 iii) auf Seite 18) H2 ∈ Φ⊢ = Φ.
⇐“: Wenn H1 ∈ Φ = Φ⊢ oder H2 ∈ Φ = Φ⊢ , dann gilt mit der Einführung der Alternativen
”
(siehe Def. 1.57 iv auf Seite 18) H1 ∨ H2 ) ∈ Φ⊢ = Φ.
iv) ⇒“: Sei (H1 ∧H2 ) ∈ Φ = Φ⊢ , dann gilt mit der Auflösung der Konjunktion (siehe Def. 1.57
”
iv) auf Seite 18) H1 ∈ Φ = Φ⊢ und H2 ∈ Φ = Φ⊢ .
⇐“: Sei H1 ∈ Φ = Φ⊢ und H2 ∈ Φ = Φ⊢ , dann gilt mit der Einführung der Konjunktion
”
(siehe Def. 1.57 v) (H1 ∧ H2 ) ∈ Φ⊢ = Φ.
#
Satz 1.65 ( Satz von Henkin“) Sei Φ ∈ LAL , dann gilt
”
Φ ist konsistent gdw. Φ hat ein Modell.
Beweis:
⇐“: Wenn Φ nicht konsistent ist, dann gibt es eine Formel H ∈ LAL mit H, ¬H ∈ Φ⊢ . Aufgrund
”
des Korrektheitssatzes (vgl. Satz 1.60) gilt auch H, ¬H ∈ Φ|= . Angenommen Φ hätte ein
Modell I, dann gilt I(H) = I(¬H) = 1. Dies ist ein Widerspruch und deshalb hat Φ kein
Modell.
⇒“: Sei Φ konsistent. Nun wird Φ zu einer vollständigen und konsistenten Menge erweitert.
”
Seien H0 , H1 , H2 , . . . alle Formeln aus LAL , dann werden induktiv die konsistenten Mengen
Φn definiert:
(IA) Φ0 =def Φ
22
1
(IS)
LOGIK
{
Φn ∪ {Hn },
falls Φn ∪ {Hn } konsistent
Φn ∪ {¬Hn }, sonst
∪
∪
n≥0 Φn und damit Φ = Φ0 ⊆ Φ1 ⊆ Φ2 ⊆ . . . ⊆
n≥0 Φn = Ψ.
Φn+1 =def
Dann sei Ψ =def
Beh.: Ψ ist vollständig.
Beweis: Die induktive Definition sorgt dafür, dass entweder Hn ∈ Ψ oder ¬Hn ∈ Ψ. Damit
ist die Behauptung gezeigt.
#
Beh.: Ψ ist konsistent.
Beweis: Angenommen Ψ ist nicht konsistent, dann gibt es ein H ∈ LAL mit H, ¬H ∈ Ψ⊢ .
Nach dem Endlichkeitssatz ex. eine endliche Menge Ψ0 ⊆ Ψ mit H, ¬H ∈ Ψ⊢0 . Da Ψ0
endlich ist, gibt es ein n0 ≥ 0 mit Ψ0 ⊆ Φn0 . Also gilt H, ¬H ∈ Ψ⊢0 ⊆ Φ⊢n0 , d.h. Φn0 ist
nicht konsistent. Dies ist ein Widerspruch zur Annahme, dann Φn0 ist nach Konstruktion
konsistent, und damit ist Ψ konsistent. Also ist die Behauptung gezeigt.
#
{
Sei nun
IΨ (xi ) =def
1,
0,
falls xi ∈ Ψ
sonst
Beh.: H ∈ Ψ gdw. IΨ (H) = 1.
Beweis: Die Aussage wird durch Induktion gezeigt:
(IA) Sei H = xi , dann gilt xi ∈ Ψ gdw. IΨ (xi ) = 1 nach der Definition von IΨ .
(IS) Nun sind drei Fälle zu unterscheiden:
Fall H = ¬H ′ : Dann gilt
¬H ′ ∈ Ψ
gdw.
gdw.
gdw.
H ′ ̸∈ Ψ (vgl. Aussage ii) von Lemma 1.64)
IΨ (H ′ ) = 0 (mit Induktionsvoraussetzung)
IΨ (¬H ′ ) = 1.
Fall H = (H1 ∨ H2 ): Dann gilt
(H1 ∨ H2 ) ∈ Ψ
gdw.
gdw.
gdw.
H1 ∈ Ψ oder H2 ∈ Ψ (vgl. Aussage iii) von Lemma 1.64)
IΨ (H1 ) = 1 oder IΨ (H2 ) = 1 (mit Induktionsvoraussetzung)
IΨ (H1 ∨ H2 ) = 1.
Fall H = (H1 ∧ H2 ): Dann gilt
(H1 ∧ H2 ) ∈ Ψ
gdw.
gdw.
gdw.
H1 ∈ Ψ und H2 ∈ Ψ (vgl. iv) von Lemma 1.64)
IΨ (H1 ) = IΨ (H2 ) = 1 (mit Induktionsvoraussetzung)
IΨ (H1 ∧ H2 ) = 1.
Damit ist die Behauptung gezeigt.
#
Es ist offensichtlich, dass IΨ ein Modell von Φ ⊆ Ψ ist, d.h. ist Φ konsistent, so hat Φ auch
ein Modell, womit der Satz von Henkin gezeigt ist.
#
Mit Hilfe des Satzes von Henkin kann nun der Vollständigkeitssatz mit wenig Aufwand gezeigt
werden:
Satz 1.66 (Vollständigkeitssatz) Sei Φ ⊆ LAL , dann gilt Φ|= ⊆ Φ⊢ .
Beweis: Sei H ∈ Φ|= und I eine beliebige Interpretation. Wenn I(Φ) = 1, dann I(H) = 1,
d.h. I(¬H) = 0 und damit I(Φ ∪ {¬H}) = 0. Dies bedeutet aber, dass Φ ∪ {¬H} kein Modell
hat.
Nach dem Satz von Henkin (siehe Satz 1.65) ist Φ ∪ {¬H} nicht konsistent. Mit der Regel des
indirekten Beweises (siehe Def. 1.57 auf Seite 18) gilt dann H ∈ Φ⊢ .
#
Folgerung 1.67 Sei Φ ⊆ LAL , dann gilt Φ⊢ = Φ|= .
1.2 Prädikatenlogik der ersten Stufe (PL1)
23
1.2. Prädikatenlogik der ersten Stufe (PL1)
1.2.1. Syntax und Semantik
Es gibt zwei wesentliche Unterschiede zwischen der Prädikatenlogik und der Aussagenlogik:
Atomare Formeln sind in der
• Aussagenlogik WW-Variablen und in der
• Prädikatenlogik strukturierte Aussagen über konkrete Objekte (z.B. natürliche Zahlen,
Punkte oder Gerade in der Ebene oder Graphen).
Der Aufbau von zusammengesetzten Formeln geschieht in der
• Aussagenlogik nur mit den Konnektoren ¬, ∧, ∨, → und ↔ und in der
• Prädikatenlogik zusätzlich mit den Quantoren ∃x und ∀x, wobei x eine Variable für ein
Objekt (aus einer Grundmenge/Universum) ist.
Beispiel 1.68 (Arithmetik)
• ∀x∀y∀z((x + y) · z = x · z + y · z)
• ∀x∀y((x < y) → ∃z(x + z = y))
• ∀x∃y(x + y = x · y)
• ∀x((x = 0) ∨ ∃(y + 1 = x))
• (x < 7) ∨ ∃y(x = 2 · y)
Nehmen wir einmal an, dass die Formeln Aussagen über natürliche Zahlen machen (oder eine
andere Menge von Objekten). Es treten folgende Elemente in diesen Formeln auf:
• Konstantensymbole 0, 1, 2 und 7, die für Konstanten aus N stehen,
• Variablen x, y und z, die Elemente aus N repräsentieren (Objektvariablen),
• Funktionssymbole + (zweistellig) und · (zweistellig), die einen Wert aus N liefern,
• Relationssymbole = (zweistellig) und < (zweistellig), die Terme zu atomaren Formeln (z.B.
x + y = x · y oder x < y) verbinden und die einen WW besitzen,
• Konnektoren ¬, ∧, ∨, → und ↔, die Teilformeln verbinden und
• Quantoren ∃ und ∀ die Objektvariablen binden“.
”
Beispiel 1.69 (Gruppentheorie) Die Gruppenaxiome lauten
• ∀x∀y∀z((x · y) · z = x · (y · z))
• ∀x((x · e = x) ∧ (e · x = x))
• ∀x((x · x−1 = e) ∧ (x−1 · x = e))
Bemerkung 1.70 Schreibt man bei zweistelligen Funktionen wie + oder · das Funktionssymbol
zwischen die Argumente (statt davor), d.h. in Infixnotation statt in Prefixnotation, dann nennt
man dies operative Schreibweise. Also schreibt man +(x, y) (funktionelle Schreibweise) in operativer Schreibweise als x + y. In diesem Fall nennt man eine solche Funktion auch Operation.
Der Begriff der Relation hängt sehr eng mit dem Begriff des Prädikates zusammen (siehe Abschnitt A.2.2 auf Seite 66). Beide Begriffe werden, trotz kleiner Unterschiede, oft als Synonym
verwendet.
24
1
LOGIK
Nun haben wir alle Grundbestandteile, um die Syntax der Prädikatenlogik der ersten Stufe
einzuführen. Dabei werden wir die Syntax der PL1 in zwei Schritten definieren. Zuerst legen wir
die Struktur der Terme fest. Mit Hilfe der Definition von Termen können wir dann die Formeln
der PL1 definieren.
Definition 1.71 (Syntax der Prädikatenlogik der ersten Stufe) Zuerst legen wir fest, welche Zeichen in Termen und Formeln auftreten dürfen:
Objektvariablen
z
}|
{
• Allgemeine Symbole, die in jeder Formel vorhanden sein können sind Σ =def {xi | i ≥ 1} ∪
{¬, ∧, ∨, →, ↔} ∪ {=, ∃, ∀}
• Die Signatur S enthält spezielle Symbole, die davon abhängen was beschrieben werden soll.
S =def {Konstanten- Funktions- und Relationssymbole}
Zusätzlich legen wir fest, dass ΣS =def Σ ∪ S. Für die Objektvariablen verwenden wir manchmal
auch x, y, z anstatt x1 , x2 , x3 , . . . .
Die Menge der Terme T S (über der Signatur S) ist induktiv definiert als
(IA) Atomare Terme:
• Ist c ein Konstantensymbol aus S, dann c ∈ T S
• Ist xi eine Objektvariable, dann xi ∈ T S
(IS) Zusammengesetzte Terme:
• Ist f ein Funktionssymbol aus S mit Stellenzahl n und t1 , . . . , tn ∈ T S , dann ist auch f (t1 ,
. . . , tn ) ∈ T S .
Bem.: Termen werden Objekte zugeordnet und sie liefern“ wieder Objekte (aus einer Grund”
menge).
Nun können wir die Formeln der der Prädikatenlogik der ersten Stufe (kurz: PL1) induktiv
definieren. Dazu legen wir zunächst fest:
LS =def {H | H ist Formel der Prädikatenlogik der ersten Stufe über der Signatur S}
(IA) Atomare Formeln:
• Seien t1 , t2 ∈ T S , dann ist (t1 = t2 ) ∈ LS .
• Sei R ein Relationensymbol aus S mit Stellenzahl n und t1 , . . . , tn ∈ T S , dann ist R(t1 ,
. . . , tn ) ∈ L S .
(IS) Zusammengesetzte Formeln:
• Sei H ∈ LS , dann auch ¬H ∈ LS .
• Seien H1 , H2 ∈ LS , dann auch (H1 ∧ H2 ), (H1 ∨ H2 ), (H1 → H2 ), (H1 ↔ H2 ) ∈ LS .
• Sei H ∈ LS und xi eine Objektvariable, dann ist ∃xi H ∈ LS und ∀xi H ∈ LS .
Bemerkung 1.72 Neben der Prädikatenlogik der ersten Stufe gibt es auch eine Prädikatenlogik
der zweiten Stufe. Hier werden nicht nur Objektvariablen, sondern auch Mengenvariablen (≜
Variablen, die für Teilmengen der Grundmenge stehen), verwendet.
Bsp.: Sei M eine Mengenvariable, dann gehört die folgende Formel zur Prädikatenlogik der
zweiten Stufe:
∀M ∃x(x ∈ M ∧ ∀y(y ∈ M → (x ≤ y)))
1.2 Prädikatenlogik der ersten Stufe (PL1)
25
Nun legen wir einige grundlegende Begriffe über prädikatenlogische Formeln fest:
Definition 1.73
• In der Formel ∀xH (bzw. ∃xH) heißt H der Wirkungsbereich des Quantors ∀x (bzw. ∃x).
• Die Variable x kommt in H gebunden vor, wenn ∀x oder ∃x in H vorkommt und x im
Wirkungsbereich eines solchen Quantors liegt.
• Die Variable x kommt in H frei vor, wenn x in H an einer Stelle vorkommt, die nicht
zum Wirkungsbereich eines Quantors ∀x bzw. ∃x gehört.
• frei(x) =def {x | x kommt in H frei vor}
• gebunden(x) =def {x | x kommt in H gebunden vor}
• Eine Formel heißt Satz, wenn in ihr keine freien Variablen vorkommen.
• LS0 =def {H ∈ LS | H ist ein Satz}.
Beispiel 1.74
• In (((y + 1) = x) → ∃z(z + 1 = y)) kommen x und y frei und z gebunden vor.
• In ((x = 0) ∨ ∃x(x + x = x + 1)) kommt x frei und gebunden vor.
Wie in der Aussagenlogik haben die Formeln bis jetzt noch keine Bedeutung. Durch die Definition einer Semantik ordnen wir ihnen eine Bedeutung zu. Diese Zuordnung ist vergleichbar mit
der für die Aussagenlogik definierten Zuordnung. Die folgende Übersicht zeigt Gemeinsamkeiten
und Unterschiede auf.
Übersicht:
Aussagenlogik
Gegeben ist die Zuordnung zu
elementaren Formeln (Bedeutung
der elementaren Formeln)
Die Semantik legt die Zuordnung
der Bedeutung für die nichtelementaren Formeln fest.
Einer WW-Variable wird ein WW
zugeordnet
Einer Formel wird ein WW zugeordnet
• Grundmenge A
• Konstantensymbole werden
zu Elementen aus A
Prädikatenlogik
(PL1)
• Objektvariablen wird ein
Elemente aus A zugeordnet
• Einem Term wird ein Element aus A zugeordnet
• Einem n-stelligen Funktionensymbol f wird
f : An → A zugeordnet
• Einer Formel wird ein WW
zugeordnet
• Einem n-stellige Relationensymbol R wird
R ⊆ An zugeordnet
26
1
LOGIK
Nun können wir die Bedeutung (≜ Interpretation) der elementaren Formeln definieren. Dazu
führen wir den Begriff der S-Interpretation und der S-Struktur ein.
Definition 1.75 Sei S eine Signatur, dann
• heißt A = (A, α) S-Struktur, wobei
– A die Grundmenge / Universum ist,
– ein Konstantensymbol c wird abgebildet auf α(c) ∈ A (konkrete Konstante),
– ein n-stelliges Funktionssymbol f wird abgebildet auf α(f ) : An 7→ A (konkrete Funktion) und
– ein n-stelliges Relationensymbol R wird abgebildet auf α(R) ⊆ An (konkrete Relation).
• Das Paar I = (A, β) heißt S-Interpretation, wobei
– A ist eine S-Struktur und
– für jede Objektvariable xi ist β(xi ) ∈ A (konkrete Belegung der Objektvariablen).
Mit Hilfe einer S-Interpretation legen wir nun die Semantik für Terme und Formeln fest
Definition 1.76 (Semantik der PL1) Gegeben sei die S-Interpretation I = (A, β) mit der
S-Struktur A = (A, α).
Zuerst legen wir die Semantik der Terme fest:
(IA)
• I(c) =def α(c) für Konstantensymbole c und
• I(xi ) =def β(xi ) für Objektvariablen xi .
(IS) I(f (t1 , . . . , tn )) =def α(f )(I(t1 ), . . . , I(tn )) für n-stellige Funktionensymbole
Nun können wir die Semantik der Formeln angeben:
(IA)
{
1, falls I(t1 ) = I(t2 )
• I(t1 = t2 ) =def
und
0, sonst
{
1, falls (I(t1 ), . . . , I(tn )) ∈ α(R)
• I(R(t1 , . . . , tn )) =def
für n-stellige Relationssymbo0, sonst
le.
(IS) Für Formeln H, H1 , H2 ∈ LS gilt:
• I(¬H) =def not(I(H))
• I(H1 ∨ H2 ) =def or(I(H1 ), I(H2 ))
• I(H1 ∧ H2 ) =def and(I(H1 ), I(H2 ))
• I(H1 → H2 ) =def imp(I(H1 ), I(H2 ))
• I(H1 ↔ H2 ) =def aeq(I(H1 ), I(H2 ))
• I(∃xH) =def max
{I ′ (H)}
x
I ′ =I
• I(∀xH) =def min
{I ′ (H)}
x
I ′ =I
1.2 Prädikatenlogik der ersten Stufe (PL1)
27
x
Wobei (A1 , β1 ) = (A2 , β2 ) gdw. A1 = A2 und β1 (y) = β2 (y) für x ̸= y (d.h. die Interpretationen
unterscheiden sich nur für die Belegung der Objektvariable x).
Bemerkung 1.77 Für gebundene Variablen spielt β keine Rolle, d.h. insbesondere für Sätze
spielt β keine Rolle. Deshalb entspricht für Sätze eine S-Struktur im Wesentlichen einer SInterpretation.
Beispiel 1.78 Sei die Signatur S = {0, 1, +, <} gegeben, wobei
• 0 Konstantensymbol
• 1 Konstantensymbol
• + zweistelliges Funktionssymbol
• < zweistelliges Relationssymbol
Wir betrachten die Formel H = ∀x((0<x) → ∃y(y+1 = x)). Die S-Interpretation sei dann
I1 = (A1 , β1 ) mit A1 = (N, α1 ), wobei
• α1 (0) = 0 (∈ N)
• α1 (1) = 1 (∈ N)
• α1 (+) = + (Addition in N)
• α1 (<) =< (kleiner-als Relation in N)
• β1 (x) = 9 (spielt keine Rolle, da x nicht frei vorkommt, denn H ∈ LS0 )
• β1 (y) = 11 (spielt keine Rolle, da y nicht frei vorkommt, denn H ∈ LS0 )
Nun gilt:
I1 (H) = min
{I ′ ((0<x) → ∃y(y+1 = x))}
x
I1 =I ′
= min
{imp(I ′ (0<x), I ′ (∃y(y+1 = x)))}
x
I1 =I ′
= min
{imp(I ′ (0) < I ′ (x), max
{I ′′ (y+1 = x)})}
x
y
I1 =I ′
= min
{imp(α1 (0) <
x
I1 =I ′
I ′ =I ′′
′
I (x), max
= min
{imp(0 < I ′ (x),
x
I1 =I ′
y
{I ′′ (y+1) = I ′′ (x)})}
I ′ =I ′′
max {I ′′ (y)
y
I ′ =I ′′
+ I ′′ (1) = I ′′ (x)})}
= min
{imp(0 < I ′ (x), max
{I ′′ (y) + α1 (1) = I ′′ (x)})}
x
y
I1 =I ′
= min
{imp(0 <
x
I1 =I ′
I ′ (x),
I ′ =I ′′
max
{I ′′ (y) + 1 = I ′′ (x)})}
y
I ′ =I ′′
= min
{imp(0 < I ′ (x), max
{I ′′ (y) + 1 = I ′ (x)})}
x
y
I1 =I ′
= min
{imp(0 <
x
I1 =I ′
I ′ =I ′′
′
I (x), max {n
n∈N
+ 1 = I ′ (x)})}
= min {imp(0 < m, max {n + 1 = m})}
m∈N
n∈N
{
0, falls m = 0
= min {imp(0 < m,
)}
1, sonst
m∈N
= min {imp(0, 0), imp(1, 1)} = min {1, 1} = 1.
m∈N | {z } | {z }
m=0
m>0
Die S-Interpretation sei nun I2 = (A2 , β2 ) mit A2 = (R+ , α2 ), wobei
• α2 (0) = 0 (∈ R+ )
28
1
LOGIK
• α2 (1) = 1 (∈ R+ )
• α2 (+) = + (Addition in R+ )
• α2 (<) =< (kleiner-als Relation in R+ )
• β2 (x) = 9 (spielt keine Rolle, da x nicht frei vorkommt (H ∈ LS0 ))
• β2 (y) = 11 (spielt keine Rolle, da y nicht frei vorkommt (H ∈ LS0 ))
Nun gilt:
I2 (H) = . . .
= min {imp(0 < m, max {n + 1 = m})}
m∈R+
n∈R+
{
0, falls 0 ≤ m < 1
= min {imp(0 < m,
)}
+
1, m ≥ 1
m∈R
= min {imp(0, 0), imp(1, 0), imp(1, 1)} = min {1, 0, 1} = 0.
m∈R+ | {z } | {z } | {z }
m=0
0<m<1
m≥1
Als drittes Beispiel sei die S-Interpretation nun I3 = (A3 , β3 ) mit A3 = (N, α3 ), wobei
• α3 (0) = 2 (∈ N)
• α3 (1) = 2 (∈ N)
• α3 (+) = · (Multiplikation in N)
• α3 (<) =| (Teilbarkeitsrelation in N)
• β3 (x) = 11 (spielt keine Rolle, da x nicht frei vorkommt (H ∈ LS0 ))
• β3 (y) = 28 (spielt keine Rolle, da y nicht frei vorkommt (H ∈ LS0 ))
Nun gilt:
I3 (H) = . . .
= min {imp(2 | m, max {n · 2 = m})}
m∈N
n∈N
{
1, falls m gerade
= min {imp(2 | m,
)}
0, sonst
m∈N
= min {imp(1, 1), imp(0, 0) } = min {1, 1} = 1.
m∈N | {z } | {z }
m gerade
m ungerade
Nachdem nun die Semantik definiert ist, können wir ganz analog zur Aussagenlogik (vgl. Definition 1.12 auf Seite 5) folgende Begriffe einführen:
Definition 1.79
• Zwei prädikatenlogische Formeln H1 , H2 ∈ LS heißen äquivalent, wenn für alle S-Interpretationen I gilt: I(H1 ) = I(H2 ) (kurz: H1 ≡ H2 )
• Gibt es eine S-Interpretation I für H ∈ LS , so dass I(H) = 1, dann heißt H erfüllbar und
I ist ein Modell von H (kurz: I |= H). Wir nennen ein Modell einer prädikatenlogischen
Formel unendlich, wenn die Grundmenge des Modells unendlich ist.
• Gilt für alle S-Interpretationen I und ein H ∈ LS , dass I(H) = 1, so nennt man H
allgemeingültig, wahr oder eine Tautologie.
1.2 Prädikatenlogik der ersten Stufe (PL1)
29
1.2.2. Einige grundlegende Eigenschaften von Formeln der PL1
Bemerkung 1.80 Alle Äquivalenzen, die wir für aussagenlogische Formeln in Satz 1.14 auf
Seite 6 gezeigt haben, gelten auch für prädikatenlogische Formeln. Deshalb gilt für H1 , H2 ∈ LS
auch ¬(H1 ∧ H2 ) ≡ ¬H1 ∨ ¬H2 (Gesetz von de-Morgan).
Satz 1.81 Seien H1 , H2 ∈ LS , dann gilt
i)
¬∀xH ≡ ∃x¬H
¬∃xH ≡ ∀x¬H
ii) Falls x in H2 nicht frei vorkommt, gilt:
((∀xH1 ) ∧ H2 )
((∀xH1 ) ∨ H2 )
((∃xH1 ) ∧ H2 )
((∃xH1 ) ∨ H2 )
≡
≡
≡
≡
∀x(H1 ∧ H2 )
∀x(H1 ∨ H2 )
∃x(H1 ∧ H2 )
∃x(H1 ∨ H2 )
iii)
(∀xH1 ) ∧ (∀xH2 ) ≡ ∀x(H1 ∧ H2 )
(∃xH1 ) ∨ (∃xH2 ) ≡ ∃x(H1 ∨ H2 )
iv)
∀x∀yH ≡ ∀y∀xH
∃x∃yH ≡ ∃y∃xH
Beweis: Wir testen exemplarisch ((∀xH1 ) ∧ H2 ) ≡ ∀x(H1 ∧ H2 ). Sei I nun eine beliebige S-Interpretation, dann
I(∀xH1 ∧ H2 ) gdw. and(I(∀xH1 ), I(H2 )) = 1
gdw. and(min
(I ′ (H1 )), I(H2 )) = 1
x
I =I ′
gdw. and(min
(I ′ (H1 )), I ′ (H2 )) = 1, da x in H2 nicht frei vorkommt
x
I =I ′
gdw. min
(I ′ (H1 )) = 1 und I ′ (H2 ) = 1
x
I =I ′
gdw. min
(I ′ (H1 ), I ′ (H2 )) = 1
x
I =I ′
gdw. min
(and(I ′ (H1 ), I ′ (H2 ))) = 1
x
I =I ′
gdw. min
(I ′ (H1 ∧ H2 )) = 1
x
I =I ′
gdw. I(∀x(H1 ∧ H2 )) = 1
D.h. ∀xH1 ∧ H2 ≡ ∀x(H1 ∧ H2 ), da x in H2 nicht frei vorkommt. Die anderen Äquivalenzen
können mit ähnlichen Mitteln und Überlegungen gezeigt werden.
#
Mit Satz 1.81 können wir nun prädikatenlogische Formeln umformen:
Beispiel 1.82
H=
≡
≡
≡
≡
≡
≡
≡
¬(∃xP (x, y) ∨ ∀zQ(z)) ∧ ∃wP (f (a, w))
¬∃xP (x, y) ∧ ¬∀zQ(z) ∧ ∃wP (f (a, w))
∀x¬P (x, y) ∧ ∃z¬Q(z) ∧ ∃wP (f (a, w))
(∃wP (f (a, w)) ∧ (∀x¬P (x, y) ∧ ∃z¬Q(z)))
∃w(P (f (a, w)) ∧ (∀x(¬P (x, y) ∧ ∃z¬Q(z))))
∃w(∀x(∃z¬Q(z) ∧ ¬P (x, y)) ∧ P (f (a, w)))
∃w(∀x∃z(¬Q(z) ∧ ¬P (x, y)) ∧ P (f (a, w)))
∃w∀x∃z(¬Q(z) ∧ ¬P (x, y) ∧ P (f (a, w)))
via de Morgan
via Regeln vom Typ i)
Kommutativität
wegen Typ ii) (2 mal)
Kommutativität
via Regeln vom Typ ii)
via Regeln vom Typ ii) (zwei mal)
30
1
LOGIK
1.2.3. Die Pränexnormalform
Definition 1.83 Eine Formel H ∈ LS heißt pränex oder in Pränexnormalform (kurz: PNF),
falls sie der Form
H = Q1 y1 Q2 y2 . . . Qn yn H ′ , n ≥ 1
ist, wobei die Qi ∈ {∃, ∀} und die yi Variablen sind. Weiterhin kommt in H ′ kein Quantor vor.
Definition 1.84 Eine Formel H ∈ LS heißt bereinigt, falls keine Variable in H frei und gebunden vorkommt und alle hinter Quantoren vorkommenden Variablen verschieden sind.
Beispiel 1.85 Die Formel ∀u∃vP (u, f (v))∧∀y(Q(x, y)∨R(x)) ist bereinigt, wogegen die Formel
∀x∃yP (x, f (y)) ∧ ∀y(Q(x, y) ∨ R(x)) nicht bereinigt ist.
Definition 1.86 Sei H ∈ LS , x eine Objektvariable und t ein Term aus T S . Mit H[x/t] bezeichnen wir die Formel, die entsteht, wenn jedes freie Auftreten von x durch den Term t ersetzt
wird. Eine solche Substitution (≜ Ersetzung) schreiben wir auch mit [x/t].
Mit diesen Definitionen können wir nun den Hauptsatz über die Pränexnormalform formulieren:
Satz 1.87 Für jede Formel H ∈ LS gibt es eine äquivalente, bereinigte Formel H ′ ∈ LS in
Pränexnormalform.
Beweis: Wir führen einen Induktionsbeweis über den Formelaufbau durch:
(IA) Sei H eine atomare Formel, d.h. entweder (t1 = t2 ) mit t1 , t2 ∈ T S oder R(t1 , . . . , tn ),
wobei R ∈ S und t1 , . . . , tn ∈ T S . Dann ist H aber schon bereinigt und pränex, d.h. wir wählen
H ′ = H.
(IV) Für jede Formel H ∈ LS gibt es eine äquivalente, bereinigte Formel H ′ ∈ LS in Pränexnormalform.
(IS)
• Sei H = ¬H1 , dann existiert nach Induktionsvoraussetzung für H1 eine bereinigte äquivalente Formel H1′ = Q1 y1 Q2 y2 . . . Qn yn H1′′ in Pränexnormalform. Weiterhin gilt H ≡
¬Q1 y1 Q2 y2 . . . Qn yn H1′′ ≡ Q1 y1 Q2 y2 . . . Qn yn ¬H1′′ , wobei Qi ∈ {∃, ∀} und
{
∃, falls Qi = ∀
Qi =
∀, sonst
Dann ist H ′ = Q1 y1 Q2 y2 . . . Qn yn ¬H1′′ die gesuchte bereinigte Formel in Pränexnormalform.
• Sei H = (H1 ∧ H2 ) (bzw. H = (H1 ∨ H2 )), dann gibt es nach Induktionsvoraussetzung
äquivalente bereinigte Formeln H1′ und H2′ in Pränexnormalform. Durch Umbenennung
der gebundenen Variablen können wir gebunden(H1′ ) ∩ gebunden(H2′ ) = ∅ erreichen. Dann
habe H1′ die Form Q1 y1 Q2 y2 . . . Qk yk H1′′ und H2′ habe die Form Q′1 z1 Q′2 z2 . . . Q′l zl H2′′ mit
Qi , Q′i ∈ {∀, ∃}. Damit ergibt sich mit den Regeln vom Typ ii) aus Satz 1.81 die zu H
äquivalente Formel Q1 y1 Q2 y2 . . . Qk yk Q′1 z1 Q′2 z2 . . . Q′l zl (H1′′ ∧H2′′ ) (bzw. Q1 y1 Q2 y2 . . . Qk yk
Q′1 z1 Q′2 z2 . . . Q′l zl (H1′′ ∨ H2′′ )) in Pränexnormalform.
• Sei H = QxH1 mit Q ∈ {∀, ∃}. Dann existiert nach Induktionsvoraussetzung eine zu H1
äquivalente bereinigte Formel H1′ = Q1 y1 . . . Qn yn H1′′ in Pränexnormalform. Durch Umbenennen der gebundenen Variablen können wir erreichen, dass x ̸∈ {y1 , . . . , yn }. Dann ist H
äquivalent zu QxQ1 y1 . . . Qk yk H1′′ , wobei diese Formel bereinigt und in Pränexnormalform
ist.
#
31
Bemerkung 1.88
• Hinter dem obigen Induktionsbeweis verbirgt sich ein (rekursiver) Algorithmus, der aus
einer beliebigen PL1-Formel eine Formel in Pränexnormalform berechnet.
• Als Abkürzung für die bereinigte Pränexnormalform verwenden wir BPF.
Bemerkung 1.89
Sei H in BPF und zusätzlich H = ∀x1 ∀x2 . . . ∀xk F , dann nennt man H eine Skolemformel
|
{z
}
Nur Allquantoren
oder in Skolemform (benannt nach dem Mathematiker Thoralf Skolem4 ). Mit folgendem
Algorithmus kann man jede Formel in BPF in eine Skolemformel umformen:
Data : PL1-Formel H in BPF
Result : Skolemformel H ′
while (H enthält einen Existenzquantor) do
H hat die Form ∀y1 ∀y2 . . . ∀yn ∃zH ′ , wobei H ′ in BPF;
Sei f ein neues n-stelliges Funktionensymbol;
H := ∀y1 ∀y2 . . . ∀yn H[z/f (y1 , . . . , yn )];
end
return H;
Algorithmus 3 : Skolem
Aus ∃x∀y∃z∀u∃vP (x, y, z, u, v) wird ∀y∃z∀u∃vP (a, y, z, u, v) (a ist 0-stellig), dann ∀y∀u∃vP (a,
y, f (y), u, v) (f ist einstellig) und schließlich ∀y∀uP (a, y, f (y), u, f (y, u)) (g zweistellig). Das
Ergebnis von Algorithmus 3 für die Eingabe H wollen wir mit Skolem(H) bezeichnen.
Dann lässt sich der folgende Satz via Induktion beweisen:
Satz 1.90 Für jede Formel in BPF gilt: H erfüllbar gdw. Skolem(H) erfüllbar.
Achtung: Es muss nicht gelten: H ≡ Skolem(H).
Beim Umgang mit prädikatenlogischen Formeln haben wir das Problem, dass die Grundmenge
einer S-Struktur beliebig gewählt sein kann. Deshalb scheint es keine systematische Technik zu
geben, mit der man alle potentiellen S-Strukturen und S-Interpretationen aufzählen kann, um
dann zu prüfen, ob sie ein Modell einer Formel sind.
Abhilfe: Man kann die Suche nach potentiellen Modellen auf eine kanonische Art durchführen.
Dazu bedient man sich des Herbrand-Universums, das mit Hilfe von Skolemformeln definiert ist.
Alle diese Techniken können das Erfüllbarkeitsproblem für die PL1 nicht lösen, sondern liefern
nur einen so genannten Semi-Entscheidungsalgorithmus.
2. Berechenbarkeit
2.1. Die Unentscheidbarkeit der PL1
In diesem Abschnitt wollen wir zeigen, dass es keinen Algorithmus zur Lösung der folgenden
Probleme gibt:
Problem:
Eingabe:
Frage:
PL1-TAUT
Eine Formel H ∈ LS
Ist H allgemeingültig?
und
4
*1887 in Sandsvaer, Buskerud (Norwegen) - †1963 in Oslo (Norwegen)
32
2 BERECHENBARKEIT
Problem:
Eingabe:
Frage:
PL1-SAT
Eine Formel H ∈ LS
Ist H erfüllbar?
PL1-SAT kann als Menge betrachtet werden, und wir schreiben z.B. H ∈ PL1-SAT gdw. H
erfüllbar ist. In der Aussagenlogik konnten wir einfach endlich viele Interpretationen testen
(WW-Tabelle) um das Erfüllbarkeitsproblem zu lösen. Geht das auch in der PL1?
Beobachtung 2.1 Es gibt erfüllbare Formeln der PL1, die aber nur unendliche Modelle besitzen
(d.h. die Grundmenge ist unendlich). Sei
H = ∀xP (x, f (x))
∧∀y¬P (y, y)
∧∀u∀v∀w((P (u, v) ∧ P (v, w)) → P (u, w))
mit der Signatur S = {P, f }. Die folgende S-Interpretation I ist ein (unendliches) Modell von
H:
• A = (N, α)
• α(P ) =<N und α(f ) = n + 1 ( Nachfolger“)
”
• I = (A, β), β beliebig
Nehmen wir einmal an, es gäbe ein endliches Modell I ′ mit I ′ = (A′ , β ′ ) und A′ = (A′ , α′ ).
Nun sei m ein beliebiges Element aus A′ . Wir betrachten die Folge m0 , m1 , m2 , · · · ∈ A′ mit
m0 = m ∈ A′ und mi+1 = α′ (f )(mi ). Da A′ endlich ist, muss es i, j ∈ N geben mit i < j und
mi = mj (Schubfachschluss, vgl. Abschnitt B.4 auf Seite 73). Wegen der ersten Teilformel von H
gilt (m0 , m1 ) ∈ α′ (P ), (m1 , m2 ) ∈ α′ (P ), . . . . Die dritte Teilformel sagt, dass α′ (P ) transitiv ist,
also (mi , mj ) ∈ α′ (P ). Da aber mi = mj , haben wir ein Element n gefunden mit (n, n) ∈ α′ (P ).
Dies steht im Widerspruch zur zweiten Teilformel (P ist nicht reflexiv).
Damit haben wir noch nicht gezeigt, dass es keinen Algorithmus für PL1-SAT gibt, sondern
nur, dass wir nicht auf eine einfache Wahrheitswertetafelmethode hoffen dürfen!
Nun können wir eine zentrale Definition für diesen Abschnitt formulieren:
Definition 2.2 Ein Problem dessen Ausgabe ja“ oder nein“ ist, nennt man Entscheidungs”
”
problem. Wir sagen ein Entscheidungsproblem ist entscheidbar oder rekursiv, wenn es ein CProgramm gibt, das nach endlichen vielen Schritten eine Ausgabe liefert, die aussagt, ob die
Eingabe die geforderte Eigenschaft hat oder nicht.
Beispiel 2.3 Wir wissen schon, dass die Probleme SAT, 3 -SAT, TAUT und 3 -TAUT entscheidbar sind.
Nun wollen wir folgenden Satz zeigen:
Das Problem PL1-TAUT ist nicht entscheidbar.
Dies bedeutet, dass kein C-Programm existiert, das dieses Problem löst!
Für den Beweis, der ja unendlich viele Algorithmen untersuchen muss, benutzen wir eine sehr
bekannte Technik. Diese Beweismethode ist unter dem Namen Reduktion bekannt (siehe auch
Definition 2.20 auf Seite 43). Als Ausgangspunkt für unseren Beweis verwenden wir ein klassisches Problem der Berechenbarkeitstheorie:
2.1 Die Unentscheidbarkeit der PL1
33
1
10
011
K=
101
00
,
11
,
Dominosteine
Lösung:
1
011
10
011
101
11
00
11
Abbildung 1: Beispiel für eine Eingabe des PCPs
Definition 2.4 (Postsches Korrespondenzproblem (kurz: PCP))
Problem:
Eingabe:
Frage:
PCP
Eine endliche Menge von Wortpaaren (x1 , y1 ), (x2 , y2 ), . . . , (xk , yk ), wobei gilt
xi , yi ∈ {0, 1}+ und 1 ≤ i ≤ k.
Gibt es eine Folge von Indizes i1 , . . . , in ∈ {1, . . . , k}, wobei n ≥ 1, so dass
xi1 xi2 . . . xin = yi1 yi2 . . . yin ?
Beispiel 2.5 Das Korrespondenzproblem K = {(1, 101), (10, 00), (011, 11)}, also
x1 = 1,
x2 = 10, x3 = 011
y1 = 101, y2 = 00, y3 = 11,
besitzt die Lösung (1, 3, 2, 3), da x1 x3 x2 x3 = 1|011|10|011 = 101|11|00|11 = y1 y3 y2 y3 . Anschaulich können wir uns das PCP als eine Art Dominospiel vorstellen, wie Abbildung 1 zeigt. In
diesem konkreten Beispiel gilt also K ∈ PCP.
Wir benutzen den folgenden sehr bekannten Satz aus der Berechenbarkeitstheorie:
Satz 2.6 ([Pos46]) PCP ist nicht entscheidbar.
Unser Plan, um zu zeigen, dass PL1-TAUT unentscheidbar ist, funktioniert nun wie folgt:
Annahme: PL1-TAUT ist entscheidbar, dann zeigen wir, dass auch PCP entscheidbar ist. Dies
ist aber ein Widerspruch zu Satz 2.6, was zeigt, dass unsere Annahme falsch war. Der folgende
Satz wurde von dem Mathematiker Alonzo Church5 erstmalig formuliert.
Satz 2.7 (Church) Das Problem PL1-TAUT ist unentscheidbar.
Beweis: Unsere Strategie (≜ Reduktionsbeweis) arbeitet wie folgt: Wir geben einen Algorithmus
für eine Funktion g an, so dass gilt:
K ∈ PCP gdw. g(K) ∈ PL1-TAUT
5
*1903 in Washington (USA) - †1995 in Hudson (USA)
34
2 BERECHENBARKEIT
Gibt es also einen Algorithmus für PL1-TAUT, dann gibt es auch einen für PCP, denn wir
müssen ja nur fragen, ob g(K) ∈ PL1-TAUT (wobei wir ja wissen, wie man g(K) berechnet),
um zu entscheiden, ob K ∈ PCP gilt. Dies ist aber ein Widerspruch zu Satz 2.6 und damit
haben wir gezeigt, dass PL1-TAUT nicht entscheidbar sein kann.
Im folgenden geben wir (informell) einen Algorithmus an, mit dem wir aus einer Eingabe für das
PCP eine Formel gewinnen können, die als Eingabe für PL1-TAUT dient. Dieser Algorithmus
berechnet also die Funktion g. Die Formel g(K) benutzt zwei Funktionssymbole f0 und f1 ,
das Konstantensymbol a und ein zweistelliges Prädikatensymbol P, d.h die Signatur ist S =
{f0 , f1 , a, P}.
Die Verkettung von Funktion (bzw. Funktionssymbolen) fj1 (fj2 (. . . fjl (x) . . . )), wobei ji ∈ {0, 1},
kürzen wir mit fjl jl−1 ...j2 j1 (x) ab.
Bsp.: f1011 (a) = f1 (f1 (f0 (f1 (a)))),
l=4
Unsere Formel H = g(K) hat die Struktur H = ((H1 ∧ H2 ) → H3 ), wobei
• H1 =def
k
∧
P(fxi (a), fyi (a))
i=1
• H2 =def ∀u∀v(P(u, v) →
k
∧
P(fxi (u), fyi (v)))
i=1
• H3 =def ∃zP(z, z)
Bem.:
• k ist die Anzahl der Paare im Korrespondenzproblem K.
• Nachdenken ergibt: Es existiert ein (einfacher) Algorithmus, der g berechnet.
Nun müssen wir noch zeigen: K ∈ PCP gdw. g(K) ∈ PL1-TAUT
⇐“ Wir zeigen: Ist g(K) ∈ PL1-TAUT, dann ist K ∈ PCP.
”
| {z }
=H
Da H eine Tautologie ist, ist jede S-Interpretation ein Modell von H. Also ist insbesondere
die folgende S-Interpretation I ein Modell von H:
I = (A, β), A = (A, α) (wobei β keine Rolle spielt, da H ein Satz ist) und
• A ∈ {0, 1}∗ Menge der Strings aus 0en und 1en“
”
• α(a) = ϵ Das leere Wort, das aus keinem Buchstaben besteht“
”
• α(f0 ) = f0 , wobei f0 (x) = x0 Hinten eine 0 anhängen (Konkatenation)“
”
• α(f1 ) = f1 , wobei f1 (x) = x1 Hinten eine 1 anhängen (Konkatenation)“
”
• α(P) = P , wobei P = {(u, v) | u, v ∈ {0, 1}∗ \{ϵ} und es existiert eine Folge i1 , . . . ,
it von Indizes mit u = xi1 xi2 . . . xit und v = yi1 yi2 . . . yit }.
Bemerkung:
• a, f0 , f1 und P sind Symbole aus der Syntax, wogegen f0 , f1 und P mit I interpretierte
semantische Objekte sind.
• Es gilt für ein Wortpaar (u, v) ∈ P , falls u mit der gleichen Indexfolge aus den xi
aufgebaut wird, wie v aus den yi . Insbesondere ist (u, u) ∈ P , dann ist u eine Lösung
des Korrespondenzproblems.
Wir wissen I |= H und man kann sich überlegen (Übung):
• I |= H1 und
2.2 Berechenbarkeit und die Churchsche These
35
• I |= H2 .
Da H = ((H1 ∧ H2 ) → H3 ) muss I |= H3 sein. Aber wenn I |= H3 ist, dann existiert
ein Wort, das mit der gleichen Indexfolge aus den xi und yi aufgebaut wird, d.h. das
Korrespondenzproblem hat eine Lösung und damit K ∈ PCP.
⇒“ Wir zeigen: Ist K ∈ PCP, dann gilt g(K) ∈ PL1-TAUT. Nun nehmen wir an, dass das
”
| {z }
=H
Korrespondenzproblem K die Lösung i1 , . . . , in besitzt, d.h. xi1 xi2 . . . xin = yi1 yi2 . . . yin
und wir müssen zeigen, dass g(K) ∈ PL1-TAUT. Sei I eine S-Interpretation I = (A, β)
und A = (A, α), wobei β keine Rolle spielt, weil H ein Satz ist. Wir müssen zeigen, dass
I |= H ist.
Fall 1: I ̸|= H1 oder I ̸|= H2 , dann ist I ̸|= (H1 ∧ H2 ) und damit gilt aufgrund der
Implikationsstruktur sofort I |= H.
Fall 2: I |= H1 und I |= H2 , also I |= (H1 ∧ H2 ). Weiterhin benutzen wir aus Bequemlichkeit die folgenden Abkürzungen: P =def α(P), f0 =def α(f0 ), f1 =def α(f1 ),
fx =def α(fx ) sowie a =def α(a). Aus technischen Gründen definieren wir induktiv die
folgende Abbildung:
(IA) µ(ϵ) =def a
(IS) µ(x0) =def f0 (µ(x)) und µ(x1) =def f1 (µ(x))
Also: µ(x) = fx (a), da die Abbildung die Buchstaben rückwärts anordnet. Weiterhin
sei c = c1 . . . cl und d = d1 . . . dl′ , dann gilt
fc (fd (a)) =
=
=
=
=
fc1 ...cl (fd1 ...dl′ (a))
fc1 ...cl (fdl′ (. . . fd1 (a)))
fcl (. . . fc1 (fdl′ (. . . fd1 (a))))
fd1 ...dl c1 ...cl (a)
fdc (a) = µ(dc)
Bsp.: µ(01101) = f1 (f0 (f1 (f1 (f0 (a)))))
Beo.:
• Wegen I |= H1 gilt für 1 ≤ i ≤ k (µ(xi ), µ(yi )) ∈ P (∗)
• Wegen I |= H2 gilt für 1 ≤ i ≤ k, wenn (µ(u), µ(v)) ∈ P , dann (µ(uxi ), µ(vyi )) ∈
P (∗∗)
Damit gilt (µ(xi1 ), µ(yi1 )) ∈ P (wegen ∗), (µ(xi1 xi2 ), µ(yi1 yi2 )) ∈ P (wegen ∗∗)
und induktiv (µ(xi1 xi2 . . . xin ), µ(yi1 yi2 . . . yin )) ∈ P , d.h. für u = µ(xi1 xi2 . . . xin ) =
µ(yi1 yi2 . . . yin ) gilt (u, u) ∈ P . Deshalb existiert ein u mit (u, u) ∈ P , da K ∈ PCP.
Also I |= ∃zP (z, z) und somit auch I |= H.
#
| {z }
H3
Weiterhin ergibt sich, dass PL1-TAUT auf PL1-SAT =def {H ∈ LS | H unerfüllbar} reduziert
werden kann (via g(H) = ¬H). D.h. PL1-SAT ist nicht entscheidbar und damit auch PL1-SAT
(Übung).
2.2. Berechenbarkeit und die Churchsche These
Im Abschnitt 2.1 haben wir gesehen, dass es kein C-Programm geben kann, mit dem die Probleme
PL1-TAUT und PL1-SAT gelöst werden können. Deshalb stellt sich die Frage, ob es vielleicht
eine Art von Computern“ (≜ Berechnungsmodell) gibt, mit deren Hilfe wir das Problem lösen
”
können. Wir werden später sehen, dass man davon ausgehen kann, dass dies nicht der Fall ist.
36
2 BERECHENBARKEIT
2.2.1. Turingmaschinen und Turingberechenbarkeit
Die Turingmaschine (kurz: TM) wurde 1936 von dem britischen Mathematiker Alan M. Turing6 als Modell des menschlichen Rechnens“ eingeführt. Dabei ist eine TM wie folgt definiert:
”
Definition 2.8 (k-Band Turingmaschine) Eine k-Band Turingmaschine besteht aus folgenden Teilen (siehe Abbildung 2):
i) k ≥ 1 beidseitig unendlich lange Bänder, die in Zellen eingeteilt sind. Jede Zelle enthält ein
Symbol (auch Buchstabe genannt) aus einer endlichen Menge Σ. Die endliche Menge der
Symbole nennt man auch Bandalphabet. Das besondere Zeichen □ ∈ Σ sagt, dass in diese
Zelle nichts steht“ und wird Blanksymbol genannt.
”
ii) Jedes Band hat einen Kopf, der sich von Zelle zu Zelle bewegen und dabei den Inhalt der
aktuellen Zelle ändern kann.
iii) Eine Steuereinheit, die sich in einem der endlich vielen Zuständen befindet, Informationen
über den Bandinhalt bekommt und Aktivitäten steuert.
iv) Zwei besondere Zustände: Den Startzustand z0 in dem die Maschine ihre Berechnung beginnt und den Endzustand z1 in dem die Maschine ihre Berechnung beendet und anhält.
Dabei arbeitet eine TM taktweise wie folgt:
Aus dem
• aktuellen Zustand und
• den von den k Köpfen gelesenen k Buchstaben
bestimmt sie gleichzeitig
• einen neuen Zustand,
• verändert evtl. die k Bandsymbole auf dem die Köpfe stehen und
• verschiebt die Köpfe um maximal ein Feld
Diese Vorgehensweise kann man mit Hilfe der Übergangsfunktion δ formal darstellen:
δ : Z × Σk → Z × Σk × {L, N, R}k
wobei Z die endliche Menge der Zustände, Σ das Bandalphabet und L, N , R die Symbole für die
Links-, Nicht- oder Rechtsbewegung eines Kopfes sind. D.h. δ(z, a1 , . . . , ak ) = (z ′ , a′1 , . . . , a′k , σ1 ,
. . . , σk ) bedeutet, dass sich eine TM im Zustand z befindet und mit den k Köpfen die Symbole a1 ,
. . . , ak liest. Danach geht diese TM in den Zustand z ′ über, schreibt a′1 , . . . , a′k auf das jeweilige
Band und bewegt Kopf 1 nach σ1 , Kopf 2 nach σ2 , . . . ,Kopf k nach σk . Kurz schreiben wir za1 ,
. . . , ak → z ′ a′1 , . . . , a′k σ1 , . . . , σk .
Eine Turingmaschine M wird also durch das 5-Tupel M = (Σ, Z, δ, zo , z1 ) notiert, wobei:
• Σ das Bandalphabet,
• Z die endliche Zustandsmenge,
• δ die Übergangsfunktion,
• z0 der Startzustand und
6
*1912 in London (England) - †1954 in Wilmslow (England)
2.2 Berechenbarkeit und die Churchsche These
37
Steuereinheit
Kopf 1
a1 a2 a3
an
Band 1
Kopf 2
Band 2
Kopf 3
Band 3
Kopf k
Band k
Leersymbol
Abbildung 2: Die Bestandteile einer Turingmaschine
• z1 der Endzustand ist.
Weiterhin legen wir fest: Zu Beginn befindet sich die Eingabe auf Band 1 und der Kopf 1 befindet
sich ganz links auf der Eingabe. Alle anderen Bänder sind leer. Dies nennt man die Startsituation
einer TM. Zum Schluss befindet sich nur die Ausgabe auf Band 1, der Kopf 1 befindet sich ganz
links auf der Ausgabe und alle anderen Bänder sind leer. Dies nennt man Stopsituation einer
TM.
Beispiel 2.9 Wir entwickeln eine Turingmaschine, die zu einer Zahl in Binärdarstellung den
Wert +1 addiert. Unsere 1-Band TM startet in der folgenden Situation:
1
0
1
1
0
1
1
1
0
Kopf
z0
addiert 1 und endet in folgendem Zustand:
1
z1
0
1
Kopf
Dabei ist k = 1, das Bandalphabet Σ = {□, 0, 1}, die Zustandsmenge Z = {z0 , . . . , z3 } und die
Übergangsfunktion δ (in verkürzter Schreibweise):
38
2 BERECHENBARKEIT
z0
z0
z0
1
0
□
→
→
→
z0
z0
z3
1
0
□
R
R
L
z2
z2
z2
0 → z2 0
1 → z2 1
□ → z1 □
kein Übertrag
L
L
R
z3
z3
z3
0 →
1 →
□ →
Übertrag
z2 1 L
z3 0 L
z1 □ N
beachten
Mit Hilfe von Turingmaschinen können wir eine mathematische Präzisierung des Algorithmenund Berechenbarkeitsbegriffs geben:
• Ein Algorithmus ist das, was wir mit einem TM-Programm aufschreiben können.
• Eine Funktion f : Nn → N heißt berechenbar, wenn sie mit Hilfe einer TM berechnet
werden kann.
Dazu definieren wir:
Definition 2.10 (Turingberechenbarkeit) Sei n ≥ 0 eine natürliche Zahl und f : Nn → N
eine Funktion. f heißt von einer TM M berechnet, wenn für alle Eingaben x1 , . . . , xn ∈ N gilt:

Wert der Binär- falls M in der Startsituation startet und




 zahl auf Band 1, in der Stopsituation stoppt, wobei
bin(x1 )□bin(x2 )□ · · · □bin(xn ) in der Startf (x1 , . . . , xn ) =


situation auf Band 1.



nicht definiert,
sonst
Mit bin(x) bezeichnen wir die Binärdarstellung einer Zahl x. Eine Funktion f n : Nn → N ist
Turing-berechenbar, falls es eine TM M gibt, die f berechnet. Mit T M bezeichnen wir die
Menge aller TM-berechenbaren Funktionen.
2.2.2. RAMs und RAM-Berechenbarkeit
Eine Random-Access-Maschine (kurz: RAM ) ist ein mathematisches Modell für die heute existierenden realen Rechner. Eine RAM besteht aus Steuereinheit, unendlich vielen Registern
R0, R1, R2, . . . und dem Befehlsregister BR (siehe Abbildung 3).
Jedes Register Ri enthält eine natürliche Zahl, die mit ⟨Ri⟩ notiert wird, d.h. ⟨Ri⟩ bezeichnet
den Inhalt des Registers Ri. Die Steuereinheit verfügt über ein Programm, das aus einer Liste
von nummerierten Befehlen besteht. Die Liste der erlaubten Befehle findet sich in Abbildung 4.
Die Befehle werden taktweise abgearbeitet, wobei in jedem Takt der Befehl mit der Nummer
⟨BR⟩ bearbeitet wird.
Welche Unterschiede bestehen zu praktischen Rechnern?
• Reale Rechner haben nur endlich viele Register / Speicherzellen mit einer festen Anzahl
von Bits (≜ Registerbreite).
• Bei von-Neumann Rechnern“ ist das Programm in den Registern (≜ Hauptspeicher) ab”
gelegt.
Diese Unterschiede sind für unsere Zwecke akzeptabel, denn wir wollen ja die prinzipielle Leistungsfähigkeit von RAMs und verbreiteten Rechenanlagen untersuchen. Nun können wir die
RAM-Berechenbarkeit definieren:
Definition 2.11 (RAM-Berechenbarkeit) Für eine beliebige RAM legen wir fest:
• Die n Eingaben einer RAM werden in den Registern R0, R1, . . . , Rn − 1 abgelegt.
• Alle anderen Registern haben zu Beginn den Wert 0.
2.2 Berechenbarkeit und die Churchsche These
BR
39
R0
R1
R2
Steuereinheit
Abbildung 3: Die Bestandteile einer Random-Access Maschine
Befehl
Transportbefehle
Ri ← Rj
Ri ← RRj
RRi ← Rj
Arithmetische Befehle
Ri ← k
Ri ← Rj + Rk
Ri ← Rj - Rk
Sprungbefehle
GOTO m
IF Ri = 0 GOTO m
IF Ri > 0 GOTO m
Wirkung
⟨Ri⟩ := ⟨Rj⟩
⟨Ri⟩ := ⟨R⟨Rj⟩⟩
⟨R⟨Ri⟩⟩ := ⟨Rj⟩
⟨BR⟩ := ⟨BR⟩ + 1
⟨BR⟩ := ⟨BR⟩ + 1
⟨BR⟩ := ⟨BR⟩ + 1
⟨Ri⟩ := k
⟨Ri⟩ := ⟨Rj⟩ + ⟨Rk⟩
.
⟨Ri⟩ := ⟨Rj⟩ − ⟨Rk⟩
⟨BR⟩ := ⟨BR⟩ + 1
⟨BR⟩ := ⟨BR⟩ + 1
⟨BR⟩ := ⟨BR⟩ + 1
⟨BR⟩ := m falls ⟨Ri⟩ = 0
⟨BR⟩ := m falls ⟨Ri⟩ > 0
⟨BR⟩ := m
⟨BR⟩ := ⟨BR⟩ + 1 sonst
⟨BR⟩ := ⟨BR⟩ + 1 sonst
Da eine RAM nur mit natürlichen Zahlen umgehen kann, müssen wir beachten, dass eine Subtraktion auch negative Zahlen liefern kann. Wir korrigieren dieses Problem durch die modifizierte
.
Subtraktion (bezeichnet mit −), die durch
{
.
x − y, falls x > y
x − y =def
0, sonst
definiert wird.
Abbildung 4: Liste aller gültigen RAM-Befehle
40
2 BERECHENBARKEIT
• Die Ausgabe (wenn die RAM angehalten hat) findet sich in Register R0.
• Zu Beginn ist ⟨BR⟩ = 0.
Sei n ≥ 0 eine natürliche Zahl und f : Nn → N eine Funktion. f heißt von der RAM M
berechnet, wenn für alle Eingaben x1 , . . . , xn gilt:

der letzte Inhalt von Register R0, falls M startet mit




⟨BR⟩ = 0,




⟨R

i ⟩ = xi+1 (Eingaben)



für 0 ≤ i ≤ n − 1,

⟨Ri ⟩ = 0 für i ≥ n
f (x1 , . . . , xn ) =


und nach endlich vielen





Schritten hält.






nicht definiert,
sonst
Wieder können wir festlegen:
• Ein Algorithmus ist das, was wir als RAM-Programm aufschreiben können.
• Eine Funktion heißt RAM-berechenbar, wenn sie mit Hilfe einer RAM berechnet werden
kann.
Mit RAM bezeichnen wir die Menge aller RAM-berechenbaren Funktionen.
2.2.3. Die Churchsche These
Bei der Untersuchung einer Vielzahl von Berechenbarkeitsbegriffen7 hat sich immer gezeigt, dass
sie äquivalent sind. Es ist also möglich, einen Compiler zu schreiben, der jedes Programm für
ein Berechenbarkeitsmodell in ein Programm für das jeweilige andere Berechenbarkeitsmodell
übersetzt. Ausführlicher ist dies z.B. in [Wag94] beschrieben. Wir können diesen Sachverhalt mit
dem folgenden Satz zusammenfassen:
Satz 2.12 (Hauptsatz der Algorithmentheorie)
C = T M = RAM,
wenn wir mit C die Menge der Funktionen bezeichnen, die mit Hilfe von C-Programmen berechnet
werden können.
Die Tatsache, dass alle diese (und noch viele andere8 ) Berechenbarkeitsmodell das Gleiche
leisten, hat zu der Einsicht geführt, dass mit unseren Berechenbarkeitsbegriffen schon alles erfasst
ist, was man im intuitiven Sinn als berechenbar auffassen kann. Diese Einsicht ist bekannt als
These von Church:
Jede im intuitiven Sinne berechenbare Funktion ist TM-berechenbar.
Da im intuitiven Sinne“ keine mathematisch präzise Formulierung ist, kann man diese These
”
prinzipiell nicht beweisen. Trotzdem wollen wir sie als wahr ansehen und deshalb sprechen wir
im weiteren nur von berechenbaren Funktionen und vernachlässigen das jeweilige Berechenbarkeitsmodell.
7
8
Wir haben drei kennengelernt, die C-Berechenbarkeit, die TM-Berechenbarkeit und die RAM-Berechenbarkeit.
z.B. die partiell rekursiven Funktionen (siehe [Wag94])
2.3 Entscheidbarkeit, das Halteproblem und der Satz von Rice
41
Σ∗
Α
c A(x 1 )=1
x1
c A(x 2 )=0
x2
Abbildung 5: Die anschauliche Interpretation der charakteristischen Funktion
2.3. Entscheidbarkeit, das Halteproblem und der Satz von Rice
Nun definieren wir die Entscheidbarkeit auf eine andere Weise als in Definition 2.2 auf Seite 32
geschehen. Trotzdem sind beide Definitionen äquivalent.
Definition 2.13 Eine Menge A ⊆ Σ∗ heißt entscheidbar, falls die charakteristische Funktion
cA : Σ∗ → {0, 1} der Menge A berechenbar ist. Wobei die charakteristische Funktion durch
{
cA (x) =def
1, falls x ∈ A
0, falls x ̸∈ A
definiert ist (Abbildung 5 zeigt eine anschauliche Interpretation der charakteristischen Funktion).
Wir wissen schon: SAT, TAUT und die Menge der Primzahlen P sind entscheidbar.
Diese Definition kann nun abgeschwächt werden:
Definition 2.14 Eine Menge A ⊆ Σ∗ heißt semi-entscheidbar, falls die halbe“ charakteristi”
sche Funktion c′A : Σ∗ → {0, 1} der Menge A berechenbar ist. Wobei die halbe“ charakteristische
”
Funktion durch
{
1, falls x ∈ A
′
cA (x) =def
undefiniert, falls x ̸∈ A
definiert ist.
Dabei bedeutet undefiniert hier, dass die berechnende Maschine (z.B. eine TM oder RAM)
keine Ausgabe liefert, also insbesondere nicht anhält.
Beispiel 2.15 Offensichtlich ist jede entscheidbare Menge auch semi-entscheidbar und wir wissen schon, dass PCP semi-entscheidbar ist.
Lemma 2.16 Eine Menge9 A ⊆ Σ∗ ist entscheidbar gdw. sowohl A als auch A semi-entscheidbar
sind.
Mit A bezeichnen wir das Komplement von A ⊆ Σ∗ , also ist die Sprache A durch A =def {x ∈
Σ∗ | x ̸∈ A} definiert.
9
Eine solche Menge wird auch Sprache (über Σ) genannt.
42
2 BERECHENBARKEIT
Beweis:
⇒“ Wenn A entscheidbar ist, ist die charakteristische Funktion
”
{
1, falls x ∈ A
cA (x) =
0, falls x ̸∈ A
berechenbar. Die Maschine, die cA berechnet, kann man sicherlich so modifizieren, dass
diese neue Maschine
{
1, falls x ∈ A
cA (x) =
undefiniert, falls x ̸∈ A
berechnet (man kann den Fall undefiniert“ leicht durch eine Endlosschleife implementie”
ren). Völlig analog konstruieren wir eine Maschine, die
{
1, falls x ∈ A
cA (x) =
undefiniert, falls x ̸∈ A
berechnet. Damit sind A und A semi-entscheidbar.
⇐“ Seien A und A semi-entscheidbar vermöge der Maschinen M1 und M2 . Wir bauen eine neue
”
Maschine M mit der Eingabe x wie folgt:
Data : Ein Wort x ∈ Σ∗
Result : true, wenn x ∈ A, false wenn x ̸∈ A
for (i = 1, 2, 3, 4, . . . ) do
if ( M1 stoppt nach i Schritten ) then
return true;
end
if ( M2 stoppt nach i Schritten ) then
return false;
end
end
Da für jedes x ∈ Σ∗ entweder x ∈ A oder x ̸∈ A (≜ x ∈ A) gilt, muss die Maschine M nach
endlich vielen Schritten stoppen und dabei die charakteristische Funktion cA berechnen.
Damit ist A aber entscheidbar.
#
Mit Hilfe dieses Lemmas ist die nächste Folgerung unmittelbar einsichtig:
Folgerung 2.17 PCP ist nicht semi-entscheidbar.
Also gibt es Sprachen, für die noch nicht einmal die halbe“ charakteristische Funktion bere”
chenbar ist.
Für unsere weiteren Betrachtungen wollen wir, aus technischen Gründen, Turingmaschinen in
natürliche Zahlen umwandeln. Sei M = (Σ, Z, δ, z0 , z1 ) eine 1-Band TM mit Σ = {a0 , . . . , ak } und
Z = {z0 , . . . , zl }, dann kann die Übergangsfunktion δ wie folgt kodiert werden: Aus δ(zi , aj ) =
(zi′ , aj ′ , y) wird ##bin(i)#bin(j)#bin(i′ )#bin(j ′ )#bin(m), wobei bin(x) die Binärkodierung
von x und

 0, falls y = L
1, falls y = R
m=

2, falls y = N
ist. Die Befehle unserer Turingmaschine schreiben wir in einer festgelegten Reihenfolge auf und
bekommen so ein Wort über {#, 0, 1}. Abschließend kodieren wir 0 7→ 00, 1 7→ 01 und # 7→ 11.
Die so berechnete Zahl nennen wir Gödelnummer von M . Es ist klar, dass nicht jede natürliche
Zahl in binärer Darstellung eine TM beschreibt. Deshalb treffen wir folgende Festlegung:
2.3 Entscheidbarkeit, das Halteproblem und der Satz von Rice
43
Sei M̂ eine beliebige, aber feste Turingmaschine, dann
{
Mω =def
M, falls ω das Codewort von M ist
M̂ , sonst
Mit Hilfe dieser Definition können wir nun einige Berechnungsprobleme leicht formulieren. Als
ersten Kandidaten werden wird das spezielle Halteproblem studieren. Hier wird die Frage untersucht, ob eine Turingmaschine in eine Endlosschleife gerät, wenn sie als Eingabe ihre eigene
Gödelnummer bekommt.
Definition 2.18 (spezielles Halteproblem)
H =def {w ∈ {0, 1}∗ | Mw hält bei Eingabe w}
Nun wollen wir zeigen, dass dieses Problem nicht entscheidbar sein kann. Dazu verwenden wir
eine Beweistechnik, die als Diagonalisierungsbeweis bezeichnet wird.
Satz 2.19 Das spezielle Halteproblem H ist nicht entscheidbar.
Beweis: Annahme: H ist entscheidbar, dann ist cH berechenbar vermöge der TM M . Wir bauen
nun M in die Maschine M ′ wie folgt um:
start
M
Antwort = 0?
ja
stop
nein
D.h. M ′ stoppt gdw. M die Antwort 0 ausgibt. Berechnet M die Antwort 1, dann gerät M ′
in eine Endlosschleife. Sei nun ω ′ die Gödelnummer von M ′ , dann ergeben sich die folgenden
äquivalenten Aussagen:
M ′ mit Eingabe ω ′ hält
gdw.
gdw.
gdw.
gdw.
gdw.
M mit Eingabe ω ′ gibt 0 aus
cH (ω ′ ) = 0
ω ′ ̸∈ H
Mω′ hält bei Eingabe ω ′ nicht an
M ′ mit Eingabe ω ′ hält nicht
Aufgrund dieses Widerspruchs muss unsere Annahme falsch gewesen sein, also ist H nicht entscheidbar.
#
Nachdem wir von einem ersten Problem gezeigt haben, dass es nicht entscheidbar sein kann,
wollen wir weitere Probleme untersuchen und ihre Nichtentscheidbarkeit nachweisen. Dabei würde es uns schwer fallen, dies jedesmal mit einen Diagonalisierungsbeweis (oder einer anderen
Technik) zu bewerkstelligen. Aus diesem Grund wollen wir uns die Arbeit erleichtern und einen
Vergleichsbegriff einführen, der uns Aussagen der Form Wenn Problem B mindestens so schwie”
rig zu lösen ist wie A und wir wissen schon, dass A nicht lösbar ist, dann muss B auch unlösbar
sein“. Solche Vergleichsbegriffe sind in der Theoretischen Informatik als Reduktion (vgl. den Beweis von Satz 2.7) bekannt. Wir werden in diesem Abschnitt den einfachsten Reduktionsbegriff10
verwenden:
Definition 2.20 (Reduktion) Seien A, B ⊆ Σ∗ zwei Sprachen. Wir schreiben A ≤m B (Sprechweise: A kann auf B reduziert werden), wenn es eine berechenbare Funktion g gibt, mit x ∈
A gdw. g(x) ∈ B.
10
Dieser spezielle Reduktionsbegriff ist als many-one Reduktion“ bekannt.
”
44
2 BERECHENBARKEIT
Nun versteht man auch den Sprachgebrauch A kann auf B reduziert werden“, denn kennt man
”
die Funktion g, dann kann man eine Eingabe x für A in eine Eingabe g(x) für B umrechnen
und mit Hilfe von B die Frage, ob x ∈ A gilt, beantworten. Damit haben wir Aufgabe das
Problem A zu lösen, auf die Lösung des Problems B reduziert. Damit wird auch klar, dass wenn
A nicht entscheidbar ist und A ≤m B gilt, dann kann auch B nicht entscheidbar sein (wäre B
entscheidbar, dann könnte man A entscheiden indem man g(x) berechnet und fragt, ob g(x) ∈ B
gilt).
Nun wollen wir unsere neue Technik dazu verwenden, um die Nichtentscheidbarkeit einer weiteren Variante des Halteproblems zu zeigen:
Definition 2.21 (allgemeines Halteproblem) Das allgemeine Halteproblem H ′ ist definiert
durch
H ′ =def {(ω, x) | Mω hält bei Eingabe von x}
Lemma 2.22 Das allgemeine Halteproblem H ′ ist nicht entscheidbar.
Beweis: Es ist unmittelbar einsichtig, dass die Funktion g(x) = (x, x) berechenbar ist. Weiterhin
gilt auch
ω ∈ H gdw. g(ω) ∈ H ′ .
Damit gilt H ≤m H ′ (das spezielle Halteproblem ist auf das allgemeine Halteproblem reduzierbar) und somit ist H ′ unentscheidbar.
#
Aus technischen Gründen definieren wir nun eine weitere Variante des Halteproblems und zeigen
auch, dass diese Variante nicht entscheidbar ist.
Definition 2.23 Das Halteproblem mit leerem Band ist wie folgt definiert:
H0 =def {ω | Mω gestartet mit leerem Band hält}
Satz 2.24 Das Halteproblem mit leerem Band H0 ist nicht entscheidbar.
Beweis: Um unsere Aussage zu zeigen, reduzieren wir das allgemeine Halteproblem H ′ auf H0 ,
d.h. wir müssen nun eine geeignete Reduktionsfunktion g finden, sodass dann (ω, x) ∈ H ′ gdw.
g((ω, x)) ∈ H0 gilt.
Dazu ordnen wir einem Paar (ω, x) eine neue TM M zu, die wie folgt arbeitet:
i) schreibe x auf das leere Band
ii) simuliere Mω mit Eingabe x
Jetzt ist noch zu klären, ob eine berechenbare Funktion g existiert, die aus (ω, x) die Gödelnummer von M berechnet. Dazu bestimmt die Funktion g das Turingprogramm von Mω (d.h. sie
macht die Gödelisierung rückgängig), hängt den print(x);“ Block an den Anfang und berech”
net die Gödelnummer der neuen Maschine. Diese neue Gödelnummer ist dann die Ausgabe der
Maschine. Also gilt:
(ω, x) ∈ H ′ gdw. Mω mit Eingabe x hält
gdw. M mit leerem Band hält
gdw. g((ω, x)) ∈ H0
Damit gilt H ′ ≤m H0 und deshalb ist H0 unentscheidbar.
#
Leicht kann man sich überlegen, dass ≤m transitiv ist, d.h. aus H ≤m H ′ und H ′ ≤m H0 folgt
auch H ≤m H0 .
Nachdem die Unentscheidbarkeit des Halteproblems H0 geklärt ist, kann dieses als technisches
Hilfsmittel für unser eigentliches Ziel verwendet werden. Gleichzeitig wissen wir nun, dass H0
2.3 Entscheidbarkeit, das Halteproblem und der Satz von Rice
45
nicht semi-entscheidbar sein kann, da H0 semi-entscheidbar ist (für eine Eingabe ω simulieren
wir einfach die Maschine Mω mit dem leeren Band als Eingabe). Mit Hilfe von H0 wollen wir
nun den Satz von Rice zeigen:
Satz 2.25 (Satz von Rice) Sei T M die Menge aller Turing-berechenbaren Funktionen und
sei S ⊆ T M, wobei S ̸= ∅ und S ̸= T M. Dann ist die Menge
C(S) =def {ω | die von Mω berechnete Funktion liegt in S}
unentscheidbar.
Beispiel 2.26 Sei S = {f | f ist eine konstante Funktion}. Dann ist
C(S) = {ω | Mω berechnet eine konstante Funktion}
unentscheidbar, d.h. nahezu jede (semantische) Eigenschaft von Turingmaschinen ist nicht entscheidbar!
Beweis: Wir benutzen die überall undefinierte Funktion Ω, die durch while(1); /* hält für
keine Eingabe */ berechnet“ wird.
”
Fall 1: Sei Ω ∈ S. Da S ̸= T M gibt es eine Fkt f ∈ T M\S. Sei Q eine TM, die f berechnet.
Wir ordnen nun jeder Gödelnummer ω ∈ {0, 1}∗ die folgende Turingmaschine M zu:
angesetzt auf Eingabe y, ignoriere zunächst y;
verhalte dich wie Mω ;
falls Mω hält, verhalte dich wie Q;
Die TM M berechnet also die folgende Funktion f ′
′
{
f =
Ω, falls Mω auf leerem Band nicht stoppt
f, sonst
Wieder ist die Abbildung g, die ω die Maschine M zuordnet, berechenbar und es gilt sogar:
ω ∈ H0 ⇒
⇒
⇒
⇒
Mω stoppt mit leerem Band
M berechnet f
die von Mg(ω) berechnete Funktion liegt nicht in S
g(ω) ̸∈ C(S)
und
ω ̸∈ H0 ⇒
⇒
⇒
⇒
Mω stoppt nicht mit leerem Band
M berechnet Ω
die von Mg(ω) berechnete Funktion liegt in S
g(ω) ∈ C(S)
Damit haben wir gezeigt, dass H0 ≤m C(S), da ja gilt ω ∈ H0 gdw. g(ω) ∈ C(S). Wir
wissen schon, dass H0 aufgrund von Lemma 2.16 nicht semi-entscheidbar sein kann (da H0
semi-entscheidbar, aber nicht entscheidbar ist). Also ist H0 erst recht nicht entscheidbar
und damit auch C(S) nicht entscheidbar.
Fall 2: Sei Ω ̸∈ S. Zeige völlig analog H0 ≤m C(S).
In beiden möglichen Fällen haben wir durch eine geeignete Reduktion gezeigt, dass C(S) nicht
entscheidbar ist, wodurch der Satz von Rice gezeigt ist.
#
46
3 KOMPLEXITÄT
3. Komplexität
Für viele ständig auftretende Berechnungsprobleme, wie Sortieren, die arithmetischen Operationen (Addition, Multiplikation, Division), Fourier-Transformation etc., sind sehr effiziente Algorithmen konstruiert worden. Für wenige andere praktische Probleme weiß man, dass sie nicht
oder nicht effizient algorithmisch lösbar sind. Im Gegensatz dazu ist für einen sehr großen Teil
von Fragestellungen aus den verschiedensten Anwendungsbereichen wie Operations Research,
Netzwerkdesign, Programmoptimierung, Datenbanken, Betriebssystem-Entwicklung und vielen
mehr jedoch nicht bekannt, ob sie effiziente Algorithmen besitzen (vgl. die Abbildungen 10 und
?
11). Diese Problematik hängt mit der seit über dreißig Jahren offenen P = NP-Frage zusammen, wahrscheinlich gegenwärtig das wichtigste ungelöste Problem der theoretischen Informatik.
Es wurde sogar kürzlich auf Platz 1 der Liste der so genannten Millenium Prize Problems des
Clay Mathematics Institute gesetzt11 . Diese Liste umfasst sieben offene Probleme aus der gesamten Mathematik. Das Clay Institute zahlt jedem, der eines dieser Probleme löst, eine Million
US-Dollar.
?
In diesem Abschnitt werden die wesentlichen Begriffe aus dem Kontext des P = NP-Problems
und des Begriffes der NP-Vollständigkeit erläutert, um so die Grundlagen für das Verständnis
derartiger Probleme zu schaffen und deren Beurteilung zu ermöglichen.
3.1. Effizient lösbare Probleme: die Klasse P
Jeder, der schon einmal mit der Aufgabe konfrontiert wurde, einen Algorithmus für ein gegebenes
Problem zu entwickeln, kennt die Hauptschwierigkeit dabei: Wie kann ein effizienter Algorithmus
gefunden werden, der das Problem mit möglichst wenigen Rechenschritten löst? Um diese Frage
beantworten zu können, muss man sich zunächst einige Gedanken über die verwendeten Begriffe,
nämlich Problem“, Algorithmus“, Zeitbedarf“ und effizient“, machen.
”
”
”
”
Was ist ein Problem?“ Jedem Programmierer ist diese Frage intuitiv klar: Man bekommt ge”
eignete Eingaben, und das Programm soll die gewünschten Ausgaben ermitteln. Ein einfaches
Beispiel ist das Problem MULT. (Jedes Problem soll mit einem eindeutigen Namen versehen
und dieser in Großbuchstaben geschrieben werden.) Hier bekommt man zwei ganze Zahlen als
Eingabe und soll das Produkt beider Zahlen berechnen, d.h. das Programm berechnet einfach
eine zweistellige Funktion. Es hat sich gezeigt, dass man sich bei der Untersuchung von Effizienzfragen auf eine abgeschwächte Form von Problemen beschränken kann, nämlich sogenannte
Entscheidungsprobleme. Hier ist die Aufgabe, eine gewünschte Eigenschaft der Eingaben zu testen. Hat die aktuelle Eingabe die gewünschte Eigenschaft, dann gibt man den Wert 1 (≜ true)
zurück (man spricht dann auch von einer positiven Instanz des Problems), hat die Eingabe die
Eigenschaft nicht, dann gibt man den Wert 0 (≜ false) zurück. Oder anders formuliert: Das
Programm berechnet eine Funktion, die den Wert 0 oder 1 zurück gibt und partitioniert damit
die Menge der möglichen Eingaben in zwei Teile: die Menge der Eingaben mit der gewünschten Eigenschaft und die Menge der Eingaben, die die gewünschte Eigenschaft nicht besitzen.
Folgendes Beispiel soll das Konzept verdeutlichen:
Problem: PARITY
Eingabe: Positive Integerzahl x
Ausgabe: Ist die Anzahl der Ziffern 1 in der Binärdarstellung von x ungerade?
Es soll also ein Programm entwickelt werden, das die Parität einer Integerzahl x berechnet.
Eine mögliche Entscheidungsproblem-Variante des Problems MULT ist die folgende:
11
siehe http://www.claymath.org/millennium
3.1 Effizient lösbare Probleme: die Klasse P
47
Problem: MULTD
Eingabe: Integerzahlen x, y, positive Integerzahl i
Ausgabe: Ist das i-te Bit in x · y gleich 1?
Offensichtlich sind die Probleme MULT und MULTD gleich schwierig (oder leicht) zu lösen.
Im Weiteren wollen wir uns hauptsächlich mit Problemen be4
schäftigen, die aus dem Gebiet der Graphentheorie stammen.
Das hat zwei Gründe. Zum einen können, wie sich noch zeigen
wird, viele praktisch relevante Probleme mit Hilfe von Graphen
modelliert werden, und zum anderen sind sie anschaulich und oft
3
5
relativ leicht zu verstehen. Ein (ungerichteter) Graph G besteht
aus einer Menge von Knoten V und einer Menge von Kanten E,
die diese Knoten verbinden. Man schreibt: G = (V,(E). Ein wohlbekanntes Beispiel ist der Nikolausgraph: GN = ){1, 2, 3, 4, 5},
{(1, 2), (1, 3), (1, 5), (2, 3), (2, 5), (3, 4), (3, 5), (4, 5)} . Es gibt also fünf Knoten V = {1, 2, 3, 4, 5}, die durch die Kanten in
E = {(1, 2), (1, 3), (1, 5), (2, 3), (2, 5), (3, 4), (3, 5), (4, 5)} verbun1
2
den werden (siehe Abbildung 6).
Ein prominentes Problem in der Graphentheorie ist es, eine so- Abbildung 6: Der Graph GN
genannte Knotenfärbung zu finden. Dabei wird jedem Knoten eine Farbe zugeordnet, und man
verbietet, dass zwei Knoten, die durch eine Kante verbunden sind, die gleiche Farbe zugeordnet wird. Natürlich ist die Anzahl der Farben, die verwendet werden dürfen, durch eine feste
natürliche Zahl k beschränkt. Genau wird das Problem, ob ein Graph k-färbbar ist, wie folgt
beschrieben:
Problem: kCOL
Eingabe: Ein Graph G = (V, E)
Ausgabe: Hat G eine Knotenfärbung mit höchstens k Farben?
Offensichtlich ist der Beispielgraph GN nicht mit drei Farben färbbar (aber mit 4 Farben, wie
man leicht ausprobieren kann), und jedes Programm für das Problem 3COL müsste ermitteln,
dass GN die gewünschte Eigenschaft (3-Färbbarkeit) nicht hat.
Man kann sich natürlich fragen, was das künstlich erscheinende Problem 3COL mit der Praxis zu tun hat. Das folgende einfache Beispiel soll das verdeutlichen. Man nehme das Szenario
an, dass ein großer Telefonprovider in einer Ausschreibung drei Funkfrequenzen für einen neuen
Mobilfunkstandard erworben hat. Da er schon über ein Mobilfunknetz verfügt, sind die Sendemasten schon gebaut. Aus technischen Gründen dürfen Sendemasten, die zu eng stehen, nicht
mit der gleichen Frequenz funken, da sie sich sonst stören würden. In der graphentheoretischen
Welt modelliert man die Sendestationen mit Knoten eines Graphen, und nahe“ zusammenste”
hende Sendestationen symbolisiert man mit einer Kante zwischen den Knoten, für die sie stehen.
Die Aufgabe des Mobilfunkplaners ist es nun, eine 3-Färbung für den entstehenden Graphen zu
finden. Offensichtlich kann das Problem verallgemeinert werden, wenn man sich nicht auf drei
Farben/Frequenzen festlegt; dann aber ergeben sich genau die oben definierten Probleme kCOL
für beliebige Zahlen k.
Als nächstes ist zu klären, was unter einem Algorithmus“ zu verstehen ist. Ein Algorithmus ist
”
eine endliche, formale Beschreibung einer Methode, die ein Problem löst (z.B. ein Programm in
einer beliebigen Programmiersprache). Diese Methode muss also alle Eingaben mit der gesuchten
Eigenschaft von den Eingaben, die diese Eigenschaft nicht haben, unterscheiden können. Man
legt fest, dass der Algorithmus für erstere den Wert 1 und für letztere den Wert 0 ausgeben
soll. Wie soll die Laufzeit“ eines Algorithmus gemessen werden? Um dies festlegen zu können,
”
muss man sich zunächst auf ein sogenanntes Berechnungsmodell festlegen. Das kann man damit
vergleichen, welche Hardware für die Implementation des Algorithmus verwendet werden soll.
48
3 KOMPLEXITÄT
Für die weiteren Analysen soll das folgende einfache C-artige Modell verwendet werden: Es wird
(grob!) die Syntax von C verwendet und festgelegt, dass jede Anweisung in einem Schritt abgearbeitet werden kann. Gleichzeitig beschränkt man sich auf zwei Datentypen: einen Integer-Typ
und zusätzlich Arrays dieses Integer-Typs (wobei Array-Grenzen nicht deklariert werden müssen, sondern sich aus dem Gebrauch ergeben). Dieses primitive Maschinenmodell ist deshalb
geeignet, weil man zeigen kann, dass jeder so formulierte Algorithmus auf realen Computern
implementiert werden kann, ohne eine substantielle Verlangsamung zu erfahren. (Dies gilt zumindest, wenn die verwendeten Zahlen nicht übermäßig wachsen, d.h., wenn alle verwendeten
Variablen nicht zu viel Speicher belegen. Genaueres zu dieser Problematik – man spricht von
der Unterscheidung zwischen uniformem Komplexitätsmaß und Bitkomplexität – findet sich in
[Sch01, S. 62f].)
Umgekehrt kann man ebenfalls sagen, dass dieses einfache Modell die Realität genau genug
widerspiegelt, da auch reale Programme ohne allzu großen Zeitverlust auf diesem Berechnungsmodell simuliert werden können. Offensichtlich ist die Eingabe der Parameter, von dem die
Rechenzeit für einen festen Algorithmus abhängt. In den vergangenen Jahrzehnten, in denen
das Gebiet der Analyse von Algorithmen entstand, hat die Erfahrung gezeigt, dass die Länge
der Eingabe, also die Anzahl der Bits die benötigt werden, um die Eingabe zu speichern, ein
geeignetes und robustes Maß ist, in der die Rechenzeit gemessen werden kann. Auch der Aufwand, die Eingabe selbst festzulegen (zu konstruieren), hängt schließlich von ihrer Länge ab,
nicht davon, ob sich irgendwo in der Eingabe eine 0 oder 1 befindet.
3.1.1. Das Problem der 2-Färbbarkeit
Das Problem der 2-Färbbarkeit ist wie folgt definiert:
Problem: 2COL
Eingabe: Ein Graph G = (V, E)
Ausgabe: Hat G eine Knotenfärbung mit höchstens 2 Farben?
Es ist bekannt, dass dieses Problem mit einem sogenannten Greedy-Algorithmus gelöst werden
kann: Beginne mit einem beliebigen Knoten in G (z.B. v1 ) und färbe ihn mit Farbe 1. Färbe dann
die Nachbarn dieses Knoten mit 2, die Nachbarn dieser Nachbarn wieder mit 1, usw. Falls G aus
mehreren Komponenten (d.h. zusammenhängenden Teilgraphen) besteht, muss dieses Verfahren
für jede Komponente wiederholt werden. G ist schließlich 2-färbbar, wenn bei obiger Prozedur
keine inkorrekte Färbung entsteht. Diese Idee führt zu Algorithmus 4.
Die Laufzeit von Algorithmus 4 kann wie folgt abgeschätzt werden: Die erste for-Schleife benötigt n Schritte. In der while-Schleife wird entweder mindestens ein Knoten gefärbt und die
Schleife dann erneut ausgeführt, oder es wird kein Knoten gefärbt und die Schleife dann verlassen; also wird diese Schleife höchstens n-mal ausgeführt. Innerhalb der while-Schleife finden
sich drei ineinander verschachtelte for-Schleifen, die alle jeweils n-mal durchlaufen werden, und
eine while-Schleife, die maximal n-mal durchlaufen wird.
Damit ergibt sich also eine Gesamtlaufzeit der Größenordnung n4 , wobei n die Anzahl der
Knoten des Eingabe-Graphen G ist. Wie groß ist nun die Eingabelänge, also die Anzahl der
benötigten Bits zur Speicherung von G? Sicherlich muss jeder Knoten in dieser Speicherung
vertreten sein, d.h. also, dass mindestens n Bits zur Speicherung von G benötigt werden. Die
Eingabelänge ist also mindestens n. Daraus folgt, dass die Laufzeit des Algorithmus also höchstens von der Größenordnung N 4 ist, wenn N die Eingabelänge bezeichnet.
Tatsächlich sind (bei Verwendung geeigneter Datenstrukturen wie Listen oder Queues) wesentlich effizientere Verfahren für 2COL möglich. Aber auch schon das obige einfache Verfahren zeigt:
2COL hat einen Polynomialzeitalgorithmus, also 2COL ∈ P.
Alle Probleme für die Algorithmen existieren, die eine Anzahl von Rechenschritten benötigen,
die durch ein beliebiges Polynom beschränkt ist, bezeichnet man mit P ( P“ steht dabei für
”
3.1 Effizient lösbare Probleme: die Klasse P
49
Algorithmus 4 : Algorithmus zur Berechnung einer 2-Färbung eines Graphen
Data : Graph G = ({v1 , . . . vn }, E);
Result : 1 wenn es eine 2-Färbung für G gibt, 0 sonst
begin
for (i = 1 to n) do
Farbe[i] = 0;
end
Farbe[1] = 1;
repeat
aktKompoBearbeiten = false;
for (i = 1 to n) do
for (j = 1 to n) do
/* Kante bei der ein Knoten noch nicht gefärbt?
if (((vi , vj ) ∈ E) und (Farbe[i] ̸= 0) und (Farbe[j] = 0)) then
/* vj bekommt eine andere Farbe als vi
Farbe[j] = 3 − Farbe[i];
aktKompoBearbeiten = true;
/* Alle direkten Nachbarn von vj prüfen
for (k = 1 to n) do
/* Kollision beim Färben aufgetreten?
if (((vj , vk ) ∈ E) und (Farbe[i] = Farbe[k])) then
/* Kollision! Graph nicht 2-färbbar
return 0;
end
end
end
end
end
/* Ist die aktuelle Zusammenhangkomponente völlig gefärbt?
if (not(aktKompoBearbeiten)) then
i = 1;
/* Suche nach einer weiteren Zusammenhangskomponente von G
repeat
/* Liegt vi in einer neuen Zusammenhangskomponente von G?
if (Farbe[i] = 0) then
Farbe[i] = 1;
/* Neue Zusammenhangskomponente bearbeiten
aktKompoBearbeiten = true;
/* Suche nach neuer Zusammenhangskomponente abbrechen
weiterSuchen = false;
end
i = i + 1;
until (not(weiterSuchen) und (i ≤ n)) ;
end
until (aktKompoBearbeiten) ;
/* 2-Färbung gefunden
return 1.
end
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
50
3 KOMPLEXITÄT
Anzahl der
Takte
Eingabelänge n
40
10
20
30
50
60
n
0,00001
Sekunden
0,00002
Sekunden
0,00003
Sekunden
0,00004
Sekunden
0,00005
Sekunden
0,00006
Sekunden
n2
0,0001
Sekunden
0,0004
Sekunden
0,0009
Sekunden
0,0016
Sekunden
0,0025
Sekunden
0,0036
Sekunden
n3
0,001
Sekunden
0,008
Sekunden
0,027
Sekunden
0,064
Sekunden
0,125
Sekunden
0,216
Sekunden
n5
0,1
Sekunden
3,2
Sekunden
24,3
Sekunden
1,7
Minuten
5,2
Minuten
13,0
Minuten
2n
0,001
Sekunden
1
Sekunde
17,9
Minuten
12,7
Tage
35,7
Jahre
366
Jahrhunderte
3n
0,059
Sekunden
58
Minuten
6,5
Jahre
3855
Jahrhunderte
2 · 108
Jahrhunderte
1, 3 · 1013
Jahrhunderte
Abbildung 7: Rechenzeitbedarf von Algorithmen auf einem 1-MIPS“-Rechner
”
Polynomialzeit“). Auch dabei wird die Rechenzeit in der Länge der Eingabe gemessen, d.h. in
”
der Anzahl der Bits, die benötigt werden, um die Eingabe zu speichern (zu kodieren). Die Klasse
P wird auch als Klasse der effizient lösbaren Probleme bezeichnet. Dies ist natürlich wieder eine
idealisierte Auffassung: Einen Algorithmus mit einer Laufzeit n57 , wobei n die Länge der Eingabe
bezeichnet, kann man schwer als effizient bezeichnen. Allerdings hat es sich in der Praxis gezeigt,
dass für fast alle bekannten Probleme in P auch Algorithmen existieren, deren Laufzeit durch
ein Polynom kleinen12 Grades beschränkt ist.
In diesem Licht ist die Definition der Klasse P auch für praktische Belange von Relevanz.
Dass eine polynomielle Laufzeit etwas substanziell Besseres darstellt als exponentielle Laufzeit
(hier beträgt die benötigte Rechenzeit 2c·n für eine Konstante c, wobei n wieder die Länge der
Eingabe bezeichnet), zeigt die Tabelle Rechenzeitbedarf von Algorithmen“. Zu beachten ist,
”
dass bei einem Exponentialzeit-Algorithmus mit c = 1 eine Verdoppelung der Geschwindigkeit“
”
der verwendeten Maschine (also Taktzahl pro Sekunde) es nur erlaubt, eine um höchstens 1
Bit längere Eingabe in einer bestimmten Zeit zu bearbeiten. Bei einem Linearzeit-Algorithmus
hingegen verdoppelt sich auch die mögliche Eingabelänge; bei √
einer Laufzeit von nk vergrößert
k
sich die mögliche Eingabelänge immerhin noch um den Faktor 2. Deswegen sind Probleme, für
die nur Exponentialzeit-Algorithmen existieren, praktisch nicht lösbar; daran ändert sich auch
nichts Wesentliches durch die Einführung von immer schnelleren Rechnern.
Nun stellt sich natürlich sofort die Frage: Gibt es für jedes Problem einen effizienten Algorithmus? Man kann relativ leicht zeigen, dass die Antwort auf diese Frage Nein“ ist. Die Schwie”
rigkeit bei dieser Fragestellung liegt aber darin, dass man von vielen Problemen nicht weiß, ob
sie effizient lösbar sind. Ganz konkret: Ein effizienter Algorithmus für das Problem 2COL ist
Algorithmus 4. Ist es möglich, ebenfalls einen Polynomialzeitalgorithmus für 3COL zu finden?
Viele Informatiker beschäftigen sich seit den 60er Jahren des letzten Jahrhunderts intensiv mit
dieser Frage. Dabei kristallisierte sich heraus, dass viele praktisch relevante Probleme, für die
kein effizienter Algorithmus bekannt ist, eine gemeinsame Eigenschaft besitzen, nämlich die der
effizienten Überprüfbarkeit von geeigneten Lösungen. Auch 3COL gehört zu dieser Klasse von
Problemen, wie sich in Kürze zeigen wird. Aber wie soll man zeigen, dass für ein Problem kein effizienter Algorithmus existiert? Nur weil kein Algorithmus bekannt ist, bedeutet das noch nicht,
dass keiner existiert.
12
Aktuell scheint es kein praktisch relevantes Problem aus P zu geben, für das es keinen Algorithmus mit einer
Laufzeit von weniger als n12 gibt.
3.2 Effizient überprüfbare Probleme: die Klasse NP
51
Es ist bekannt, dass die oberen Schranken (also die Laufzeit von bekannten Algorithmen) und
die unteren Schranken (mindestens benötigte Laufzeit) für das Problem PARITY (und einige wenige weitere, ebenfalls sehr einfach-geartete Probleme) sehr nahe zusammen liegen. Das bedeutet
also, dass nur noch unwesentliche Verbesserungen der Algorithmen für des PARITY-Problem
erwartet werden können. Beim Problem 3COL ist das ganz anders: Die bekannten unteren und
oberen Schranken liegen extrem weit auseinander. Deshalb ist nicht klar, ob nicht doch (extrem)
bessere Algorithmen als heute bekannt im Bereich des Möglichen liegen. Aber wie untersucht
man solch eine Problematik? Man müsste ja über unendlich viele Algorithmen für das Problem
3COL Untersuchungen anstellen. Dies ist äußerst schwer zu handhaben und deshalb ist der einzige bekannte Ausweg, das Problem mit einer Reihe von weiteren (aus bestimmten Gründen)
interessierenden Problemen zu vergleichen und zu zeigen, dass unser zu untersuchendes Problem
nicht leichter zu lösen ist als diese anderen. Hat man das geschafft, ist eine untere Schranke einer
speziellen Art gefunden: Unser Problem ist nicht leichter lösbar, als alle Probleme der Klasse
von Problemen, die für den Vergleich herangezogen wurden. Nun ist aus der Beschreibung der
Aufgabe aber schon klar, dass auch diese Aufgabe schwierig zu lösen ist, weil ein Problem nun
mit unendlich vielen anderen Problemen zu vergleichen ist. Es zeigt sich aber, dass diese Aufgabe nicht aussichtslos ist. Bevor diese Idee weiter ausgeführt wird, soll zunächst die Klasse von
Problemen untersucht werden, die für diesen Vergleich herangezogen werden sollen, nämlich die
Klasse NP.
3.2. Effizient überprüfbare Probleme: die Klasse NP
Wie schon erwähnt, gibt es eine große Anzahl verschiedener Probleme, für die kein effizienter
Algorithmus bekannt ist, die aber eine gemeinsame Eigenschaft haben: die effiziente Überprüfbarkeit von Lösungen für dieses Problem. Diese Eigenschaft soll an dem schon bekannten Problem
3COL veranschaulicht werden: Angenommen, man hat einen beliebigen Graphen G gegeben; wie
bereits erwähnt ist kein effizienter Algorithmus bekannt, der entscheiden kann, ob der Graph G
eine 3-Färbung hat (d.h., ob der fiktive Mobilfunkprovider mit 3 Funkfrequenzen auskommt).
Hat man aber aus irgendwelchen Gründen eine potenzielle Knotenfärbung vorliegen, dann ist
es leicht, diese potenzielle Knotenfärbung zu überprüfen und festzustellen, ob sie eine korrekte
Färbung des Graphen ist, wie Algorithmus 5 zeigt.
Algorithmus 5 : Ein Algorithmus zur Überprüfung einer potentiellen Färbung
Data : Graph G = ({v1 , . . . vn }, E) und eine potenzielle Knotenfärbung
Result : 1 wenn die Färbung korrekt, 0 sonst
begin
/* Teste systematisch alle Kanten */
for (i = 1 to n) do
for (j = 1 to n) do
/* Test auf Verletzung der Knotenfärbung */
if (((vi , vj ) ∈ E) und (vi und vj sind gleich gefärbt)) then
return 0;
end
end
end
return 1;
end
Das Problem 3COL hat also die Eigenschaft, dass eine potenzielle Lösung leicht daraufhin
überprüft werden kann, ob sie eine tatsächliche, d.h. korrekte, Lösung ist. Viele andere praktisch
relevante Probleme, für die kein effizienter Algorithmus bekannt ist, besitzen ebenfalls diese
Eigenschaft. Dies soll noch an einem weiteren Beispiel verdeutlicht werden, dem so genannten
Hamiltonkreis-Problem.
52
3 KOMPLEXITÄT
(
)
Sei wieder ein Graph G = {v1 , . . . vn }, E gegeben. Diesmal ist eine Rundreise entlang der
Kanten von G gesucht, die bei einem Knoten vi1 aus G startet, wieder bei vi1 endet und jeden
Knoten genau einmal besucht. Genauer wird diese Rundreise im Graphen G durch eine Folge von
n Knoten (vi1 , vi2 , vi3 , . . . , vin−1 , vin , ) beschrieben, wobei gelten soll, dass alle Knoten vi1 , . . . , vin
verschieden sind und die Kanten (vi1 , vi2 ), (vi2 , vi3 ), . . . , (vin−1 , vin ) und (vin , vi1 ) in G vorkommen. Eine solche Folge von Kanten wird als Hamiltonscher Kreis bezeichnet. Ein Hamiltonscher
Kreis in einem Graphen G ist also ein Kreis, der jeden Knoten des Graphen genau einmal besucht. Das Problem, einen Hamiltonschen Kreis in einem Graphen zu finden, bezeichnet man
mit HAMILTON:
Problem:
Eingabe:
Frage:
HAMILTON
Ein Graph G
Hat G einen Hamiltonschen Kreis?
Auch für dieses Problem ist kein effizienter Algorithmus bekannt. Aber auch hier ist offensichtlich: Bekommt man einen Graphen gegeben und eine Folge von Knoten, dann kann man sehr
leicht überprüfen, ob sie ein Hamiltonscher Kreis ist – dazu ist lediglich zu testen, ob alle Knoten
genau einmal besucht werden und auch alle Kanten im gegebenen Graphen vorhanden sind.
Hat man erst einmal die Beobachtung gemacht, dass viele Probleme die Eigenschaft der effizienten Überprüfbarkeit haben, ist es naheliegend, sie in einer Klasse zusammenzufassen und
gemeinsam zu untersuchen. Die Hoffnung dabei ist, dass sich alle Aussagen, die man über diese
Klasse herausfindet, sofort auf alle Probleme anwenden lassen. Solche Überlegungen führten zur
Geburt der Klasse NP, in der man alle effizient überprüfbaren Probleme zusammenfasst. Aber
wie kann man solch eine Klasse untersuchen? Man hat ja noch nicht einmal ein Maschinenmodell
(oder eine Programmiersprache) zur Verfügung, um solch eine Eigenschaft zu modellieren. Um
ein Programm für effizient überprüfbare Probleme zu schreiben, braucht man erst eine Möglichkeit, die zu überprüfenden möglichen Lösungen zu ermitteln und sie dann zu testen, d.h. man
muss die Programmiersprache für NP in einer geeigneten Weise mit mehr Berechnungskraft“
”
ausstatten.
Die erste Lösungsidee für NP-Probleme, nämlich alle in Frage kommenden Lösungen in einer
for-Schleife aufzuzählen, führt zu Exponentialzeit-Lösungsalgorithmen, denn es gibt im Allgemeinen einfach so viele potenzielle Lösungen. Um erneut auf das Problem 3COL zurückzukommen: Angenommen, G ist ein Graph mit n Knoten. Dann gibt es 3n potenzielle Färbungen, die
überprüft werden müssen, denn es gibt 3 Möglichkeiten den ersten Knoten zu färben, 3 Möglichkeiten den zweiten Knoten zu färben, usw., und damit 3n viele zu überprüfende potenzielle
Färbungen. Würde man diese in einer for-Schleife aufzählen und auf Korrektheit testen, so führte das also zu einem Exponentialzeit-Algorithmus. Auf der anderen Seite gibt es aber Probleme,
die in Exponentialzeit gelöst werden können, aber nicht zu der Intuition der effizienten Überprüfbarkeit der Klasse NP passen. Das Berechnungsmodell für NP kann also nicht einfach so
gewonnen werden, dass exponentielle Laufzeit zugelassen wird, denn damit wäre man über das
Ziel hinausgeschossen.
Hätte man einen Parallelrechner zur Verfügung mit so vielen Prozessoren wie es potenzielle
Lösungen gibt, dann könnte man das Problem schnell lösen, denn jeder Prozessor kann unabhängig von allen anderen Prozessoren eine potenzielle Färbung überprüfen. Es zeigt sich aber,
dass auch dieses Berechnungsmodell zu mächtig wäre. Es gibt Probleme, die wahrscheinlich nicht
im obigen Sinne effizient überprüfbar sind, aber mit solch einem Parallelrechner trotzdem (effizient) gelöst werden könnten. In der Praxis würde uns ein derartiger paralleler Algorithmus
auch nichts nützen, da man einen Rechner mit exponentiell vielen Prozessoren, also enormem
Hardwareaufwand, zu konstruieren hätten. Also muss auch dieses Berechnungsmodell wieder
etwas schwächer gemacht werden.
Eine Abschwächung der gerade untersuchten Idee des Parallelrechners führt zu folgendem Vorgehen: Man rät“ für den ersten Knoten eine beliebige Farbe, dann für den zweiten Knoten
”
3.2 Effizient überprüfbare Probleme: die Klasse NP
Beispielgraph:
Farbe[1] := guess(3);
Berechnungsbaum:
1
2
53
2
3
1
Farbe[2] := guess(3);
3
1
2
3
1
2
3
1
2
3
Farbe[3] := guess(3);
1 2
3 1 2
3 1 2
3 1 2
3 1 2
3 1 2
3 1 2
3 1 2
3 1 2
3
korrekt
korrekt
korrekt
korrekt
korrekt
korrekt
Überprüfungsphase
Abbildung 8: Ein Berechnungsbaum für das 3COL-Problem
auch wieder eine beliebige Farbe, solange bis für den letzten Knoten eine Farbe gewählt wurde.
Danach überprüft man die geratene Färbung und akzeptiert die Eingabe, wenn die geratene
Färbung eine korrekte Knotenfärbung ist. Die Eingabe ist eine positive Eingabeinstanz des NPProblems 3COL, falls es eine potenzielle Lösung (Färbung) gibt, die sich bei der Überprüfung
als korrekt herausstellt, d.h. im beschriebenen Rechnermodell: falls es eine Möglichkeit zu raten
gibt, sodass am Ende akzeptiert (Wert 1 ausgegeben) wird. Man kann also die Berechnung durch
einen Baum mit 3-fachen Verzweigungen darstellen (vgl. Abbildung 8). An den Kanten des Baumes findet sich das Resultat der Rateanweisung der darüberliegenden Verzweigung. Jeder Pfad
in diesem sogenannten Berechnungsbaum entspricht daher einer Folge von Farbzuordnungen an
die Knoten, d.h. einer potenziellen Färbung. Der Graph ist 3-färbbar, falls sich auf mindestens
einem Pfad eine korrekte Färbung ergibt, falls also auf mindestens einem Pfad die Überprüfungsphase erfolgreich ist; der Beispielgraph besitzt sechs korrekte 3-Färbungen, ist also eine positive
Instanz des 3COL-Problems.
Eine weitere, vielleicht intuitivere Vorstellung für die Arbeitsweise dieser NP-Maschine ist die,
dass bei jedem Ratevorgang 3 verschiedene unabhängige Prozesse gestartet werden, die aber nicht
miteinander kommunizieren dürfen. In diesem Sinne hat man es hier mit einem eingeschränkten
Parallelrechner zu tun: Beliebige Aufspaltung (fork) ist erlaubt, aber keine Kommunikation
zwischen den Prozessen ist möglich. Würde man Kommunikation zulassen, hätte man erneut
den allgemeinen Parallelrechner mit exponentiell vielen Prozessoren von oben, der sich ja als zu
mächtig für NP herausgestellt hat.
Es hat sich also gezeigt, dass eine Art Rateanweisung“ benötigt wird. In der Programmierspra”
che für NP verwendet man dazu das neue Schlüsselwort guess(m), wobei m die Anzahl von
Möglichkeiten ist, aus denen eine geraten wird, und legt fest, dass auch die Anweisung guess(m)
nur einen Takt Zeit für ihre Abarbeitung benötigt. Berechnungen, die, wie soeben beschrieben,
verschiedene Möglichkeiten raten können, heißen nichtdeterministisch. Es sei wiederholt, dass
festgelegt (definiert) wird, dass ein nichtdeterministischer Algorithmus bei einer Eingabe den
Wert 1 berechnet, falls eine Möglichkeit geraten werden kann, sodass der Algorithmus auf die
Anweisung return 1“ stößt. Die Klasse NP umfasst nun genau die Probleme, die von nicht”
deterministischen Algorithmen mit polynomieller Laufzeit gelöst werden können. NP“ steht
”
dabei für nichtdeterministische Polynomialzeit“, nicht etwa, wie mitunter zu lesen, für Nicht”
”
Polynomialzeit“. (Eine formale Präsentation der Äquivalenz zwischen effizienter Überprüfbarkeit
und Polynomialzeit in der NP-Programmiersprache findet sich z.B. in [GJ79, Kapitel 2.3].)
Mit Hilfe eines nichtdeterministischen Algorithmus kann das 3COL-Problem in Polynomialzeit
gelöst werden (siehe Algorithmus 6). Die zweite Phase von Algorithmus 6, die Überprüfungsphase, entspricht dabei genau dem oben angegebenen Algorithmus zum effizienten Überprüfen von
54
3 KOMPLEXITÄT
möglichen Lösungen des 3COL-Problems (vgl. Algorithmus 5).
Algorithmus 6 : Ein nichtdeterministischer Algorithmus für 3COL
Data : Graph G = ({v1 , . . . vn }, E)
Result : 1 wenn eine Färbung existiert, 0 sonst
begin
/* Ratephase */
for (i = 1 to n) do
Farbe[i] = guess(3);
end
/* Überprüfungsphase */
for (i = 1 to n) do
for (j = 1 to n) do
if (((vi , vj ) ∈ E) und (vi und vj sind gleich gefärbt)) then
return 0;
end
end
end
return 1;
end
Dieser nichtdeterministische Algorithmus läuft in Polynomialzeit, denn man benötigt für einen
Graphen mit n Knoten mindestens n Bits um ihn zu speichern (kodieren), und der Algorithmus
braucht im schlechtesten Fall O(n) (Ratephase) und O(n2 ) (Überprüfungsphase), also insgesamt
O(n2 ) Takte Zeit. Damit ist gezeigt, dass 3COL in der Klasse NP enthalten ist, denn es wurde
ein nichtdeterministischer Polynomialzeitalgorithmus gefunden, der 3COL löst. Ebenso einfach
könnte man nun einen nichtdeterministischen Polynomialzeitalgorithmus entwickeln, der das
Problem HAMILTON löst: Der Algorithmus wird in einer ersten Phase eine Knotenfolge raten
und dann in einer zweiten Phase überprüfen, dass die Bedingungen, die an einen Hamiltonschen
Kreis gestellt werden, bei der geratenen Folge erfüllt sind. Dies zeigt, dass auch HAMILTON in
der Klasse NP liegt.
Dass eine nichtdeterministische Maschine nicht gebaut werden kann, spielt hier keine Rolle.
Nichtdeterministische Berechnungen sollen hier lediglich als Gedankenmodell für unsere Untersuchungen herangezogen werden, um Aussagen über die (Nicht-) Existenz von effizienten
Algorithmen machen zu können.
3.3. Schwierigste Probleme in NP: der Begriff der NP-Vollständigkeit
Es ist nun klar, was es bedeutet, dass ein Problem in NP liegt. Es liegt aber auch auf der Hand,
dass alle Probleme aus P auch in NP liegen, da bei der Einführung von NP ja nicht verlangt
wurde, dass die guess-Anweisung verwendet werden muss. Damit ist jeder deterministische
Algorithmus automatisch auch ein (eingeschränkter) nichtdeterministischer Algorithmus. Nun
ist aber auch schon bekannt, dass es Probleme in NP gibt, z.B. 3COL und weitere Probleme,
von denen nicht bekannt ist, ob sie in P liegen. Das führt zu der Vermutung, dass P ̸= NP.
Es gibt also in NP anscheinend unterschiedlich schwierige Probleme: einerseits die P-Probleme
(also die leichten Probleme), und andererseits die Probleme, von denen man nicht weiß, ob sie
in P liegen (die schweren Probleme). Es liegt also nahe, eine allgemeine Möglichkeit zu suchen,
Probleme in NP bezüglich ihrer Schwierigkeit zu vergleichen. Ziel ist, wie oben erläutert, eine Art
von unterer Schranke für Probleme wie 3COL: Es soll gezeigt werden, dass 3COL mindestens so
schwierig ist, wie jedes andere Problem in NP, also in gewissem Sinne ein schwierigstes Problem
in NP ist.
Für diesen Vergleich der Schwierigkeit ist die erste Idee natürlich, einfach die Laufzeit von
(bekannten) Algorithmen für das Problem heranzuziehen. Dies ist jedoch nicht erfolgverspre-
3.3 Schwierigste Probleme in NP: der Begriff der NP-Vollständigkeit
55
chend, denn was soll eine größte“ Laufzeit sein, die Programme für schwierigste“ Probleme
”
”
in NP ja haben müssten? Außerdem hängt die Laufzeit eines Algorithmus vom verwendeten
Berechnungsmodell ab. So kennen Turingmaschinen keine Arrays im Gegensatz zu der hier verwendeten C-Variante. Also würde jeder Algorithmus, der Arrays verwendet, auf einer Turingmaschine mühsam simuliert werden müssen und damit langsamer abgearbeitet werden, als bei
einer Hochsprache, die Arrays enthält. Obwohl sich die Komplexität eines Problems nicht ändert,
würde man sie verschieden messen, je nachdem welches Berechnungsmodell verwendet würde.
Ein weiterer Nachteil dieses Definitionsversuchs wäre es, dass die Komplexität (Schwierigkeit)
eines Problems mit bekannten Algorithmen gemessen würde. Das würde aber bedeuten, dass
jeder neue und schnellere Algorithmus Einfluss auf die Komplexität hätte, was offensichtlich so
keinen Sinn macht. Aus diesen und anderen Gründen führt die erste Idee nicht zum Ziel.
Eine zweite, erfolgversprechendere Idee ist die folgende: Ein Problem A ist nicht (wesentlich)
schwieriger als ein Problem B, wenn man A mit der Hilfe von B (als Unterprogramm) effizient
lösen kann. Ein einfaches Beispiel ist die Multiplikation von n Zahlen. Angenommen, man hat
schon ein Programm, dass 2 Zahlen multiplizieren kann; dann ist es nicht wesentlich schwieriger,
auch n Zahlen zu multiplizieren, wenn die Routine für die Multiplikation von 2 Zahlen verwendet
wird. Dieser Ansatz ist unter dem Namen relative Berechenbarkeit bekannt, der genau den oben
beschriebenen Sachverhalt widerspiegelt: Multiplikation von n Zahlen (so genannte iterierte
Multiplikation) ist relativ zur Multiplikation zweier Zahlen (leicht) berechenbar.
Da das Prinzip der relativen Berechenbarkeit so allgemein gehalten ist, gibt es innerhalb der
theoretischen Informatik sehr viele verschiedene Ausprägungen dieses Konzepts. Für die PNP-Problematik ist folgende Version der relativen Berechenbarkeit, d.h. die folgende Art von
erlaubten Unterprogrammaufrufen“, geeignet:
”
Seien zwei Probleme A und B gegeben. Das Problem A ist nicht schwerer als B, falls es eine
effizient zu berechnende Transformation T gibt, die Folgendes leistet: Wenn x eine Eingabeinstanz von Problem A ist, dann ist T (x) eine Eingabeinstanz für B. Weiterhin gilt: x ist genau
dann eine positive Instanz von A (d.h. ein Entscheidungsalgorithmus für A muss den Wert 1
für Eingabe x liefern), wenn T (x) eine positive Instanz von Problem B ist. Erneut soll effizient
”
berechenbar“ hier bedeuten: in Polynomialzeit berechenbar. Es muss also einen Polynomialzeitalgorithmus geben, der die Transformation T ausführt. Das Entscheidungsproblem A ist damit
effizient transformierbar in das Problem B. Man sagt auch: A ist reduzierbar auf B; oder intuitiver: A ist nicht schwieriger als B, oder B ist mindestens so schwierig wie A. Formal schreibt
man dann A ≤ B.
Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine
solche Transformation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren, wenn ein
Algorithmus für A angegeben werden kann, der ein Unterprogramm UB für B genau so verwendet
wie in Algorithmus 7 gezeigt.
Dabei ist zu beachten, dass das Unterprogramm für B nur genau einmal und zwar am Ende
aufgerufen werden darf. Das Ergebnis des Algorithmus für A ist genau das Ergebnis, das dieser
Unterprogrammaufruf liefert. Es gibt zwar, wie oben erwähnt, auch allgemeinere Ausprägungen
der relativen Berechenbarkeit, die diese Einschränkung nicht haben, diese sind aber für die
folgenden Untersuchungen nicht relevant.
Nachdem nun ein Vergleichsbegriff für die Schwierigkeit von Problemen aus NP gefunden wurde, kann auch definiert werden, was unter einem schwierigsten“ Problem in NP zu verstehen ist.
”
Ein Problem C ist ein schwierigstes Problem NP, wenn alle anderen Probleme in NP höchstens
so schwer wie C sind. Formaler ausgedrückt sind dazu zwei Eigenschaften von C nachzuweisen:
(1) C ist ein Problem aus NP.
(2) C ist mindestens so schwierig wie jedes andere NP-Problem A; d.h.: für alle Probleme A
aus NP gilt: A ≤ C.
56
3 KOMPLEXITÄT
Algorithmus 7 : Algorithmische Darstellung der Benutzung einer Reduktionsfunktion
Data : Instanz x für das Problem A
Result : 1 wenn x ∈ A und 0 sonst
begin
/* T ist die Reduktionsfunktion (polynomialzeitberechenbar) */
berechne y = T (x);
/* y ist Instanz des Problems B */
z = UB (y);
/* z ist 1 genau dann, wenn x ∈ A gilt */
return z;
end
Solche schwierigsten Probleme in NP sind unter der Bezeichnung NP-vollständige Probleme
bekannt. Nun sieht die Aufgabe, von einem Problem zu zeigen, dass es NP-vollständig ist,
ziemlich hoffnungslos aus. Immerhin ist zu zeigen, dass für alle Probleme aus NP – und damit
unendlich viele – gilt, dass sie höchstens so schwer sind wie das zu untersuchende Problem, und
damit scheint man der Schwierigkeit beim Nachweis unterer Schranken nicht entgangen zu sein.
Dennoch konnten der russische Mathematiker Leonid Levin und der amerikanische Mathematiker
Stephan Cook Anfang der siebziger Jahre des letzten Jahrhunderts unabhängig voneinander die
Existenz von solchen NP-vollständigen Problemen zeigen. Hat man nun erst einmal ein solches
Problem identifiziert, ist die Aufgabe, weitere NP-vollständige Probleme zu finden, wesentlich
leichter. Dies ist sehr leicht einzusehen: Ein NP-Problem C ist ein schwierigstes Problem in NP,
wenn es ein anderes schwierigstes Problem B gibt, sodass C nicht leichter als B ist. Das führt
zu folgendem Kochrezept“:
”
Nachweis der NP-Vollständigkeit eines Problems C:
(1) Zeige, dass C in NP enthalten ist, indem dafür ein geeigneter nichtdeterministischer Polynomialzeitalgorithmus konstruiert wird.
(2) Suche ein geeignetes ähnliches“ schwierigstes Problem B in NP und zeige, dass C nicht
”
leichter als B ist. Formal: Finde ein NP-vollständiges Problem B und zeige B ≤ C mit Hilfe
einer geeigneten Transformation T .
Den zweiten Schritt kann man oft relativ leicht mit Hilfe von bekannten Sammlungen NPvollständiger Problemen erledigen. Das Buch von Garey und Johnson [GJ79] ist eine solche
Sammlung (siehe auch die Abbildungen 10 und 11), die mehr als 300 NP-vollständige Probleme
enthält. Dazu wählt man ein möglichst ähnliches Problem aus und versucht dann eine geeignete
Reduktionsfunktion für das zu untersuchende Problem zu finden.
3.3.1. Traveling Salesperson ist NP-vollständig
Wie kann man zeigen, dass Traveling Salesperson NP-vollständig ist? Dazu wird zuerst die
genaue Definition dieses Problems benötigt:
Problem:
Eingabe:
Frage:
TRAVELING SALESPERSON (TSP)
Eine Menge von Städten C = {c1 , . . . , cn } und eine n×n Entfernungsmatrix D,
wobei das Element D[i, j] der Matrix D die Entfernung zwischen Stadt ci und
cj angibt. Weiterhin eine Obergrenze k ≥ 0 für die maximal erlaubte Länge
der Tour
Gibt es eine Rundreise, die einerseits alle Städte besucht, aber andererseits
eine Gesamtlänge von höchstens k hat?
3.4 Die Auswirkungen der NP-Vollständigkeit
Aus dem Graphen G links berechnet die
Transformation die rechte Eingabe für
das TSP. Die dick gezeichneten Verbindungen deuten eine Entfernung von 1 an,
wogegen dünne Linien eine Entfernung
von 6 symbolisieren. Weil G den Hamiltonkreis 1, 2, 3, 4, 5, 1 hat, gibt es rechts
eine Rundreise 1, 2, 3, 4, 5, 1 mit Gesamtlänge 5.
Im Gegensatz dazu berechnet die Transformation hier aus dem Graphen G′ auf
der linken eine Eingabe für das TSP auf
der rechten Seite, die, wie man sich leicht
überzeugt, keine Rundreise mit einer maximalen Gesamtlänge von 5 hat. Dies
liegt daran, dass der ursprüngliche Graph
G′ keinen Hamiltonschen Kreis hatte.
57
G
4
5
1
G’
5
1
C
4
3
5
3
2
1
2
4
C’
4
3
5
3
2
1
2
Abbildung 9: Beispiele für die Wirkungsweise von Algorithmus 8
Nun zum ersten Schritt des Nachweises der NP-Vollständigkeit von TSP: Offensichtlich gehört
auch das Traveling Salesperson Problem zur Klasse NP, denn man kann nichtdeterministisch
eine Folge von n Städten raten (eine potenzielle Rundreise) und dann leicht überprüfen, ob diese
potenzielle Tour durch alle Städte verläuft und ob die zurückzulegende Entfernung maximal
k beträgt. Ein entsprechender nichtdeterministischer Polynomialzeitalgorithmus ist leicht zu
erstellen. Damit ist der erste Schritt zum Nachweis der NP-Vollständigkeit von TSP getan und
Punkt (1) des Kochrezepts“ abgehandelt.
”
Als nächstes (Punkt (2)) soll von einem anderen NP-vollständigen Problem gezeigt werden,
dass es effizient in TSP transformiert werden kann. Geeignet dazu ist das im Text betrachtete
Hamitonkreis-Problem, das bekanntermaßen NP-vollständig ist. Es ist also zu zeigen: HAMILTON ≤ TSP.
Folgende Idee führt zum Ziel: Gegeben ist eine Instanz G = (V, E) von HAMILTON. Transformiere G in folgende Instanz von TSP: Als Städtemenge C wählen wir die Knoten V des Graphen
G. Die Entfernungen zwischen den Städten sind definiert wie folgt: D[i, j] = 1, falls es in E eine
Kante von Knoten i zu Knoten j gibt, ansonsten setzt man D[i, j] auf einen sehr großen Wert,
also z.B. n + 1, wenn n die Anzahl der Knoten von G ist. Dann gilt klarerweise: Wenn G einen
Hamiltonschen Kreis besitzt, dann ist der gleiche Kreis eine Rundreise in C mit Gesamtlänge
n. Wenn G keinen Hamiltonschen Kreis besitzt, dann kann es keine Rundreise durch die Städte
C mit Länge höchstens n geben, denn jede Rundreise muss mindestens eine Strecke von einer
Stadt i nach einer Stadt j zurücklegen, die keiner Kante in G entspricht (denn ansonsten hätte
G ja einen Hamiltonschen Kreis). Diese einzelne Strecke von i nach j hat dann aber schon Länge
n + 1 und damit ist eine Gesamtlänge von n oder weniger nicht mehr erreichbar. Die Abbildung
9 zeigt zwei Beispiele für die Wirkungsweise der Transformation, die durch Algorithmus 8 in
Polynomialzeit berechnet wird.
3.4. Die Auswirkungen der NP-Vollständigkeit
Welche Bedeutung haben nun die NP-vollständigen Probleme für die Klasse NP? Könnte jemand einen deterministischen Polynomialzeitalgorithmus AC für ein NP-vollständiges Problem
C angeben, dann hätte man für jedes NP-Problem einen Polynomialzeitalgorithmus gefunden
58
3 KOMPLEXITÄT
(d.h. P = NP). Diese überraschende Tatsache lässt sich leicht einsehen, denn für jedes Problem
A aus NP gibt es eine Transformation T mit der Eigenschaft, dass x genau dann eine positive
Eingabeinstanz von A ist, wenn T (x) eine positive Instanz von C ist. Damit löst Algorithmus 9
das Problem A in Polynomialzeit. Es gilt also: Ist irgendein NP-vollständiges Problem effizient
lösbar, dann ist P = NP.
Sei nun angenommen, dass jemand P ̸= NP gezeigt hat. In diesem Fall ist aber auch klar,
dass dann für kein NP-vollständiges Problem ein Polynomialzeitalgorithmus existieren kann,
denn sonst würde sich ja der Widerspruch P = NP ergeben. Ist das Problem C also NPvollständig, so gilt: C hat genau dann einen effizienten Algorithmus, wenn P = NP, also wenn
jedes Problem in NP einen effizienten Algorithmus besitzt. Diese Eigenschaft macht die NPvollständigen Probleme für die Theoretiker so interessant, denn eine Klasse von unendlich vielen
Problemen kann untersucht werden, indem man nur ein einziges Problem betrachtet. Man kann
sich das auch wie folgt vorstellen: Alle relevanten Eigenschaften aller Probleme aus NP wurden
in ein einziges Problem destilliert“. Die NP-vollständigen Probleme sind also in diesem Sinn
”
prototypische NP-Probleme.
Trotz intensiver Bemühungen in den letzten 30 Jahren konnte bisher niemand einen Polynomialzeitalgorithmus für ein NP-vollständiges Problem finden. Dies ist ein Grund dafür, dass
man heute P ̸= NP annimmt. Leider konnte auch dies bisher nicht gezeigt werden, aber in der
theoretischen Informatik gibt es starke Indizien für die Richtigkeit dieser Annahme, sodass heute
die große Mehrheit der Forscher von P ̸= NP ausgeht.
Für die Praxis bedeutet dies Folgendes: Hat man von einem in der Realität auftretenden Problem gezeigt, dass es NP-vollständig ist, dann kann man getrost aufhören, einen effizienten
Algorithmus zu suchen. Wie wir ja gesehen haben, kann ein solcher nämlich (zumindest unter
der gut begründbaren Annahme P ̸= NP) nicht existieren.
Nun ist auch eine Antwort für das 3COL-Problem gefunden. Es wurde gezeigt [GJ79], dass
kCOL für k ≥ 3 NP-vollständig ist. Der fiktive Mobilfunkplaner hat also Pech gehabt: Es ist
unwahrscheinlich, dass er jemals ein korrektes effizientes Planungsverfahren finden wird.
Ein NP-Vollständigkeitsnachweis eines Problems ist also ein starkes Indiz für seine praktische
Nicht-Handhabbarkeit. Auch die NP-Vollständigkeit eines Problems, das mit dem Spiel Minesweeper zu tun hat, bedeutet demnach lediglich, dass dieses Problem höchstwahrscheinlich
nicht effizient lösbar sein wird. Ein solcher Vollständigkeitsbeweis hat nichts mit einem Schritt
?
in Richtung auf eine Lösung des P = NP-Problems zu tun, wie irreführenderweise gelegentlich
zu lesen ist. Übrigens ist auch für eine Reihe weiterer Spiele ihre NP-Vollständigkeit bekannt.
Dazu gehören u.a. bestimmte Puzzle- und Kreuzwortspiele. Typische Brettspiele, wie Dame,
Schach oder GO, sind hingegen (verallgemeinert auf Spielbretter der Größe n × n) PSPACEvollständig. Die Klasse PSPACE ist eine noch deutlich mächtigere Klasse als NP. Damit sind
also diese Spiele noch viel komplexer als Minesweeper und andere NP-vollständige Probleme.
3.5. Der Umgang mit NP-vollständigen Problemen in der Praxis
Viele in der Praxis bedeutsame Probleme sind NP-vollständig (vgl. die Abbildungen 10 und
11). Ein Anwendungsentwickler wird es aber sicher schwer haben, seinem Management mitteilen
zu müssen, dass ein aktuelles Projekt nicht durchgeführt werden kann, weil keine geeigneten
Algorithmen zur Verfügung stehen (Wahrscheinlich würden in diesem Fall einfach geeignetere“
”
Entwickler eingestellt werden!). Es stellt sich daher also die Frage, wie man mit solchen NPvollständigen Problemen in der Praxis umgeht. Zu dieser Fragestellung hat die theoretische
Informatik ein ausgefeiltes Instrumentarium entwickelt.
Eine erste Idee wäre es, sich mit Algorithmen zufrieden zu geben, die mit Zufallszahlen arbeiten und die nur mit sehr großer Wahrscheinlichkeit die richtige Lösung berechnen, aber sich
auch mit kleiner (vernachlässigbarer) Wahrscheinlichkeit irren dürfen. Solche Algorithmen sind
als probabilistische oder randomisierte Algorithmen bekannt [MR95] und werden beispielsweise
in der Kryptographie mit sehr großem Erfolg angewendet. Das prominenteste Beispiel hierfür
3.5 Der Umgang mit NP-vollständigen Problemen in der Praxis
59
Problemnummern in [. . . ]“ beziehen sich auf die Sammlung von Garey und Johnson [GJ79].
”
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
CLUSTER [GT19]
Netzwerk G = (V, E), positive Integerzahl K
Gibt es eine Menge von mindestens
K Knoten, die paarweise miteinander verbunden sind?
NETZ-AUFTEILUNG [ND16]
Netzwerk G = (V, E), Kapazität für
jede Kante in E, positive Integerzahl K
Kann man das Netzwerk so in zwei
Teile zerlegen, dass die Gesamtkapazität aller Verbindungen zwischen
den beiden Teilen mindestens K beträgt?
NETZ-REDUNDANZ [ND18]
Netzwerk G = (V, E), Kosten für
Verbindungen zwischen je zwei Knoten aus V , Budget B
Kann G so um Verbindungen erweitert werden, dass zwischen je zwei
Knoten mindestens zwei Pfade existieren und die Gesamtkosten für
die Erweiterung höchstens B betragen?
OBJEKTE SPEICHERN [SR1]
Eine Menge U von Objekten mit
Speicherbedarf s(u) für jedes u ∈ U ;
Kachelgröße S, positive Integerzahl
K
Können die Objekte in U auf K Kacheln verteilt werden?
DATENKOMPRESSION [SR8]
Endliche Menge R von Strings über
festgelegtem Alphabet, positive Integerzahl K
Gibt es einen String S der Länge
höchstens K, sodass jeder String aus
R als Teilfolge von S vorkommt?
K-SCHLÜSSEL [SR26]
Relationales Datenbankschema, gegeben durch Attributmenge A und
funktionale Abhängigkeiten auf A,
positive Integerzahl K
Gibt es einen Schlüssel mit höchstens K Attributen?
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
BCNF [SR29]
Relationales Datenbankschema, gegeben durch Attributmenge A und
funktionale Abhängigkeiten auf A,
Teilmenge A′ ⊆ A
Verletzt die Menge A′ die BoyceCodd-Normalform?
MP-SCHEDULE [SS8]
Menge T von Tasks, Länge für jede Task, Anzahl m von Prozessoren,
Positive Integerzahl D ( Deadline“)
”
Gibt es ein m-Prozessor-Schedule
für T mit Ausführungszeit höchstens D?
PREEMPT-SCHEDULE [SS12]
Menge T von Tasks, Länge für jede Task, Präzedenzrelation auf den
Tasks, Anzahl m von Prozessoren,
Positive Integerzahl D ( Deadline“)
”
Gibt es ein m-Prozessor-Schedule
für T , das die Präzedenzrelationen
berücksichtigt und Ausführungszeit
höchstens D hat?
DEADLOCK [SS22]
Menge von Prozessen, Menge von
Ressourcen, aktuelle Zustände der
Prozesse und aktuell allokierte Ressourcen
Gibt es einen Kontrollfluss, der zum
Deadlock führt?
K-REGISTER [PO3]
Menge V von Variablen, die in einer Schleife benutzt werden, für
jede Variable einen Gültigkeitsbereich, positive Integerzahl K
Können die Schleifenvariablen mit
höchstens K Registern gespeichert
werden?
REKURSION [PO20]
Menge A von Prozedur-Identifiern,
Pascal-Programmfragment mit Deklarationen und Aufrufen der Prozeduren aus A
Ist eine der Prozeduren aus A formal rekursiv?
Abbildung 10: Eine kleine Sammlung NP-vollständiger Probleme (Teil 1)
60
3 KOMPLEXITÄT
Problemnummern in [. . . ]“ beziehen sich auf die Sammlung von Garey und Johnson [GJ79].
”
Problem:
Eingabe:
Frage:
Problem:
Eingabe:
Frage:
LR(K)-GRAMMATIK [AL15]
Kontextfreie Grammatik G, positive Integerzahl K (unär)
Ist die Grammatik G nicht LR(K)?
Zwangsbedingungen [LO5]
Menge von Booleschen Constraints,
positive Integerzahl K
Können mindestens K der Constraints gleichzeitig erfüllt werden?
Problem:
Eingabe:
Frage:
INTEGER PROGRAM [MP1]
Lineares Programm
Hat das Programm eine Lösung, die
nur ganzzahlige Werte enthält?
Problem:
Eingabe:
KREUZWORTRÄTSEL [GP15]
Menge W von Wörtern, Gitter mit
schwarzen und weißen Feldern
Können die weißen Felder des Gitters mit Wörtern aus W gefüllt werden?
Frage:
Abbildung 11: Eine kleine Sammlung NP-vollständiger Probleme (Teil 2)
sind Algorithmen, die testen, ob eine gegebene Zahl eine Primzahl ist und sich dabei fast nie
irren. Primzahlen spielen bekanntermaßen im RSA-Verfahren und damit bei PGP und ähnlichen Verschlüsselungen eine zentrale Rolle. Es konnte aber gezeigt werden, dass probabilistische
Algorithmen uns bei den NP-vollständigen Problemen wohl nicht weiterhelfen. So weiß man
heute, dass die Klasse der Probleme, die sich mit probabilistischen Algorithmen effizient lösen
lässt, höchstwahrscheinlich nicht die Klasse NP umfasst. Deshalb liegen (höchstwahrscheinlich)
insbesondere alle NP-vollständigen Probleme außerhalb der Möglichkeiten von effizienten probabilistischen Algorithmen.
Nun könnte man auch versuchen, exotischere“ Computer zu bauen. In der letzten Zeit sind
”
zwei potenzielle Auswege bekannt geworden: DNA-Computer und Quantencomputer.
Es konnte gezeigt werden, dass DNA-Computer (siehe [Pău98]) jedes NP-vollständige Problem
in Polynomialzeit lösen können. Für diese Berechnungsstärke hat man aber einen Preis zu zahlen:
Die Anzahl und damit die Masse der DNA-Moleküle, die für die Berechnung benötigt werden,
wächst exponentiell in der Eingabelänge. Das bedeutet, dass schon bei recht kleinen Eingaben
mehr Masse für eine Berechnung gebraucht würde, als im ganzen Universum vorhanden ist.
Bisher ist kein Verfahren bekannt, wie dieses Masseproblem gelöst werden kann, und es sieht
auch nicht so aus, als ob es gelöst werden kann, wenn P ̸= NP gilt. Dieses Problem erinnert
an das oben im Kontext von Parallelrechnern schon erwähnte Phänomen: Mit exponentiell vielen Prozessoren lassen sich NP-vollständige Probleme lösen, aber solche Parallelrechner haben
natürlich explodierende Hardware-Kosten.
Der anderer Ausweg könnten Quantencomputer sein (siehe [Hom08, Gru99]). Hier scheint die Situation zunächst günstiger zu sein: Die Fortschritte bei der Quantencomputer-Forschung verlaufen immens schnell, und es besteht die berechtigte Hoffnung, dass Quantencomputer mittelfristig
verfügbar sein werden. Aber auch hier sagen theoretische Ergebnisse voraus, dass Quantencomputer (höchstwahrscheinlich) keine NP-vollständigen Probleme lösen können. Trotzdem sind
Quantencomputer interessant, denn es ist bekannt, dass wichtige Probleme existieren, für die
kein Polynomialzeitalgorithmus bekannt ist und die wahrscheinlich nicht NP-vollständig sind,
die aber auf Quantencomputern effizient gelöst werden können. Das prominenteste Beispiel hierfür ist die Aufgabe, eine ganze Zahl in ihre Primfaktoren zu zerlegen.
Die bisher angesprochenen Ideen lassen also die Frage, wie man mit NP-vollständigen Problemen umgeht, unbeantwortet. In der Praxis gibt es im Moment zwei Hauptansatzpunkte: Die erste
Möglichkeit ist die, die Allgemeinheit des untersuchten Problems zu beschränken und eine spezielle Version zu betrachten, die immer noch für die geplante Anwendung ausreicht. Zum Beispiel
sind Graphenprobleme oft einfacher, wenn man zusätzlich fordert, dass die Knoten des Graphen
in der (Euklidischen) Ebene lokalisiert sind. Deshalb sollte die erste Idee bei der Behandlung
von NP-vollständigen Problemen immer sein, zu untersuchen, welche Einschränkungen man an
3.5 Der Umgang mit NP-vollständigen Problemen in der Praxis
61
das Problem machen kann, ohne die praktische Aufgabenstellung zu verfälschen. Gerade diese
Einschränkungen können dann effiziente Algorithmen ermöglichen.
Die zweite Möglichkeit sind sogenannte Approximationsalgorithmen (vgl. [ACG+ 99]). Die Idee
hier ist es, nicht die optimalen Lösungen zu suchen, sondern sich mit einem kleinen garantierten
Fehler zufrieden zu geben. Dazu folgendes Beispiel. Es ist bekannt, dass das TSP auch dann noch
NP-vollständig ist, wenn man annimmt, dass die Städte in der Euklidischen Ebene lokalisiert
sind, d.h. man kann die Städte in einer fiktiven Landkarte einzeichnen, sodass die Entfernungen
zwischen den Städten proportional zu den Abständen auf der Landkarte sind. Das ist sicherlich in
der Praxis keine einschränkende Abschwächung des Problems und zeigt, dass die oben erwähnte
Methode nicht immer zum Erfolg führen muss: Hier bleibt auch das eingeschränkte Problem
NP-vollständig. Aber für diese eingeschränkte TSP-Variante ist ein Polynomialzeitalgorithmus
bekannt, der immer eine Rundreise berechnet, die höchstens um einen beliebig wählbaren Faktor schlechter ist, als die optimale Lösung. Ein Chip-Hersteller, der bei der Bestückung seiner
Platinen die Wege der Roboterköpfe minimieren möchte, kann also beschließen, sich mit einer
Tour zufrieden zu geben, die um 5 % schlechter ist als die optimale. Für dieses Problem existiert
ein effizienter Algorithmus! Dieser ist für die Praxis völlig ausreichend.
⋆ ⋆ ⋆ Ende ⋆ ⋆ ⋆
62
3 KOMPLEXITÄT
Algorithmus 8 : Ein Algorithmus für die Reduktion von HAMILTON auf TSP
Data : Graph G = (V, E), wobei V = {1, . . . , n}
Result : Eine Instanz (C, D, k) für TSP
begin
/* Die Knoten entsprechen den Städten */
C =V;
/* Überprüfe alle potentiell existierenden Kanten */
for (i = 1 to n) do
for (j = 1 to n) do
if ((vi , vj ) ∈ E) then
/* Kanten entsprechen kleinen Entfernungen
D[i][j] = 1;
else
/* nicht existierende Kante, dann sehr große Entfernung
D[i][j] = n + 1;
end
end
end
/* Gesamtlänge k der Rundreise ist Anzahl der Städte n
k = n;
/* Gebe die berechnete TSP-Instanz zurück
return (C, D, k);
end
*/
*/
*/
*/
Algorithmus 9 : Ein fiktiver Algorithmus für Problem A
Data : Instanz x für das Problem A
Result : true, wenn x ∈ A, false sonst
begin
/* T ist die postulierte Reduktionsfunktion */
y = T (x);
z = AC (y);
return z;
end
63
A. Grundlagen und Schreibweisen
A.1. Mengen
Es ist sehr schwer den fundamentalen Begriff der Menge mathematisch exakt zu definieren. Aus
diesem Grund soll uns hier die von Cantor 1895 gegebene Erklärung genügen, da sie für unsere
Zwecke völlig ausreichend ist:
Erklärung A.1 (Georg Cantor ([Can95])) Unter einer ,Menge’ verstehen wir jede Zusammenfassung M von bestimmten wohlunterschiedenen Objecten m unsrer Anschauung oder unseres Denkens (welche die ,Elemente’ von M genannt werden) zu einem Ganzen13 .
Für die Formulierung genau dann wenn“ verwenden wir im Folgenden die Abkürzung gdw. um
”
Schreibarbeit zu sparen.
A.1.1. Die Elementbeziehung und die Enthaltenseinsrelation
Definition A.2 Sei M eine beliebige Menge, dann ist
• a ∈ M gdw. a ist ein Element der Menge M ,
• a ̸∈ M gdw. a ist kein Element der Menge M ,
• M ⊆ N gdw. aus a ∈ M folgt a ∈ N (M ist Teilmenge von N ),
• M ̸⊆ N gdw. es gilt nicht M ⊆ N . Gleichwertig: es gibt ein a ∈ M mit a ̸∈ N (M ist
keine Teilmenge von N ) und
• M ⊂ N gdw. es gilt M ⊆ N und M ̸= N (M ist echte Teilmenge von N ).
Statt a ∈ M schreibt man auch M ∋ a, was in einigen Fällen zu einer deutlichen Vereinfachung
der Notation führt.
A.1.2. Definition spezieller Mengen
Spezielle Mengen können auf verschiedene Art und Weise definiert werden, wie z.B.
• durch Angabe von Elementen: So ist {a1 , . . . , an } die Menge, die aus den Elementen a1 ,
. . . , an besteht, oder
• durch eine Eigenschaft E: Dabei ist {a | E(a)} die Menge aller Elemente a, die die Eigenschaft14 E besitzen.
Beispiel A.3
• Mengen, die durch die Angabe von Elementen definiert sind:
– {0, 1}
– N =def {0, 1, 2, 3, 4, 5, 6, 7, 8, . . . } (Menge der natürlichen Zahlen)
– Z =def {. . . , −4, −3, −2, −1, 0, 1, 2, 3, 4, . . . } (Menge der ganzen Zahlen)
– 2Z =def {0, ±2, ±4, ±6, ±8, . . . } (Menge der geraden ganzen Zahlen)
– P =def {2, 3, 5, 7, 11, 13, 17, 19, . . . } (Menge der Primzahlen)
• Mengen, die durch eine Eigenschaft E definiert sind:
13
14
Diese Zitat entspricht der originalen Schreibweise von Cantor.
Die Eigenschaft E kann man dann auch als Prädikat bezeichnen.
64
A GRUNDLAGEN UND SCHREIBWEISEN
– {n | n ∈ N und n ist durch 3 teilbar}
– {n | n ∈ N und n ist Primzahl und n ≤ 40}
– ∅ =def {a | a ̸= a} (die leere Menge)
Aus Definition A.2 ergibt sich, dass die leere Menge ∅ Teilmenge jeder Menge ist.
A.1.3. Operationen auf Mengen
Definition A.4 Seien A und B beliebige Mengen, dann ist
• A ∩ B =def {a | a ∈ A und a ∈ B} (Schnitt von A und B),
• A ∪ B =def {a | a ∈ A oder a ∈ B} (Vereinigung von A und B),
• A \ B =def {a | a ∈ A und a ̸∈ B} (Differenz von A und B),
• A =def M \ A (Komplement von A bezüglich einer festen Grundmenge M ) und
• P(A) =def {B | B ⊆ A} (Potenzmenge von A).
Zwei Mengen A und B mit A ∩ B = ∅ nennt man disjunkt.
Beispiel A.5 Sei A = {2, 3, 5, 7} und B = {1, 2, 4, 6}, dann ist A ∩ B = {2}, A ∪ B =
{1, 2, 3, 4, 5, 6, 7} und A \ B = {3, 5, 7}. Wählen wir als Grundmenge die natürlichen Zahlen, also M = N, dann ist A = {n ∈ N | n ̸= 2 und n ̸= 3 und n ̸= 5 und n ̸= 7} =
{1, 4, 6, 8, 9, 10, 11, . . . }.
Als Potenzmenge der Menge A ergibt sich die folgende Menge von Mengen von natürlichen
Zahlen P(A) = {∅, {2}, {3}, {5}, {7}, {2, 3}, {2, 5}, {2, 7}, {3, 5}, {3, 7}, {5, 7}, {2, 3, 5}, {2, 3, 7},
{2, 5, 7}, {3, 5, 7}, {2, 3, 5, 7}}.
Offensichtlich sind die Menge {0, 2, 4, 6, 8, . . . } der geraden natürlichen Zahlen und die Menge
{1, 3, 5, 7, 9, . . . } der ungeraden natürlichen Zahlen disjunkt.
A.1.4. Gesetze für Mengenoperationen
Für die klassischen Mengenoperationen gelten die folgenden Beziehungen:
A∩B
A∪B
A ∩ (B ∩ C)
A ∪ (B ∪ C)
A ∩ (B ∪ C)
A ∪ (B ∩ C)
A∩A
A∪A
A ∩ (A ∪ B)
A ∪ (A ∩ B)
A∩B
A∪B
A
=
=
=
=
=
=
=
=
=
=
=
=
=
B∩A
B∪A
(A ∩ B) ∩ C
(A ∪ B) ∪ C
(A ∩ B) ∪ (A ∩ C)
(A ∪ B) ∩ (A ∪ C)
A
A
A
A
(A ∪ B)
(A ∩ B)
A
Kommutativgesetz für den Schnitt
Kommutativgesetz für die Vereinigung
Assoziativgesetz für den Schnitt
Assoziativgesetz für die Vereinigung
Distributivgesetz
Distributivgesetz
Duplizitätsgesetz für den Schnitt
Duplizitätsgesetz für die Vereinigung
Absorptionsgesetz
Absorptionsgesetz
de-Morgansche Regel
de-Morgansche Regel
Gesetz des doppelten Komplements
Die de-Morganschen Regeln“ wurden nach dem englischen Mathematiker Augustus De Mor”
gan15 benannt.
15
b1806 in Madurai, Tamil Nadu, Indien - d1871 in London, England
A.1 Mengen
65
Als Abkürzung schreibt man statt X1 ∪ X2 ∪ · · · ∪ Xn (bzw. X1 ∩ X2 ∩ · · · ∩ Xn ) einfach
n
∪
Xi
i=1
n
∩
Xi ). Möchte man alle Mengen Xi mit i ∈ N schneiden (bzw. vereinigen), so schreibt
∩
∪
man kurz
Xi (bzw.
Xi ).
(bzw.
i=1
i∈N
i∈N
Oft benötigt man eine Verknüpfung von zwei Mengen, eine solche Verknüpfung wird allgemein
wie folgt definiert:
Definition A.6 ( Verknüpfung von Mengen“) Seien A und B zwei beliebige Mengen und
”
⊙“ eine beliebige Verknüpfung zwischen den Elementen dieser Mengen, dann definieren wir
”
A ⊙ B =def {a ⊙ b | a ∈ A und b ∈ B}.
Beispiel A.7 Die Menge 3Z = {0, ±3, ±6, ±9, . . . } enthält alle Vielfachen16 von 3, damit ist
3Z + {1} = {1, 4, −2, 7, −5, 10, −8, . . . }. Die Menge 3Z + {1} schreibt man kurz oft auch als
3Z + 1, wenn klar ist, was mit dieser Abkürzung gemeint ist.
A.1.5. Tupel (Vektoren) und das Kreuzprodukt
Seien A, A1 , . . . , An im folgenden Mengen, dann bezeichnet
• (a1 , . . . , an ) =def die Elemente a1 , . . . , an in genau dieser festgelegten Reihenfolge und
z.B. (3, 2) ̸= (2, 3). Wir sprechen von einem n-Tupel.
• A1 × A2 × · · · × An =def {(a1 , . . . , an ) | a1 ∈ A1 , a2 ∈ A2 , . . . , an ∈ An } (Kreuzprodukt der
Mengen A1 , A2 , . . . , An ),
• An =def A
| ×A×
{z· · · × A} (n-faches Kreuzprodukt der Menge A) und
n-mal
• speziell gilt A1 = {(a) | a ∈ A}.
Wir nennen 2-Tupel auch Paare, 3-Tupel auch Tripel , 4-Tupel auch Quadrupel und 5-Tupel
Quintupel . Bei n-Tupeln ist, im Gegensatz zu Mengen, eine Reihenfolge vorgegeben, d.h. es gilt
z.B. immer {a, b} = {b, a}, aber im Allgemeinen (a, b) ̸= (b, a).
Beispiel A.8 Sei A = {1, 2, 3} und B = {a, b, c}, dann bezeichnet das Kreuzprodukt von A und
B die Menge von Paaren A × B = {(1, a), (1, b), (1, c), (2, a), (2, b), (2, c), (3, a), (3, b), (3, c)}.
A.1.6. Die Anzahl von Elementen in Mengen
Sei A eine Menge, die endlich viele Elemente17 enthält, dann ist
#A =def Anzahl der Elemente in der Menge A.
Beispielsweise ist #{4, 7, 9} = 3. Mit dieser Definition gilt
• #(An ) = (#A)n ,
• #P(A) = 2#A ,
• #A + #B = #(A ∪ B) + #(A ∩ B) und
• #A = #(A \ B) + #(A ∩ B).
16
17
Eigentlich müsste man statt 3Z die Notation {3}Z verwenden. Dies ist allerdings unüblich.
Solche Mengen werden als endliche Mengen bezeichnet.
66
A GRUNDLAGEN UND SCHREIBWEISEN
A.2. Relationen und Funktionen
A.2.1. Eigenschaften von Relationen
Seien A1 , . . . , An beliebige Mengen, dann ist R eine n-stellige Relation gdw. R ⊆ A1 × A2 × · · · ×
An . Eine zweistellige Relation nennt man auch binäre Relation. Oft werden auch Relationen
R ⊆ An betrachtet, diese bezeichnet man dann als n-stellige Relation über der Menge A.
Definition A.9 Sei R eine zweistellige Relation über A, dann ist R
• reflexiv gdw. (a, a) ∈ R für alle a ∈ A,
• symmetrisch gdw. aus (a, b) ∈ R folgt (b, a) ∈ R,
• antisymmetrisch gdw. aus (a, b) ∈ R und (b, a) ∈ R folgt a = b,
• transitiv gdw. aus (a, b) ∈ R und (b, c) ∈ R folgt (a, c) ∈ R und
• linear gdw. es gilt immer (a, b) ∈ R oder (b, a) ∈ R.
• Wir nennen R eine Halbordnung gdw. R ist reflexiv, antisymmetrisch und transitiv,
• eine Ordnung gdw. R ist eine lineare Halbordnung und
• eine Äquivalenzrelation gdw. R reflexiv, transitiv und symmetrisch ist.
Beispiel A.10 Die Teilmengenrelation ⊆“ auf allen Teilmengen von Z ist eine Halbordnung,
”
aber keine Ordnung. Wir schreiben a ≡ b mod n, falls es eine ganze Zahl q gibt, für die a−b = qn
gilt. Für n ≥ 2 ist die Relation Rn (a, b) =def {(a, b) | a ≡ b mod n} ⊆ Z2 eine Äquivalenzrelation.
A.2.2. Eigenschaften von Funktionen
Seien A und B beliebige Mengen. f ist eine Funktion von A nach B (Schreibweise: f : A → B)
gdw. f ⊆ A × B und für jedes a ∈ A gibt es höchstens ein b ∈ B mit (a, b) ∈ f . Ist also (a, b) ∈ f ,
so schreibt man f (a) = b.
Bemerkung A.11 Unsere Definition von Funktion umfasst auch mehrstellige Funktionen. Seien C und B Mengen und A = C n das n-fache Kreuzprodukt von C. Die Funktion f : A → B ist
dann eine n-stellige Funktion, denn sie bildet n-Tupel aus C n auf Elemente aus B ab.
Definition A.12 Sei f eine n-stellige Funktion. Möchte man die Funktion f benutzen, aber
keine Namen für die Argumente vergeben, so schreibt man auch
f (·, ·, . . . , ·)
| {z }
n-mal
Ist also der Namen des Arguments einer einstelligen Funktion g(x) für eine Betrachtung unwichtig, so kann man g(·) schreiben, um anzudeuten, dass g einstellig ist, ohne dies weiter zu
erwähnen.
Sei nun R ⊆ A1 × A2 × · · · × An eine n-stellige Relation, dann definieren wir PRn : A1 × A2 ×
· · · × An → {0, 1} wie folgt:
{
1, falls (x1 , . . . , xn ) ∈ R
PRn (x1 , . . . , xn ) =def
0, sonst
Eine solche (n-stellige) Funktion, die anzeigt“, ob ein Element aus A1 × A2 × · · · × An entweder
”
zu R gehört oder nicht, nennt man (n-stelliges) Prädikat.
A.2 Relationen und Funktionen
67
Beispiel A.13 Sei P =def {n ∈ N | n ist Primzahl}, dann ist P eine 1-stellige Relation über den
natürlichen Zahlen. Das Prädikat PP1 (n) liefert für eine natürliche Zahl n genau dann 1, wenn
n eine Primzahl ist.
Ist für ein Prädikat PRn sowohl die Relation R als auch die Stelligkeit n aus dem Kontext klar,
dann schreibt man auch kurz P oder verwendet das Relationensymbol R als Notation für das
Prädikat PRn . Nun legen wir zwei spezielle Funktionen fest, die oft sehr hilfreich sind:
Definition A.14 Sei α ∈ R eine beliebige reelle Zahl, dann gilt
• ⌈x⌉ =def die kleinste ganze Zahl, die größer oder gleich α ist (≜ Aufrunden“)
”
• ⌊x⌋ =def die größte ganze Zahl, die kleiner oder gleich α ist (≜ Abrunden“)
”
Definition A.15 Für eine beliebige Funktion f legen wir fest:
• Der Definitionsbereich von f ist Df =def {a | es gibt ein b mit f (a) = b}.
• Der Wertebereich von f ist Wf =def {b | es gibt ein a mit f (a) = b}.
• Die Funktion f : A → B ist total gdw. Df = A.
• Die Funktion f : A → B heißt surjektiv gdw. Wf = B.
• Die Funktion f heißt injektiv (oder eineindeutig18 ) gdw. immer wenn f (a1 ) = f (a2 ) gilt
auch a1 = a2 .
• Die Funktion f heißt bijektiv gdw. f ist injektiv und surjektiv.
Beispiel A.16 Sei die Funktion f : N → Z durch f (n) = (−1)n ⌈ n2 ⌉ gegeben. Die Funktion f
ist surjektiv, denn f (0) = 0, f (1) = −1, f (2) = 1, f (3) = −2, f (4) = 2, . . . , d.h. die ungeraden
natürlichen Zahlen werden auf die negativen ganzen Zahlen abgebildet, die geraden Zahlen aus
N werden auf die positiven ganzen Zahlen abgebildet und deshalb ist Wf = Z.
Weiterhin ist f auch injektiv, denn aus19 (−1)a1 ⌈ a21 ⌉ = (−1)a2 ⌈ a22 ⌉ folgt, dass entweder a1
und a2 gerade oder a1 und a2 ungerade, denn sonst würden auf der linken und rechten Seite
der Gleichung unterschiedliche Vorzeichen auftreten. Ist a1 gerade und a2 gerade, dann gilt
⌈ a21 ⌉ = ⌈ a22 ⌉ und auch a1 = a2 . Sind a1 und a2 ungerade, dann gilt −⌈ a21 ⌉ = −⌈ a22 ⌉, woraus auch
folgt, dass a1 = a2 . Damit ist die Funktion f bijektiv. Weiterhin ist f auch total, d.h. Df = N.
A.2.3. Permutationen
Eine bijektive Funktion π : S → S heißt Permutation. Das bedeutet, dass die Funktion π Elemente aus S wieder auf Elemente aus S abbildet, wobei für jedes b ∈ S ein a ∈ S mit f (a) = b
existiert (Surjektivität) und falls f (a1 ) = f (a2 ) gilt, dann ist a1 = a2 (Injektivität). Besonders
häufig werden in der Informatik Permutationen von endlichen Mengen benötigt.
Sei nun S = {1, . . . , n} eine endliche Menge und π : {1, . . . , n} → {1, . . . , n} eine Permutation.
Permutationen dieser Art kann man sehr anschaulich mit Hilfe einer Matrix aufschreiben:
(
)
1
2
...
n
π=
π(1) π(2) . . . π(n)
Durch diese Notation wird klar, dass das Element 1 der Menge S durch das Element π(1)
ersetzt wird, das Element 2 wird mit π(2) vertauscht und allgemein das Element i durch π(i)
für 1 ≤ i ≤ n. In der zweiten Zeile dieser Matrixnotation findet sich also jedes (Surjektivität)
Element der Menge S genau einmal (Injektivität).
18
Achtung: Dieser Begriff wird manchmal unterschiedlich, je nach Autor, in den Bedeutungen bijektiv“ oder
”
injektiv“ verwendet.
19 ”
Für die Definition der Funktion ⌈·⌉ siehe Definition A.14.
68
A GRUNDLAGEN UND SCHREIBWEISEN
Beispiel A.17 Sei S = {1, . . . , 3} eine Menge mit drei Elementen. Dann gibt es, wie man
ausprobieren kann, genau 6 Permutationen von S:
(
π1 =
(
π4 =
)
1 2 3
1 2 3
(
π2 =
)
1 2 3
2 3 1
(
π5 =
1 2 3
1 3 2
1 2 3
3 1 2
)
(
π3 =
)
(
π6 =
1 2 3
2 1 3
1 2 3
3 2 1
)
)
Satz A.18 Sei S eine endliche Menge mit n = |S|, dann gibt es genau n! (Fakultät) verschiedene
Permutationen von S.
Beweis: Jede Permutation π der Menge S von n Elementen kann als Matrix der Form
(
1
2
...
n
π(1) π(2) . . . π(n)
π=
)
aufgeschrieben werden. Damit ergibt sich die Anzahl der Permutationen von S durch die Anzahl der verschiedenen zweiten Zeilen solcher Matrizen. In jeder solchen Zeile muss jedes der n
Elemente von S genau einmal vorkommen, da π eine bijektive Abbildung ist, d.h. wir haben
für die erste Position der zweiten Zeile der Matrixdarstellung genau n verschiedene Möglichkeiten, für die zweite Position noch n − 1 und für die dritte noch n − 2. Für die n-te Position bleibt nur noch 1 mögliches Element aus S übrig20 . Zusammengenommen haben wir also
n · (n − 1) · (n − 2) · (n − 3) · . . . · 2 · 1 = n! verschiedene mögliche Permutationen der Menge S. #
A.3. Summen und Produkte
A.3.1. Summen
Zur abkürzenden Schreibweise verwendet man für Summen das Summenzeichen
n
∑
∑
. Dabei ist
ai =def a1 + a2 + · · · + an .
i=1
Mit Hilfe dieser Definition ergeben sich auf elementare Weise die folgenden Rechenregeln:
• Sei ai = a für 1 ≤ i ≤ n, dann gilt
n
∑
ai = n · a (Summe gleicher Summanden).
i=1
•
n
∑
ai =
i=1
•
n
∑
m
∑
ai +
i=1
n
∑
n
∑
ai =
n ∑
m
∑
i=1 j=1
20
n+l−1
∑
ai−l+1 und
ai,j =
n
∑
i=l
i=l
m ∑
n
∑
n
∑
ai +
i=1
i=1
•
n
∑
(ai + bi + ci + . . . ) =
i=1
•
ai , wenn 1 < m < n (Aufspalten einer Summe).
i=m+1
bi +
i=1
ai =
n−l+1
∑
n
∑
ci + . . . (Addition von Summen).
i=1
ai+l−1 (Umnumerierung von Summen).
i=1
ai,j (Vertauschen der Summationsfolge).
j=1 i=1
Dies kann man sich auch als die Anzahl der verschiedenen Möglichkeiten vorstellen, die bestehen, wenn man
aus einer Urne mit n numerierten Kugeln alle Kugeln ohne Zurücklegen nacheinander zieht.
A.4 Gebräuchliche griechische Buchstaben
69
A.3.2. Produkte
Zur abkürzenden Schreibweise verwendet man für Produkte das Produktzeichen
n
∏
∏
. Dabei ist
ai =def a1 · a2 · . . . · an .
i=1
Mit Hilfe dieser Definition ergeben sich auf elementare Weise die folgenden Rechenregeln:
• Sei ai = a für 1 ≤ i ≤ n, dann gilt
n
∏
ai = an (Produkt gleicher Faktoren).
i=1
•
n
∏
i=1
•
n
∏
n
∏
ai (Vorziehen von konstanten Faktoren)
i=1
ai =
i=1
•
n
∏
(cai ) = cn
m
∏
ai ·
i=1
n
∏
(ai · bi · ci · . . .) =
i=1
•
n
∏
n
∏
ai =
n+l−1
∏
ai−l+1 und
i=l
n ∏
m
∏
ai,j =
i=1 j=1
n
∏
ai ·
i=1
i=1
•
ai , wenn 1 < m < n (Aufspalten in Teilprodukte).
i=m+1
i=1
n
∏
i=l
m ∏
n
∏
bi ·
n
∏
ci · . . . (Das Produkt von Produkten).
i=1
ai =
n−l+1
∏
ai+l−1 (Umnumerierung von Produkten).
i=1
ai,j (Vertauschen der Reihenfolge bei Doppelprodukten).
j=1 i=1
A.4. Gebräuchliche griechische Buchstaben
In der Informatik, Mathematik und Physik ist es üblich, griechische Buchstaben zu verwenden.
Ein Grund hierfür ist, dass es so möglich wird mit einer größeren Anzahl von Unbekannten
arbeiten zu können, ohne unübersichtliche und oft unhandliche Indizes benutzen zu müssen.
Kleinbuchstaben:
Symbol Bezeichnung
α
Alpha
δ
Delta
ξ
Xi
θ
Theta
σ
Sigma
Symbol Bezeichnung
β
Beta
ϕ
Phi
ζ
Zeta
λ
Lambda
η
Eta
Symbol Bezeichnung
γ
Gamma
φ
Phi
ϵ
Epsilon
π
Pi
µ
Mu
Symbol Bezeichnung
∆
Delta
Θ
Theta
Σ
Sigma
Symbol Bezeichnung
Φ
Phi
Λ
Lambda
Ψ
Psi
Grossbuchstaben:
Symbol Bezeichnung
Γ
Gamma
Ξ
Xi
Π
Pi
Ω
Omega
70
B EINIGE FORMALE GRUNDLAGEN VON BEWEISTECHNIKEN
B. Einige formale Grundlagen von Beweistechniken
Praktisch arbeitende Informatiker glauben oft völlig ohne (formale) Beweistechniken auskommen
zu können. Dabei meinen sie sogar, dass formale Beweise keinerlei Berechtigung in der Praxis
der Informatik haben und bezeichnen solches Wissen als in der Praxis irrelevantes Zeug, das
”
nur von und für seltsame Wissenschaftler erfunden wurde“. Studenten in den ersten Semestern
unterstellen sogar oft, dass mathematische Grundlagen und Beweistechniken nur als Filter“
”
dienen, um die Anzahl der Studenten zu reduzieren. Oft stellen sich beide Gruppen sich auf den
Standpunkt, dass die Korrektheit von Programmen und Algorithmen durch Lassen wir es doch
”
mal laufen und probieren es aus!“ (≜ Testen) belegt werden könne. Diese Einstellung zeigt sich
oft auch darin, dass Programme mit Hilfe einer IDE schnell testweise“ übersetzt werden, in der
”
Hoffnung oder (schlimmer) in der Überzeugung, dass ein übersetzbares Programm immer auch
semantisch korrekt sei.
Theoretiker, die sich mit den Grundlagen der Informatik beschäftigen, vertreten oft den Standpunkt, dass die Korrektheit jedes Programms rigoros bewiesen werden muss. Wahrscheinlich
ist die Position zwischen diesen beiden Extremen richtig, denn zum einen ist der formale Beweis von (großen) Programmen oft nicht praktikabel (oder möglich) und zum anderen kann
das Testen mit einer (relativ kleinen) Menge von Eingaben sicherlich nicht belegen, dass ein
Programm vollständig den Spezifikationen entspricht. Im praktischen Einsatz ist es dann oft
mit Eingaben konfrontiert, die zu einer fehlerhaften Reaktion führen oder es sogar abstürzen21
lassen. Bei einfacher Anwendersoftware sind solche Fehler ärgerlich, aber oft zu verschmerzen.
Bei sicherheitskritischer Software (z.B. bei der Regelung von Atomkraftwerken, Airbags und
Bremssystemen in Autos, in der Medizintechnik oder bei der Steuerung von Raumsonden) gefährden solche Fehler menschliches Leben oder führen zu extrem hohen finanziellen Verlusten
und müssen deswegen unbedingt vermieden werden.
Für den Praktiker bringen Kenntnisse über formale Beweise aber noch andere Vorteile. Viele Beweise beschreiben direkt den zur Lösung benötigten Algorithmus, d.h. eigentlich wird die
Richtigkeit einer Aussage durch die (implizite) Angabe eines Algorithmus gezeigt. Aber es gibt
noch einen anderen Vorteil. Ist der umzusetzende Algorithmus komplex (z.B. aufgrund einer
komplizierten Schleifenstruktur oder einer verschachtelten Rekursion), so ist es unwahrscheinlich, eine korrekte Implementation an den Kunden liefern zu können, ohne die Hintergründe (≜
Beweis) verstanden zu haben. All dies zeigt, dass auch ein praktischer Informatiker Einblicke
in Beweistechniken haben sollte. Interessanterweise zeigt die persönliche Erfahrung im praktischen Umfeld auch, dass solches (theoretisches) Wissen über die Hintergründe oft zu klarer
strukturierten und effizienteren Programmen führt.
Aus diesen Gründen sollen in den folgenden Abschnitten einige grundlegende Beweistechniken
mit Hilfe von Beispielen (unvollständig) kurz vorgestellt werden.
B.1. Direkte Beweise
Um einen direkten Beweis zu führen, müssen wir, beginnend von einer initialen Aussage (≜
Hypothese), durch Angabe einer Folge von (richtigen) Zwischenschritten zu der zu beweisenden
Aussage (≜ Folgerung) gelangen. Jeder Zwischenschritt ist dabei entweder unmittelbar klar
oder muss wieder durch einen weiteren (kleinen) Beweis belegt werden. Dabei müssen nicht alle
Schritte völlig formal beschrieben werden, sondern es kommt darauf an, dass sich dem Leser die
eigentliche Strategie erschließt.
Satz B.1 Sei n ∈ N. Falls n ≥ 4, dann ist 2n ≥ n2 .
Wir müssen also, in Abhängigkeit des Parameters n, die Richtigkeit dieser Aussage belegen.
Einfaches Ausprobieren ergibt, dass 24 = 16 ≥ 16 = 42 und 25 = 32 ≥ 25 = 52 , d.h. intuitiv
21
Dies wird eindrucksvoll durch viele Softwarepakete und verbreitete Betriebssysteme im PC-Umfeld belegt.
B.1 Direkte Beweise
71
scheint die Aussage richtig zu sein. Wir wollen die Richtigkeit der Aussage nun durch eine Reihe
von (kleinen) Schritten belegen:
Beweis:
Wir haben schon gesehen, dass die Aussage für n = 4 und n = 5 richtig ist. Erhöhen wir n auf
n + 1, so verdoppelt sich der Wert der linken Seite der Ungleichung von 2n auf 2 · 2n = 2n+1 . Für
2
die rechte Seite ergibt sich ein Verhältnis von ( n+1
n ) . Je größer n wird, desto kleiner wird der
2
Wert n+1
n , d.h. der maximale Wert ist bei n = 4 mit 1.25 erreicht. Wir wissen 1.25 = 1.5625.
D.h. immer wenn wir n um eins erhöhen, verdoppelt sich der Wert der linken Seite, wogegen
sich der Wert der rechten Seite um maximal das 1.5625 fache erhöht. Damit muss die linke Seite
der Ungleichung immer größer als die rechte Seite sein.
#
Dieser Beweis war nur wenig formal, aber sehr ausführlich und wurde am Ende durch das
Symbol #“ markiert. Im Laufe der Zeit hat es sich eingebürgert, das Ende eines Beweises mit
”
einem besonderen Marker abzuschließen. Besonders bekannt ist hier qed“, eine Abkürzung für
”
die lateinische Floskel quod erat demonstrandum“, die mit was zu beweisen war“ übersetzt
”
”
werden kann. In neuerer Zeit werden statt qed“ mit der gleichen Bedeutung meist die Symbole
”
□“ oder #“ verwendet.
”
”
Nun stellt sich die Frage: Wie formal und ausführlich muss ein Beweis sein?“ Diese Frage
”
kann so einfach nicht beantwortet werden, denn das hängt u.a. davon ab, welche Lesergruppe
durch den Beweis von der Richtigkeit einer Aussage überzeugt werden soll und wer den Beweis schreibt. Ein Beweis für ein Übungsblatt sollte auch auf Kleinigkeiten Rücksicht nehmen,
wogegen ein solcher Stil für eine wissenschaftliche Zeitschrift vielleicht nicht angebracht wäre,
da die potentielle Leserschaft über ganz andere Erfahrungen und viel mehr Hintergrundwissen
verfügt. Nun noch eine Bemerkung zum Thema Formalismus“: Die menschliche Sprache ist un”
präzise, mehrdeutig und Aussagen können oft auf verschiedene Weise interpretiert werden, wie
das tägliche Zusammenleben der Geschlechter eindrucksvoll demonstriert. Diese Defizite sollen
Formalismen22 ausgleichen, d.h. die Antwort muss lauten: So viele Formalismen wie notwendig
”
und so wenige wie möglich!“. Durch Übung und Praxis lernt man die Balance zwischen diesen
Anforderungen zu halten und es zeigt sich bald, dass Geübte“ die formale Beschreibung sogar
”
wesentlich leichter verstehen.
Oft kann man andere, schon bekannte, Aussagen dazu verwenden, die Richtigkeit einer (kompliziert wirkenden) Aussage zu belegen.
Satz B.2 Sei n ∈ N die Summe von 4 Quadratzahlen, die größer als 0 sind, dann ist 2n ≥ n2 .
Beweis: Die Menge der Quadratzahlen ist Q = {0, 1, 4, 9, 16, 25, 36, . . . }, d.h. 1 ist die kleinste
Quadratzahl, die größer als 0 ist. Damit muss unsere Summe von 4 Quadratzahlen größer als 4
sein. Die Aussage folgt direkt aus Satz B.1.
#
B.1.1. Die Kontraposition
Mit Hilfe von direkten Beweisen haben wir Zusammenhänge der Form Wenn Aussage H richtig
”
ist, dann folgt daraus die Aussage C“ untersucht. Manchmal ist es schwierig einen Beweis für eine
solchen Zusammenhang zu finden. Völlig gleichwertig ist die Behauptung Wenn die Aussage C
”
falsch ist, dann ist die Aussage H falsch“ und oft ist eine solche Aussage leichter zu zeigen.
Die Kontraposition von Satz B.1 ist also die folgende Aussage: Wenn nicht 2n ≥ n2 , dann gilt
”
nicht n ≥ 4.“. Das entspricht der Aussage: Wenn 2n < n2 , dann gilt n < 4.“, was offensichtlich
”
zu der ursprünglichen Aussage von Satz B.1 gleichwertig ist.
22
In diesem Zusammenhang sind Programmiersprachen auch Formalismen, die eine präzise Beschreibung von
Algorithmen erzwingen und die durch einen Compiler verarbeitet werden können.
72
B EINIGE FORMALE GRUNDLAGEN VON BEWEISTECHNIKEN
Diese Technik ist oft besonders hilfreich, wenn man die Richtigkeit einer Aussage zeigen soll,
die aus zwei Teilaussagen zusammengesetzt und die durch ein genau dann wenn“23 verknüpft
”
sind. In diesem Fall sind zwei Teilbeweise zu führen, denn zum einen muss gezeigt werden, dass
aus der ersten Aussage die zweite folgt und umgekehrt muss gezeigt werden, dass aus der zweiten
Aussage die erste folgt.
Satz B.3 Eine natürliche Zahl n ist durch drei teilbar genau dann, wenn die Quersumme ihrer
Dezimaldarstellung durch drei teilbar ist.
Beweis: Für die Dezimaldarstellung von n gilt
n=
k
∑
i=0
ai · 10i , wobei ai ∈ {0, 1, . . . , 9} ( Ziffern“) und 0 ≤ i ≤ k.
”
∑
Mit QS(n) wird die Quersumme von n bezeichnet, d.h. QS(n) = ki=0 ai . Mit Hilfe einer einfachen vollständigen Induktion kann
∑ man zeigen,∑dass für jedes i ≥ 0 ein b ∈ N∑existiert, sodass
10i = 9b + 1. Damit gilt n = ki=0 ai · 10i = ki=0 ai (9bi + 1) = QS(n) + 9 ki=0 ai bi , d.h. es
existiert ein c ∈ N, so dass n = QS(n) + 9c.
⇒“: Wenn n durch 3 teilbar ist, dann muss auch QS(n)+9c durch 3 teilbar sein. Da 9c sicherlich
”
durch 3 teilbar ist, muss auch QS(n) = n − 9c durch 3 teilbar sein.
⇐“: Dieser Fall soll durch Kontraposition gezeigt werden. Sei nun n nicht durch 3 teilbar, dann
”
darf QS(n) nicht durch 3 teilbar sein, denn sonst wäre n = 9c + QS(n) durch 3 teilbar.
#
B.2. Der Ringschluss
Oft findet man mehrere Aussagen, die zueinander äquivalent sind. Ein Beispiel dafür ist Satz
B.4. Um die Äquivalenz dieser Aussagen zu beweisen, müssten jeweils zwei genau dann wenn“
”
Beziehungen untersucht werden, d.h. es werden vier Teilbeweise notwendig. Dies kann mit Hilfe
eines so genannten Ringschlusses abgekürzt werden, denn es reicht zu zeigen, dass aus der
ersten Aussage die zweite folgt, aus der zweiten Aussage die dritte und dass schließlich aus
der dritten Aussage wieder die erste folgt. Im Beweis zu Satz B.4 haben wir deshalb nur drei
anstatt vier Teilbeweise zu führen, was zu einer Arbeitsersparnis führt. Diese Arbeitsersparnis
wird um so größer, je mehr äquivalente Aussagen zu untersuchen sind. Dabei ist die Reihenfolge
der Teilbeweise nicht wichtig, solange die einzelnen Teile zusammen einen Ring bilden.
Satz B.4 Seien A und B zwei beliebige Mengen, dann sind die folgenden drei Aussagen äquivalent:
i) A ⊆ B
ii) A ∪ B = B
iii) A ∩ B = A
Beweis: Im folgenden soll ein Ringschluss verwendet werden, um die Äquivalenz der drei Aussagen zu zeigen:
i) ⇒ ii)“: Da nach Voraussetzung A ⊆ B ist, gilt für jedes Element a ∈ A auch a ∈ B, d.h. in
”
der Vereinigung A ∪ B sind alle Elemente nur aus B, was A ∪ B = B zeigt.
ii) ⇒ iii)“: Wenn A ∪ B = B gilt, dann ergibt sich durch Einsetzen und mit den Regeln aus
”
Abschnitt A.1.4 (Absorbtionsgesetz) direkt A ∩ B = A ∩ (A ∪ B) = A.
iii) ⇒ i)“: Sei nun A ∩ B = A, dann gibt es kein Element a ∈ A für das a ̸∈ B gilt. Dies ist aber
”
gleichwertig zu der Aussage A ⊆ B.
Damit hat sich ein Ring von Aussagen i) ⇒ ii)“, ii) ⇒ iii)“ und iii) ⇒ i)“ gebildet, was die
”
”
”
Äquivalenz der Aussagen zeigt.
#
23
Oft wird genau dann wenn“ durch gdw. abgekürzt.
”
B.3 Widerspruchsbeweise
73
B.3. Widerspruchsbeweise
Obwohl die Technik der Widerspruchsbeweise auf den ersten Blick sehr kompliziert erscheint, ist
sie meist einfach anzuwenden, extrem mächtig und liefert oft sehr kurze Beweise. Angenommen
wir sollen die Richtigkeit einer Aussage aus der Hypothese H folgt C“ zeigen. Dazu beweisen
”
wir, dass sich ein Widerspruch ergibt, wenn wir, von H und der Annahme, dass C falsch ist,
ausgehen. Also war die Annahme falsch, und die Aussage C muss richtig sein.
Anschaulicher wird diese Beweistechnik durch folgendes Beispiel: Nehmen wir einmal an, dass
Alice eine bürgerliche Frau ist und deshalb auch keine Krone trägt. Es ist klar, dass jede Königin
eine Krone trägt. Wir sollen nun beweisen, dass Alice keine Königin ist. Dazu nehmen wir an,
dass Alice eine Königin ist, d.h. Alice trägt eine Krone. Dies ist ein Widerspruch! Also war
unsere Annahme falsch, und wir haben gezeigt, dass Alice keine Königin sein kann.
Der Beweis zu folgendem Satz verwendet diese Technik:
Satz B.5 Sei S eine endliche Untermenge einer unendlichen Menge U . Sei T das Komplement
von S bzgl. U , dann ist T eine unendliche Menge.
Beweis: Hier ist unsere Hypothese S endlich, U unendlich und T Komplement von S bzgl. U“
”
und unsere Folgerung ist T ist unendlich“. Wir nehmen also an, dass T eine endliche Menge ist.
”
Da T das Komplement von S ist, gilt S ∩ T = ∅, also ist #(S) + #(T ) = #(S ∩ T ) + #(S ∪ T ) =
#(S ∪ T ) = n, wobei n eine Zahl aus N ist (siehe Abschnitt A.1.6). Damit ist S ∪ T = U eine
endliche Menge. Dies ist ein Widerspruch zu unserer Hypothese! Also war die Annahme T ist
”
endlich“ falsch.
#
B.4. Der Schubfachschluss
Der Schubfachschluss ist auch als Dirichlets Taubenschlagprinzip bekannt. Werden n > k Tauben
auf k Boxen verteilt, so gibt es mindestens eine Box in der sich wenigstens zwei Tauben aufhalten. Allgemeiner formuliert sagt das Taubenschlagprinzip, dass wenn n Objekte auf k Behälter
aufgeteilt werden, dann gibt es mindestens eine Box die mindestens ⌈ nk ⌉ Objekte enthält.
Beispiel B.6 Auf einer Party unterhalten sich 8 Personen (≜ Objekte), dann gibt es mindestens
einen Wochentag (≜ Box) an dem ⌈ 78 ⌉ = 2 Personen aus dieser Gruppe Geburtstag haben.
B.5. Gegenbeispiele
Im wirklichen Leben wissen wir nicht, ob eine Aussage richtig oder falsch ist. Oft sind wir
dann mit einer Aussage konfrontiert, die auf den ersten Blick richtig ist und sollen dazu ein
Programm entwickeln. Wir müssen also entscheiden, ob diese Aussage wirklich richtig ist, denn
sonst ist evtl. alle Arbeit umsonst und hat hohen Aufwand verursacht. In solchen Fällen kann
man versuchen, ein einziges Beispiel dafür zu finden, dass die Aussage falsch ist, um so unnötige
Arbeit zu sparen.
Wir zeigen, dass die folgenden Vermutungen falsch sind:
Vermutung B.7 Wenn p ∈ N eine Primzahl ist, dann ist p ungerade.
Gegenbeispiel: Die natürliche Zahl 2 ist eine Primzahl und 2 ist gerade.
#
Vermutung B.8 Es gibt keine Zahlen a, b ∈ N, sodass a mod b = b mod a.
Gegenbeispiel: Für a = b = 2 gilt a mod b = b mod a = 0.
#
74
B EINIGE FORMALE GRUNDLAGEN VON BEWEISTECHNIKEN
B.6. Induktionsbeweise und das Induktionsprinzip
Eine der wichtigsten und nützlichsten Beweismethoden in der Informatik bzw. Mathematik
ist das Induktionsprinzip. Wir wollen jetzt nachweisen, dass für jedes n ∈ N eine bestimmte
Eigenschaft E gilt. Wir schreiben kurz E(n) für die Aussage n besitzt die Eigenschaft E“. Mit
”
der Schreibweise E(0) drücken24 wir also aus, dass die erste natürliche Zahl 0 die Eigenschaft E
besitzt.
Induktionsprinzip: Es gelten
(IA) E(0)
(IS) Für n ≥ 0 gilt, wenn E(k) für k ≤ n korrekt ist, dann ist auch E(n + 1) richtig.
Dabei ist IA die Abkürzung für Induktionsanfang und IS ist die Kurzform von Induktionsschritt.
Die Voraussetzung (≜ Hypothese) E(k) ist korrekt für k ≤ n und wird im Induktionsschritt
als Induktionsvoraussetzung benutzt (kurz IV). Hat man also den Induktionsanfang und den
Induktionsschritt gezeigt, dann ist es anschaulich, dass jede natürliche Zahl die Eigenschaft E
haben muss.
Es gibt verschiedene Versionen von Induktionsbeweisen. Die bekannteste Version ist die vollständige Induktion, bei der Aussagen über natürliche Zahlen gezeigt werden.
B.6.1. Die vollständige Induktion
Wie in Piratenfilmen üblich, seien Kanonenkugeln in einer Pyramide mit quadratischer Grundfläche gestapelt. Wir stellen uns die Frage, wieviele Kugeln (in Abhängigkeit von der Höhe) in
einer solchen Pyramide gestapelt sind.
Satz B.9 Mit einer quadratische Pyramide aus Kanonenkugeln der Höhe n ≥ 1 als Munition,
können wir n(n+1)(2n+1)
Schüsse abgeben.
6
Beweis: Einfacher formuliert: wir sollen zeigen, dass
n
∑
i2 =
i=1
(IA) Eine Pyramide der Höhe n = 1 enthält
n = 1 verifiziert.
k
∑
(IV) Für k ≤ n gilt
i2 = k(k+1)(2k+1)
.
6
i=1
(IS) Wir müssen nun zeigen, dass
Induktionsvoraussetzung
n
∑
i2 =
i=1
n+1
∑
n+1
∑
1·2·3
6
i2 =
i=1
n(n+1)(2n+1)
6
i2 =
i=1
IV
=
=
=
=
=
=
n
∑
n(n+1)(2n+1)
.
6
= 1 Kugel. D.h. wir haben die Eigenschaft für
(n+1)((n+1)+1)(2(n+1)+1)
6
gilt und dabei muss die
benutzt werden.
i2 + (n + 1)2
i=1
n(n+1)(2n+1)
+ (n2 + 2n + 1)
6
3
2
2n +3n +n
+ (n2 + 2n + 1)
6
3
2
2n +9n +13n+6
6
(n+1)(2n2 +7n+6)
(⋆)
6
(n+1)(n+2)(2n+3)
(⋆⋆)
6
(n+1)((n+1)+1)(2(n+1)+1)
6
Die Zeile ⋆ (bzw. ⋆⋆) ergibt sich, indem man 2n3 +9n2 +13n+6 durch n+1 teilt (bzw. 2n2 +7n+6
durch n + 2).
#
Das Induktionsprinzip kann man auch variieren. Dazu soll nun gezeigt werden, dass die Eigenschaft E für alle Zahlen k ≤ n erfüllt ist.
24
Mit E wird also ein Prädikat bezeichnet (siehe Abschnitt A.1.2)
B.6 Induktionsbeweise und das Induktionsprinzip
75
Verallgemeinertes Induktionsprinzip: Es gelten
(IA) E(0)
(IS) Wenn für alle 0 ≤ k ≤ n die Eigenschaft E(k) gilt, dann ist auch E(n + 1) richtig.
Damit ist das verallgemeinerte Induktionsprinzip eine Verallgemeinerung des oben vorgestellten
Induktionsprinzips, wie das folgende Beispiel veranschaulicht:
Satz B.10 Jede natürliche Zahl n ≥ 2 läßt sich als Produkt von Primzahlen schreiben.
Beweis: Das verallgemeinerte Induktionsprinzip wird wie folgt verwendet:
(IA) Offensichtlich ist 2 das Produkt von einer Primzahl.
(IV) Jede natürliche Zahl m mit 2 ≤ m ≤ n kann als Produkt von Primzahlen geschrieben
werden.
(IS) Nun wird eine Fallunterscheidung durchgeführt:
i) Sei n + 1 wieder eine Primzahl, dann ist nichts zu zeigen, da n + 1 direkt ein Produkt von
Primzahlen ist.
ii) Sei n+1 keine Primzahl, dann existieren mindestens zwei Zahlen p und q mit 2 ≤ p, q < n+1
und p · q = n + 1. Nach Induktionsvoraussetzung sind dann p und q wieder als Produkt von
Primzahlen darstellbar. Etwa p = p1 · p2 · . . . · ps und q = q1 · q2 · . . . · qt . Damit ist aber
n + 1 = p · q = p1 · p2 · . . . · ps · q1 · q2 · . . . · qt ein Produkt von Primzahlen.
#
Solche Induktionsbeweise treten z.B. bei der Analyse von Programmen immer wieder auf.
B.6.2. Induktive Definitionen
Das Induktionsprinzip kann aber auch dazu verwendet werden, (Daten-)Strukturen formal zu
spezifizieren. Dazu werden in einem ersten Schritt (≜ Induktionsanfang) die atomaren“ Objek”
te definiert und dann in einem zweiten Schritt die zusammengesetzten Objekte (≜ Induktionsschritt). Diese Technik ist als induktive Definition bekannt.
Beispiel B.11 Ein Baum ist wie folgt definiert:
(IA) Ein einzelner Knoten w ist ein Baum und w ist die Wurzel dieses Baums.
(IS) Seien T1 , T2 , . . . , Tn Bäume mit den Wurzeln k1 , . . . , kn und w ein einzelner neuer Knoten.
Verbinden wir den Knoten w mit allen Wurzeln k1 , . . . , kn , dann entsteht ein neuer Baum mit
der Wurzel w.
Beispiel B.12 Ein arithmetischer Ausdruck ist wie folgt definiert:
(IA) Jeder Buchstabe und jede Zahl ist ein arithmetischer Ausdruck.
(IS) Seien E und F Ausdrücke, so sind auch E + F , E ∗ F und [E] Ausdrücke.
D.h. x, x + y, [2 ∗ x + z] sind arithmetische Ausdrücke, aber beispielsweise sind x+, yy, ][x + y
sowie x + ∗z keine Ausdrücke im Sinn dieser Definition.
Bei diesem Beispiel ahnt man schon, dass solche Techniken zur präzisen Definition von Programmiersprachen und Dateiformaten gute Dienste leisten. Induktive Definitionen haben noch
einen weiteren Vorteil, denn man kann leicht Induktionsbeweise konstruieren, die Aussagen über
induktiv definierte Objekte belegen.
76
B EINIGE FORMALE GRUNDLAGEN VON BEWEISTECHNIKEN
B.6.3. Die strukturelle Induktion
Satz B.13 Die Anzahl der öffnenden Klammern eines arithmetischen Ausdrucks stimmt mit
der Anzahl der schließenden Klammern überein.
Es ist offensichtlich, dass diese Aussage richtig ist, denn in Ausdrücken wie (x + y)/2 oder
x + ((y/2) ∗ z) muss ja zu jeder öffnenden Klammer eine schließende Klammer existieren. Der
nächste Beweis verwendet diese Idee zum die Aussage von Satz B.13 mit Hilfe einer strukturellen
Induktion zu zeigen.
Beweis: Wir bezeichnen die Anzahl der öffnenden Klammern eines Ausdrucks E mit #[ (E) und
verwenden die analoge Notation #] (E) für die Anzahl der schließenden Klammern.
(IA) Die einfachsten Ausdrücke sind Buchstaben und Zahlen. Die Anzahl der öffnenden und
schließenden Klammern ist in beiden Fällen gleich 0.
(IV) Sei E ein Ausdruck, dann gilt #[ (E) = #] (E).
IV
(IS) Für einen Ausdruck E + F gilt #[ (E + F ) = #[ (E) + #[ (F ) = #] (E) + #] (F ) = #] (E + F ).
IV
Völlig analog zeigt man dies für E ∗ F . Für den Ausdruck [E] ergibt sich #[ ([E]) = #[ (E) + 1 =
#] (E) + 1 = #] ([E]). In jedem Fall ist die Anzahl der öffnenden Klammern gleich der Anzahl
der schließenden Klammern.
#
Mit Hilfe von Satz B.13 können wir nun leicht ein Programm entwickeln, das einen Plausibilitätscheck (z.B. direkt in einem Editor) durchführt und die Klammern zählt, bevor die Syntax
von arithmetischen Ausdrücken überprüft wird. Definiert man eine vollständige Programmiersprache induktiv, dann werden ganz ähnliche Induktionsbeweise möglich, d.h. man kann die
Techniken aus diesem Beispiel relativ leicht auf die Praxis der Informatik übertragen.
Index
Symbole
2Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
An . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
S-Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
S-Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
□ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
P(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
∩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
∪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
∅ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
≡ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 28
∈ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
⌈·⌉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
|= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
⊢ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
⌊·⌋ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
|= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 28
∋ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
̸∈ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
̸⊆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
π
∏. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
\ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
⊂ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
⊆
∑. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
× . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
f (·) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A
Ableitungsoperator . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Absorptionsgesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Abtrennungsregel. . . . . . . . . . . . . . . . . . . . . . . . . . . .19
Alfred Horn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
probabilistisch . . . . . . . . . . . . . . . . . . . . . . . . . . 58
randomisiert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
allgemeines Halteproblem. . . . . . . . . . . . . . . . . . . .44
allgemeingültig . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 28
Alphabet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Band . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
antisymmetrisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Approximationsalgorithmen . . . . . . . . . . . . . . . . . 61
äquivalent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 28
Äquivalenzrelation . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Assoziativgesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Auflösung der Äquivalenz . . . . . . . . . . . . . . . . . . . . . 6
Auflösung der Implikation . . . . . . . . . . . . . . . . . . . . 6
Auflösung der Konjunktion . . . . . . . . . . . . . . . . . . 19
Aussage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Axiome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
B
Bandalphabet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Belegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
berechenbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Berechnungsbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Berechnungsmodell . . . . . . . . . . . . . . . . . . . . . . 35, 47
bereinigt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Beweis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
direkt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Widerspruch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
bijektiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
binäre Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Bitkomplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Blanksymbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
BPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Buchstabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Buchstaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
griechische . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
C
charakteristische Funktion . . . . . . . . . . . . . . . . . . . 41
D
de-Morgansche Regel . . . . . . . . . . . . . . . . . . . . . . . . . 6
Definitionsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
direkten Beweis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Dirichlets Taubenschlagprinzip . . . . . . . . . . . . . . 73
disjunkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Distributivgesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
DNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
doppelte Verneinung . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Duplizitätsgesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
E
Einführung der Alternativen . . . . . . . . . . . . . . . . . 19
Einführung der Konjunktion . . . . . . . . . . . . . . . . . 19
Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
endliche Mengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Endlichkeitssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Endzustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
entscheidbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32, 41
Entscheidungsproblem . . . . . . . . . . . . . . . . . . . . . . . 32
78
Entscheidungsprobleme . . . . . . . . . . . . . . . . . . . . . . 46
erfüllbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 28
Erfüllbarkeitsproblem. . . . . . . . . . . . . . . . . . . . . . . . .9
F
Fallunterscheidung . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Folgerungsoperator . . . . . . . . . . . . . . . . . . . . . . . . . . 17
folgt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Formel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
äquivalente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
atomar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Horn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Länge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Skolem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
zusammengesetzt . . . . . . . . . . . . . . . . . . . . . . . . 2
frei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
freie Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Boolesche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
charakteristisch . . . . . . . . . . . . . . . . . . . . . . . . . 41
G
Gödelnummer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
gdw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
gdw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
gdw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
gebunden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
gebundene Variable. . . . . . . . . . . . . . . . . . . . . . . . . .25
Gegenbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Gesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Absorbtions- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Assoziativ- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Distributiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Duplizitäts- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Kommutativ- . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Greedy-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . 48
griechische Buchstaben . . . . . . . . . . . . . . . . . . . . . . 69
Grundmenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
H
Hüllenoperator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Halbordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Halteproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
speziell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Hamiltonkreis-Problem . . . . . . . . . . . . . . . . . . . . . . 51
Hamiltonscher Kreis . . . . . . . . . . . . . . . . . . . . . . . . . 52
Herbrand-Universum . . . . . . . . . . . . . . . . . . . . . . . . 31
Horn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Hornformel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
I
Indirekter Beweis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Induktion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Index
verallgemeinert . . . . . . . . . . . . . . . . . . . . . . . 75
strukturelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
vollständige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Induktionsanfang . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Induktionsprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Induktionsschritt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Induktionsvoraussetzung . . . . . . . . . . . . . . . . . . . . 74
induktive Definition . . . . . . . . . . . . . . . . . . . . . . . . . 75
injektiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
positiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Interpretationsfunktion . . . . . . . . . . . . . . . . . . . . . . . 2
K
Kalkül . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
kDNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
kKNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
leere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 14
KNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Kommutativgesetz. . . . . . . . . . . . . . . . . . . . . . . . . . . .6
Komplement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Konnektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
konsistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Kontraposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Kopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Korrektheitssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Kreuzprodukt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
L
Länge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
leere Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 14
linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Literal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
negativ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
positiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
M
Menge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
endlich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Mengenoperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Komplement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Schnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Vereinigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 17, 28
unendliches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Modus Ponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
N
nichtdeterministisch . . . . . . . . . . . . . . . . . . . . . . . . . 53
Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
disjunktive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
kanonisch disjunktive . . . . . . . . . . . . . . . . . . . . 8
Index
kanonisch konjunktive . . . . . . . . . . . . . . . . . . . . 9
konjunktive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
pränex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
O
Objektvariable . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 24
Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
operative Schreibweise . . . . . . . . . . . . . . . . . . . . . . . 23
Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ableitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Folgerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Hüllen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
P
P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Paar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
PCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Permutation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
PL1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
PNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
positiven Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Postsches Korrespondenzproblem . . . . . . . . . . . . 33
Prädikat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 63, 66
pränex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Pränexnormalform . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entscheidungs . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Hamiltonkreis. . . . . . . . . . . . . . . . . . . . . . . . . . .51
Q
qed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
qed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Quadrupel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Quantor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Wirkungsbereich . . . . . . . . . . . . . . . . . . . . . . . . 25
Quintupel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
R
79
Endlichkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Korrektheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Vollständigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Schubfachschluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Semantik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aussagenlogik. . . . . . . . . . . . . . . . . . . . . . . . . . . .2
Prädikatenlogik der ersten Stufe . . . . . . . . 26
semi-entscheidbar . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Signatur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Skolemform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Skolemformel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
spezielles Halteproblem . . . . . . . . . . . . . . . . . . . . . . 43
Startsituation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Startzustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Stopsituation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
strukturellen Induktion . . . . . . . . . . . . . . . . . . . . . . 76
surjektiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Blank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
symmetrisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aussagenlogik. . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Prädikatenlogik der ersten Stufe . . . . . . . . 24
T
Taubenschlagprinzip . . . . . . . . . . . . . . . . . . . . . . . . .73
Tautologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 28
Terme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
TM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
transitiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Tripel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Tupel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
n-Tupel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Turing-berechenbar . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Turingberechenbarkeit . . . . . . . . . . . . . . . . . . . . . . . 38
Turingmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
k-Band . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Band . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
U
RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
RAM-berechenbar . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Random-Access-Maschine . . . . . . . . . . . . . . . . . . . 38
Reduktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32, 43
reflexiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
rekursiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
binär . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Resolvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Ringschluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
S
SAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Übergangsfunktion . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Überprüfungsphase . . . . . . . . . . . . . . . . . . . . . . . . . . 53
uniformem Komplexitätsmaß . . . . . . . . . . . . . . . . 48
Universum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
V
Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
frei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
gebunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 24
Wahrheitswert . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
vollständig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21, 56
vollständige Induktion . . . . . . . . . . . . . . . . . . . . . . . 74
80
Vollständigkeitssatz . . . . . . . . . . . . . . . . . . . . . . . . . 22
W
wahr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Wahrheitswert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Wahrheitswertevariable . . . . . . . . . . . . . . . . . . . . . . . 1
Wertebereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Widerspruchsbeweis . . . . . . . . . . . . . . . . . . . . . . . . . 73
widerspruchsfrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Wirkungsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
WW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2, 3
Z
Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Index
Literatur
81
Literatur
[ACG+ 99] Ausiello, G., P. Crescenzi, V. Gambosi, V. Kann, A. MarchettiSpaccamela, and M. Protasi: Complexity and Approximation - Combinatorial
Optimization Problems and Their Approximability. Springer Verlag, 1999.
[Can95]
Cantor, Georg: Beiträge zur Begründung der transfiniten Mengenlehre. Mathematische Annalen, 46(4):481–512, 1895.
[EFT96]
Ebbinghaus, Heinz, Jörg Flum und Wolfgang Thomas: Einführung in die
mathematische Logik. Spektrum Akademischer Verlag, 1996.
[GJ79]
Garey, Michael R. and David S. Johnson: Computers and Intractability. W.
H. Freeman and Company, 1979.
[Gru99]
Gruska, J.: Quantum Computing. McGraw-Hill, 1999.
[Hom08]
Homeister, Matthias: Quantum Computing verstehen. Vieweg, 2008.
[MR95]
Motwani, R. and P. Raghavan: Randomized Algorithms. Cambridge University
Press, 1995.
[Pău98]
Păun, G.: Computing with Bio-Molecules. Springer Series in Discrete Mathematics
and Theoretical Computer Science. Springer Verlag, Sinpapore, 1998.
[Pos46]
Post, Emil: A Variant of a Recursively Unsolvable Problem. Bulletin of the AMS,
52:264–268, 1946.
[RV01a]
Reith, Steffen und Heribert Vollmer: Ist P=NP? Einführung in die Theorie
der NP-Vollständigkeit. Technischer Bericht 269, Institut für Informatik, Universität
Würzburg, 2001. siehe http://www.informatik.uni-wuerzburg.de/reports/tr.html.
[RV01b]
Reith, Steffen und Heribert Vollmer: Wer wird Millionär? Komplexitätstheorie: Konzepte und Herausforderungen. c’t Magazin für Computertechnik, Heft 7,
2001. siehe auch [RV01a].
[Sch00]
Schöning, Uwe: Logik für Informatiker. Spektrum Akademischer Verlag, 2000.
[Sch01]
Schöning, U.: Algorithmik. Spektrum Akademischer Verlag, 2001.
[Wag94]
Wagner, Klaus W.: Theoretische Informatik. Springer Verlag, 1994.
Herunterladen