Gerhard Woeginger
WS 2019, RWTH
Klausur:
Die Bearbeitungszeit beträgt 120 Minuten
Erster Termin: Montag, Februar 17
Wiederholung: Dienstag, März 17
Anmeldung
Für die Klausur müssen Sie Sich via RWTHonline anmelden
Anmeldefristen beachten!
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Wikipedia:
David Hilbert war ein deutscher Mathematiker. Er gilt als einer der
bedeutendsten Mathematiker der Neuzeit. Viele seiner Arbeiten auf dem
Gebiet der Mathematik und mathematischen Physik begründeten
eigenständige Forschungsgebiete.
Eingabe Ausgabe
Zentrale Frage
Gibt es überhaupt Probleme,
die wir nicht mit dem Computer lösen können?
Bessere Formulierung
Gibt es “algorithmische Probleme” (oder “Berechnungsprobleme”),
die ein Computer nicht lösen kann?
Eingabe:
Java-Programm P (als Text-File); zwei ganze Zahlen x, y .
Ausgabe:
“OK”, wenn P bei Eingabe x und y die Summe x + y ausgibt.
“KO”, andernfalls.
Allgemeines Halteproblem
Eingabe: Ein Programm in einer wohldefinierten, universellen
Programmiersprache (z.B. Java, C++, Python, Haskell).
Frage: Terminiert dieses Programm?
Zentrale Frage:
Lässt sich ein gegebenes algorithmisches Problem effizient lösen?
Aufgabe
Löse den Dodekaeder
Aufgabe
Befreie das rote Auto aus dem
Verkehrsstau
User:Welt-der-Form/Wikimedia Commons/CC-BY-SA-3.0
Nachteil lautet wieder: Extrem
langsamer Algorithmus
Aufgabe
Bestimme das alpha-numerische
15-stellige Passwort
Aufgabe
Finde eine kurze Rundreise durch die 14
grössten deutschen Städte und zurück
zum Ausgangsort.
Teil 1: Grundlagen
Modellierung von Problemen
Einführung der Turingmaschine (TM)
Einführung der Registermaschine (RAM)
Vergleich TM versus RAM
Church-Turing-These
Teil 2: Berechenbarkeit
Existenz unentscheidbarer Probleme
Unentscheidbarkeit des Halteproblems
Diagonalisierung / Unterprogrammtechnik / Reduktion
Das Post’sche Korrespondenzproblem
Hilberts zehntes Problem
Teil 3: Komplexität
Die Komplexitätsklassen P und NP
NP-Vollständigkeit und der Satz von Cook und Levin
Kochrezept für NP-Vollständigkeitsbeweise
(Polynomielle Reduktion)
NP-Vollständigkeit zahlreicher Probleme
Weitere Komplexitätsklassen: coNP, PSPACE, EXPTIME
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesung:
Mittwoch, Oktober 16, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Algorithmus y
x
{0, 1}3 = {000, 001, 010, 011, 100, 101, 110, 111}
Das leere Wort (= Wort der Länge 0), bezeichnen wir mit ✏.
Dann gilt: ⌃0 = {✏}
S
⌃⇤ = k2N0 ⌃k ist der Kleenesche Abschluss von ⌃ und enthält alle
Wörter über ⌃. Diese kann man z.B. der Länge nach aufzählen:
✏, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, . . .
Beispiel: Primfaktorbestimmung
Zu einer natürlichen Zahl q 2 (Eingabe) suchen wir einen Primfaktor
(Ausgabe).
Wir einigen uns darauf, Zahlen binär zu kodieren.
Die Binärkodierung der natürlichen Zahl i bezeichnen wir mit bin(i ).
Also zum Beispiel: bin(0) = 0, bin(6) = 110
Die entsprechende Relation zur Primfaktorbestimmung ist dann
Beispiel: Multiplikation
Zu zwei natürlichen Zahlen i1 , i2 2 N (Eingabe) suchen wir das
entsprechende Produkt i1 · i2 (Ausgabe).
Beispiel: Graphzusammenhang
Problemstellung: Für einen gegebenen ungerichteten Graphen
G = (V , E ) soll bestimmt werden, ob G zusammenhängend ist.
Frage
Welche Funktionen sind durch einen Algorithmus berechenbar?
Welche Sprachen können von einem Algorithmus entschieden werden?
··· ⇤ 0 1 1 0 1 1 1 0 1 1 0 1 0 ⇤ ⇤ ⇤ ⇤ ···
Schreib-/Lesekopf
DFA
··· ⇤ 0 1 1 0 1 1 0 0 1 1 0 1 0 ⇤ ⇤ ⇤ ⇤ ···
0 1 B
q0 (q0 , B, L) (q1 , 0, R) reject
q1 (q0 , 1, R) (q1 , B, N) accept
Definition
Eine Turingmaschine ist definiert durch das 7-Tupel
(Q, ⌃, , B, q0 , q̄, ).
Input x
··· ⇤ x1 x2 x3 x4 x5 x6 x7 x8 x8 x9 ⇤ ⇤ ⇤ ···
DFA q0
Spezialfall
Bei Entscheidungsproblemen wird die Antwort wie folgt als JA oder NEIN
interpretiert:
Die TM akzeptiert das Eingabewort, wenn sie terminiert und das
Ausgabewort mit einer 1 beginnt
Die TM verwirft das Eingabewort, wenn sie terminiert und das
Ausgabewort nicht mit einer 1 beginnt
Die Menge aller von M akzeptierten Worte bezeichnen wir mit L(M).
Anmerkungen
Es besteht die Möglichkeit, dass die TM den Endzustand niemals
erreicht. Wir sagen dann, dass die Berechnung nicht terminiert.
Es sei L = {w 1 | w 2 {0, 1}⇤ } die Sprache der Wörter, die auf 1 enden.
0 1 B
q0 (q0 , B, R) (q1 , B, R) reject
q1 (q0 , B, R) (q1 , B, R) accept
Eingabe x = 0100110101
Eingabe x
··· B 0 1 0 0 1 1 0 1 0 1 B B B ···
0 1 B
q0 (q0 , B, R) (q1 , B, R) reject
q1 (q0 , B, R) (q1 , B, R) accept
Definition
Eine Funktion f : ⌃⇤ ! ⌃⇤ heisst rekursiv (T-berechenbar),
wenn es eine TM gibt, die aus der Eingabe x
den Funktionswert f (x) berechnet.
Definition
Eine Sprache L ✓ ⌃⇤ heisst rekursiv (T-entscheidbar),
wenn es eine TM gibt, die für alle Eingaben terminiert und
die Eingabe w genau dann akzeptiert, wenn w 2 L ist.
0 1 B
q0 (q0 , 0, R) (q1 , 1, R) reject
q1 reject (q1 , 1, R) (q2 , B, L)
q0 : Laufe von links nach rechts über die Eingabe, bis ein Zeichen
ungleich 0 gefunden wird.
Falls dieses Zeichen eine 1 ist, gehe über in Zustand q1 .
Sonst ist dieses Zeichen ein Blank. Verwirf die Eingabe.
q1 : Gehe weiter nach rechts bis zum ersten Zeichen ungleich 1.
Falls dieses Zeichen eine 0 ist, verwirf die Eingabe.
Sonst ist das gefundene Zeichen ein Blank. Bewege den Kopf um
eine Position nach links auf die letzte gelesene 1. Wechsle in den
Zustand q2 . Phase 2 beginnt.
0 1 B
q2 reject (q3 , B, L) reject
q3 (q3 , 0, L) (q3 , 1, L) (q4 , B, R)
q4 (q5 , B, R) reject reject
q5 (q6 , 0, R) (q6 , 1, R) accept
q6 (q6 , 0, R) (q6 , 1, R) (q2 , B, L)
q2 : Kopf steht auf dem letzten Nichtblank. Falls dieses Zeichen eine 1
ist, so lösche es, gehe nach links, und wechsele in Zustand q3 .
Andernfalls verwirf die Eingabe.
q3 : Bewege den Kopf auf das erste Nichtblank. Dann q4 .
q4 : Falls das gelesene Zeichen eine 0 ist, ersetze es durch ein Blank und
gehe nach q5 , sonst verwirf die Eingabe.
q5 : Wir haben jetzt die linkeste 0 und die rechteste 1 gelöscht. Falls
Restwort leer, dann akzeptiere, sonst q6 .
q6 : Laufe wieder zum letzten Nichtblank und starte erneut in q2 .
BuK/WS 2019 VL-01: Turing Maschinen I 33/42
Veranschaulichung der TM
Eingabe x = 0000011
··· B 0 0 0 0 0 1 1 B B B ···
0 1 B
q0 (q0 , 0, R) (q1 , 1, R) reject
q1 reject (q1 , 1, R) (q2 , B, L)
q2 reject (q3 , B, L) reject
q3 (q3 , 0, L) (q3 , 1, L) (q4 , B, R)
q4 (q5 , B, R) reject reject
q5 (q6 , 0, R) (q6 , 1, R) accept
q6 (q6 , 0, R) (q6 , 1, R) (q2 , B, L)
Eingabe x = 0000011
··· B 0 0 0 0 0 1 1 B B B ···
0 1 B
q0 (q0 , 0, R) (q1 , 1, R) reject
q1 reject (q1 , 1, R) (q2 , B, L)
q2 reject (q3 , B, L) reject
q3 (q3 , 0, L) (q3 , 1, L) (q4 , B, R)
q4 (q5 , B, R) reject reject
q5 (q6 , 0, R) (q6 , 1, R) accept
q6 (q6 , 0, R) (q6 , 1, R) (q2 , B, L)
Definition
(i) Eine Konfiguration einer TM ist ein String ↵q , mit q 2 Q und
↵, 2 ⇤ .
Bedeutung: auf dem Band steht ↵ eingerahmt von Blanks, der
Zustand ist q, und der Kopf steht über dem ersten Zeichen von .
(ii) ↵0 q 0 0 ist direkte Nachfolgekonfiguration von ↵q , falls ↵0 q 0 0
in
einem Rechenschritt aus ↵q entsteht. Wir schreiben
↵q ` ↵0 q 0 0
↵q `⇤ ↵00 q 00 00
.
Anmerkung: insbesondere gilt ↵q `⇤ ↵q
Phase 1:
Phase 2:
Technik 2: Mehrspurmaschinen
k-spurige TM: eine TM, bei der das Band in k sogenannte Spuren
eingeteilt ist. D.h. in jeder Bandzelle stehen k Zeichen, die der Kopf
gleichzeitig einlesen kann.
Das können wir erreichen, indem wir das Bandalphabet um
k-dimensionale Vektoren erweitern, z.B. neu := [ k
··· ⇤ 1 1 0 1 1 0 0 1 0 1 1 1 1 ⇤ ⇤ ⇤ ⇤ ···
··· ⇤ 1 0 0 1 1 0 1 1 1 0 1 1 0 ⇤ ⇤ ⇤ ⇤ ···
··· ⇤ 0 1 1 0 1 1 1 0 1 1 0 1 1 ⇤ ⇤ ⇤ ⇤ ···
DFA
Basierend auf diesen Techniken können wir uns klar machen, dass
bekannte Algorithmen (wie z.B. MergeSort) ohne Weiteres auf einer TM
ausgeführt werden können.
Gerhard Woeginger
WS 2019, RWTH
Achtung!
Die Verteilung auf Tutorien ist fehlgeschlagen
Die Anmeldungen müssen wiederholt werden
Die Prioritäten müssen neu eingegeben werden
Nächste Vorlesung:
Freitag, Oktober 18, 12:30–14:00 Uhr, Audimax
Mittwoch, Oktober 23: Keine Vorlesung
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Multiplikation:
(11#10, 110) 2 R f (11#10) = 110
(11#10, 11) 2 /R
(1#1#0, 110) 2 /R (f (1#1#0) =?)
Anschauliche Definition:
0 1 B
q1 (q1 , 1, L) (q2 , 1, R) (q1 , B, N) q3
··· B 0 0 1 0 B B B ···
q2 (q3 , B, R) (q1 , 0, L) (q3 , B, R)
q3 (q2 , 0, N) (q2 , 0, R) (q3 , B, R)
Formale Definition:
Eine Turingmaschine ist ein 7-Tupel (Q, ⌃, , B, q0 , q̄, ), wobei
Q, ⌃, endliche Mengen sind,
⌃✓ ,
B2 \ ⌃,
q0 , q̄ 2 Q und
: (Q \ {q̄}) ⇥ ! Q ⇥ ⇥ {R, L, N}.
Ausgangssituation
Auf dem Band steht die Eingabe x 2 ⌃⇤ eingerahmt von Blanks
Der initiale Zustand ist q0
Der Kopf steht über dem ersten Symbol von x
k
Speicher im Zustandsraum: Qneu := Q ⇥
k
Mehrspurmaschinen: neu := [
··· ⇤ 1 1 0 1 1 0 0 1 0 1 1 1 1 ⇤ ⇤ ⇤ ⇤ ···
··· ⇤ 1 0 0 1 1 0 1 1 1 0 1 1 0 ⇤ ⇤ ⇤ ⇤ ···
··· ⇤ 0 1 1 0 1 1 1 0 1 1 0 1 1 ⇤ ⇤ ⇤ ⇤ ···
DFA
Mehrband-Turingmaschinen
Gödelnummern
Die universelle Turingmaschine
Church-Turing These
··· B 1 1 0 1 0 1 0 B B B ···
··· B 0 0 0 0 0 1 1 B B B ···
Satz
Eine k-Band-TM M mit Zeitbedarf t(n) und Platzbedarf s(n)
kann von einer 1-Band-TM M 0
mit Zeitbedarf O(t 2 (n)) und Platzbedarf O(s(n)) simuliert werden.
Beweisskizze:
Die TM M 0 verwendet 2k Spuren.
Nach Simulation des t-ten Schrittes für 0 t t(n) gilt
Die ungeraden Spuren 1, 3, . . . , 2k 1 enthalten den Inhalt der
Bänder 1, . . . , k von M.
Auf den geraden Spuren 2, 4, . . . , 2k sind die Kopfpositionen auf
diesen Bändern mit dem Zeichen # markiert.
··· B * * * * A r b e i t s b a n d 1 B B B ···
··· B A r b e i t s b a n d 2 * * * * B B B ···
Simulierende 4-Spur-Turingmaschine M 0
(zu Beginn des Simulationsschrittes):
··· B * * * * A r b e i t s b a n d 1 B B B ···
··· B B B B B B # B B B B B B B B B B B B B ···
··· B A r b e i t s b a n d 2 * * * * B B B ···
··· B # B B B B B B B B B B B B B B B B B B ···
Laufzeitanalyse:
Wieviele Bandpositionen können zwischen dem linkesten und dem
rechtesten # liegen?
Nach t Schritten von M können diese Markierungen höchstens
2t Positionen auseinanderliegen.
Also ist der Abstand zwischen diesen Zeichen und somit auch die
Laufzeit zur Simulation eines einzelnen Schrittes durch O(t(n))
beschränkt.
Insgesamt ergibt das dann für die Simulation von t(n) Schritten eine
Laufzeitschranke von O(t(n)2 ). Q.E.D.
Definition
Wir nennen diese Kodierung hMi die Gödelnummer der
Turingmaschine M.
Zur Beschreibung von TMen dieser Form müssen wir nur die
Übergangsfunktion als Binärstring kodieren.
0 1 B
q1 (q1 , B, R) (q3 , B, R) (q2 , B, N)
q3 (q1 , 1, R) (q2 , 0, R) (q1 , B, L)
Initialisierung:
U überprüft, ob die Eingabe eine korrekte Gödelnummer enthält.
Falls nein: Fehlermeldung.
U kopiert die Gödelnummer auf Band 2 und
schreibt die Kodierung des Anfangszustands auf Band 3.
U bereitet Band 1 so vor, dass es nur das Wort w enthält.
Der Kopf steht auf dem ersten Zeichen von w .
Simulierte Turingmaschine M
··· B * * * * E i n g a b e * * * * * B B B ···
··· B * * * * E i n g a b e * * * * * B B B ···
··· B * * * ” M ” * * B B B ···
··· B 0 B B B ···
··· B 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 B B B ··· q3
0 1 B
q1
q2
q3 (q2 , 0, R)
Simulierende universelle Maschine U
··· B 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 B B B ···
··· 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 ···
··· B 0 0 0 B B B ···
··· B 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 B B B ··· q3
0 1 B
q1
q2
q3 (q2 , 0, R)
Simulierende universelle Maschine U
··· B 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 B B B ···
··· 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 ···
··· B 0 0 0 B B B ···
Vergleiche Band 3 mit Band 2
Gerhard Woeginger
WS 2019, RWTH
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
··· B * * * * A r b e i t s b a n d 1 B B B ···
··· B A r b e i t s b a n d 2 * * * * B B B ···
Simuliert durch
··· B * * * * A r b e i t s b a n d 1 B B B ···
··· B B B B B B # B B B B B B B B B B B B B ···
··· B A r b e i t s b a n d 2 * * * * B B B ···
··· B # B B B B B B B B B B B B B B B B B B ···
0 1 B
q1 (q1 , B, R) (q3 , B, R) (q2 , B, N)
q3 (q1 , 1, R) (q2 , 0, R) (q1 , B, L)
Simulierte Turingmaschine M
··· B * * * * E i n g a b e * * * * * B B B ···
··· B * * * * E i n g a b e * * * * * B B B ···
··· B * * * ¡ M ¿ * * B B B ···
··· B 0 B B B ···
Alonzo Church und Alan Turing formulierten in den 1930er Jahren die
folgende These:
Church-Turing These
Die Klasse der TM-berechenbaren Funktionen stimmt mit
der Klasse der “intuitiv berechenbaren” Funktionen überein.
Registermaschinen (RAMs)
Simulation von RAM durch TM
Simulation von TM durch RAM
Collatz Problem
c(3)
c(2)
b c(0) c(1)
Befehlssatz:
LOAD, STORE, ADD, SUB, MULT, DIV
INDLOAD, INDSTORE, INDADD, INDSUB, INDMULT, INDDIV
CLOAD, CADD, CSUB, CMULT, CDIV
GOTO, IF c(0)?x THEN GOTO j (mit ? in {=, <, , >, })
END
GOTO j — b := j
⇢
j falls c(0) = x
IF c(0) = x GOTO j — b :=
b + 1 sonst
⇢
j falls c(0) < x
IF c(0) < x GOTO j — b :=
b + 1 sonst
⇢
j falls c(0) x
IF c(0) x GOTO j — b :=
b + 1 sonst
⇢
j falls c(0) > x
IF c(0) > x GOTO j — b :=
b + 1 sonst
⇢
j falls c(0) x
IF c(0) x GOTO j — b :=
b + 1 sonst
END Ende der Berechnung —
Der Speicher der RAM ist unbeschränkt und besteht aus dem
Akkumulator c(0) und aus den Registern c(1), c(2), c(3), . . .
Die Inhalte der Register sind natürliche Zahlen, die beliebig gross
werden können.
Input: 2, 3
1: CLOAD 1
2: STORE 3 Output:
3: LOAD 2
4: If c(0) = 0 THEN GOTO 11
5: CSUB 1 ..
6: STORE 2 .
7: LOAD 3
8: MULT 1 0 c(5)
9: STORE 3
10: GOTO 3 0 c(4)
11: END
0 c(3)
3 c(2)
2 c(1)
1 0
Befehlszähler Akkumulator Speicher
Input: 2, 3
1: CLOAD 1
2: STORE 3 Output:
3: LOAD 2
4: If c(0) = 0 THEN GOTO 11
5: CSUB 1 ..
6: STORE 2 .
7: LOAD 3
8: MULT 1 0 c(5)
9: STORE 3
10: GOTO 3 0 c(4)
11: END
0 c(3)
3 c(2)
2 c(1)
2 1
Befehlszähler Akkumulator Speicher
Das Arbeiten mit einer RAM und mit RAM-Programmen ist sehr ähnlich
zum Arbeiten mit Assembler-Programmen.
Auf einer RAM können wir alle Befehle realisieren (wie beispielsweise
Schleifen und Rekursionen), die wir von höheren Programmiersprachen
her gewohnt sind.
Logarithmisches Kostenmaß:
Die Laufzeitkosten eines Schrittes der RAM sind proportional zur
binären Länge der Zahlen in den angesprochenen Registern.
Satz
Für jede im logarithmischen Kostenmass t(n)-zeitbeschränkte RAM R
gibt es ein Polynom q und eine q(n + t(n))-zeitbeschränkte
TM M, die R simuliert.
Für die Simulation der RAM auf der 1-Band-TM ergibt sich somit
eine Laufzeitschranke von
2
t 00 (n) = (t 0 (n))2 = ↵(n + t(n)) = ↵2 ·(n+t(n))2 .
Beobachtung
Die Klasse der Polynome ist unter Hintereinanderausführung
abgeschlossen.
Beobachtung
Der Platzbedarf auf Band 2 ist durch O(n + t(n)) beschränkt,
weil die RAM für jedes neue Bit, das sie erzeugt,
mindestens eine Zeiteinheit benötigt.
Das Unterprogramm Mb
kopiert den Inhalt der in Programmzeile b angesprochenen Register
auf Band 1,
führt die notwendigen Operationen auf diesen Registerinhalten durch,
kopiert dann das Ergebnis in das in Zeile b angegebene Register auf
Band 2 zurück, und
aktualisiert zuletzt den Programmzähler b.
Laufzeitanalyse:
Die Initialisierung erfordert Zeit O(n).
Simulierende Turingmaschine
··· B B B B ···
··· B # # 0 # 1 0 # # 1 # 1 0 # # 1 0 # 1 1 # # # B B B ···
Simulierende Turingmaschine
Kopiere c(0)
··· B B B B ···
··· B # # 0 # 1 0 # # 1 # 1 0 # # 1 0 # 1 1 # # # B B B ···
Satz
Jede t(n)-zeitbeschränkte TM kann durch eine RAM simuliert werden,
die zeitbeschränkt ist durch
O(t(n) + n) im uniformen Kostenmass und
O((t(n) + n) · log(t(n) + n)) im logarithmischen Kostenmass.
Simulierende Registermaschine
6: LOAD 2
..
7: IF c(0) = 1 THEN GOTO 23 .
8: IF c(0) = 2 THEN GOTO 32
9: IF c(0) = 3 THEN GOTO 41
1 c(6)
41: INDLOAD 1
2 c(5)
42: IF c(0) = 1 THEN GOTO 77
43: IF c(0) = 2 THEN GOTO 85 1 c(4)
1 c(3)
3 c(2) Zustand
6 0
5 c(1) Kopfposition
Simulierende Registermaschine
6: LOAD 2
..
7: IF c(0) = 1 THEN GOTO 23 .
8: IF c(0) = 2 THEN GOTO 32
9: IF c(0) = 3 THEN GOTO 41
1 c(6)
41: INDLOAD 1
2 c(5)
42: IF c(0) = 1 THEN GOTO 77
43: IF c(0) = 2 THEN GOTO 85 1 c(4)
1 c(3)
3 c(2) Zustand
8 3
5 c(1) Kopfposition
x c(1)
(
x/2 wenn x gerade
x
3x + 1 wenn x ungerade
O↵enes Problem
Hält die obige Registermaschine auf allen Eingaben?
User:Allen McC/Wikimedia
Commons/CC-BY-SA-3.0
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Mittwoch, Oktober 30, 10:30–12:00 Uhr, Aula
Keine Vorlesung am Freitag, November 1 (Allerheiligen)
Vorlesung am Mittwoch, November 6
Vorlesung am Freitag, November 8
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
c(3)
c(2)
b c(0) c(1)
Befehlssatz:
LOAD, STORE, ADD, SUB, MULT, DIV
INDLOAD, INDSTORE, INDADD, INDSUB, INDMULT, INDDIV
CLOAD, CADD, CSUB, CMULT, CDIV
GOTO, IF c(0)?x THEN GOTO j (mit ? in {=, <, , >, })
END
Satz: RAM ! TM
Für jede im logarithmischen Kostenmass t(n)-zeitbeschränkte RAM R
gibt es ein Polynom q und eine q(n + t(n))-zeitbeschränkte TM M,
die R simuliert.
Satz: TM ! RAM
Jede t(n)-zeitbeschränkte TM kann durch eine RAM simuliert werden,
die zeitbeschränkt ist durch
O(t(n) + n) im uniformen Kostenmass und
O((t(n) + n) · log(t(n) + n)) im logarithmischen Kostenmass.
1: LOAD 1
2: IF c(0) > 1 THEN GOTO 4
3: END
4: CADD 1
5: CDIV 2 (
6: CMULT 2 x/2 wenn x gerade
7: SUB 1 x
3x + 1 wenn x ungerade
8: IF c(0) > 0 THEN GOTO 13
9: LOAD 1
10: CDIV 2
11: STORE 1
12: GOTO 1
13: LOAD 1
14: CMULT 3
15: CADD 1
16: STORE 1
17: GOTO 1
Die Diagonalsprache
Das Komplement der Diagonalsprache
Die Unterprogrammtechnik
Das Halteproblem
Grundlegende Frage
Gibt es unentscheidbare Probleme?
Kurze Antwort
Ja, es gibt unentscheidbare Probleme.
Grund: Es existieren mehr Sprachen/Probleme als TMen/Algorithmen.
Die Elemente einer abzählbaren Menge können also der Reihe nach
durchnummeriert werden.
Jede endliche Menge M ist abzählbar.
Für eine abzählbar unendliche Menge M gibt es immer auch eine
bijektive (bijektiv = surjektiv+injektiv) Abbildung c : N ! M:
Wiederholungen von Elementen von M können bei der Abzählung
einfach weggelassen werden.
Alle abzählbar unendliche Mengen haben somit dieselbe Mächtigkeit
wie die Menge der natürlichen Zahlen N.
1 2 1 3 2 1 i i 1 i 2 1
, , , , , , ..., , , , ..., , ...
1 1 2 1 2 3 1 2 3 i
1 2 3 4 5 6 ...
Notation
Über dem binären Alphabet ⌃ = {0, 1} bezeichnen wir
das i -te Wort in der kanonischen Reihenfolge im Folgenden mit wi .
Die i -te TM in der kanonischen Reihenfolge der Gödelnummern
bezeichnen wir mit Mi .
Satz
Die Menge P(N) ist überabzählbar (= nicht abzählbar).
0 1 2 3 4 5 6
{1, 2, 4, 6, . . .} = S0 0 1 1 0 1 0 1 ···
{0, 1, 2, 4, 6, . . .} = S1 1 1 1 0 1 0 1 ···
S2 0 0 1 0 1 0 1 ···
S3 0 1 1 0 0 0 1 ···
S4 0 1 0 0 1 0 1 ···
S5 0 1 1 0 1 0 0 ···
S6 1 1 1 0 1 0 0 ···
.. .. .. .. .. .. ..
. . . . . . .
Sdiag = {1, 2, 4, . . .}
S diag = {0, 3, 5, 6 . . .}
Der Barbier von Sevilla rasiert alle Männer, die sich nicht selbst rasieren.
Frage: Rasiert der Barbier sich denn selbst?
Wir beobachten:
{0, 1}⇤ hat dieselbe Mächtigkeit wie N.
L = P({0, 1}⇤ ) hat somit dieselbe Mächtigkeit wie P(N).
Die Menge L der Entscheidungsprobleme ist also überabzählbar.
Zusammengefasst:
Es gibt überabzählbar viele Entscheidungsprobleme/Sprachen.
Es gibt nur abzählbar viele TMen/Gödelnummern.
Direkte Schlussfolgerung
Es existieren unentscheidbare Sprachen.
Definition (Diagonalsprache)
D = { w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w nicht}
Anders gesagt:
Das i -te Wort wi (in kanonischer Reihenfolge von {0, 1}⇤ )
ist genau dann in der Diagonalsprache D,
wenn die i -te TM Mi (in kanonischer Reihenfolge der Gödelnummern)
dieses Wort wi nicht akzeptiert.
w0 w1 w2 w3 w4 ···
M0 0 1 1 0 1 ··· Die Diagonalsprache lässt sich
M1 1 0 1 0 1 ··· von der Diagonale der Matrix
M2 0 0 1 0 1 ··· ablesen. Es gilt
M3 0 1 1 1 0 ···
M4 0 1 0 0 0 ··· D = {wi | Ai,i = 0}
.. .. .. .. ..
. . . . .
Satz
Die Diagonalsprache D ist unentscheidbar.
Beweis:
Wir nehmen zwecks Widerspruchs an, dass D entscheidbar ist.
Dann gibt es eine TM Mj , die D entscheidet.
Definition
Das Komplement der Diagonalsprache ist
D = { w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w }
Satz
Das Komplement D der Diagonalsprache ist nicht entscheidbar.
MD
accept accept
x
MD
reject reject
Beobachtung
Wenn die Sprache L ✓ {0, 1}⇤ unentscheidbar ist,
dann ist auch ihr Komplement L unentscheidbar.
Beobachtung
Wenn die Sprache L ✓ {0, 1}⇤ entscheidbar ist,
dann ist auch ihr Komplement L entscheidbar.
Satz
Das Halteproblem H ist nicht entscheidbar.
MD
accept accept
i mit
w wi = w hMi iwi
MH U reject
und
dann Mi
reject
w 2 D ) Mi akzeptiert wi
) MH und U akzeptieren hMi iwi
) MD akzeptiert w
w 62 D ) Mi akzeptiert wi nicht
) ( Mi hält nicht auf wi ) oder ( Mi verwirft wi )
) ( MH verwirft hMi iwi ) oder
( MH akzeptiert und U verwirft hMi iwi )
) MD verwirft w
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Freitag, November 1: Keine Vorlesung
Mittwoch, November 6, 10:30–12:00, Aula
Freitag, November 8, 12:30–14:00 Uhr, Audimax
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Direkte Schlussfolgerung
Es existieren nicht-berechenbare Probleme.
Definition (Diagonalsprache)
D = { w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w nicht}
Satz
Die Diagonalsprache D ist nicht entscheidbar.
Beweis: Durch Diagonalisierung
⇢
1 falls Mi das Wort wj akzeptiert
Ai,j =
0 sonst
w0 w1 w2 w3 w4
M0 0 1 1 0 1 ··· Die Diagonalsprache lässt sich
M1 1 0 1 0 1 ··· von der Diagonale der Matrix
M2 0 0 1 0 1 ··· ablesen. Es gilt
M3 0 1 1 1 0 ···
M4 0 1 0 0 0 ··· D = {wi | Ai,i = 0}
.. .. .. .. ..
. . . . .
Die Diagonalsprache:
D = {w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w nicht}
Das Diagonalsprachenkomplement:
D = {w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w }
Das Halteproblem:
H = {hMiw | M hält auf w }
MD
accept accept
x
MD
reject reject
MD
accept accept
i mit
w wi = w hMi iw
MH U reject
und
dann Mi
reject
Das Epsilon-Halteproblem
Abschlusseigenschaften
Definition (Epsilon-Halteproblem)
H✏ = {hMi | M hält auf der Eingabe ✏ }
Satz
Das Epsilon-Halteproblem H✏ ist nicht entscheidbar.
Beweisidee:
Wir benutzen die Unterprogrammtechnik.
Aus einer TM M✏ , die das Epsilon-Halteproblem H✏ entscheidet,
konstruieren wir eine neue TM MH , die das (wie wir bereits wissen:
nicht-entscheidbare!!) Halteproblem H entscheidet.
(1) Falls die Eingabe nicht mit einer korrekten Gödelnummer beginnt,
verwirft MH die Eingabe.
(2) Sonst, also auf Eingaben der Form hMiw , berechnet MH die
Gödelnummer einer TM Mw⇤ mit den folgenden Eigenschaften:
Falls Mw⇤ die Eingabe ✏ erhält, so schreibt sie zunächst das Wort w
aufs Band und simuliert dann die TM M mit der Eingabe w .
Bei Eingaben ungleich ✏ kann sich Mw⇤ beliebig verhalten.
(Wir legen fest, dass Mw⇤ dann in eine Endlosschleife geht.)
(3) MH startet nun M✏ mit der Eingabe hMw⇤ i und akzeptiert (verwirft)
genau dann, wenn M✏ akzeptiert (verwirft).
MH
accept
x hMi,w hMw⇤ i
hMi und w M" reject
mit
x = hMiw
reject (Syntax)
Übung
Gegeben hMi, gilt hMi 2 L(M)?
Gegeben hMi, ist L(M) leer?
Gegeben hMi, gilt L(M) = ⌃⇤ ?
Gegeben hMi, ist L(M) endlich?
Gegeben hMi, ist L(M) unendlich?
Gegeben hMi, ist L(M) regulär?
Gegeben hMi, ist L(M) kontext-frei?
Satz
Es sei R die Menge der von TMen berechenbaren partiellen Funktionen.
Es sei S eine Teilmenge von R mit ; ⇢ S ⇢ R mit S 6= ; und S 6= R.
nicht entscheidbar.
Mit anderen Worten: Alle nicht-trivialen Aussagen über die von einer TM
berechnete Funktion sind unentscheidbar.
Beispiel 1
Es sei S = {fM | fM (✏) 6= ?}.
Dann ist
Gemäss dem Satz von Rice ist das Epsilin-Halteproblem H✏ also nicht
entscheidbar. (Aber das wussten wir ja schon.)
R
S
Beispiel 2
Es sei S = {fM | 8w 2 {0, 1}⇤ : fM (w ) 6= ?}.
Dann ist
Diese Sprache ist auch als das totale Halteproblem Htot bekannt.
Gemäss dem Satz von Rice ist die Sprache Htot nicht entscheidbar.
R
S
Beispiel 3
Es sei S = {fM | 8w 2 {0, 1}⇤ : fM (w ) = 1}.
Dann ist
Gemäss dem Satz von Rice ist die Sprache L(S) nicht entscheidbar.
S = {1}
nicht entscheidbar.
Einige Vereinbarungen:
Die neue TM MH✏ mit dem Unterprogramm ML(S) arbeitet wie folgt:
(1) Falls die Eingabe nicht aus einer korrekten Gödelnummer besteht,
so verwirft MH✏ die Eingabe.
(2) Andernfalls berechnet MH✏ aus der Eingabe hMi die Gödelnummer
der TM M ⇤ :
Verhalten von M ⇤ auf Eingabe x
Zuerst simuliert M ⇤ das Verhalten von TM M bei Eingabe ✏ auf
einer für diesen Zweck reservierten Spur.
Danach simuliert M ⇤ das Verhalten von TM N bei Eingabe x.
M ⇤ hält, sobald N hält, und übernimmt die Ausgabe.
reject (Syntax)
M⇤
x " f (x)
M N
w2
/ H✏ ) M hält nicht auf ✏
) M ⇤ berechnet u
u 2S
/
) hM ⇤ i 2
/ L(S)
) ML(S) verwirft hM ⇤ i
) MH✏ verwirft w
Beispiel 4
Es sei
L17 = {hMi | M berechnet bei Eingabe der Zahl 17 die Zahl 42}.
Es ist L17 = L(S) für S = {fM | fM (bin(17)) = bin(42)}.
Da ; ( S ( R gilt, ist diese Sprache L17 gemäss dem Satz von Rice
nicht entscheidbar.
Beispiel 5
Es sei H32 = {hMi | auf jeder Eingabe hält M
nach höchstens 32 Schritten }.
Über diese Sprache sagt der Satz von Rice nichts aus!
Beispiel 6
Es sei L44 = {hMi | Es existiert ein Wort w , sodass die TM M bei
Abbarbeitung von w mindestens einmal im Zustand q44 ist }.
Über diese Sprache sagt der Satz von Rice nichts aus!
Beispiel 7
Es sei LD = {hMi | M entscheidet die Diagonalsprache}.
Dann ist LD = L(S) für S = {fD } wobei
(
1 wenn w 2 D
fD (w ) =
0 sonst.
Über diese Sprache sagt der Satz von Rice nichts aus!
Aber: Diese Sprache ist entscheidbar, denn LD = {}.
R
S = {fD }
Collatz Problem
Erreicht die Collatz’sche Iteration von jedem natürlichen Startwert x aus
irgendwann einmal die Zahl x = 1?
Satz
Wenn die Sprache L entscheidbar ist,
so ist auch ihr Komplement ⌃⇤ L entscheidbar.
Satz
Wenn die beiden Sprachen L1 und L2 entscheidbar sind,
(a) so ist auch die Sprache L1 \ L2 entscheidbar.
(b) so ist auch die Sprache L1 [ L2 entscheidbar.
Korrektheit:
Falls w 2 L1 \ L2 , so wird w akzeptiert.
Andernfalls wird w verworfen.
Korrektheit:
Falls w 2 L1 [ L2 , so wird w von M1 oder von M2 und somit auch
von M akzeptiert.
Andernfalls verwerfen sowohl M1 als auch M2 , und damit auch M.
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Freitag, November 8, 12:30–14:00 Uhr, Audimax
Mittwoch, November 13, 10:30–12:00, Aula
Freitag, November 15, 12:30–14:00 Uhr, Audimax
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Die Diagonalsprache:
D = {w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w nicht}
Das Diagonalsprachenkomplement:
D = {w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w }
Das Halteproblem:
H = {hMiw | M hält auf w }
Das Epsilon-Halteproblem:
H✏ = {hMi | M hält auf der Eingabe ✏ }
Satz
Es sei R die Menge der von TMen berechenbaren partiellen Funktionen.
Es sei S eine Teilmenge von R mit ; ( S ( R.
unentscheidbar.
R
S
f
u
M"
accept
reject (Syntax)
M⇤
x " f (x)
M N
Beispiel 2
Es sei S = {fM | 8w 2 {0, 1}⇤ : fM (w ) 6= ?}.
Dann ist
Diese Sprache ist auch als das totale Halteproblem Htot bekannt.
Gemäss dem Satz von Rice ist die Sprache Htot nicht entscheidbar.
Beispiel 5
Es sei H32 = {hMi | auf jeder Eingabe hält M
nach höchstens 32 Schritten }.
Über diese Sprache sagt der Satz von Rice nichts aus!
Semi-Entscheidbarkeit
Rekursive Aufzählbarkeit
Abschlusseigenschaften
Berechenbarkeitslandschaft
Reduktionen
Das totale Halteproblem
Definition
Wenn eine TM existiert, die die Sprache L erkennt,
so wird L als semi-entscheidbar bezeichnet.
Anmerkung:
Den Begri↵ semi-entscheidbar findet man in der Literatur oft auch
unter dem Namen Turing-akzeptierbar oder Turing-erkennbar.
Anmerkung:
L entscheidbar =) L semi-entscheidbar
Beispiel
Das Halteproblem H = {hMiw | M hält auf w } ist nicht entscheidbar,
aber semi-entscheidbar.
Definition
Ein Aufzähler für eine Sprache L ✓ ⌃⇤ ist eine Variante der TM mit
einem angeschlossenen Drucker.
Der Drucker ist ein zusätzliches Ausgabeband, auf dem sich der Kopf nur
nach rechts bewegen kann und auf dem nur geschrieben wird.
Der Aufzähler wird mit leerem Arbeitsband gestartet, und gibt mit
der Zeit alle Wörter in L (möglicherweise mit Wiederholungen) auf
dem Drucker aus.
Die ausgegebenen Wörter werden dabei immer durch ein
Trennzeichen separiert, das nicht in ⌃ enthalten ist.
Der Aufzähler druckt ausschliesslich Wörter in L.
0 1 B
q0 (q0 , B, R) (q1 , B, R) reject q
q1 (q0 , B, R) (q1 , B, R) accept
··· s o m e ···
!
··· 1 1 0 0 0 1 0 0 1 ··· Schreibkopf bewegt
sich nur nach rechts
Definition
Wenn es für die Sprache L einen Aufzähler gibt,
so wird L als rekursiv aufzählbar bezeichnet.
Zentraler Satz:
Satz (Rekursive Aufzählbarkeit , Semi-Entscheidbarkeit)
Eine Sprache L ist genau dann rekursiv aufzählbar,
wenn L semi-entscheidbar ist.
Korrektheit:
Falls w 2 L, so wird w irgendwann gedruckt und zu diesem
Zeitpunkt von M akzeptiert.
Falls w 62 L, so wird w niemals gedruckt und somit auch niemals von
M akzeptiert.
Korrektheit:
Der Aufzähler A druckt o↵ensichtlich nur Wörter aus L aus.
Aber druckt er auch wirklich alle Wörter aus L aus?
Es sei wi ein Wort in der Sprache L. Dann wird wi von der TM M
nach einer endlichen Anzahl ti von Schritten akzeptiert.
Deshalb wird wi in jeder Runde k mit k max{i , ti } vom Aufzähler
A ausgedruckt.
BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 18/40
Anzahl der Schritte, die TM M auf wi benötig: !
w1
w2
w3 1
w4
w5
w6
w7
.. .. ..
. . .
Satz
Wenn die beiden Sprachen L1 und L2 rekursiv aufzählbar sind,
(a) so ist auch die Sprache L1 \ L2 rekursiv aufzählbar.
(b) so ist auch die Sprache L1 [ L2 rekursiv aufzählbar.
Lemma
Wenn sowohl die Sprache L ✓ ⌃⇤ als auch ihr Komplement L := ⌃⇤ L
rekursiv aufzählbar sind, so ist L entscheidbar.
Beweis:
Es seien M und M zwei TMen, die L respektive L erkennen.
Für ein Eingabewort w simuliert die neue TM M 0 das Verhalten von
M auf w und das Verhalten von M auf w parallel auf zwei Bändern.
Wenn M akzeptiert, so akzeptiert M 0 .
Wenn M akzeptiert, so verwirft M 0 .
Da entweder w 2 L oder w 62 L gilt, tritt eines der beiden obigen
Ereignisse (M akzeptiert; M akzeptiert) nach endlicher Zeit ein.
Damit ist die Terminierung von M 0 sichergestellt.
Beispiel:
Das Halteproblem H ist rekursiv aufzählbar.
Falls H ebenfalls rekursiv aufzählbar, so wäre H entscheidbar.
Daher ist H nicht rekursiv aufzählbar.
Beobachtung
Wenn eine Sprache L rekursiv aufzählbar ist,
so ist ihr Komplement L nicht notwendigerweise rekursiv aufzählbar.
Beobachtung
Jede Sprache L fällt in genau eine der folgenden vier Familien.
(1) L ist entscheidbar, und sowohl L als auch L sind rekursiv aufzählbar.
(2) L ist rekursiv aufzählbar, aber L ist nicht rekursiv aufzählbar
(3) L ist rekursiv aufzählbar, aber L ist nicht rekursiv aufzählbar
(4) Weder L noch L sind rekursiv aufzählbar
Beispiele
Familie 1: Graphzusammenhang; Hamiltonkreis
Familie 2: H, H✏ , D
Familie 3: H, H ✏ , D,
Familie 4: Htot = {hMi | M hält auf jeder Eingabe}
Probleme mit
rekursiv
rekursiv
aufzählbare
aufzählbarem
Probleme entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Definition
Es seien L1 und L2 zwei Sprachen über einem Alphabet ⌃.
Dann heisst L1 auf L2 reduzierbar (mit der Notation L1 L2 ),
wenn eine berechenbare Funktion f : ⌃⇤ ! ⌃⇤ existiert,
so dass für alle x 2 ⌃⇤ gilt: x 2 L1 , f (x) 2 L2 .
L2
L1
M1 für L1
accept
x Reduktion: f (x)
Übersetze M2 für L2
x in f (x) reject
Satz
Falls L1 L2 und falls L2 rekursiv aufzählbar ist,
so ist auch L1 rekursiv aufzählbar.
Beweis: Wir konstruieren eine TM M1 , die L1 erkennt, indem sie als
Unterprogramm eine TM M2 verwendet, die L2 erkennt:
Für eine Eingabe x berechnet die TM M1 zunächst f (x).
Danach simuliert M1 die TM M2 mit der Eingabe f (x).
M1 akzeptiert die Eingabe x, falls M2 die Eingabe f (x) akzeptiert.
M1 für L1
accept
x Reduktion: f (x)
Übersetze M2 für L2
x in f (x) reject
Behauptung A: H ✏ H tot
Behauptung B: H ✏ Htot
Aus diesen beiden Reduktionen folgt dann:
Satz
Weder H tot noch Htot ist rekursiv aufzählbar.
w 62 H ✏ ) w 2 H✏
) M hält auf der Eingabe ✏.
) M✏⇤ hält auf jeder Eingabe
) hM✏⇤ i 2 Htot
) f (w ) = hM✏⇤ i 62 H tot und (b) ist korrekt.
w2
/ H✏ ) M hält nicht auf der Eingabe ✏
) ¬9i : M hält innerhalb von i Schritten auf ✏
) 8i : M hält nicht innerhalb von i Schritten auf ✏
) 8i : M 0 hält auf allen Eingaben der Länge i
) M 0 hält auf jeder Eingabe
) f (w ) = hM 0 i 2 Htot und (a) ist korrekt.
BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 39/40
Behauptung B: H ✏ Htot Beweis (3)
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Mittwoch, November 13, 10:30–12:00, Aula
Freitag, November 15, 12:30–14:00 Uhr, Audimax
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Satz
Die Menge der entscheidbaren Sprachen ist abgeschlossen
unter Komplementbildung, Vereinigung und Durchschnitt.
Satz
Die Menge der rekursiv aufzählbaren Sprachen
ist abgeschlossen unter Vereinigung und Durchschnitt
aber nicht abgeschlossen unter Komplementbildung
Das Halteproblem H ist rekursiv aufzählbar.
Das Komplement H ist nicht rekursiv aufzählbar.
Probleme
rekursiv
mit rekursiv
aufzählbare
aufzählbarem
Probleme entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Definition
Es seien L1 und L2 zwei Sprachen über einem Alphabet ⌃.
Dann heisst L1 auf L2 reduzierbar (mit der Notation L1 L2 ),
wenn eine berechenbare Funktion f : ⌃⇤ ! ⌃⇤ existiert,
so dass für alle x 2 ⌃⇤ gilt: x 2 L1 , f (x) 2 L2 .
Satz
Es seien L1 und L2 zwei Sprachen mit L1 L2 .
L2 entscheidbar ) L1 entscheidbar
L2 rekursiv aufzählbar ) L1 rekursiv aufzählbar
L1 nicht entscheidbar ) L2 nicht entscheidbar
L1 nicht rekursiv aufzählbar ) L2 nicht rekursiv aufzählbar
M1 für L1
accept
x Reduktion: f (x)
Übersetze M2 für L2
x in f (x) reject
Beispiel A
Für die Dominomenge
⇢
b a ca dbd abc caeef
K = , , , , ,
ca ab a cef c abce
Beispiel B
Nicht für jede Menge K existiert eine correspondierende Folge,
wie zum Beispiel für die Dominomenge
⇢
abc b abcb abc
K = , , ,
ca aa abc bc
⇢
aaa baa ab b
K2 = , , ,
aab a abb aa
⇢
aab a b
K3 = , ,
a ba aab
Satz B
H MPCP
Satz
Das PCP ist unentscheidbar.
rekursiv
Probleme
aufzählbare
mit rekursiv
Probleme
aufzählbarem
PCP MPCP entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Übung
Zeigen Sie:
Das PCP ist rekursiv aufzählbar.
Das MPCP ist rekursiv aufzählbar.
Idee:
Zuerst testet man alle correspondierenden Folgen der Länge 1.
Dann testet man alle correspondierenden Folgen der Länge 2.
Dann testet man alle correspondierenden Folgen der Länge 3.
Dann testet man alle correspondierenden Folgen der Länge 4.
Usw., usw., usw., usw.
Beispiel:
⇢
ab h c i h a i
MPCP K = , , wird modelliert als
⇢ a abc b
#a#b# a#b# c# a# $
PCP f (K ) = , , , ,
#a #a #a#b#c #b #$
Aus einer Lösung für das MPCP K lässt sich also eine Lösung für
das PCP f (K ) konstruieren. Damit ist die Implikation (1) gezeigt.
(Illustrierendes Beispiel)
0 1 B
q0 (q0 , 0, R) (q1 , 1, R) (q, 1, N)
q1 (q2 , 0, R) (q1 , 1, R) (q, 1, N)
q2 (q2 , 0, R) (q2 , 1, R) (q2 , B, R)
Dominosteine / Teil 2
Weiters gibt es für jedes Zeichen aus [ {#} einen entsprechenden Stein:
0 1 B #
, , ,
0 1 B #
Dominosteine / Teil 3
Auch für jeden Eintrag in der Tabelle der Überführungsfunktion gibt
es einen entsprechenden Stein, der den jeweiligen Übergang inklusive der
Kopfbewegung beschreibt:
q0 0 q0 1 q0 B q1 0 q1 1 q1 B q2 0 q2 1 q2 B
, , , , , , , ,
0q0 1q1 q1 0q2 1q1 q1 0q2 1q2 Bq2
(Achtung: Die Konstruktion wird später noch erweitert und fortgesetzt.)
Beobachtung:
#
Angenommen, wir ergänzen den Startdomino mit einer
##q0 0011#
Folge von Dominos aus der bisherigen Liste von Dominos derart, dass der
obere String einen Präfix des unteren Strings bildet.
Dominosteine / Teil 4
Die folgenden Dominos realisieren Überführungen, die ein zusätzliches
Blank-Symbol benötigen, da der Kopf am Ende des Wortes steht.
q0 # q1 #
,
q 1# q 1#
Dominosteine / Teil 5
Wir führen einige Dominos ein, die nur dann zum Einsatz kommen
können, wenn der Endzustand q bereits erreicht ist:
q0 q1 qB 0q 1q Bq
, , , , ,
q q q q q q
# 0 0 1 1 q1 #
...
# 0 0 1 1 q1#
# 0 0 1 1 q1 #
# 0 0 1 1 q #
# 0 0 1 1q #
# 0 0 1 q #
# 0 0 1q #
# 0 0 q #
# 0 0q #
# 0 q #
# 0q # #q##
(Und fertig)
# q # #
Dominosteine (Startdomino)
Der Startdomino ist von der Form
#
##q0 w #
Dominosteine (Kopierdominos)
Weiters enthält K die folgenden Kopierdominos:
hai
für alle a 2 [ {#}
a
Dominosteine (Überführungsdominos)
qa
falls (q, a) = (q 0 , c, N), für q 2 Q \ {q}, a 2
q0c
qa
falls (q, a) = (q 0 , c, R), für q 2 Q \ {q}, a 2
cq 0
bqa
falls (q, a) = (q 0 , c, L), für q 2 Q \ {q}, a, b 2
q 0 bc
#qa
falls (q, a) = (q 0 , c, L), für q 2 Q \ {q}, a 2
#q 0 Bc
q#
falls (q, B) = (q 0 , c, N), für q 2 Q \ {q}
q 0 c#
q#
falls (q, B) = (q 0 , c, R), für q 2 Q \ {q}
cq 0 #
bq#
falls (q, B) = (q 0 , c, L), für q 2 Q \ {q}, b 2
q 0 bc#
#q#
falls (q, B) = (q 0 , c, L), für q 2 Q \ {q}
#q 0 Bc#
Dominosteine (Löschdominos)
Weiters enthält K die folgenden Löschdominos:
aq qa
und für a 2
q q
Dominosteine (Abschlussdomino)
Der Abschlussdomino ist von der Form
#q##
#
k0 ` k1 ` · · · ` kt 1 ` kt
## k0 ## k1 ## · · · ## kt 1 #
## k0 ## k1 ## · · · ## kt 1 ## kt #
Der obere String ist dann ein Präfix des unteren Strings:
## k0 ## k1 ## · · · ## kt 1 #
## k0 ## k1 ## · · · ## kt 1 ## kt #
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Freitag, November 15, 12:30–14:00 Uhr, Audimax
Mittwoch, November 20: Keine Vorlesung
Freitag, November 22, 12:30–14:00 Uhr, Audimax
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Satz B
H MPCP
Satz
Das PCP ist unentscheidbar.
Turing-Mächtigkeit
Game of Life
Also: Bei jeder Regel in P steht auf der linken Seite nur ein einzelnes
Non-Terminal Symbol
Beispiel
N = {S}
⌃ = {a, b, c}
P: S ! aSa | bSb | cSc; S ! a | b | c; S ! aa | bb | cc
Herleitung:
S ! aSa ! acSca ! acaSaca ! acaaSaaca ! acaabbaaca
Herleitung:
S ! bSb ! bbSbb ! bbbSbbb ! bbbbbbbb
Definition
L(G ) ist die Menge aller Worte über dem Terminal Alphabet ⌃,
die durch wiederholte Anwendung von Regeln in P
aus dem Startsymbol S hergeleitet werden können.
Satz
Es ist unentscheidbar, ob die von zwei gegebenen CFGs G1 und G2
erzeugten Sprachen leeren Durchschnitt haben.
Beweis: ⇢
x1 xk
Betrachte eine beliebige PCP Instanz ,...,
y1 yk
Es seien b1 , . . . , bk Buchstaben, die nicht in xi und yi vorkommen
Konstruiere CFGs G1 und G2 mit folgenden Regeln:
G1 : S ! x1 Sb1 | x2 Sb2 | · · · | xk Sbk | x1 b1 | · · · | xk bk
G2 : S ! y1 Sb1 | y2 Sb2 | · · · | yk Sbk | y1 b1 | · · · | yk bk
Beispiel
Z
4x 3 + 3x 2 + 2x + 7 dx = x 4 + x 3 + x 2 + 7x + C
Z
x sin(x) dx = x cos(x) + sin(x) + C
Z
sin(x)
dx = ???
x
Z
2
e x dx = ???
Z p
1 + cos2 (x) dx = ???
a ax + b
und
(x b)n ((x c)2 + d 2 )n
geschrieben werden.
Wikipedia:
David Hilbert war ein deutscher Mathematiker. Er gilt als einer der
bedeutendsten Mathematiker der Neuzeit. Viele seiner Arbeiten auf dem
Gebiet der Mathematik und mathematischen Physik begründeten
eigenständige Forschungsgebiete.
Ein Term ist ein Produkt aus Variablen mit einem konstanten
Koeffizienten. Zum Beispiel ist
6·x ·x ·x ·y ·z ·z bzw. 6x 3 yz 2
6x 3 yz 2 + 3xy 2 x3 10
(x, y , z) = (5, 3, 0)
Beispiel 27
Besitzt die Gleichung x 3 + y 3 + z 3 = 27 eine ganzzahlige Lösung?
Ja, zum Beispiel (x, y , z) = (3, 0, 0)
Beispiel 28/29
Besitzt die Gleichung x 3 + y 3 + z 3 = 28 eine ganzzahlige Lösung?
Besitzt die Gleichung x 3 + y 3 + z 3 = 29 eine ganzzahlige Lösung?
Ja und ja: (x, y , z) = (3, 1, 0) und (x, y , z) = (3, 1, 1)
Beispiel 30
Besitzt die Gleichung x 3 + y 3 + z 3 = 30 eine ganzzahlige Lösung?
Ja, zum Beispiel (x, y , z) = ( 283059965, 2218888517, 2220422932)
Entdeckt von: Beck, Pine, Tarrant & Yarbrough (2007)
BuK/WS 2019 VL-08: Turing-Mächtigkeit 21/49
Beispiele (2)
Beispiel 31
Besitzt die Gleichung x 3 + y 3 + z 3 = 31 eine ganzzahlige Lösung?
Nein!
Modulo 9 genommen kann eine ganze Zahl n nur die Reste
0, ±1, ±2, ±3, ±4 annehmen.
Modulo 9 genommen kann eine Kubikzahl n3 daher nur die Reste
03 , (±1)3 , (±2)3 , (±3)3 , (±4)3 annehmen.
Modulo 9 genommen kann eine Kubikzahl n3 daher nur die Reste
0, ±1 annehmen.
Modulo 9 genommen kann die Summe x 3 + y 3 + z 3 von drei
Kubikzahlen daher nur die Reste 0, ±1, ±2, ±3 annehmen, und
niemals die Reste ±4.
Da 31 ⌘ 4 (mod 9), gibt es keine ganzzahlige Lösung.
Beispiel 32
Besitzt die Gleichung x 3 + y 3 + z 3 = 32 eine ganzzahlige Lösung?
Nein! Da 32 ⌘ 4 (mod 9), gibt es keine ganzzahlige Lösung.
Beispiel 33
Besitzt die Gleichung x 3 + y 3 + z 3 = 33 eine ganzzahlige Lösung?
Ja: (8866128975287528, 8778405442862239, 2736111468807040)
Entdeckt von: Andrew Booker (März 2019)
x · (x 3 x2 4x + 2) = 24
Beobachtung
Es ist entscheidbar, ob eine univariate Diophantische Gleichung
an x n + an 1x
n 1
+ · · · + a2 x 2 + a1 x + a0 = 0
Im Originalwortlaut:
Eine Diophantische Gleichung mit irgend welchen Unbekannten und mit
ganzen rationalen Zahlencoefficienten sei vorgelegt: man soll ein
Verfahren angeben, nach welchem sich mittelst einer endlichen Anzahl
von Operationen entscheiden lässt, ob die Gleichung in ganzen rationalen
Zahlen lösbar ist.
In modernerer Formulierung:
Konstruiere einen Algorithmus, der entscheidet, ob ein gegebenes
Polynom mit ganzzahligen Koeffizienten eine ganzzahlige Nullstelle hat.
In BuK Formulierung:
Konstruiere eine Turing Maschine, die die folgende Sprache entscheidet:
Dioph = { hpi| p ist ein Polynom mit ganzzahligen Koeffizienten
und mit (mindestens) einer ganzzahligen Nullstelle}
Wir folgern:
Satz
Die Sprache Dioph ist rekursiv aufzählbar.
Falls wir eine obere Schranke für die Absolutwerte der Nullstellen
hätten, so brauchten wir nur eine endliche Menge von `-Tupeln
aufzuzählen. Damit wäre das Problem Dioph entscheidbar.
Wir haben bereits gesehen:
Für univariate Polynome p(x) = ak x k + ak 1x
k 1
+ · · · + a1 x + a0
ist |a0 | eine derartige obere Schranke.
Für multivariate Polynome gibt es aber keine derartige obere
Schranke für die Absolutwerte der Nullstellen:
Betrachten Sie zum Beispiel das Polynom p(x, y ) = x + y .
Andrerseits: Wir brauchen ja gar keine Schranke, die für alle
Nullstellen gilt. Es reicht schon, wenn eine einzige der Nullstellen
beschränkt ist.
Existiert eine derartige Schranke? Oder gibt es vielleicht ganz andere
Ansätze und Möglichkeiten, um einem Polynom anzusehen, ob es
eine ganzzahlige Nullstelle besitzt?
Der Beweis beruht auf einer langen Kette von Argumenten, durch
die letztendlich das Halteproblem für Turing Maschinen auf das
Nullstellenproblem Dioph reduziert wird.
Yuri Matiyasevich hat das letzte Glied in dieser Kette geschlossen.
Andere wichtige Kettenglieder wurden in den Jahren 1950–1970 von
Julia Robinson, Martin Davis und Hilary Putnam konstruiert.
rekursiv
Probleme
aufzählbare
mit rekursiv
Probleme
aufzählbarem
PCP entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Dioph
Definition
Ein Rechnermodell wird als Turing-mächtig bezeichnet,
wenn jede Funktion, die durch eine TM berechnet werden kann,
auch durch dieses Rechnermodell berechnet werden kann.
c(4)
Programm
c(3)
c(2)
b c(0) c(1)
Befehlssatz:
LOAD, STORE, ADD, SUB, MULT, DIV
INDLOAD, INDSTORE, INDADD, INDSUB, INDMULT, INDDIV
CLOAD, CADD, CSUB, CMULT, CDIV
GOTO, IF c(0)?x THEN GOTO (mit ? aus {=,<,<=,>,>=})
END
c(1000)
Programm ..
.
c(2)
b c(0) c(1)
Eingeschränkter Befehlssatz:
LOAD, STORE, ADD, SUB, MULT, DIV
INDLOAD, INDSTORE, INDADD, INDSUB, INDMULT, INDDIV
CLOAD, CADD, CSUB, CMULT, CDIV
GOTO, IF c(0)>0 THEN GOTO (mit ? aus {=,<,<=,>,>=})
END
Übung
Die Mini-RAM ist eine eingeschränkte Variante der RAM
mit nur acht Befehlen LOAD, STORE, CLOAD, CADD, CSUB,
GOTO, IF c(0)>0 THEN GOTO, END
und mit einer endlichen Anzahl von Registern.
Hinweis: Diese Übung wird viel einfacher, wenn man erst einmal den Sto↵
von VL-09 gesehen hat.
Der Lambda Calculus von Alonzo Church ist äquivalent zur TM, und
daher Turing-mächtig
Die µ-rekursiven Funktionen von Stephen Kleene sind äquivalent zur
TM, und daher Turing-mächtig
Alle gängigen höheren Programmiersprachen sind Turing-mächtig:
Algol, Pascal, C, FORTRAN, COBOL, Java, Smalltalk, Ada, C++,
Python, LISP, Haskell, PROLOG, etc.
Conway’s Game of Life (aus dem Jahr 1970) ist ein zellulärer Automat,
der auf einem unendlichen 2-dimensionalen Gitter arbeitet.
Zu jedem Zeitpunkt ist jede Zelle entweder lebend oder tot.
Kombinatorische Fragen
Kann eine Anfangskonfiguration K unbeschränkt wachsen?
Gibt es für jede Anfangskonfiguration K eine Schranke f (K ), sodass
alle aus K entstehenden Konfigurationen höchstens f (K ) lebende
Zellen haben?
Algorithmische Fragen
Falls das Game of Life mit einer gegebenen Anfangskonfiguration K
gestartet wird,
stirbt das System dann irgendwann aus?
erreicht das System jemals einen stabilen Zustand?
verhält sich das System dann irgendwann periodisch?
erreicht das System dann jemals eine gegebene Zielkonfiguration K 0 ?
Satz
Conway’s Game of Life ist Turing-mächtig.
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Mittwoch, November 20: Keine Vorlesung
Freitag, November 22, 12:30–14:00 Uhr, Audimax
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Im Originalwortlaut (1900):
Eine Diophantische Gleichung mit irgend welchen Unbekannten und mit
ganzen rationalen Zahlencoefficienten sei vorgelegt: man soll ein
Verfahren angeben, nach welchem sich mittelst einer endlichen Anzahl
von Operationen entscheiden lässt, ob die Gleichung in ganzen rationalen
Zahlen lösbar ist.
rekursiv
Probleme
aufzählbare
mit rekursiv
Probleme
aufzählbarem
PCP entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Dioph
Definition
Ein Rechnermodell wird als Turing-mächtig bezeichnet,
wenn jede Funktion, die durch eine TM berechnet werden kann,
auch durch dieses Rechnermodell berechnet werden kann.
Der Lambda Calculus von Alonzo Church ist äquivalent zur TM, und
daher Turing-mächtig
Die µ-rekursiven Funktionen von Stephen Kleene sind äquivalent zur
TM, und daher Turing-mächtig
Alle gängigen höheren Programmiersprachen sind Turing-mächtig:
Algol, Pascal, C, FORTRAN, COBOL, Java, Smalltalk, Ada, C++,
Python, LISP, Haskell, PROLOG, etc.
Variablen: x0 x1 x2 x3 . . .
Konstanten: 0 und 1
Symbole: := + ;
Schlüsselwörter: LOOP DO ENDLOOP
Zuweisungen
Für alle Variablen xi und xj und für jede Konstante c 2 {0, 1}
ist die Zuweisung
xi := xj + c
Hintereinanderausführung
Falls P1 und P2 LOOP Programme sind, so ist auch
P1 ; P 2
LOOP-Konstrukt
Falls P ein LOOP Programm ist, so ist auch
LOOP xi DO P ENDLOOP
Beispiel A
xj := xi + 0
Es sei xzero eine Dummy-Variable, die mit 0 initialisiert wird und deren
Wert nie verändert wird. Das folgende (c + 1)-zeilige Programm simuliert
die Zuweisung xj := c eines konstanten Wertes c 0 an eine Variable.
Beispiel B
xj := xzero ;
xj := xj + 1;
xj := xj + 1;
.. ..
. .
xj := xj + 1;
Beispiel C
x0 := x1 ;
LOOP x2 DO x0 := x0 + 1 ENDLOOP
Dieses Programm berechnet die Addition x0 := x1 + x2
Beispiel D
x0 := 0;
LOOP x2 DO x0 := x0 + x1 ENDLOOP
Dieses Programm berechnet die Multiplikation x0 := x1 · x2
Übung
Skizzieren Sie LOOP Programme, die die folgenden Operationen
berechnen:
Die (modifizierte) Subtraktion x := x . x .
0 1 2
Für x1 < x2 erhält x0 den Wert 0; andernfalls den Wert x1 x2
Übung
Skizzieren Sie ein LOOP Programm,
das “IF x1 = c THEN P1 ELSE P2 ENDIF” simuliert.
Variablen: x0 x1 x2 x3 . . .
Konstanten: 0 und 1
Symbole: := + ; 6=
Schlüsselwörter: LOOP DO ENDLOOP WHILE ENDWHILE
Die Syntax von WHILE ist induktiv definiert, und stimmt weitgehend
mit der Syntax von LOOP überein.
Zuweisungen xi := xj + c und die Hintereinanderausführung P1 ; P2
sind genau wie in LOOP definiert.
Der Hauptunterschied zu LOOP besteht im Schleifen-Konstrukt.
WHILE-Konstrukt
Falls P ein WHILE Programm ist und xi eine Variable, so ist auch
WHILE xi 6= 0 DO P ENDWHILE
Bemerkung
Die LOOP-Schleife
LOOP xi DO P ENDLOOP
y := xi
WHILE y 6= 0 DO y := y 1; P ENDWHILE
Satz
Die Programmiersprache WHILE ist Turing-mächtig.
Beweis:
Wir zeigen, dass jede Funktion, die durch eine TM berechnet werden
kann, auch durch ein WHILE Programm berechnet werden kann.
Bandalphabet = {1, 2, B}
WHILE kodiert
Buchstaben 1 durch Dezimalzi↵er 1,
Buchstaben 2 durch Dezimalzi↵er 2, und
Buchstaben B durch Dezimalzi↵er 0.
··· B 1 1 2 2 2 1 2 1 1 1 B B B ···
1 2 B
q1
q3
q2
q3 (q2 , 1, R)
Zustand := i ;
Das Symbol unterm Kopf wird auf neues Symbol 2 {0, 1, 2} gesetzt,
indem man das folgende Programmstück ausführt:
UntermKopf := ;
··· B 1 1 1 2 1 2 2 1 1 B B B ···
··· B 1 1 1 2 1 2 2 1 1 B B B ···
Initialisierung
Zustand := 1;
BandLinks := 0;
UntermKopf := Erstes Symbol im Eingabewort (als Dezimalzi↵er);
BandRechts := Restliches Eingabewort (dezimal & gespiegelt);
Definition
Die Ackermann Funktion A : N2 ! N ist folgendermassen definiert:
Beobachtung
A(1, n) = n + 2
Beobachtung
A(2, n) = 2n + 3
Beobachtung
A(3, n) = 2n+3 3
A(1, n) = n + 2
A(2, n) = 2n + 3
A(3, n) = 2n+3 3
· 2
2 ··
A(4, n) = | 2{z } 3
n + 3 viele
Zweien
Es gilt:
A(1, n) = 2 + (n + 3) 3
A(2, n) = 2 · (n + 3) 3
A(3, n) = 2 " (n + 3) 3
A(4, n) = 2 "" (n + 3) 3
A(5, n) = 2 """ (n + 3) 3
..
.
A(m, n) = 2 "m 2
(n + 3) 3 für m 2
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Mittwoch, November 27: Keine Vorlesung
Freitag, November 29, 12:30–14:00 Uhr, Audimax
Mittwoch, Dezember 04, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Variablen: x0 x1 x2 x3 . . .
Konstanten: 0 und 1
Symbole: := + ;
Schlüsselwörter: LOOP DO ENDLOOP
Variablen: x0 x1 x2 x3 . . .
Konstanten: 0 und 1
Symbole: := + ; 6=
Schlüsselwörter: LOOP DO ENDLOOP WHILE ENDWHILE
Satz
Die Programmiersprache WHILE ist Turing-mächtig.
Simulierte Turingmaschine M:
··· B 1 1 2 2 2 1 2 1 1 1 B B B ···
1 2 B
q1
q3
q2
q3 (q2 , 1, R)
(Hilbert über Ackermann: “Oh, das ist wunderbar. Das sind gute Neuigkeiten für mich. Denn
wenn dieser Mann so verrückt ist, dass er heiratet und sogar ein Kind hat, bin ich von jeder
Verpflichtung befreit, etwas für ihn tun zu müssen.”)
Definition
Die Ackermann Funktion A : N2 ! N ist folgendermassen definiert:
Wilhelm Ackermann:
“Zum Hilbertschen Aufbau der reellen Zahlen”
Mathematische Annalen 99 (1928), pp. 118–133
Rózsa Péter:
“Konstruktion nichtrekursiver Funktionen”
Mathematische Annalen 111 (1935), pp. 42–60
A(1, n) = n + 2
A(2, n) = 2n + 3
A(3, n) = 2n+3 3
2
· ··
2
A(4, n) = | 2{z } 3
n + 3 viele
Zweien
Es gilt:
A(1, n) = 2 + (n + 3) 3
A(2, n) = 2 · (n + 3) 3
A(3, n) = 2 " (n + 3) 3
A(4, n) = 2 "" (n + 3) 3
A(5, n) = 2 """ (n + 3) 3
..
.
A(m, n) = 2 "m 2
(n + 3) 3 für m 2
Knuth-Morris-Pratt algorithm
Knuth-Bendix completion algorithm
Satz
Die Ackermann Funktion ist Turing-berechenbar.
Beweis:
Wir zeigen mit Induktion über m 0, dass jede Funktion
fm : N ! N mit fm (x) = A(m, x) berechenbar ist.
Für m = 0 ist f0 die Nachfolgerfunktion f0 (x) = x + 1.
Für m 1 berechnen wir fm (x), indem wir der Reihe nach induktiv
alle Werte fm (0), fm (1), fm (2), . . . , fm (x 1) bestimmen.
Zum Schluss berechnen wir:
fm (x) = A(m, x) = A(m 1, A(m, x 1)) = fm 1 (fm (x 1))
0
0 n
Monotonie
(M.1) A(m, n + 1) > A(m, n)
(M.2) A(m + 1, n) > A(m, n)
(M.3) A(m + 1, n 1) A(m, n)
A(m, n) A(m0 , n0 )
Übung
Beweisen Sie die Ungleichung (M.2) mit vollständiger Induktion über die
lexikographisch sortierten Paare (m, n).
Technische Annahme:
In LOOP-Konstrukten LOOP xi DO P ENDLOOP
kommt die Zählvariable xi nicht im inneren Programmteil P vor.
Andernfalls führen wir für die Schleife eine frische Zählvariable xi0 ein:
xi0 := xi ;
LOOP xi0 DO P ENDLOOP
Definition
Für die Anfangswerte ~a = (a1 , . . . , ak ) 2 Nk der Variablen definieren wir
fP (~a) := b1 + b2 + · · · + bk
Definition
Die Wachstumsfunktion FP : N ! N ist definiert durch
( k
)
X
k
FP (n) = max fP (~a) ~a 2 N mit ai n
i=1
Intuition:
Die Funktion FP beschreibt den maximalen Wert, auf den die
Variablensumme durch das LOOP Programm P anwachsen kann.
Wenn wir das Programm mit einer Variablensumme n füttern, so
liefert uns das Programm eine Variablensumme von höchstens FP (n).
Lemma (Wachstumslemma)
Für jedes LOOP Programm P existiert eine natürliche Zahl mP ,
sodass für alle n 2 N gilt: FP (n) < A(mP , n).
Induktionsanfang (Zuweisungen)
Es sei P von der Form xi := xj + c mit c 2 {0, 1}.
Wir werden zeigen: FP (n) < A(2, n).
Induktionsschritt (Hintereinanderausführung)
Es sei P von der Form P1 ; P2 .
Induktionsannahme: 9q 2 N : FP1 (`) < A(q, `) und
FP2 (`) < A(q, `).
Wir werden zeigen: FP (n) < A(q + 1, n).
Induktionsschritt (LOOP-Konstrukt)
Es sei P von der Form “LOOP xi DO Q ENDLOOP”
Induktionsannahme: 9q 2 N : FQ (`) < A(q, `).
Wir werden zeigen: FP (n) < A(q + 1, n).
Induktionsanfang (Zuweisungen)
Es sei P von der Form “xi := xj + c” mit c 2 {0, 1}
Dann gilt: FP (n) 2n + 1, und somit FP (n) < A(2, n) = 2n + 3
Argument:
P verändert nur den Wert der Variablen xi .
Am Anfang war xi 0, und am Ende ist xi = xj + c n + 1.
Die Summe aller Variablenwerte erhöht sich um höchstens n + 1,
und springt damit
von höchstens n (am Anfang)
auf höchstens 2n + 1 (am Ende).
Induktionsschritt (Hintereinanderausführung)
Es sei P von der Form “P1 ; P2 ”
Induktionsannahme: 9q 2 N : FP1 (`) < A(q, `) und
FP2 (`) < A(q, `).
Dann gilt: FP (n) < A(q + 1, n)
Argument:
Wir verwenden Abschätzung (M.3): A(q, n) A(q + 1, n 1)
Dann folgt mit den Monotonie Eigenschaften, dass
Induktionsschritt (LOOP-Konstrukt)
Es sei P von der Form “LOOP xi DO Q ENDLOOP”
Induktionsannahme liefert: 9q 2 N : FQ (`) < A(q, `)
Dann gilt: FP (n) < A(q + 1, n).
Argument:
Wir betrachten jenen Wert ↵ = ↵(n) für die Variable xi ,
mit dem der grösstmögliche Funktionswert FP (n) angenommen wird
Dann gilt FP (n) FQ (FQ (. . . FQ (FQ (n ↵)) . . .)) + ↵,
wobei die Funktion FQ (·) hier ↵-fach ineinander eingesetzt ist.
Die Induktionsannahme gibt uns FQ (`) < A(q, `)
Dies wenden wir auf die äusserste Funktion FQ an und erhalten
Im innersten Teil der rechten Seite wenden wir zunächst (M.3) in der
Form A(q, n ↵) A(q + 1, n ↵ 1) an
Satz
Die Ackermann Funktion ist nicht LOOP-berechenbar.
Beweis:
Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion
LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P,
das die Hilfsfunktion B(n) = A(n, n) berechnet.
LOOP
a n
+ ⇥ b ab k
A(m, n)
Ackermann Funktion
Definition (Basisfunktionen)
Die folgenden drei Funktionsmengen bilden die Basisfunktionen unter den
primitiv rekursiven Funktionen:
Alle konstanten Funktionen sind primitiv rekursiv.
Alle identischen Abbildungen (Projektionen auf eine der
Komponenten) sind primitiv rekursiv.
Die Nachfolgerfunktion succ(n) = n + 1 ist primitiv rekursiv.
Beispiele:
Konstante Funktion f : N6 ! N mit f (a, b, c, d, e, f ) ⌘ 277
Projektion f : N6 ! N auf vierte Komponente: f (a, b, c, d, e, f ) = d
Definition (Operation)
Jede Komposition von primitiv rekursiven Funktionen ist primitiv
rekursiv.
Beispiel:
Die Funktion f : N2 ! N mit f (x, y ) = y + 1 ist primitiv rekursiv,
da f (x, y ) = succ(⇡2,2 (x, y )) gilt.
Definition (Operation)
Jede Funktion, die durch primitive Rekursion aus primitiv rekursiven
Funktionen entsteht ist primitiv rekursiv.
f (0, x1 , . . . , xk ) = g(x1 , . . . , xk )
f (n + 1, x1 , . . . , xk ) = h(n, f (n, x1 , . . . , xk ), x1 , . . . , xk )
Anmerkungen:
Formal wird die primitive Rekursion immer über die erste
Komponente durchgeführt.
Im Fall k = 0 ist f eine Funktion N ! N
y0 := g(x1 , . . . , xk ) = f (0, x1 , . . . , xk )
y1 := h(0, y0 , x1 , . . . , xk ) = f (1, x1 , . . . , xk )
y2 := h(1, y1 , x1 , . . . , xk ) = f (2, x1 , . . . , xk )
y3 := h(2, y2 , x1 , . . . , xk ) = f (3, x1 , . . . , xk )
.. ..
. .
yn := h(n 1, yn 1, x1 , . . . , x k ) = f (n, x1 , . . . , xk )
add(0, x) = x
add(n + 1, x) = succ(add(n, x))
add(0, x) = g(x)
add(n + 1, x) = h(n, add(n, x), x)
mult(0, x) = 0
mult(n + 1, x) = add(mult(n, x), x)
mult(0, x) = g(x)
mult(n + 1, x) = h(n, mult(n, x), x)
pred(0) = 0
pred(n + 1) = n
pred(0) = g()
pred(n + 1) = h(n, pred(n))
subAux(0, x) = g(x)
subAux(n + 1, x) = h(n, subAux(n, x), x)
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Mittwoch, Dezember 04, 10:30–12:00, Aula
Freitag, Dezember 06: Keine Vorlesung (Tag der Informatik)
Mittwoch, Dezember 11, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Satz
Die Ackermann Funktion ist nicht LOOP-berechenbar.
Satz
Die Menge der LOOP-berechenbaren Funktionen
bildet eine echte Teilmenge der berechenbaren Funktionen.
Rekursiv
aufzählbare Probleme
Probleme rekursive mit rekursiv
Probleme aufzählbarem
PCP A(·, ·) Komplement
LOOP
H berechenbar H
H✏ D D H✏
Dioph
BlooP is a non-Turing-complete
programming language in Hofstadter’s
book whose flow structure is a
bounded loop. All programs in the
language must terminate, and this
language can only express primitive
recursive functions.
f (0, x1 , . . . , xk ) = g(x1 , . . . , xk )
f (n + 1, x1 , . . . , xk ) = h(n, f (n, x1 , . . . , xk ), x1 , . . . , xk )
y0 := g(x1 , . . . , xk ) = f (0, x1 , . . . , xk )
y1 := h(0, y0 , x1 , . . . , xk ) = f (1, x1 , . . . , xk )
y2 := h(1, y1 , x1 , . . . , xk ) = f (2, x1 , . . . , xk )
y3 := h(2, y2 , x1 , . . . , xk ) = f (3, x1 , . . . , xk )
.. ..
. .
yn := h(n 1, yn 1, x1 , . . . , x k ) = f (n, x1 , . . . , xk )
add(0, x) = x
add(n + 1, x) = succ(add(n, x))
add(0, x) = g(x)
add(n + 1, x) = h(n, add(n, x), x)
mult(0, x) = 0
mult(n + 1, x) = add(mult(n, x), x)
mult(0, x) = g(x)
mult(n + 1, x) = h(n, mult(n, x), x)
pred(0) = 0
pred(n + 1) = n
pred(0) = g()
pred(n + 1) = h(n, pred(n))
subAux(0, x) = g(x)
subAux(n + 1, x) = h(n, subAux(n, x), x)
Übung
Die folgenden Funktionen sind primitiv rekursiv:
Signum: f : N ! {0, 1} mit f (x) = [x 1]
Gleichheit: f : N ! {0, 1} mit f (x, y ) = [x = y ]
2
Übung
Die folgenden Funktionen sind primitiv rekursiv:
Maximum: f : N2 ! N mit f (x, y ) = max{x, y }
Minimum: f : N2 ! N mit f (x, y ) = min{x, y }
Division: f : N2 ! N mit f (x, y ) = bx/y c
Teilbarkeit: f : N2 ! {0, 1} mit f (x, y ) = [x|y ]
Parität: f : N ! {0, 1} mit f (x) = [x gerade]
Parität: f : N ! {0, 1} mit f (x) = [x ungerade]
Primzahl: f : N ! {0, 1} mit f (x) = [x prim]
binom2 (0) = 0
binom2 (n + 1) = add(n, binom2 (n))
x/y 0 1 2 3 4 5 6 ···
0 0 1 3 6 10 15 21 ···
1 2 4 7 11 16 22 29 ···
2 5 8 12 17 23 30 38 ···
3 9 13 18 24 31 39 48 ···
4 14 19 25 32 40 49 59 ···
5 20 26 33 41 50 60 71 ···
6 27 34 42 51 61 72 84 ···
7 35 43 52 62 73 85 98 ···
Übung
Beweisen Sie: Für alle x, y 2 N gilt x (x, y ) und y (x, y ).
Als nächstes Ziel wollen wir nun für eine gegebene Zahl n die
entsprechende (eindeutig festgelegte) Zahl x 2 N in der Gleichung
(x, y ) = n bestimmen.
Triviale Möglichkeit: Teste alle Paare (x, y ) 2 N2 .
Klügere Möglichkeit: Teste alle Paare (x, y ) 2 {0, 1, . . . , n}2 .
g(x, 0, n) = f (x, 0, n)
g(x, k, n) = [f (x, k, n) = 1 _ g(x, k 1, n) = 1]
h(0, k, n) = 0
h(m, k, n) = max {h(m 1, k, n), m · g(m, k, n)}
Also: (n) = h(n, n, n) ist die grösste Zahl x n, für die eine Zahl
y n existiert, sodass (x, y ) = n gilt.
Für jedes n 2 N gibt es ein einziges Zahlenpaar (x, y ) 2 N2 mit
(x, y ) = n. Die Funktion (n) gibt uns daher die (eindeutig
bestimmte) Zahl x in dieser Gleichung an.
Analog: Es gibt eine primitiv rekursive Funktion (n), die die
(eindeutig bestimmte) Zahl y in der Gleichung (x, y ) = n angibt.
Zusammenfassend:
Mit Hilfe der beiden Funktionen (n) und (n) kann man dann weitere
primitiv rekursive Funktionen u0 , u1 , . . . , uk : N ! N konstruieren,
sodass für alle n 2 N die folgende Beziehung gilt:
Satz
Die Menge der primitiv rekursiven Funktionen fällt
mit der Menge der LOOP-berechenbaren Funktionen zusammen.
Wir beweisen mit Induktion über den Aufbau von P, dass eine primitiv
rekursive Funktion gP : N ! N existiert, die die Arbeitsweise von P
simuliert:
gP (ha0 , a1 , . . . , ak i) = hb0 , b1 , . . . , bk i
Zuweisungen
Falls P aus der Zuweisung xi := xj + c besteht, so ist
Hintereinanderausführung
Falls P die Form Q; R hat, so gilt
gP (x) = gR ( gQ (x) )
LOOP-Konstrukt
Angenommen, P ist ein LOOP Programm von der Form
LOOP xi DO Q ENDLOOP
h(0, x) = x
h(n + 1, x) = gQ (h(n, x)).
Basisfunktionen
Die konstante Funktion f (x1 , . . . , xk ) = c wird durch
das LOOP Program x0 := c simuliert.
Die Projektion f (x1 , . . . , xk ) = xj wird durch
das LOOP Program x0 := xj simuliert.
Die Nachfolgerfunktion succ(xj ) = xj + 1 wird durch
das LOOP Program x0 := xj + 1 simuliert.
Komposition
Falls die primitiv rekursive Funktion f durch Komposition aus anderen
primitiv rekursiven Funktionen f1 , . . . , fs entsteht,
so wird f simuliert, indem man die LOOP Programme
für f1 , . . . , fs geeignet hintereinander ausführt.
Primitive Rekursion
Angenommen, die Funktion f : Nk+1 ! N entsteht durch primitive
Rekursion aus den beiden primitiv rekursiven Funktionen g : Nk ! N und
h : Nk+2 ! N, wobei
f (0, x1 , . . . , xk ) = g(x1 , . . . , xk )
f (n + 1, x1 , . . . , xk ) = h(n, f (n, x1 , . . . , xk ), x1 , . . . , xk )
x0 := g(x1 , . . . , xk );
s := 0;
LOOP n DO
x0 := h(s, x0 , x1 , . . . , xk );
s := s + 1;
ENDLOOP;
Beispiel
Es sei g : N4 ! N mit g(x, a, b, c) = (x a)2 (x b)2 (x c)2 .
Dann ist (µg)(a, b, c) die kleinste Zahl x 2 N mit g(x, a, b, c) = 0.
Daraus ergibt sich (µg)(a, b, c) = min{a, b, c}.
Beispiel
Es sei g : N2 ! N mit g(x, y ) ⌘ 1.
Dann ist (µg)(y ) die kleinste Zahl x 2 N mit g(x, y ) = 0.
Daraus ergibt sich (µg)(y ) ⌘ ?.
Definition
Die Klasse der µ-rekursiven Funktionen ist die kleinste Klasse von
(partiellen und totalen) Funktionen,
die die Basisfunktionen (konstante Funktionen; Projektionen;
Nachfolgerfunktion) enthält und
die abgeschlossen ist unter (1) Komposition, (2) primitiver
Rekursion und (3) Anwendung des µ-Operators.
Satz
Die Menge der µ-rekursiven Funktionen fällt
mit der Menge der WHILE-berechenbaren (Turing-berechenbaren;
RAM-berechenbaren) Funktionen zusammen.
Der Beweis dieses Satz basiert auf dem Beweis unseres letzten
Satzes (primitiv rekursiv , LOOP-berechenbar), und bildet eine
einfache Erweiterung
In der Hinrichtung zeigen wir, dass WHILE Schleifen mit Hilfe des
µ-Operators simuliert werden können
In der Rückrichtung zeigen wir, dass der µ-Operator durch eine
WHILE Schleife simuliert werden kann
h(0, x) = x
h(n + 1, x) = gQ (h(n, x)).
x0 := 0;
y := g(0, x1 , . . . , xk );
WHILE y 6= 0 DO
x0 := x0 + 1;
y := g(x0 , x1 , . . . , xk );
ENDLOOP;
a n
+ ⇥ b ab k
A(m, n)
Ackermann Funktion
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Freitag, Dezember 6: Keine Vorlesung (Tag der Informatik)
Mittwoch, Dezember 11, 10:30–12:00, Aula
Freitag, Dezember 13, 12:30–14:00, Audimax
Mittwoch, Dezember 18, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Turingmaschine (TM)
k-Band-TM
Registermaschine (RAM)
WHILE-Programme (und somit C, Java, Pascal, Postscript, etc.)
µ-rekursive Funktionen (und somit LISP, Haskell, OCaml, etc)
LOOP-Programme
Primitiv rekursive Funktionen
Church-Turing These
Die Klasse der TM-berechenbaren Funktionen stimmt mit
der Klasse der “intuitiv berechenbaren” Funktionen überein.
In anderen Worten:
Ein Problem kann genau dann “algorithmisch gelöst werden”,
wenn es eine TM für dieses Problem gibt.
Rekursiv
aufzählbare Probleme
Probleme mit rekursiv
entscheidbare aufzählbarem
PCP Probleme Komplement
primitiv
H rekursive H
Probleme
H✏ D D H✏
Dioph
Diagonalisierung
Unterprogrammtechnik
Reduktionen (spezielle Variante der Unterprogrammtechnik)
Logarithmisches Kostenmaß:
Die Laufzeitkosten eines Schrittes der RAM sind proportional zur
binären Länge der Zahlen in den angesprochenen Registern.
Satz
Für jede im logarithmischen Kostenmass t(n)-zeitbeschränkte RAM R
gibt es ein Polynom q und eine q(n + t(n))-zeitbeschränkte
TM M, die R simuliert.
Satz
Jede t(n)-zeitbeschränkte TM kann durch eine RAM simuliert werden,
die im logarithmischen Kostenmass durch
O((t(n) + n) · log(t(n) + n)) zeitbeschränkt ist.
Polynomielle Algorithmen
Die Komplexitätsklasse P
Non-deterministische Turingmaschinen
Die Komplexitätsklasse NP
Katalog von Problemen in NP
P versus NP
Berechnungsressourcen:
Rechenzeit und Speicherplatz (als Funktion der Eingabelänge)
Definition
Die Worst Case Laufzeit tA (n) eines Algorithmus A misst
die maximalen Laufzeitkosten auf Eingaben der Länge n
bezüglich des logarithmischen Kostenmaßes der RAM.
Definition
Die Worst Case Laufzeit tA (n) eines Algorithmus A ist polynomiell
beschränkt, falls gilt
9↵ 2 N : tA (n) 2 O(n↵ )
Problem: SORTIEREN
Eingabe: Zahlen a1 , . . . , an 2 N in Binärdarstellung
Ausgabe: Die aufsteigend sortierte Folge der Eingabezahlen
Satz
SORTIEREN kann in polynomieller Zeit gelöst werden.
Beweis:
Wir lösen das Problem mit MergeSort oder HeapSort
Laufzeit im uniformen Kostenmaß: O(n log n)
Laufzeit im logarithmischen Kostenmaß:
O(`n log n), wobei ` = max1in log ai
Für die Gesamtlänge L der Eingabe gilt L ` und L n
Somit ist die Laufzeit durch `n log n L3 beschränkt
Eulerkreis
Kürzester Weg
Minimaler Spannbaum
Maximaler Fluss
Maximum Matching
Grösster gemeinsamer Teiler
Konvexe Hülle in 2D
Primzahltest
Definition: Komplexitätsklasse P
P ist die Klasse aller Entscheidungsprobleme,
für die es einen polynomiellen Algorithmus gibt.
Anmerkungen:
P steht für Polynomiell
P enthält ausschliesslich Entscheidungsprobleme
Statt der RAM könnte man in der Definition der polynomiellen
Laufzeit und der polynomiellen Algorithmen genauso gut die TM
verwenden: RAM (im logarithmischem Kostenmaß) und TM
simulieren einander ja mit polynomiellem Zeitverlust
Polynomielle Algorithmen werden oft als effiziente Algorithmen
bezeichnet, und P als die Klasse der effizient lösbaren Probleme.
Problem: Graphzusammenhang
Eingabe: Ein ungerichteter Graph G = (V , E )
Frage: Ist G zusammenhängend?
0 1
1 2 0 1 0 1
B1 0 1 0C
B C 0101101001001000
@0 1 0 0A
4 3 1 0 0 0
Satz
Graphzusammenhang 2 P.
Beweis
Wir lösen das Problem mit Tiefensuche (DFS).
Laufzeit im uniformen Kostenmaß: O(|V | + |E |) ✓ O(|V |2 )
Laufzeit im logarithmischen Kostenmaß: O(|V |2 · log |V |)
··· ⇤ 0 1 1 0 1 1 0 0 1 1 0 1 0 ⇤ ⇤ ⇤ ⇤ ···
NFA
0 1 B
q0 {(q0 , B, R), (q1 , B, R)} {reject} {reject}
q1 {reject} {(q1 , B, R), (q2 , B, R)} {reject}
q2 {reject} {reject} {accept}
q0 11 reject
q1 reject
q0 011
q1 1
q1 11 q2 accept
q0 0011
q2 1 reject
q1 011 reject
··· ⇤ 0 1 1 0 1 1 0 0 1 1 0 1 0 ⇤ ⇤ ⇤ ⇤ ···
0 1 B
q0 {(q0 , B, R), (q1 , B, R)} {reject} {reject}
q1 {reject} {(q1 , B, R), (q2 , B, R)} {reject}
q2 {reject} {reject} {accept}
Definition: Komplexitätsklasse NP
NP ist die Klasse aller Entscheidungsprobleme,
die durch eine NTM M erkannt werden,
deren Worst Case Laufzeit tM (n) polynomiell beschränkt ist.
Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?
Clique = Menge S ✓ V von paarweise benachbarten Knoten
Satz
CLIQUE 2 NP
Beweis: Wir beschreiben eine NTM M mit L(M) = CLIQUE.
Syntaktisch inkorrekte Eingaben werden verworfen
M rät non-deterministisch einen 0-1-String y der Länge |V |
M akzeptiert, falls der String y mindestens k Einsen enthält und
falls die Knotenmenge C = {i 2 V | yi = 1} eine Clique bildet
Korrektheit: 9 akzeptierender Rechenweg () G enthält k-Clique
Laufzeit: Jede Phase kostet polynomielle Zeit
Anmerkungen:
Der polynomielle Algorithmus V wird auch Verifizierer genannt
Das Wort y 2 {0, 1}⇤ wird auch Zertifikat genannt
Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?
Fragen:
Wie sieht ein NP-Zertifikat für Ham-Cycle aus?
Wie sieht ein NP-Zertifikat für TSP aus?
Problem: SUBSET-SUM
Eingabe: Positive ganze Zahlen a1 , . . . , an ; eine ganze Zahl b
P
Frage: Existiert eine Indexmenge I ✓ {1, . . . , n} mit i2I ai = b?
Problem: PARTITION
P
Eingabe: Positive ganze Zahlen a1 , . . . , an ; mit ni=1 ai = 2A
P
Frage: Existiert eine Indexmenge I ✓ {1, . . . , n} mit i2I ai = A?
Fragen:
Wie sieht ein NP-Zertifikat für SUBSET-SUM aus?
Wie sieht ein NP-Zertifikat für PARTITION aus?
Übung
Beweisen Sie, dass P ✓ NP gilt
Die Komplexitätsklasse P
Die Klasse P enthält alle Entscheidungsprobleme,
die effizient auf dem Computer gelöst werden können
Intuitiv: P enthält die Probleme, die wir gut verstehen können und die
wir in vernünftiger Rechenzeit erledigen können
Die Komplexitätsklasse NP
Die Klasse NP enthält alle Entscheidungsprobleme,
für die eine kurze Lösung existiert,
und deren kurze Lösung wir effizient überprüfen können
(wenn wir diese Lösung erst einmal gezeigt bekommen)
P=NP ?
Im Jahr 2000 hat das Clay Mathematics Institute (CMI) je eine Million
Dollar Preisgeld für die Lösung der folgenden sieben Probleme ausgelobt:
P versus NP Problem
Hodge Vermutung
Poincaré Vermutung (erledigt 2002–2006; Grigori Perelman)
Riemann’sche Vermutung
Quantenversion der Yang-Mills Gleichungen
Navier-Stokes Gleichungen
Birch und Swinnerton-Dyer Vermutung
https://en.wikipedia.org/wiki/Millennium˙Prize˙Problems
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesungen:
Freitag, Dezember 13, 12:30–14:00, Audimax
Mittwoch, Dezember 18, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
q0 11 reject
q1 reject
q0 011
q1 1
q1 11 q2 accept
q0 0011
q2 1 reject
q1 011 reject
Komplexitätsklassen P und NP
P ist die Klasse aller Entscheidungsprobleme,
die durch eine TM M erkannt werden,
deren Worst Case Laufzeit tM (n) polynomiell beschränkt ist.
NP ist die Klasse aller Entscheidungsprobleme,
die durch eine NTM M erkannt werden,
deren Worst Case Laufzeit tM (n) polynomiell beschränkt ist.
Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?
Subset-Sum
Partition
NP
Clique
SAT Ind-Set
VC
TSP
Ex-Cover
Ham-Cycle
Graph-
zusammenhang
Primzahl
P
Warnung: Dieser Abbildung liegt die Annahme P 6= NP zu Grunde.
BuK/WS 2019 VL-13: Polynomielle Reduktionen 8/48
Wdh.: Die grosse o↵ene Frage der Informatik
P=NP ?
Polynomielle Reduktionen
p
n
Laufzeit-Beispiele: 2 , 2n , 3n , n · 2n , n!, nn
n n
Aber nicht: 22 und nn
Satz
NP ✓ EXPTIME
Es sei L 2 NP
Dann gibt es ein Polynom p und einen polynomiellen Algorithmus V
x 2 L () 9y 2 {0, 1}⇤ , |y | p(|x|) : V akzeptiert y #x
Dilemma:
Das Entscheidungsproblem beschäftigt sich nur mit der Frage,
ob ein derartiges Lösungsobjekt Y existiert.
Aber eigentlich will man das Lösungsobjekt Y auch genau
bestimmen, und dann damit weiter arbeiten.
Ausweg:
Ein schneller Algorithmus für das Entscheidungsproblem liefert
(durch wiederholte Anwendung) oft auch einen schnellen
Algorithmus zum Berechnen eines expliziten Lösungsobjekts
Beispiel
Für ' = (x _ y _ z) ^ (¬x _ ¬y _ ¬z) ^ (¬y _ z) ^ (u _ z)
gilt '[y = 1] = (¬x _ ¬z) ^ (z) ^ (u _ z)
und '[z = 0] = (x _ y ) ^ (¬y ) ^ (u)
Beweis:
Wir fixieren der Reihe nach die Wahrheitswerte von x1 , x2 , . . . , xn .
FOR i = 1, 2, . . . , n DO
Wenn '[xi = 1] erfüllbar, setze xi := 1 und ' := '[xi = 1]
Andernfalls setze xi := 0 und ' := '[xi = 0]
Am Ende ergeben die fixierten Wahrheitswerte von x1 , x2 , . . . , xn
eine erfüllende Wahrheitsbelegung für '
Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?
Satz
Angenommen, Algorithmus A entscheidet CLIQUE in T (n) Zeit.
Dann gibt es einen Algorithmus B, der für JA-Instanzen
in n · T (n) Zeit eine k-Clique konstruiert.
Satz
Angenommen, Algorithmus A entscheidet Ham-Cycle in T (n) Zeit.
Dann gibt es einen Algorithmus B, der für JA-Instanzen
in |E | · T (n) Zeit einen Hamiltonkreis konstruiert.
Definition: Optimierungsproblem
Die Eingabe eines Optimierungsproblems spezifiziert (implizit oder
explizit) eine Menge L von zulässigen Lösungen zusammen mit einer
Zielfunktion f : L ! N, die Kosten, Gewicht, oder Profit misst.
Das Ziel ist es, eine optimale Lösung in L zu berechnen:
In Minimierungsproblemen sollen die Kosten minimiert werden.
In Maximierungsproblemen soll der Profit maximiert werden.
Dilemma:
Die Klassen P und NP enthalten keine Optimierungsprobleme,
sondern nur Entscheidungsprobleme
Ausweg:
Jedes Optimierungsproblem kann in ein “sehr ähnliches”
Entscheidungsproblem umformuliert werden
Entscheidungsproblem:
Die Eingabe enthält zusätzlich eine Schranke
Frage: Existiert eine zulässige Lösung mit Länge d(⇡) ?
Entscheidungsproblem:
Die Eingabe enthält zusätzlich eine Schranke für die Anzahl der
Kisten.
Frage: Existiert eine zulässige Lösung T1 , . . . , Tk mit k ?
Entscheidungsproblem:
Die Eingabe enthält zusätzlich eine Schranke für den Profit
Frage: Existiert eine zulässige Lösung K mit p(K ) ?
Satz
Wenn Knapsack-Entscheidung in T (|I |) Zeit lösbar ist,
so ist Knapsack-Optimierung in poly(|I |) · T (|I |) Zeit lösbar.
Aus Algorithmus B konstruieren wir nun noch den Algorithmus C , der die
optimale zulässige Lösung bestimmt:
Algorithmus C
1 K:= –1,...,n˝;
2 opt:= Algo˙B(K);
3 for i:= 1 to n do
4 if Algo˙B(K-–i˝)==opt then K:= K-–i˝;
5 return K
Definition
Es seien L1 und L2 zwei Sprachen über einem Alphabet ⌃.
Dann ist L1 auf L2 reduzierbar (mit der Notation L1 L2 ),
wenn eine berechenbare Funktion f : ⌃⇤ ! ⌃⇤ existiert,
so dass für alle x 2 ⌃⇤ gilt: x 2 L1 , f (x) 2 L2 .
L2
L1
Definition
Es seien L1 und L2 zwei Sprachen über einem Alphabet ⌃.
Dann ist L1 polynomiell reduzierbar auf L2 (mit der Notation L1 p L2 ),
wenn eine polynomiell berechenbare Funktion f : ⌃⇤ ! ⌃⇤ existiert,
so dass für alle x 2 ⌃⇤ gilt: x 2 L1 , f (x) 2 L2 .
L2
L1
Satz
Falls L1 p L2 und falls L2 2 P, so gilt L1 2 P.
Beweis:
Die Reduktion f hat eine polynomielle Laufzeitschranke p(·)
Ein Algorithmus A2 entscheidet L2 mit einer polynomiellen
Laufzeitschranke q(·)
Algorithmus A1 für L1
Satz
COLORING p SAT
Die Klauseln
Für jeden Knoten v 2 V
verwenden wir die Klausel (xv1 + xv2 + . . . + xvk )
Für jede Kante {u, v } 2 E und jede Farbe i 2 {1, . . . , k}
verwenden wir die Klausel (x̄ui + x̄vi )
Folgerung 1
Wenn SAT einen polynomiellen Algorithmus hat,
so hat auch COLORING einen polynomiellen Algorithmus.
Übung
Zeigen Sie: Ex-Cover p SAT
Satz
Vertex Cover p SAT
Die Klauseln
Für jede Kante {u, v } 2 E
verwenden wir die Klausel (xu + xv )
Für jede (k + 1)-elementige Teilmenge
_ S ✓V
verwenden wir die Klausel x̄v
v 2S
(Variable xvi ist TRUE) () (v ist der i -te Knoten im Vertex Cover)
Die Klauseln
Für jede Kante {u, v } 2 E _ _
verwenden wir die Klausel ( xui _ xvi )
1ik 1ik
Subset-Sum
Knapsack Partition
NP
BPP
Clique
Coloring SAT Ind-Set
VC
TSP
Ex-Cover
Ham-Cycle
Graph-
zusammenhang
Primzahl
P
Warnung: Dieser Abbildung liegt die Annahme P 6= NP zu Grunde.
BuK/WS 2019 VL-13: Polynomielle Reduktionen 48/48
VL-14: Der Satz von Cook & Levin
Gerhard Woeginger
WS 2019, RWTH
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 1/48
Organisatorisches
Nächste Vorlesungen:
Mittwoch, Dezember 18, 10:30–12:00, Aula: Fragestunde
Freitag, Januar 10, 12:30–14:00 Uhr, Audimax
Mittwoch, Januar 15, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 2/48
Wiederholung
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 3/48
Wdh.: Komplexitätsklasse EXPTIME
Satz
P ✓ NP ✓ EXPTIME
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 4/48
Wdh.: Lösung finden vs Lösbarkeit entscheiden
Dilemma:
Das Entscheidungsproblem beschäftigt sich nur mit der Frage,
ob ein derartiges Lösungsobjekt Y existiert.
Aber eigentlich will man das Lösungsobjekt Y auch genau
bestimmen, und dann damit weiter arbeiten.
Ausweg:
Ein schneller Algorithmus für das Entscheidungsproblem liefert
(durch wiederholte Anwendung) oft auch einen schnellen
Algorithmus zum Berechnen eines expliziten Lösungsobjekts
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 5/48
Wdh.: Optimieren vs Entscheiden
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 6/48
Wdh.: Polynomielle Reduktionen
Definition
Es seien L1 und L2 Sprachen über ⌃1 bzw. ⌃2 .
Dann ist L1 polynomiell reduzierbar auf L2 (mit der Notation L1 p L2 ),
wenn eine polynomiell berechenbare Funktion f : ⌃⇤1 ! ⌃⇤2 existiert,
so dass für alle x 2 ⌃⇤1 gilt: x 2 L1 , f (x) 2 L2 .
COLORING p SAT
VC p SAT
Ex-Cover p SAT (Übung)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 7/48
Vorlesung VL-14
Der Satz von Cook & Levin
NP-Vollständigkeit
Kochrezept für NP-Vollständigkeitsbeweise
NP-Vollständigkeit von 3-SAT
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 8/48
Polynomielle Reduktionen auf SAT
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 9/48
Die Komplexitätslandschaft
Subset-Sum
Knapsack Partition
NP
BPP
Clique
Coloring SAT Ind-Set
VC
TSP
Ex-Cover
Ham-Cycle
Graph-
zusammenhang
Primzahl
P
Warnung: Dieser Abbildung liegt die Annahme P 6= NP zu Grunde.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 10/48
Der Satz von Cook & Levin
In anderen Worten:
Jedes Problem in der Klasse NP kann in polynomieller Zeit als
Spezialfall von SAT formuliert werden.
Das Erfüllbarkeitsproblem SAT ist ein universelles Modellierungstool
für die gesamte Klasse NP.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 11/48
Stephen Cook OC (1939)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 12/48
Leonid Levin (1948)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 13/48
Beweis des Satzes
von Cook & Levin
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 14/48
Grundideen des Beweises (1)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 15/48
Grundideen des Beweises (2)
Beobachtung
Es sei K0 = q0 x die Startkonfiguration von M. Die NTM M akzeptiert
ein Wort x mit |x| = n genau dann, wenn es eine Konfigurationsfolge
K0 ` K1 ` K2 ` · · · ` Kp(n)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 16/48
Die Boole’schen Variablen (1)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 17/48
BuK/WS 2019
t=2
t=1
t=0
⇤
⇤
⇤
B(2, 0, 0) = 1 B(1, 0, 0) = 1 B(0, 0, 0) = 1
0
0
0
1
1
1
1
1
1
0
0
0
1
0
0
1
1
1
q0
q 00
Die Boole’schen Variablen (2): Illustration
Q(0, q) = 1
Q(1, q 0 ) = 1
Q(2, q 00 ) = 1
H(2, 5) = 0
H(2, 4) = 1
H(2, 3) = 0
H(2, 2) = 0
H(2, 1) = 0
H(2, 0) = 0
H(1, 5) = 0
H(1, 4) = 1
H(1, 3) = 0
H(1, 2) = 0
H(1, 1) = 0
H(1, 0) = 0
H(0, 5) = 0
H(0, 4) = 0
H(0, 3) = 1
H(0, 2) = 0
H(0, 1) = 0
H(0, 0) = 0
18/48
Unser Arbeitsplan
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 19/48
Arbeitsphase A (1)
A3. Es gibt für jedes j 2 {0, . . . , p(n)} jeweils genau ein Zeichen a 2
mit B(t, j, a) = 1.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 20/48
Arbeitsphase A (2)
Boole’sches Werkzeug
Für eine beliebige Variablenmenge {y1 , . . . , yk } besagt die folgende
Formel in CNF, dass genau eine der Variablen yi den Wert 1 annimmt:
^
(y1 _ y2 _ . . . _ yk ) ^ (y¯i _ y¯j )
i6=j
Die Anzahl der Literale in dieser Formel ist O(k 2 ) und quadratisch in der
Anzahl der Variablen.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 21/48
Arbeitsphase B (1)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 22/48
Arbeitsphase B (2)
Eigenschaft B1 (Bandinhalt von Kt stimmt mit Bandinhalt von Kt 1
überein, ausgenommen an Kopfposition) wird wie folgt kodiert:
p(n)
^^
B(t 1, i , a) ^ ¬H(t 1, i ) ) B(t, i , a)
i=0 a2
Boole’sches Werkzeug
x1 ) x2 äquivalent zu ¬x1 _ x2
¬(x1 ^ x2 ) äquivalent zu ¬x1 _ ¬x2 (De Morgan)
p(n)
^^
(¬B(t 1, i , a) _ H(t 1, i ) _ B(t, i , a))
i=0 a2
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 23/48
Arbeitsphase B (3)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 24/48
Arbeitsphase B (4)
0 1 B
q1 {(q1 , B, R), (q2 , 1, L)} {(q3 , B, R)} {(q2 , B, N)}
q3 {(q1 , 1, R)} {(q2 , 0, R)} {(q1 , B, L)}
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 25/48
Arbeitsphase B (5)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 26/48
Arbeitsphase C
C1. Startkonfiguration:
n^1 p(n)
^
Q(0, q0 ) ^ H(0, 0) ^ B(0, i , xi ) ^ B(0, i , B)
i=0 i=n
C2. Endkonfiguration:
Q(p(n), qaccept )
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 27/48
Zusammenfassung
Die Gesamtformel ' setzt sich aus allen Teilformeln zusammen, die
wir unter A1/A2/A3 und B1/B2 und C1/C2 konstruiert haben.
Insgesamt sind das polynomiell viele Klauseln, die jeweils aus
polynomiell vielen Literalen bestehen.
Die Länge von ' ist polynomiell beschränkt in n,
und ' kann aus x in polynomieller Zeit berechnet werden.
Die Formel ' ist genau dann erfüllbar, wenn es eine akzeptierende
Konfigurationsfolge der Länge p(n) für M auf x gibt.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 28/48
NP-Vollständigkeit
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 29/48
Wie schwierig ist SAT?
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 30/48
Die Komplexitätslandschaft
NP
SAT
Graph-
zusammenhang
Primzahl
P
Warnung: Dieser Abbildung liegt die Annahme P 6= NP zu Grunde.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 31/48
NP-schwere Probleme
Definition: NP-schwer
Ein Problem L⇤ heisst NP-schwer (engl.: NP-hard), falls gilt:
8L 2 NP : L p L⇤
Beobachtung
Es sei L⇤ ein NP-schweres Problem.
Wenn P 6= NP gilt, so besitzt L⇤ keinen polynomiellen Algorithmus.
Beweis: Analog zum Argument für SAT in unserer letzten Folgerung.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 32/48
NP-vollständige Probleme
Definition: NP-vollständig
Ein Problem L⇤ heisst NP-vollständig (engl.: NP-complete), falls gilt:
L⇤ 2 NP, und
L⇤ ist NP-schwer.
Die Klasse der NP-vollständigen Probleme wird mit NPC bezeichnet.
Anmerkung: SAT ist NP-vollständig.
Beobachtung
Es sei L⇤ ein NP-vollständiges Problem.
Wenn P 6= NP gilt, so besitzt L⇤ keinen polynomiellen Algorithmus.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 33/48
Noch einmal: Der Satz von Cook & Levin
Hier ist nun die klassische Formulierung des Satzes von Cook & Levin:
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 34/48
Kochrezept für
NP-Vollständigkeitsbeweise
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 35/48
Kochrezept für NP-Vollständigkeitsbeweise (1)
Satz
Wenn L⇤ NP-schwer ist, so gilt: L⇤ p L ) L ist NP-schwer
Beweis:
Für alle L0 2 NP gilt (L0 p L⇤ ) und (L⇤ p L).
Die Transitivität von p impliziert L0 p L für alle L0 2 NP.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 36/48
Kochrezept für NP-Vollständigkeitsbeweise (2)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 37/48
NP-Vollständigkeit von 3-SAT
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 38/48
3-SAT: Definition
Eine k-Klausel ist eine Klausel, die aus exakt k Literalen besteht
Eine CNF-Formel ' ist in k-CNF, wenn sie aus k-Klauseln besteht
Problem: 3-SAT
Eingabe: Eine Boole’sche Formel ' in 3-CNF
Frage: Besitzt ' eine erfüllende Belegung?
3-SAT ist ein Spezialfall von SAT und liegt deshalb wie SAT in NP
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 39/48
3-SAT: NP-Vollständigkeit (Beginn)
Satz
SAT p 3-SAT
Beweis:
Gegeben sei eine beliebige Formel ' in CNF (Instanz von SAT)
Wir werden eine zur Formel ' äquivalente Formel '0 in 3-CNF
konstruieren: ' ist erfüllbar , '0 ist erfüllbar
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 40/48
Klauseltransformation: Beispiel
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 41/48
Klauseltransformation: Korrektheit
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 42/48
3-SAT: NP-Vollständigkeit (Ende)
Satz
3-SAT ist NP-vollständig.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 43/48
Die Komplexitätslandschaft
Subset-Sum
Knapsack Partition
NP
BPP
Clique
Coloring SAT Ind-Set
3-SAT VC
TSP
Ex-Cover
Ham-Cycle
Graph-
zusammenhang
Primzahl
P
Warnung: Dieser Abbildung liegt die Annahme P 6= NP zu Grunde.
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 44/48
Karp’s Liste mit 21 Problemen
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 45/48
Dick Karp (1935)
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 46/48
Karp’s Liste mit 21 NP-vollständigen Problemen
SAT 3-SAT
INTEGER PROGRAMMING COLORING
CLIQUE CLIQUE COVER
INDEP-SET EXACT COVER
VERTEX COVER 3-DIM MATCHING
SET COVER STEINER TREE
FEEDBACK ARC SET HITTING SET
FEEDBACK VERTEX SET SUBSET-SUM
DIR HAM-CYCLE JOB SEQUENCING
UNDIR HAM-CYCLE PARTITION
MAX-CUT
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 47/48
Landkarte mit Karp’s 20 Reduktionen
INTEGER
PROG SAT
3-SAT
CLIQUE
INDEP COVER
SET
CLIQUE
COLORING
FEEDBACK
ARC SET VERTEX EXACT
COVER SET
COVER 3-DIM COVER
MATCHING HITTING
FEEDBACK SET
VERTEX
SET DIRECTED
HAM-CYCLE STEINER
TREE
SUBSET-SUM
HAM
CYCLE MAX-CUT PARTITION JOB
SEQUENCING
BuK/WS 2019 VL-14: Der Satz von Cook & Levin 48/48
VL-15: NP-vollständige Graphprobleme
Gerhard Woeginger
WS 2019, RWTH
Nächste Vorlesung:
Mittwoch, Januar 15, 10:30–12:00, Aula
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py
Definition
Ein Problem L⇤ heisst NP-schwer, falls 8L 2 NP : L p L⇤
Ein Problem L⇤ heisst NP-vollständig, falls L⇤ 2 NP und L⇤ NP-schwer.
Satz
Wenn L⇤ NP-vollständig ist, dann gilt: L⇤ 2 P ) P = NP
Unter der Annahme P 6= NP (unserer Standardannahme) besitzt also
kein NP-vollständiges Problem einen polynomiellen Algorithmus.
Subset-Sum
Knapsack Partition
NP
BPP
Clique
Coloring SAT Ind-Set
3-SAT VC
TSP
Ex-Cover
Ham-Cycle
Graph-
zusammenhang
Primzahl
P
Warnung: Dieser Abbildung liegt die Annahme P 6= NP zu Grunde.
BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 6/43
Wdh.: Landkarte mit Karp’s 20 Reduktionen
INTEGER
PROG SAT
3-SAT
CLIQUE
INDEP COVER
SET
CLIQUE
COLORING
FEEDBACK
ARC SET VERTEX EXACT
COVER SET
COVER 3-DIM COVER
MATCHING HITTING
FEEDBACK SET
VERTEX
SET DIRECTED
HAM-CYCLE STEINER
TREE
SUBSET-SUM
HAM
CYCLE MAX-CUT PARTITION JOB
SEQUENCING
Kochrezept:
Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?
k =4
Satz
CLIQUE ist NP-vollständig.
3. (Reduktionsabbildung):
Wir konstruieren eine Funktion f , die eine CNF-Formel ' in einen
Graphen G = (V , E ) und eine Zahl k 2 N transformiert, sodass gilt:
4. (Polynomielle Zeit):
Die Funktion f ist in Polynomialzeit berechenbar.
c1 = x1 _ ¬x2 _ ¬x3
x1 ¬x2 ¬x3
x3
c2 = ¬x1 _ x2 _ x3
c3 = x2 _ x3
x2
x2
x3
¬x1
Erfüllende Belegung: x1 = 0, x2 = 0, x3 = 1
Begründung:
Laut Definition ist |U| = m
Es seien ` und `0 zwei verschiedene Literale aus U
Nach Konstruktion kommen ` und `0 aus verschiedenen Klauseln
Da ` und `0 erfüllt sind, sind sie nicht Negationen voneinander.
Also gibt es eine Kante zwischen ` und `0
Betrachte m-Clique U in G
Dann gehören die Literale in U zu lauter verschiedenen Klauseln
5. (Korrektheit):
f ist Reduktion: x 2 L⇤ , f (x) 2 L
Satz
INDEP-SET ist NP-vollständig.
Beweisskizze: im Tutorium
Wir zeigen CLIQUE p INDEP-SET
Setze V 0 = V und E 0 = V ⇥ V E und k 0 = k
Satz
Vertex Cover ist NP-vollständig.
Beweisskizze:
Wir zeigen INDEP-SET p Vertex Cover
Setze V 00 = V 0 und E 00 = E 0 und k 00 = |V 0 | k0
Rechtfertigung
In einem ungerichteten Graphen G = (V , E ) gilt für alle S ✓ V :
S ist unabhängige Menge , V S ist Vertex Cover
S ist Vertex Cover , V S ist unabhängige Menge
Satz
D-Ham-Cycle ist NP-vollständig.
1. D-Ham-Cycle liegt in NP
3. (Reduktionsabbildung):
Wir konstruieren eine Funktion f , die eine CNF-Formel ' in einen
gerichteten Graphen G = (V , A) transformiert, sodass gilt:
si
li ri
ti
l1 r1
t1 = s 2 st12
l2 r2
t2 = s 3 st23
l3 r3
t3
Die Rundreise hat dabei für jedes Gadget Gi die Freiheit, das Gadget
entweder von links nach rechts (also: von li bis ri )
oder von rechts nach links (also: von ri bis li ) zu durchlaufen.
Jetzt fügen wir für jede Klausel cj einen weiteren Knoten ein.
cj
li ri
cj
li ri
Frage
Ist es nach Hinzufügen der Klauselknoten möglich, dass
eine Rundreise zwischen den Diamantengadgets hin- und herspringt,
anstatt sie in der vorgesehenen Reihenfolge zu besuchen?
Antwort
Nein. (Warum??)
c1
s1
l1 r1
c2
st12
l2 r2
c3
st23
l3 r3
t3
cj
li ri
cj
li ri
4. (Polynomielle Zeit):
Die Funktion f ist in Polynomialzeit berechenbar.
Die Konstruktion verwendet n Diamantengadgets mit je O(m) Knoten
Die Konstruktion verwendet m Klauselknoten
5. (Korrektheit):
f ist Reduktion: x 2 L⇤ , f (x) 2 L
Satz
Ham-Cycle ist NP-vollständig.
Beweis:
Wir zeigen D-Ham-Cycle p Ham-Cycle
Es sei G 0 = (V 0 , A0 ) eine Instanz von D-Ham-Cycle
Wir konstruieren in polynomieller Zeit einen ungerichteten Graphen
G = (V , E ), sodass gilt: G 0 2 D-Ham-Cycle , G 2 Ham-Cycle
G0 G
Interpretation:
vin ist der Eingangsknoten für vmid
vout ist der Ausgangsknoten für vmid
Von vout aus kann man nur Knoten vom Typ uin erreichen (und dazu
muss der gerichtete Graph die entsprechende gerichtete Kante von v
nach u enthalten)
Daher kann jeder Hamiltonkreis in G in einen gerichteten
Hamiltonkreis in G 0 übersetzt werden.
Übung
Zeigen Sie: Ham-Cycle p D-Ham-Cycle
Zwei Spezialfälle:
Problem: -TSP
Eingabe: Städte 1, . . . , n; symmetrische Distanzen d(i , j) mit
Dreiecksungleichung d(i , j) d(i , k) + d(k, j); eine Zahl
Frage: Gibt es eine Rundreise (TSP-Tour) mit Länge höchstens ?
INTEGER
PROG SAT
3-SAT
CLIQUE
INDEP COVER
SET
CLIQUE
COLORING
FEEDBACK
ARC SET VERTEX EXACT
COVER SET
COVER 3-DIM COVER
MATCHING HITTING
FEEDBACK SET
VERTEX
SET DIRECTED
HAM-CYCLE STEINER
TREE
SUBSET-SUM
HAM
CYCLE MAX-CUT PARTITION JOB
SEQUENCING