Sie sind auf Seite 1von 696

VL-00: Einführung

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-00: Einführung 1/43


Klausur (2)

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!

BuK/WS 2019 VL-00: Einführung 12/43


Materialien (1)

In der Vorlesung wird der Sto↵ per Beamerpräsentation vermittelt,


manchmal auch an der Tafel oder auf dem Overheadprojektor
Vor der Vorlesung wird der Foliensatz jeweils auf unserer
BuK-Webseite zur Verfügung gestellt. (Die Folien basieren auf
Material, das im Laufe der Jahre von Berthold Vöcking, Wolfgang
Thomas, Martin Grohe und Pascal Schweitzer entwickelt wurde.)
Keine Video Lectures

Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py

BuK/WS 2019 VL-00: Einführung 14/43


Materialien (2): Buchempfehlungen

Die folgenden Bücher zum Thema sind in der Informatikbibliothek zu


finden.

Uwe Schöning erklärt FOSAP und BUK in leicht verständlichen Worten


auf 180 Seiten. Highly recommended:
Uwe Schöning. Theoretische Informatik - kurzgefasst.
Spektrum Akademischer Verlag, 2001.

Weiterführende Bücher sind:


Michael Sipser. Introduction to the Theory of Computation.
Cengage Learning, 2012.
Sanjeev Arora, Boaz Barak. Computational Complexity.
Cambridge University Press, 2009.

BuK/WS 2019 VL-00: Einführung 15/43


David Hilbert (1862–1943)

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.

Hilbert begründete die moderne


formalistische Au↵assung von den
Grundlagen der Mathematik und
veranlasste eine kritische Analyse der
mathematischen Begri↵sdefinitionen und
des mathematischen Beweises.

BuK/WS 2019 VL-00: Einführung 22/43


Rechenmaschinen und Berechnungsprobleme (2)

In der Vorlesung interessieren wir uns allgemein für


Berechnungen und Berechnungsprobleme.

Eingabe Ausgabe

BuK/WS 2019 VL-00: Einführung 24/43


Rechenmaschinen und Berechnungsprobleme (3)

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?

BuK/WS 2019 VL-00: Einführung 25/43


Die absoluten Grenzen des Computers (1)

Wir werden sehen:


Es gibt keinen Algorithmus, der entscheidet, ob ein gegebenes
Programm in einen bestimmten Zustand läuft.
(Error: 0E : 016F : BFF9B3D4.)

BuK/WS 2019 VL-00: Einführung 26/43


Die absoluten Grenzen des Computers (1)

Wir werden sehen:


Es gibt keinen Algorithmus, der entscheidet, ob ein gegebenes
Programm in einen bestimmten Zustand läuft.
(Error: 0E : 016F : BFF9B3D4)
Allgemein lässt sich die Funktionsweise von Programmen nur schwer
algorithmisch überprüfen.
Zum Beispiel gibt es keinen Algorithmus, der entscheidet, ob ein
gegebenes Programm immer die Summe zweier eingegebenen Zahlen
berechnet.

BuK/WS 2019 VL-00: Einführung 28/43


Die absoluten Grenzen des Computers (2)

Programmieraufgabe: Entwerfen Sie ein Java-Programm A mit der


folgenden Spezifikation.

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.

Wir werden sehen:


Diese Programmieraufgabe ist unlösbar.
Kein derartiges Java-Programm A existiert.

BuK/WS 2019 VL-00: Einführung 29/43


Die absoluten Grenzen des Computers (3)

Allgemeines Halteproblem
Eingabe: Ein Programm in einer wohldefinierten, universellen
Programmiersprache (z.B. Java, C++, Python, Haskell).
Frage: Terminiert dieses Programm?

Wir werden beweisen, dass es keinen Algorithmus gibt, der dieses


Problem entscheiden kann.

BuK/WS 2019 VL-00: Einführung 30/43


Komplexität

BuK/WS 2019 VL-00: Einführung 31/43


Komplexität

Question to Stephen W. Hawking (January 2000)


Some say that while the twentieth century was the century of physics,
we are now entering the century of biology.
What do you think of this?

Answer by Stephen W. Hawking


I think the next [21st] century will be the century of complexity.

BuK/WS 2019 VL-00: Einführung 32/43


Die Grenzen der effizienten Berechenbarkeit

Zentrale Frage:
Lässt sich ein gegebenes algorithmisches Problem effizient lösen?

Mit “effizient” meinen wir:


mit vernünftiger Laufzeit,
mit vernünftigem Speicherbedarf
und unter vernünftiger Verwendung anderer Ressourcen

BuK/WS 2019 VL-00: Einführung 33/43


Beispiel 1: Zauber-Dodekaeder

Aufgabe
Löse den Dodekaeder

Lösung: Probiere alle


Möglichkeiten durch

Ist das eine effiziente Lösung?

BuK/WS 2019 VL-00: Einführung 34/43


Beispiel 2: Rush Hour

Aufgabe
Befreie das rote Auto aus dem
Verkehrsstau

Lösung lautet wieder: Probiere


alle Möglichkeiten durch

User:Welt-der-Form/Wikimedia Commons/CC-BY-SA-3.0
Nachteil lautet wieder: Extrem
langsamer Algorithmus

BuK/WS 2019 VL-00: Einführung 35/43


Beispiel 3: Passwort

Aufgabe
Bestimme das alpha-numerische
15-stellige Passwort

Lösung lautet wieder: Probiere


alle Möglichkeiten durch
Nachteil lautet wieder: Viel zu
langsam!

BuK/WS 2019 VL-00: Einführung 36/43


Beispiel 4: Traveling Salesman (1)

Aufgabe
Finde eine kurze Rundreise durch die 14
grössten deutschen Städte und zurück
zum Ausgangsort.

Die angegebene Route ist die kürzeste


unter 43.589.145.600 möglichen.
Auch dieses Problem kann dadurch
gelöst werden, dass man einfach alle
Möglichkeiten durchprobiert.
Und auch dieser Algorithmus ist extrem
ineffizient. (Wie lange braucht dieser
Algorithmus wohl für 40 Städte?)

BuK/WS 2019 VL-00: Einführung 37/43


Beispiel 4: Traveling Salesman (2)

Traveling Salesman Problem (TSP)


Eingabe: vollständiger Graph G mit allen Kantenlängen
Ausgabe: eine Rundreise, die alle Knoten in G besucht und dabei so
kurz wie möglich ist

In der Vorlesung werden wir sehen,


dass es unter einer gewissen Hypothese (“P 6= NP”)
keinen effizienten Algorithmus für das TSP gibt.

BuK/WS 2019 VL-00: Einführung 38/43


PROLOG

Aus der Wikipedia


Prolog is a general-purpose logic programming language associated with
artificial intelligence and computational linguistics.
In Prolog, program logic is expressed in terms of relations, and a
computation is initiated by running a query over these relations. Relations
and queries are constructed using Prolog’s single data type, the term.
Relations are defined by clauses.
Given a query, the Prolog engine attempts to find a resolution refutation
of the negated query. If the negated query can be refuted, i.e., an
instantiation for all free variables is found that makes the union of clauses
and the singleton set consisting of the negated query false, it follows that
the original query, with the found instantiation applied, is a logical
consequence of the program. This makes Prolog (and other logic
programming languages) particularly useful for database, symbolic
mathematics, and language parsing applications.

BuK/WS 2019 VL-00: Einführung 39/43


Übersicht (Inhalt)

BuK/WS 2019 VL-00: Einführung 40/43


Übersicht (1)

Teil 1: Grundlagen
Modellierung von Problemen
Einführung der Turingmaschine (TM)
Einführung der Registermaschine (RAM)
Vergleich TM versus RAM
Church-Turing-These

BuK/WS 2019 VL-00: Einführung 41/43


Übersicht (2)

Teil 2: Berechenbarkeit
Existenz unentscheidbarer Probleme
Unentscheidbarkeit des Halteproblems
Diagonalisierung / Unterprogrammtechnik / Reduktion
Das Post’sche Korrespondenzproblem
Hilberts zehntes Problem

LOOP- und WHILE-Programme


Primitiv rekursive und µ-rekursive Funktionen

BuK/WS 2019 VL-00: Einführung 42/43


Übersicht (3)

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

BuK/WS 2019 VL-00: Einführung 43/43


VL-01: Turing Maschinen I

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-01: Turing Maschinen I 1/42


Organisatorisches

Nächste Vorlesung:
Mittwoch, Oktober 16, 10:30–12:00, Aula

Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py

BuK/WS 2019 VL-01: Turing Maschinen I 2/42


Turing Maschinen I

Probleme und Berechnungen


Turing Maschinen
Turing Berechenbarkeit
Programmierung von Turing Maschinen
Techniken zur Programmierung von Turing Maschinen

BuK/WS 2019 VL-01: Turing Maschinen I 3/42


Probleme und Berechnungen

BuK/WS 2019 VL-01: Turing Maschinen I 4/42


Was ist ein Berechnungsproblem?

Definition (informell; aus dem www)


In einem Berechnungsproblem sollen für bestimmte gegebene
Eingaben bestimmte Ausgaben produziert werden.
Eine Berechnung geschieht mit einem Algorithmus
(Handlungsvorschrift).

Algorithmus y
x

BuK/WS 2019 VL-01: Turing Maschinen I 5/42


Was ist ein Algorithmus?

Definition (informell; aus dem www)


An algorithm is an e↵ective procedure which allows a finite description.
It is based on finitely many instructions which can be carried out in a
stepwise fashion.
(Umgangssprachliche Umformulierung mit vielen unklaren Begri↵en:
e↵ective; procedure; finite description; instructions; stepwise fashion)

Wir brauchen viel präzisere Definitionen . . .

BuK/WS 2019 VL-01: Turing Maschinen I 6/42


Alphabete und Wörter (siehe FOSAP)

Die Ein- und Ausgaben sind Wörter über einem Alphabet ⌃.


Beispiele für Alphabete: ⌃ = {0, 1, #}
⌃ = {a, b, c, . . . , z}
⌃ = {B,D,F,H,J,K,M,O,. . . ,è }
⌃k ist die Menge aller Wörter der Länge k, z.B.

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

BuK/WS 2019 VL-01: Turing Maschinen I 7/42


Probleme (1): Als Relation

Im Allgemeinen entspricht ein Problem einer Relation R ✓ ⌃⇤ ⇥ ⌃0 ⇤


Ein Paar (x, y ) liegt in R,
wenn y eine zulässige Ausgabe zur Eingabe x ist.

BuK/WS 2019 VL-01: Turing Maschinen I 8/42


Beispiel: Primfaktorbestimung

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

R = {(x, y ) 2 {0, 1}⇤ ⇥ {0, 1}⇤ | x = bin(q), y = bin(p),


q, p 2 N, q 2, p prim, p teilt q}

Also zum Beispiel (110, 11) 2 R, aber (101, 11) 2


/ R.

BuK/WS 2019 VL-01: Turing Maschinen I 9/42


Probleme (2): Als Funktion

Bei vielen Problemen gibt es zu jeder Eingabe eine eindeutige


Ausgabe.
Dann können wir das Problem durch eine Funktion f : ⌃⇤ ! ⌃0 ⇤
beschreiben.
Die zur Eingabe x 2 ⌃⇤ gesuchte Ausgabe ist f (x) 2 ⌃0 ⇤ .

BuK/WS 2019 VL-01: Turing Maschinen I 10/42


Beispiel: Multiplikation

Beispiel: Multiplikation
Zu zwei natürlichen Zahlen i1 , i2 2 N (Eingabe) suchen wir das
entsprechende Produkt i1 · i2 (Ausgabe).

Um die Zahlen i1 und i2 in der Eingabe voneinander trennen zu können,


erweitern wir das Alphabet um ein Trennsymbol: ⌃ = {0, 1, #}.

Die entsprechende Funktion f : ⌃⇤ ! ⌃⇤ ist dann gegeben durch

f (bin(i1 )# bin(i2 )) = bin(i1 · i2 )

BuK/WS 2019 VL-01: Turing Maschinen I 11/42


Probleme (3): Entscheidungsprobleme als Sprachen

Viele Probleme lassen sich als Ja-Nein-Fragen formulieren.


Derartige Entscheidungsprobleme sind von der Form
f : ⌃⇤ ! {0, 1}, wobei wir 0 als “Nein” und 1 als “Ja”
interpretieren.
Es sei L = f 1 (1) ✓ ⌃⇤ die Menge derjenigen Eingaben,
die mit Ja“ beantwortet werden.

L ist eine Teilmenge der Wörter über dem Alphabet ⌃.
Eine Teilmenge von ⌃⇤ wird allgemein als Sprache bezeichnet.
Die Sprache L ist die zu dem durch f definierten
Entscheidungsproblem gehörende Sprache.

BuK/WS 2019 VL-01: Turing Maschinen I 12/42


Beispiel: Entscheidungsproblem als Sprache

Beispiel: Graphzusammenhang
Problemstellung: Für einen gegebenen ungerichteten Graphen
G = (V , E ) soll bestimmt werden, ob G zusammenhängend ist.

Der Graph G liegt dabei in einer geeigneten Kodierung code(G ) 2 ⌃⇤ vor,


zum Beispiel als binär kodierte Adjazenzmatrix.
0 1
0 0 1
Beispiel: 1 @0 0 0A 001000100
3
1 0 0
2

Die zu diesem Entscheidungsproblem gehörende Sprache ist

L = { w 2 ⌃⇤ | 9 Graph G : w = code(G ) und


G ist zusammenhängend }

BuK/WS 2019 VL-01: Turing Maschinen I 13/42


Turing Maschinen

BuK/WS 2019 VL-01: Turing Maschinen I 14/42


Zentrale Fragestellung

Frage
Welche Funktionen sind durch einen Algorithmus berechenbar?
Welche Sprachen können von einem Algorithmus entschieden werden?

Um diese Fragen in einem mathematisch exakten Sinne zu klären,


müssen wir festlegen, was eigentlich ein Algorithmus ist.
Zu diesem Zweck definieren wir ein einfaches Computer-Modell: Die
Turingmaschine (TM).

BuK/WS 2019 VL-01: Turing Maschinen I 15/42


Deterministische Turingmaschine

Arbeitsband (beidseitig unbeschränkt)

··· ⇤ 0 1 1 0 1 1 1 0 1 1 0 1 0 ⇤ ⇤ ⇤ ⇤ ···

Schreib-/Lesekopf

DFA

BuK/WS 2019 VL-01: Turing Maschinen I 16/42


Deterministische Turingmaschine

··· ⇤ 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

BuK/WS 2019 VL-01: Turing Maschinen I 16/42


Komponenten der TM

Q die endliche Zustandsmenge


⌃ das endliche Eingabealphabet
⌃ das endliche Bandalphabet
B2 \⌃ das Leerzeichen (Blank, in Bildern ⇤)
q0 2 Q der Anfangszustand
q̄ 2 Q der Endzustand
: (Q \ {q̄}) ⇥ ! Q ⇥ ⇥ {R, L, N}
die Zustandsüberführungsfunktion

Definition
Eine Turingmaschine ist definiert durch das 7-Tupel
(Q, ⌃, , B, q0 , q̄, ).

BuK/WS 2019 VL-01: Turing Maschinen I 17/42


Funktionsweise der TM (1)
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

Input x

··· ⇤ x1 x2 x3 x4 x5 x6 x7 x8 x8 x9 ⇤ ⇤ ⇤ ···

DFA q0

BuK/WS 2019 VL-01: Turing Maschinen I 18/42


Funktionsweise der TM (2)

Nummerierung der Zellen des Bandes


Die initiale Kopfposition wird als Position 0 bezeichnet
Bewegt sich der Kopf einen Schritt “nach rechts”, so erhöht sich die
Position um 1
Bewegt sich der Kopf um einen Schritt “nach links”, so verringert
sich die Position um 1

BuK/WS 2019 VL-01: Turing Maschinen I 19/42


Funktionsweise der TM (3)

Durchführung eines einzelnen Rechenschrittes


a2 bezeichne das gelesene Symbol (unterm Kopf)
q 2 Q \ {q̄} bezeichne den aktuellen Zustand
Angenommen (q, a) = (q 0 , a0 , d), für q 0 2 Q, a0 2 , d 2 {R, L, N}

Dann wird der Zustand auf q 0 gesetzt


an der Kopfposition wird das Symbol a0 geschrieben
der Kopf bewegt sich
8
< um eine Position nach rechts falls d = R
um eine Position nach links falls d = L
:
nicht falls d = N

BuK/WS 2019 VL-01: Turing Maschinen I 20/42


Funktionsweise der TM (4)

Ende der Berechnung


Die TM stoppt, wenn sie den Endzustand q̄ erreicht
Das Ausgabewort y 2 ⌃⇤ kann dann vom Band abgelesen werden: y
beginnt an der Kopfposition und endet unmittelbar vor dem ersten
Symbol aus \ ⌃

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

BuK/WS 2019 VL-01: Turing Maschinen I 21/42


Funktionsweise der TM (5)

Anmerkungen
Es besteht die Möglichkeit, dass die TM den Endzustand niemals
erreicht. Wir sagen dann, dass die Berechnung nicht terminiert.

Laufzeit = Anzahl von Rechenschritten bis zur Terminierung


Speicherbedarf = Anzahl von Bandzellen, die während der
Berechnung besucht werden

BuK/WS 2019 VL-01: Turing Maschinen I 22/42


Funktionsweise der TM:
Beispiel

BuK/WS 2019 VL-01: Turing Maschinen I 23/42


Beispiel (1)

Es sei L = {w 1 | w 2 {0, 1}⇤ } die Sprache der Wörter, die auf 1 enden.

L wird entschieden durch die TM M = (Q, ⌃, , B, q0 , q̄, ) mit


Q = {q0 , q1 , q̄}
⌃ = {0, 1} 0 1 B
= {0, 1, B} q0 (q0 , B, R) (q1 , B, R) reject
gemäß Tabelle q1 (q0 , B, R) (q1 , B, R) accept

accept“ steht hier als Abkürzung für (q̄, 1, N).



reject“ steht hier als Abkürzung für (q̄, 0, N).

Allgemein:
M entscheidet L, wenn M alle Wörter in L akzeptiert
und alle Wörter verwirft, die nicht in L sind
Wenn TM eine Sprache entscheidet, so muss sie immer halten

BuK/WS 2019 VL-01: Turing Maschinen I 24/42


Beispiel (2)

Die Übergangsfunktion ist zentraler Bestandteil der Turingmaschine.

Beschreibung der Übergangsfunktion als Tabelle:

0 1 B
q0 (q0 , B, R) (q1 , B, R) reject
q1 (q0 , B, R) (q1 , B, R) accept

Verbale Beschreibung des Algorithmus der TM


Solange ein Symbol aus {0, 1} gelesen wird:
Überschreibe das Symbol mit B,
bewege den Kopf nach rechts, und
gehe in Zustand q0 , wenn Symbol=0, sonst in Zustand q1
Sobald ein Blank gelesen wird,
akzeptiere die Eingabe, falls der aktuelle Zustand q1 ist, und
andernfalls verwirf die Eingabe.

BuK/WS 2019 VL-01: Turing Maschinen I 25/42


Veranschaulichung des Algorithmus

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

BuK/WS 2019 VL-01: Turing Maschinen I 26/42


Turing Berechenbarkeit

BuK/WS 2019 VL-01: Turing Maschinen I 27/42


Zum Sinn und Zweck des TM-Modells

Die TM dient als unser formales (mathematisches) Modell zur


Beschreibung von Algorithmen.

Die Frage, ob es für ein Problem einen Algorithmus gibt,


setzen wir ab jetzt gleich mit
der Frage, ob es eine TM gibt, die dieses Problem löst.

Frage: Ist das TM-Modell sinnvoll? Ist es allgemein genug?


Frage: Kann das TM-Modell wirklich alle denkbaren Algorithmen und
alle Fähigkeiten abdecken, die ein moderner Computer hat und die
ein zukünftiger Computer haben könnte?
Auf diese Fragen kommen wir später noch zurück.

BuK/WS 2019 VL-01: Turing Maschinen I 28/42


Turing Berechenbarkeit

Bzgl. der Berechnungsprobleme beschränken wir uns in dieser Vorlesung


auf Funktionen und Entscheidungsprobleme (Sprachen).

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.

BuK/WS 2019 VL-01: Turing Maschinen I 29/42


Programmierung von
Turing Maschinen

BuK/WS 2019 VL-01: Turing Maschinen I 30/42


Programmierung der TM am Beispiel

Wir entwickeln nun eine TM für die Sprache L = {0n 1n | n 1}

Es sei ⌃ = {0, 1}, = {0, 1, B}, Q = {q0 , . . . , q6 , q̄}

Unsere TM arbeitet in zwei Phasen:


Phase 1: Teste, ob Eingabe von der Form 0i 1j mit i 0 und j 1
Phase 2: Teste, ob i = j gilt.

Phase 1 verwendet {q0 , q1 } und wechselt bei Erfolg zu q2 .


Phase 2 verwendet {q2 , . . . , q6 } und akzeptiert bei Erfolg.

BuK/WS 2019 VL-01: Turing Maschinen I 31/42


Programmierung der TM am Beispiel: Phase 1

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.

BuK/WS 2019 VL-01: Turing Maschinen I 32/42


Programmierung der TM am Beispiel: Phase 2

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)

BuK/WS 2019 VL-01: Turing Maschinen I 34/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)

BuK/WS 2019 VL-01: Turing Maschinen I 34/42


Konfigurationen: Definitionen

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

(iii) ↵00 q 00 00 ist Nachfolgekonfiguration von ↵q , falls ↵00 q 00 00 in


endlich vielen Rechenschritten aus ↵q entsteht. Wir schreiben

↵q `⇤ ↵00 q 00 00
.
Anmerkung: insbesondere gilt ↵q `⇤ ↵q

BuK/WS 2019 VL-01: Turing Maschinen I 35/42


Konfigurationen: Beispiel
Die für die Sprache L = {0n 1n |n 1} beschriebene TM liefert in Phase 1
auf der Eingabe 0011 die folgende Konfigurationsfolge.

Phase 1:

q0 0011 ` 0q0 011 ` 00q0 11 ` 001q1 1 ` 0011q1 B ` 001q2 1


Anmerkung: Abgesehen von Blanks am Anfang und Ende des Strings sind
die Konfigurationen eindeutig.

Phase 2:

001q2 1 ` 00q3 1 ` 0q3 01 ` q3 001 ` q3 B001 ` q4 001

` q5 01 ` 0q6 1 ` 01q6 ` 0q2 1 ` . . .

BuK/WS 2019 VL-01: Turing Maschinen I 36/42


Techniken zur Programmierung von
Turing Maschinen

BuK/WS 2019 VL-01: Turing Maschinen I 37/42


Techniken zur Programmierung von TMs (1)

Technik 1: Speicher im Zustandsraum


Für beliebiges festes k 2 N können wir k Zeichen unseres Bandalphabets
im Zustand abspeichern, indem wir den Zustandsraum um den Faktor
| |k vergrössern, d.h. wir setzen
k
Qneu := Q ⇥
Neue Zustände für k = 2 sind dann zum Beispiel (q0 , BB), (q1 , 10).

BuK/WS 2019 VL-01: Turing Maschinen I 38/42


Techniken zur Programmierung von TMs (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

BuK/WS 2019 VL-01: Turing Maschinen I 39/42


Beispiel: Addition mittels 3-spuriger TM (1)

Die Verwendung einer mehrspurigen TM erlaubt es, Algorithmen


einfacher zu beschreiben.

Wir verdeutlichen dies am Beispiel der Addition: Aus der Eingabe


bin(i1 )# bin(i2 ) für i1 , i2 2 N soll bin(i1 + i2 ) berechnet werden.

Wir verwenden eine 3-spurige TM mit den Alphabeten ⌃ = {0, 1, #} und


8 0 1 0 1 0 1 0 1 9
< 0 0 0 1 =
= 0, 1, #, @ 0 A , @ 0 A , @ 1 A , . . . , @ 1 A , B
: ;
0 1 0 1

BuK/WS 2019 VL-01: Turing Maschinen I 40/42


Beispiel: Addition mittels 3-spuriger TM (2)
Schritt 1: Transformation in Spurendarstellung. Schiebe die Eingabe
so zusammen, dass die Binärkodierungen von i1 und i2 in der ersten
und zweiten Spur rechtsbündig übereinander stehen.
Aus der Eingabe 0011#0110 wird beispielsweise
0 10 10 10 1
0 0 1 1
B⇤ @ 0 A @ 1 A @ 1 A @ 0 A B⇤
0 0 0 0

Schritt 2: Addition nach der Schulmethode, indem der Kopf das


Band von rechts nach links abläuft. Überträge werden im Zustand
gespeichert. Als Ergebnis auf Spur 3 ergibt sich
0 10 10 10 1
0 0 1 1
B⇤ @ 0 A @ 1 A @ 1 A @ 0 A B⇤
1 0 0 1

Schritt 3: Rücktransformation von Spur 3 ins Einspur-Format:


Ausgabe 1001.
BuK/WS 2019 VL-01: Turing Maschinen I 41/42
Techniken zur Programmierung von TMen (continued)

Standardtechniken aus der Programmierung können auch auf TMen


implementiert werden.
Schleifen haben wir bereits an Beispielen gesehen.
Variablen können realisiert werden, indem wir pro Variable eine Spur
reservieren.
Felder (Arrays) können ebenfalls auf einer Spur abgespeichert
werden.
Unterprogramme können implementiert werden, indem wir eine Spur
des Bandes als Prozedurstack verwenden.
Rekursive Unterprogramme können ebenfalls implementiert werden.

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.

BuK/WS 2019 VL-01: Turing Maschinen I 42/42


VL-02: Turing Maschinen II

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-02: Turing Maschinen II 1/36


Organisatorisches

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

BuK/WS 2019 VL-02: Turing Maschinen II 2/36


Wiederholung

BuK/WS 2019 VL-02: Turing Maschinen II 3/36


Wdh.: Kodierung von Berechnungsproblemen
Drei mögliche formale Definitionen:

Als Relation: Als Funktion: Als Sprache:


Primfaktor:
(110, 11) 2 R
(101, 11) 2
/R
(00110, 11) 2
/R

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

Wörter die auf 1 enden:


(11, 1) 2 R f (11) = 1 11 2 L
(110, 1) 2
/R f (110) = 0 110 2
/L
(10, 0) 2 R
BuK/WS 2019 VL-02: Turing Maschinen II 4/36
Wdh.: Turingmaschinen

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

BuK/WS 2019 VL-02: Turing Maschinen II 5/36


Wdh.: Funktionsweise der TM (1)

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

Durchführung eines einzelnen Rechenschrittes


a2 bezeichne das gelesene Symbol (unterm Kopf)
q 2 Q \ {q̄} bezeichne den aktuellen Zustand
Angenommen (q, a) = (q 0 , a0 , d), für q 0 2 Q, a0 2 , d 2 {R, L, N}

Dann wird der Zustand auf q 0 gesetzt


An der Kopfposition wird das Symbol a0 geschrieben
Der Kopf bewegt sich um eine Position nach rechts (falls d = R),
oder um eine Position nach links (falls d = L), oder er bewegt sich
gar nicht (falls d = N)
BuK/WS 2019 VL-02: Turing Maschinen II 6/36
Wdh.: Funktionsweise der TM (2)

Ende der Berechnung


Die TM stoppt, wenn sie den Endzustand q̄ erreicht
Das Ausgabewort y 2 ⌃⇤ kann dann vom Band abgelesen werden: y
beginnt an der Kopfposition und endet unmittelbar vor dem ersten
Symbol aus \ ⌃

Ende der Berechnung / Variante


Auf dem Band steht die Ausgabe y 2 ⌃⇤ eingerahmt von Blanks
Der aktuelle Zustand ist der Endzustand q̄
Der Kopf steht über dem ersten Symbol von y
Frage: Macht diese Variante das TM Modell stärker oder schwächer?

BuK/WS 2019 VL-02: Turing Maschinen II 7/36


Wdh.: Laufzeit und Speicherbedarf

Laufzeit = Anzahl von Rechenschritten bis zur Terminierung


Speicherbedarf = Anzahl von Bandzellen, die während der
Berechnung besucht werden

BuK/WS 2019 VL-02: Turing Maschinen II 8/36


Wdh.: TM-Techniken

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

Schleifen, Variablen, Felder (Arrays), Unterprogramme

BuK/WS 2019 VL-02: Turing Maschinen II 9/36


Vorlesung VL-02
Turing Maschinen II

Mehrband-Turingmaschinen
Gödelnummern
Die universelle Turingmaschine

Church-Turing These

BuK/WS 2019 VL-02: Turing Maschinen II 10/36


Mehrband-Turingmaschinen

BuK/WS 2019 VL-02: Turing Maschinen II 11/36


Turingmaschinen mit mehreren Bändern
k-Band-TM
Eine k-Band-TM ist eine Verallgemeinerung der Turingmaschine.
Sie verfügt über k Arbeitsbänder mit jeweils einem unabhängigen Kopf.
Die Zustandsübergangsfunktion ist entsprechend von der Form
k k
: (Q \ {q̄}) ⇥ !Q⇥ ⇥ {L, R, N}k .

Band 1 fungiert als Ein-/Ausgabeband wie bei der (1-Band-)TM.


Die Zellen der Bänder 2, . . . , k sind anfangs leer (ausschliesslich B).

··· B 1 1 0 1 0 1 0 B B B ···

··· B 0 0 0 0 0 1 1 B B B ···

BuK/WS 2019 VL-02: Turing Maschinen II 12/36


Simulation k-Band-TM durch 1-Band-TM (1)

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.

BuK/WS 2019 VL-02: Turing Maschinen II 13/36


Simulation k-Band-TM durch 1-Band-TM (2)
Simulierte 2-Band-Turingmaschine M:

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

BuK/WS 2019 VL-02: Turing Maschinen II 14/36


Simulation k-Band-TM durch 1-Band-TM (3)

Jeder Rechenschritt von M wird durch M 0 wie folgt simuliert.


Am Anfang steht der Kopf von M 0 auf der linkesten Zelle,
die # enthält, und M 0 kennt den Zustand von M.
Der Kopf von M 0 läuft dann nach rechts bis zum rechtesten #,
wobei die k Zeichen an den mit # markierten Spurpositionen im
Zustand abgespeichert werden.
An der Zelle mit dem rechtesten #-Zeichen angekommen,
kann M 0 die Übergangsfunktion von M auswerten und
kennt den neuen Zustand von M sowie die erforderlichen Übergänge
auf den k Bändern.
Nun läuft der Kopf von M 0 zurück, verändert dabei die
Bandinschriften an den mit # markierten Stellen und verschiebt,
falls erforderlich, auch die #-Markierungen um eine Position nach
links oder rechts.

BuK/WS 2019 VL-02: Turing Maschinen II 15/36


Simulation k-Band-TM durch 1-Band-TM (4)

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.

BuK/WS 2019 VL-02: Turing Maschinen II 16/36


Die universelle Turingmaschine

BuK/WS 2019 VL-02: Turing Maschinen II 17/36


Special Purpose versus General Purpose Rechner

Bisher haben wir für jedes Problem eine eigene TM entworfen,


einen special purpose Rechner.
Real existierende Maschinen sind jedoch programmierbare general
purpose Rechner.
Wir konstruieren jetzt eine programmierbare Variante der TM,
die sogenannte universelle TM.

BuK/WS 2019 VL-02: Turing Maschinen II 18/36


Ein-/Ausgabeverhalten der universellen TM

Das “Programm” der universellen TM U ist die Kodierung einer


beliebigen TM M.
Mit hMi bezeichnen wir diese Kodierung der TM M.
Als Eingabe erhält U einen String der Form hMiw
bestehend aus einer TM-Kodierung hMi und einem Wort w .
Die universelle TM simuliert das Verhalten der TM M auf der
Eingabe w .
Bei inkorrekter Eingabe (z.B.: wenn die Eingabe nicht mit einer
TM-Kodierung beginnt; oder: wenn das Wort w Buchstaben enthält,
die nicht zum Eingabealphabet von M gehören) gibt U eine
Fehlermeldung aus.

BuK/WS 2019 VL-02: Turing Maschinen II 19/36


Intermezzo: Gödelnummern

BuK/WS 2019 VL-02: Turing Maschinen II 20/36


Gödelnummern (1)

Wir entwickeln nun eine eindeutige präfixfreie Kodierung, die jeder


Turingmaschine M ein Wort hMi über dem Alphabet {0, 1} zuordnet.

Definition
Wir nennen diese Kodierung hMi die Gödelnummer der
Turingmaschine M.

Präfixfrei bedeutet, dass keine Gödelnummer Präfix


(Anfangsteilwort) einer anderen Gödelnummer sein darf.
Um Präfixfreiheit zu erreichen, vereinbaren wir, dass alle
Gödelnummern mit 111 beginnen und auf 111 enden und ansonsten
den Teilstring 111 nicht in ihrer Kodierung enthalten.

BuK/WS 2019 VL-02: Turing Maschinen II 21/36


Gödelnummern (2)

Zur präfixfreien Kodierung von TMen gibt es viele Möglichkeiten.


Wir stellen jetzt eine mögliche Definition der Gödelnummer vor.

Wir beschränken uns auf TMen der folgenden Form:


Q = {q1 , . . . , qt } für ein t 2.
Der Anfangszustand ist q1 und der Endzustand ist q2 .
= {0, 1, B}.

Zur Beschreibung von TMen dieser Form müssen wir nur die
Übergangsfunktion als Binärstring kodieren.

Wir nummerieren das Alphabet durch,


indem wir X1 = 0, X2 = 1 und X3 = B setzen.
Auch die möglichen Kopfbewegungen nummerieren wir,
indem wir D1 = L, D2 = N und D3 = R setzen.

BuK/WS 2019 VL-02: Turing Maschinen II 22/36


Gödelnummern (3)

Kodierung der Übergangsfunktion


Der Übergang (qi , Xj ) = (qk , X` , Dm ) wird kodiert durch den
Binärstring
0i 10j 10k 10` 10m

Die Kodierung des t-ten Übergangs bezeichnen wir mit code(t).


Die Gödelnummer einer TM M mit s Übergängen ist dann

hMi = 111 code(1) 11 code(2) 11 . . . code(s) 111

BuK/WS 2019 VL-02: Turing Maschinen II 23/36


Gödelnummern: Beispielkodierung

⌃ = {0, 1} Start Ende Blank


= {0, 1, B}
q1 q2 B
··· B B B B B ··· Q = {q1 , q2 , q3 }

0 1 B
q1 (q1 , B, R) (q3 , B, R) (q2 , B, N)
q3 (q1 , 1, R) (q2 , 0, R) (q1 , B, L)

111 0101010001000 11 0100100010001000 11 010001001000100 11


00010101001000 11 000100100101000 11 000100010100010 111

BuK/WS 2019 VL-02: Turing Maschinen II 24/36


Kurt Gödel (1906–1978)

Wikipedia: Kurt Friedrich Gödel war ein Österreichischer Mathematiker


und einer der bedeutendsten Logiker des 20. Jahrhunderts. Er leistete
maßgebliche Beiträge zur Prädikatenlogik (Vollständigkeit und
Entscheidungsproblem in der Arithmetik und der axiomatischen
Mengenlehre), zu den Beziehungen der intuitionistischen Logik zur
klassischen Logik, und zur Relativitätstheorie in der Physik.

Der Erste Gödelsche Unvollständig-


keitssatz besagt, dass es in jedem
widerspruchsfreien Axiomensystem, das
genügend reichhaltig ist, um die
Arithmetik der natürlichen Zahlen in der
üblichen Weise aufzubauen, Aussagen
gibt, die aus diesem weder bewiesen noch
widerlegt werden können.

BuK/WS 2019 VL-02: Turing Maschinen II 25/36


Ende des Intermezzos —
Zurück zur universellen
Turingmaschine

BuK/WS 2019 VL-02: Turing Maschinen II 26/36


Implementierung der universellen TM (1)

Als Eingabe erhält die universelle TM U


ein Wort der Form hMiw für beliebiges w 2 {0, 1}⇤ .

Wir implementieren U zunächst in Form einer 3-Band-TM:


Band 1 von U simuliert das Band der TM M.
Band 2 von U enthält die Gödelnummer von M.
Auf Band 3 speichert U den jeweils aktuellen Zustand von M.

BuK/WS 2019 VL-02: Turing Maschinen II 27/36


Implementierung der universellen TM (2a)

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 .

Die Laufzeit der Initialisierung ist O(1),


wenn wir die Kodierungslänge von M als Konstante ansehen.

BuK/WS 2019 VL-02: Turing Maschinen II 28/36


Implementierung der universellen TM (2b)

Simulierte Turingmaschine M

··· B * * * * E i n g a b e * * * * * B B B ···

Initialisierung der universellen Maschine U

··· B * * * * E i n g a b e * * * * * B B B ···

··· B * * * ” M ” * * B B B ···

··· B 0 B B B ···

BuK/WS 2019 VL-02: Turing Maschinen II 29/36


Implementierung der universellen TM (3)

Simulation eines einzelnen Schritts von M:

U sucht zu dem Zeichen an der Kopfposition auf Band 1 und


zu dem Zustand auf Band 3 die Kodierung des
entsprechenden Übergangs von M auf Band 2.

Wie in der Übergangsfunktion beschrieben


aktualisiert U die Inschrift auf Band 1,
bewegt U den Kopf auf Band 1, und
verändert U den auf Band 3 abgespeicherten Zustand von M.

Laufzeit eines Simulationsschrittes: O(1).


U simuliert M mit konstantem Zeitverlust!

BuK/WS 2019 VL-02: Turing Maschinen II 30/36


Simulation durch universelle Maschine: Illustration
Simulierte Turingmaschine M

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

BuK/WS 2019 VL-02: Turing Maschinen II 31/36


Simulation durch universelle Maschine: Illustration
Simulierte Turingmaschine M

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

BuK/WS 2019 VL-02: Turing Maschinen II 31/36


Implementierung der universellen TM (4)

Können wir dieses Ergebnis auch mit einer (1-Band-)TM erreichen?


Natürlich können wir die beschriebene 3-Band-TM auf der 1-Band
TM mit mehreren Spuren simulieren.
Aber bei Verwendung dieser Simulation handeln wir uns einen
quadratischen Zeitverlust ein.
Wir erhalten eine universelle 1-Band-TM mit konstantem
Zeitverlust, wenn wir die Gödelnummer auf Spur 2 und den Zustand
auf Spur 3 mit dem Kopf der TM M mitführen.

BuK/WS 2019 VL-02: Turing Maschinen II 32/36


Die Church-Turing These

BuK/WS 2019 VL-02: Turing Maschinen II 33/36


Alonzo Church (1903–1995)

Wikipedia: Alonzo Church was an American mathematician and logician


who made major contributions to mathematical logic and the foundations
of theoretical computer science.

He is best known for the creation of


the lambda calculus, the
Church-Turing thesis, proving that the
Entscheidungsproblem is undecidable,
proving that Peano arithmetic is
undecidable, Frege-Church ontology,
and the Church-Rosser theorem.
Alonzo Church was the founding
editor of the Journal of Symbolic
Logic, and he edited its reviews
section until 1979.

BuK/WS 2019 VL-02: Turing Maschinen II 34/36


Alan Mathison Turing OBE FRS (1912–1954)

Wikipedia: Alan Turing was an English computer scientist, mathematician,


logician, cryptanalyst, philosopher and theoretical biologist.

Turing was highly influential in the


development of theoretical computer
science, providing a formalisation of the
concepts of algorithm and computation
with the Turing machine, which can be
considered a model of a general purpose
computer. Turing is widely considered to
be the father of theoretical computer
science and artificial intelligence.

BuK/WS 2019 VL-02: Turing Maschinen II 35/36


Die Church-Turing These

Kein bekanntes “vernünftiges” Rechnermodell ist mächtiger als die TM:


Lambda-Kalkül (Alonzo Church): gleich mächtig wie TM
Kanonische Systeme (Emil Post): gleich mächtig wie TM
µ-rekursive Funktionen (Stephen Kleene): gleich mächtig wie TM

Alonzo Church und Alan Turing formulierten in den 1930er Jahren:


Church-Turing These
Die Klasse der TM-berechenbaren Funktionen stimmt mit
der Klasse der “intuitiv berechenbaren” Funktionen überein.

Sprachliche Übereinkunft für den Rest der Vorlesung:


berechenbare Funktion= TM-berechenbare Funktion= rekursive Funktion
entscheidbare Sprache= TM-entscheidbare Sprache= rekursive Sprache

BuK/WS 2019 VL-02: Turing Maschinen II 36/36


VL-03: Registermaschinen

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-03: Registermaschinen 1/39


Organisatorisches

Zulassung zur Klausur:


Mindestens 50% der Punkte in Hausaufgaben
Keine Bonusregelung:
Klausurnote wird durch Punkte in Hausaufgaben nicht verbessert

Planung für die nächsten Wochen:


Mittwoch, Oktober 23: Keine Vorlesung
Freitag, Oktober 25, 12:30–14:00 Uhr, Audimax
Mittwoch, Oktober 30, 10:30–12:00, Aula
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

BuK/WS 2019 VL-03: Registermaschinen 2/39


Wiederholung

BuK/WS 2019 VL-03: Registermaschinen 3/39


Wdh.: k-Band- vs 1-Band-TM
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.

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

BuK/WS 2019 VL-03: Registermaschinen 4/39


Wdh.: Gödelnummer hMi

⌃ = {0, 1} Start Ende Blank


= {0, 1, B}
q1 q2 B
··· B B B B B ··· Q = {q1 , q2 , q3 }

0 1 B
q1 (q1 , B, R) (q3 , B, R) (q2 , B, N)
q3 (q1 , 1, R) (q2 , 0, R) (q1 , B, L)

111 0101010001000 11 0100100010001000 11 010001001000100 11


00010101001000 11 000100100101000 11 000100010100010 111

BuK/WS 2019 VL-03: Registermaschinen 5/39


Wdh.: Universelle TM

Simulierte Turingmaschine M

··· B * * * * E i n g a b e * * * * * B B B ···

Initialisierung der universellen Maschine U

··· B * * * * E i n g a b e * * * * * B B B ···

··· B * * * ¡ M ¿ * * B B B ···

··· B 0 B B B ···

BuK/WS 2019 VL-03: Registermaschinen 6/39


Wdh.: Universelle TM

Laufzeit der universellen TM


Bei Eingabe hMiw simuliert U die TM M auf Wort w .
Jeder Schritt von M wird dabei von U in f (|hMi|) Zeit simuliert.
Wenn |hMi| als Konstante angesehen wird,
so simuliert U die TM M mit konstantem Zeit- und Platzverlust.

BuK/WS 2019 VL-03: Registermaschinen 7/39


Wdh.: Die Church-Turing These

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.

Sprachliche Übereinkunft für den Rest der Vorlesung:


berechenbare Funktion= TM-berechenbare Funktion= rekursive Funktion
entscheidbare Sprache= TM-entscheidbare Sprache= rekursive Sprache

BuK/WS 2019 VL-03: Registermaschinen 8/39


Vorlesung VL-03
Registermaschinen

Registermaschinen (RAMs)
Simulation von RAM durch TM
Simulation von TM durch RAM

Collatz Problem

BuK/WS 2019 VL-03: Registermaschinen 9/39


Registermaschinen (RAM)

BuK/WS 2019 VL-03: Registermaschinen 10/39


Registermaschine (RAM)
..
.
Programm
c(4)

c(3)

c(2)

b c(0) c(1)

Befehlszähler Akkumulator Speicher


(unbeschränkt)

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

BuK/WS 2019 VL-03: Registermaschinen 11/39


RAM: Syntax und Semantik der Befehle (1)
Syntax Bewirkte Veränderung Befehlszähler
LOAD i c(0) := c(i) b := b + 1
CLOAD i c(0) := i b := b + 1
INDLOAD i c(0) := c(c(i)) b := b + 1
STORE i c(i) := c(0) b := b + 1
INDSTORE i c(c(i)) := c(0) b := b + 1
ADD i c(0) := c(0) + c(i) b := b + 1
CADD i c(0) := c(0) + i b := b + 1
INDADD i c(0) := c(0) + c(c(i)) b := b + 1
SUB i c(0) := c(0) c(i) b := b + 1
CSUB i c(0) := c(0) i b := b + 1
INDSUB i c(0) := c(0) c(c(i)) b := b + 1
MULT i c(0) := c(0) ⇤ c(i) b := b + 1
CMULT i c(0) := c(0) ⇤ i b := b + 1
INDMULT i c(0) := c(0) ⇤ c(c(i)) b := b + 1
DIV i c(0) := bc(0)/c(i)c b := b + 1
CDIV i c(0) := bc(0)/ic b := b + 1
INDDIV i c(0) := bc(0)/c(c(i))c b := b + 1
DIV, CDIV, INDDIV: Bei Division durch 0 ist das Ergebnis 0

BuK/WS 2019 VL-03: Registermaschinen 12/39


RAM: Syntax und Semantik der Befehle (2)

Syntax Bewirkte Veränderung Befehlszähler

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 —

BuK/WS 2019 VL-03: Registermaschinen 13/39


RAM: Funktionsweise

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.

Die Eingabe besteht ebenfalls aus natürlichen Zahlen, die zu Beginn


in den ersten paar Registern abgespeichert sind.
Alle anderen Register sind mit 0 initialisiert.
Der Befehlszähler startet mit dem Wert 1. Ausgeführt wird jeweils
der Befehl in derjenigen Zeile, auf die der Befehlszähler verweist.

Die Rechnung stoppt, sobald der Befehl END erreicht ist.


Die Ausgabe befindet sich nach dem Stoppen in den ersten paar
Registern.

BuK/WS 2019 VL-03: Registermaschinen 14/39


RAM: Beispielprogramm

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

BuK/WS 2019 VL-03: Registermaschinen 15/39


RAM: Beispielprogramm

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

BuK/WS 2019 VL-03: Registermaschinen 15/39


RAM: Anmerkungen

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.

Modelle für die Rechenzeit


Uniformes Kostenmaß:
Jeder Schritt der RAM zählt als eine Zeiteinheit.

Logarithmisches Kostenmaß:
Die Laufzeitkosten eines Schrittes der RAM sind proportional zur
binären Länge der Zahlen in den angesprochenen Registern.

BuK/WS 2019 VL-03: Registermaschinen 16/39


Simulation von RAM durch TM

BuK/WS 2019 VL-03: Registermaschinen 17/39


Simulation RAM durch TM

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.

Im Beweis können wir ohne Beschränkung der Allgemeinheit


(o.B.d.A.) für die Simulation eine 2-Band-TM statt einer 1-Band-TM
verwenden. Warum?

BuK/WS 2019 VL-03: Registermaschinen 18/39


Vorbemerkungen (1): Rechnen mit Polynomen

Es seien ↵, , 2 N geeignet gewählte Konstanten.

Wir werden in unserem Beweis zeigen: Die Laufzeit der Simulation


der RAM mit Laufzeitschranke t(n) durch eine 2-Band-TM ist durch
t 0 (n) = ↵(n + t(n)) nach oben beschränkt.

Die 2-Band-TM mit Laufzeitschranke t 0 (n) kann nun wiederum mit


quadratischem Zeitverlust durch eine 1-Band-TM simuliert werden,
also mit einer Laufzeitschranke der Form t 00 (n) = (t 0 (n))2 .

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 .

Diese Laufzeitschranke ist polynomiell in n + t(n), weil sowohl der


Term ↵2 als auch der Term 2 konstant sind.

BuK/WS 2019 VL-03: Registermaschinen 19/39


Vorbemerkungen (2): Rechnen mit Polynomen

Beobachtung
Die Klasse der Polynome ist unter Hintereinanderausführung
abgeschlossen.

Mit anderen Worten:


Wenn sowohl die Abbildung x 7! p(x) als auch die Abbildung x 7! q(x)
Polynome sind, dann ist auch die Abbildung x 7! q(p(x)) ein Polynom.

Deshalb können wir eine konstante Anzahl von Simulationen, deren


Zeitverlust jeweils polynomiell nach oben beschränkt ist, ineinander
schachteln und erhalten dadurch wiederum eine Simulation mit
polynomiell beschränktem Zeitverlust.

BuK/WS 2019 VL-03: Registermaschinen 20/39


Beweis (1)

Beweis des Satzes über die Simulation

Wir verwenden eine 2-Band-TM, die die RAM schrittweise simuliert.


Auf Band 1 werden die einzelnen Befehle simuliert, und
auf Band 2 wird der Inhalt aller verwendeten Register abgespeichert.

Das RAM-Programm P bestehe aus p Programmzeilen.

Für jede Programmzeile schreiben wir ein TM-Unterprogramm.


Es sei Mi das Unterprogramm für Programmzeile i , 1  i  p.

Ausserdem spezifizieren wir ein Unterprogramm M0 für die


Initialisierung der TM, und ein Unterprogramm Mp+1 für die
Aufbereitung der Ausgabe des Ergebnisses.

BuK/WS 2019 VL-03: Registermaschinen 21/39


Beweis (2)
Abspeichern der RAM-Konfiguration auf der TM:
Den Befehlszähler kann die TM im Zustand abspeichern, da die
Länge des RAM-Programms konstant ist.
Die Registerinhalte werden wie folgt auf Band 2 abgespeichert:

##0# bin(c(0))## bin(i1 )# bin(c(i1 ))## . . .

. . . ## bin(im )# bin(c(im ))###,

wobei 0, i1 , . . . , im die Indizes der benutzten Register sind.

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.

BuK/WS 2019 VL-03: Registermaschinen 22/39


Beweis (3)

Rechenschritt für Rechenschritt simuliert die TM nun die


Konfigurationsveränderungen der RAM.
Dazu ruft die TM jeweils das im Programmzähler b spezifizierte
Unterprogramm Mb auf.

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.

BuK/WS 2019 VL-03: Registermaschinen 23/39


Beweis (4)

Laufzeitanalyse:
Die Initialisierung erfordert Zeit O(n).

Alle Unterprogramme haben eine Laufzeit, die polynomiell in der


Länge des aktuellen Wortes auf Band 2 beschränkt ist.
Also: Eine Laufzeit polynomiell in n + t(n).

Somit ist auch die Gesamtlaufzeit der Simulation polynomiell in


n + t(n) beschränkt.

Ende des Beweises.

BuK/WS 2019 VL-03: Registermaschinen 24/39


Simulierte Registermaschine M
..
.. .. .
. .
7: LOAD 3
8: MULT 1 0 c(5)
9:
. STORE
. 3
.. .. 0 c(4)
0 c(3)
3 c(2)
8 2
2 c(1)

Simulierende Turingmaschine
··· B B B B ···

··· B # # 0 # 1 0 # # 1 # 1 0 # # 1 0 # 1 1 # # # B B B ···

BuK/WS 2019 VL-03: Registermaschinen 25/39


Simulierte Registermaschine M
..
.. .. .
. .
7: LOAD 3
8: MULT 1 0 c(5)
9: STORE 3
.
.. . .. ⇤ 0 c(4)
0 c(3)
3 c(2)
8 2
2 c(1)

Simulierende Turingmaschine
Kopiere c(0)
··· B B B B ···

··· B # # 0 # 1 0 # # 1 # 1 0 # # 1 0 # 1 1 # # # B B B ···

BuK/WS 2019 VL-03: Registermaschinen 25/39


Simulation von TM durch RAM

BuK/WS 2019 VL-03: Registermaschinen 26/39


Simulation TM durch RAM

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.

BuK/WS 2019 VL-03: Registermaschinen 27/39


Beweis (1)

Wir nehmen an, dass es sich um eine TM mit einseitig beschränktem


Band handelt, dessen Zellen mit 0, 1, 2, 3, 4, 5, . . . durchnummeriert
sind. (Übungsaufgabe: Rechtfertigen Sie diese Annahme.)
Die Zustände in Q und die Buchstaben im Bandalphabet werden
durchnummeriert und mit ihren Nummern identifiziert, so dass sie in
den Registern abgespeichert werden können.
Das Blank B erhält dabei die Nummer 0.

Das Register 1 speichert den Index der Kopfposition.


Das Register 2 speichert den aktuellen Zustand.
Die Register 3, 4, 5, 6, 7, 8, . . . speichern die Inhalte der Bandzellen
0, 1, 2, 3, 4, 5, . . .

BuK/WS 2019 VL-03: Registermaschinen 28/39


Beweis (2)
Die TM wird nun Schritt für Schritt durch die RAM simuliert.

Auswahl des richtigen TM-Übergangs


Die RAM verwendet eine zweistufige if-Abfrage:
Auf einer ersten Stufe von |Q| vielen if-Abfragen wird der aktuelle
Zustand selektiert.
Für jeden möglichen Zustand gibt es dann eine zweite Stufe
von | | vielen if-Abfragen, die das gelesene Zeichen selektieren.

Durchführung des TM-Übergangs


Je nach Ausgang der if-Abfragen aktualisiert die RAM
den TM-Zustand in Register 2,
den Inhalt der TM-Bandzelle in Register c(1) und
die TM-Kopfposition in Register 1.

BuK/WS 2019 VL-03: Registermaschinen 29/39


Simulierte Turingmaschine M 1 2 B
q1 q3
B 1 1 2 1 B B B ···
q2
q3 (q2 , 1, R)

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

BuK/WS 2019 VL-03: Registermaschinen 30/39


Simulierte Turingmaschine M 1 2 B
q1 q3
B 1 1 2 1 B B B ···
q2
q3 (q2 , 1, R)

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

BuK/WS 2019 VL-03: Registermaschinen 30/39


Beweis (3)

Laufzeitanalyse im uniformen Kostenmodell:

Die Initialisierung kann in Zeit O(n) durchgeführt werden.


Die Simulation jedes einzelnen TM-Schrittes hat konstante Laufzeit.
Insgesamt ist die Simulationszeit somit O(n + t(n)).

BuK/WS 2019 VL-03: Registermaschinen 31/39


Beweis (4)

Laufzeitanalyse im logarithmischen Kostenmodell:

Die in den Registern gespeicherten Zahlen repräsentieren Zustände,


Zeichen und Bandpositionen.
Zustände und Zeichen haben eine konstante Kodierungslänge.
Die Bandpositionen, die während der Simulation angesprochen
werden, sind durch max{n, t(n)}  n + t(n) beschränkt. Die
Kodierungslänge dieser Positionen ist also O(log(t(n) + n)).
Damit kann die Simulation jedes einzelnen TM-Schrittes in Zeit
O(log(t(n) + n)) durchgeführt werden.
Insgesamt ergibt sich somit eine Simulationszeit von
O((t(n) + n) log(t(n) + n)).

BuK/WS 2019 VL-03: Registermaschinen 32/39


Zusammenfassung unserer Simulationen

Die Mehrband-TM kann mit quadratischem Zeitverlust durch eine


(1-Band-)TM simuliert werden.
TM und RAM (im logarithmischen Kostenmodell) können einander
gegenseitig mit polynomiellem Zeitverlust simulieren.

Wenn es also nur um Fragen der Berechenbarkeit von Problemen


(oder um ihre Lösbarkeit in polynomieller Zeit) geht, so können
wir wahlweise auf die TM, die Mehrband-TM oder die RAM
zurückgreifen.

BuK/WS 2019 VL-03: Registermaschinen 33/39


Das Collatz Problem

BuK/WS 2019 VL-03: Registermaschinen 36/39


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
8: IF c(0) > 0 THEN GOTO 13 3x + 1 wenn x ungerade
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

x c(1)

BuK/WS 2019 VL-03: Registermaschinen 37/39


Das Collatz Problem (1)

(
x/2 wenn x gerade
x
3x + 1 wenn x ungerade

Mit dieser Iterationsgleichung erhält man z.B. die Zahlenfolgen


1, 4, 2, 1, . . .
2, 1, 4, 2, 1,. . .
3, 10, 5, 16, 8, 4, 2, 1, . . .
5, 16, 8, 4, 2, 1, 4, 2, 1
19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26,
13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1

O↵enes Problem
Hält die obige Registermaschine auf allen Eingaben?

BuK/WS 2019 VL-03: Registermaschinen 38/39


Das Collatz Problem (2)

Statistik der Zahlenfolgenlängen bei Eingaben bis zu 100 Millionen:

User:Allen McC/Wikimedia
Commons/CC-BY-SA-3.0

BuK/WS 2019 VL-03: Registermaschinen 39/39


VL-04: Unentscheidbarkeit I

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-04: Unentscheidbarkeit I 1/38


Organisatorisches

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

BuK/WS 2019 VL-04: Unentscheidbarkeit I 2/38


Wiederholung

BuK/WS 2019 VL-04: Unentscheidbarkeit I 3/38


Registermaschine (RAM)
..
.
Programm
c(4)

c(3)

c(2)

b c(0) c(1)

Befehlszähler Akkumulator Speicher


(unbeschränkt)

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

BuK/WS 2019 VL-04: Unentscheidbarkeit I 4/38


Wdh.: Uniform versus logarithmisch

Modelle für die Rechenzeit auf der RAM


Uniformes Kostenmaß:
Jeder Schritt der RAM zählt als eine Zeiteinheit.
Logarithmisches Kostenmaß:
Die Laufzeitkosten eines Schrittes der RAM sind proportional zur
binären Länge der Zahlen in den angesprochenen Registern.

Uniformes Kostenmaß: Vernünftiges Modell, solange die Zahlen in


den Registern moderat gross bleiben.
Uniformes Kostenmaß: Standard Modell in der Algorithmik (z.B.
DSAL)
Logarithmisches Kostenmaß: Korrektes Modell, falls (auch) mit sehr
sehr sehr langen Zahlen in den Registern gearbeitet wird.
Logarithmisches Kostenmaß: Standard Modell in der
Komplexitätstheorie (Teil 2 der BuK)

BuK/WS 2019 VL-04: Unentscheidbarkeit I 5/38


Wdh.: RAM vs. TM

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.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 6/38


Wdh.: Das Collatz Problem

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

Ein 17-zeiliges Programm auf der RAM: Niemand weiss, ob dieses


Programm für jede mögliche Eingabezahl in Register 1 terminiert.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 7/38


Vorlesung VL-04
Unentscheidbarkeit I

Exkurs: Abzählbare und überabzählbare Mengen


Diagonalisierung
Unentscheidbare Probleme

Die Diagonalsprache
Das Komplement der Diagonalsprache
Die Unterprogrammtechnik
Das Halteproblem

BuK/WS 2019 VL-04: Unentscheidbarkeit I 8/38


Grundlegende Frage

Grundlegende Frage
Gibt es unentscheidbare Probleme?

Gibt es algorithmische Probleme, die kein Computer lösen kann?


Gibt es algorithmische Probleme, die keine TM lösen kann?
Gibt es algorithmische Probleme, die keine RAM lösen kann?

Kurze Antwort
Ja, es gibt unentscheidbare Probleme.
Grund: Es existieren mehr Sprachen/Probleme als TMen/Algorithmen.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 9/38


Exkurs: Abzählbare und
überabzählbare Mengen

BuK/WS 2019 VL-04: Unentscheidbarkeit I 10/38


Exkurs: Abzählbarkeit

Definition: Abzählbare Menge


Eine Menge M heisst abzählbar,
wenn M leer ist oder
wenn es eine surjektive Funktion c : N ! M gibt.

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.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 11/38


Exkurs: Abzählbare Beispielmengen (1)

Beispiele für abzählbar unendliche Mengen


die Menge der natürlichen Zahlen N = {0, 1, 2, 3, 4, 5, . . .}
mit der Bijektion c(i ) = i

die Menge der ganzen Zahlen Z = {0, 1, 1, 2, 2, 3, 3, 4, 4, . . .}


mit der Bijektion

i /2 falls i gerade
c(i ) =
(i + 1)/2 falls i ungerade

die Menge der positiven rationalen Zahlen Q+


0:

1 2 1 3 2 1 i i 1 i 2 1
, , , , , , ..., , , , ..., , ...
1 1 2 1 2 3 1 2 3 i

BuK/WS 2019 VL-04: Unentscheidbarkeit I 12/38


Exkurs: Abzählbare Beispielmengen (2)

1 2 3 4 5 6 ...

1 1/1 2/1 3/1 4/1 5/1 6/1

2 1/2 2/2 3/2 4/2 5/2 6/2

3 1/3 2/3 3/3 4/3 5/3 6/3 ...

4 1/4 2/4 3/4 4/4 5/4 6/4

5 1/5 2/5 3/5 4/5 5/5 6/5

6 1/6 2/6 3/6 4/6 5/6 6/6


.. .. ..
. . .

BuK/WS 2019 VL-04: Unentscheidbarkeit I 13/38


Exkurs: Abzählbare Beispielmengen (3)

Weitere Beispiele für abzählbar unendliche Mengen


Die Menge ⌃⇤ der Wörter über einem endlichen Alphabet ⌃.
Zum Beispiel: {0, 1}⇤ in kanonischer Reihenfolge lautet:
✏, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, . . .

Die Menge der Gödelnummern,


da Gödelnummern Wörter über dem Alphabet {0, 1} sind

Die Menge der TMen (in unserer Normalform),


da jede TM durch eine Gödelnummer beschrieben wird.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 14/38


Exkurs: Abzählbare Beispielmengen (4)

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 .

Einfache Fakten (Beweis als Übung):


Es existiert ein Algorithmus, der zur Eingabe i die Ausgabe wi liefert.
Es existiert ein Algorithmus, der für die Eingabe x 2 {0, 1}⇤ den
Index i mit wi = x ausgibt.
Es existiert ein Algorithmus, der für die Eingabe x 2 {0, 1}⇤
entscheidet, ob x eine Gödelnummer ist.
Es existiert ein Algorithmus, der zur Eingabe i die Ausgabe Mi liefert.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 15/38


Exkurs: Überabzählbarkeit (1)

Nun betrachten wir die Potenzmenge P(N),


die Menge aller Teilmengen von N = {1, 2, 3, . . .}.

Satz
Die Menge P(N) ist überabzählbar (= nicht abzählbar).

Beweis (durch Diagonalisierung)


Zwecks Widerspruchs nehmen wir an, dass P(N) abzählbar ist.
Es sei S0 , S1 , S2 , S3 , . . . eine Aufzählung von P(N).
Wir definieren eine 2-dimensionale unendliche Matrix (Ai,j )i,j2N mit

1 falls j 2 Si
Ai,j =
0 sonst

BuK/WS 2019 VL-04: Unentscheidbarkeit I 16/38


Exkurs: Überabzählbarkeit (2)

Die Matrix A könnte etwa folgendermassen aussehen:

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

Wir definieren die Diagonalmenge Sdiag = {i 2 N | Ai,i = 1}


Komplement der Diagonalmenge S diag = N \ Sdiag = {i 2 N | Ai,i = 0}

BuK/WS 2019 VL-04: Unentscheidbarkeit I 17/38


Exkurs: Überabzählbarkeit (3)

Beachte: Auch S diag ist eine Teilmenge von N.


S diag kommt daher in der Aufzählung S1 , S2 , . . . von P(N) vor.
In anderen Worten: Es gibt eine Zeile k 2 N mit S diag = Sk .
Jetzt gibt es zwei Fälle, die jeweils zum Widerspruch führen.

Def. S diag Def. A


Fall 1: Ak,k = 1 ) k 62 S diag ) k 62 Sk ) Ak,k = 0
Widerspruch!

Def. S diag Def. A


Fall 2: Ak,k = 0 ) k 2 S diag ) k 2 Sk ) Ak,k = 1
Widerspruch!
Folglich gibt es keine derartige Aufzählung von P(N).

BuK/WS 2019 VL-04: Unentscheidbarkeit I 18/38


Exkurs: Zu guter Letzt . . .

Der Barbier von Sevilla rasiert alle Männer, die sich nicht selbst rasieren.
Frage: Rasiert der Barbier sich denn selbst?

Die Berry-Zahl ist die kleinste natürliche Zahl,


die nicht mit weniger als tausend Buchstaben definierbar ist.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 19/38


Unentscheidbare Probleme

BuK/WS 2019 VL-04: Unentscheidbarkeit I 20/38


Wie viele verschiedene Entscheidungsprobleme gibt es?

Jedes Entscheidungsproblem mit binär kodierter Eingabe entspricht


einer Sprache über dem Alphabet {0, 1} (und umgekehrt).

Es sei L die Menge aller Entscheidungsprobleme über {0, 1}.


Ein Entscheidungsproblem L 2 L ist eine Teilmenge von {0, 1}⇤ .
L ist somit die Menge aller Teilmengen von {0, 1}⇤ .
Also ist L die Potenzmenge von {0, 1}⇤ .
Also gilt L = P({0, 1}⇤ ).

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.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 21/38


Die Existenz unentscheidbarer Probleme

Zusammengefasst:
Es gibt überabzählbar viele Entscheidungsprobleme/Sprachen.
Es gibt nur abzählbar viele TMen/Gödelnummern.

Direkte Schlussfolgerung
Es existieren unentscheidbare Sprachen.

Die reine Existenz von unentscheidbaren Problemen ist eigentlich


nicht bedrohlich: Es könnte sich dabei ja ausschliesslich um völlig
uninteressante, künstliche, nicht praxis-relevante Probleme handeln.
Diese Ho↵nung wird sich aber nicht bestätigen.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 22/38


Die Diagonalsprache

BuK/WS 2019 VL-04: Unentscheidbarkeit I 23/38


Die Diagonalsprache (1)

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.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 24/38


Die Diagonalsprache (2): Intuition

Warum trägt diese Sprache den Namen Diagonalsprache?


Betrachte eine unendliche binäre Matrix A mit

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

BuK/WS 2019 VL-04: Unentscheidbarkeit I 25/38


Die Diagonalsprache (3): Der Beweis

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.

Wir starten die TM Mj mit der Eingabe wj . Es ergeben sich zwei


Fälle, die jeweils direkt zum Widerspruch führen.

Mj entsch. D Def. von D


Fall 1: wj 2 D ) Mj akzeptiert wj ) wj 62 D

Mj entsch. D Def. von D


Fall 2: wj 62 D ) Mj akzeptiert wj nicht ) wj 2 D

Somit ist D unentscheidbar.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 26/38


Unentscheidbarkeit des
Diagonalsprachenkomplements

BuK/WS 2019 VL-04: Unentscheidbarkeit I 27/38


Diagonalsprachenkomplement (1)

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.

Zwecks Widerspruchs nehmen wir an, dass es eine TM MD gibt,


die die Sprache D entscheidet. Diese TM MD hält dann auf jeder
Eingabe w , und akzeptiert w genau dann, wenn w 2 D.
Wir konstruieren nun eine neue TM M, die MD als Unterprogramm
verwendet: M startet MD auf der vorliegenden Eingabe und negiert
anschliessend die Ausgabe von MD .
Diese TM M entscheidet dann o↵ensichtlich D.
Ein Widerspruch zur Unentscheidbarkeit von D.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 28/38


Diagonalsprachenkomplement (2)

Illustration: Aus MD konstruieren wir MD .

MD
accept accept
x
MD
reject reject

Die Existenz von MD widersprucht der Unentscheidbarkeit von D.


Daher kann es das Programm MD nicht geben.
Daher ist D nicht entscheidbar.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 29/38


Die Unterprogrammtechnik

BuK/WS 2019 VL-04: Unentscheidbarkeit I 30/38


Unterprogrammtechnik (1)

Die Beweistechnik aus dem vorhergehenden Satz (über die


Unentscheidbarkeit von D) lässt sich wie folgt zusammenfassen:

Unterprogrammtechnik zum Beweis von Unentscheidbarkeiten


Es sei L0 eine bereits analysierte, nicht-entscheidbare Sprache.
Es sei L eine neue Sprache, die wir untersuchen wollen.

Um nachzuweisen, dass L nicht entscheidbar ist, genügt es zu zeigen,


dass man mit Hilfe von Unterprogrammaufrufen einer TM ML
(zum Entscheiden von L) auch die Sprache L0 entscheiden kann.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 31/38


Unterprogrammtechnik (2)

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.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 32/38


Das Halteproblem

BuK/WS 2019 VL-04: Unentscheidbarkeit I 33/38


Das Halteproblem

Das Halteproblem besteht darin, zu entscheiden,


ob ein gegebenes Programm mit einer gegebenen Eingabe terminiert.

In unserer Notation mit TMen ergibt sich die folgende formale


Problemdefinition:
Definition (Halteproblem)
H = {hMiw | M hält auf w }

Es wäre natürlich nützlich, wenn Compiler das Halteproblem entscheiden


könnten. Wir werden jedoch sehen, dass dieses grundlegende Problem
unentscheidbar ist.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 34/38


Das Halteproblem (2)

Satz
Das Halteproblem H ist nicht entscheidbar.

Beweisidee: Wir benutzen die Unterprogrammtechnik:


Es sei MH eine TM, die H entscheidet:
MH hält auf jeder Eingabe und akzeptiert nur Eingaben der Form
hMiw , bei denen M auf w hält.
Wir konstruieren eine neue TM MD mit MH als Unterprogramm,
die D entscheidet.
Dies steht im Widerspruch zur Nicht-Berechenbarkeit von D.
Dieser Widerspruch impliziert die Nicht-Existenz der TM MH .

BuK/WS 2019 VL-04: Unentscheidbarkeit I 35/38


Beweis (1)

Der ausgearbeitete Beweis:

Algorithmus der TM MD mit Unterprogramm MH :

(1) Auf Eingabe w berechne zuerst Index i mit w = wi .

(2) Berechne dann die Gödelnummer der i -ten TM Mi , also hMi i.

(3) Starte MH als Unterprogramm mit Eingabe hMi iwi .

(3.1) Falls MH akzeptiert, so simuliere das Verhalten von Mi auf wi


(mit Hilfe der universellen TM U).

(3.2) Falls MH verwirft, so verwirf die Eingabe.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 36/38


Beweis (2)

Illustration: Aus MH konstruieren wir MD .

MD

accept accept
i mit
w wi = w hMi iwi
MH U reject
und
dann Mi

reject

Existenz von MD steht im Widerspruch zur Unentscheidbarkeit von D.


Daher gibt es MH nicht, und das Halteproblem H ist nicht entscheidbar.

BuK/WS 2019 VL-04: Unentscheidbarkeit I 37/38


Beweis (3)

Für die Korrektheit ist zu zeigen:


1. w 2 D ) MD akzeptiert w
2. w 62 D ) MD verwirft w

Es sei w = wi . Dann gilt:

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

BuK/WS 2019 VL-04: Unentscheidbarkeit I 38/38


VL-05: Unentscheidbarkeit II

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-05: Unentscheidbarkeit II 1/42


Organisatorisches

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

BuK/WS 2019 VL-05: Unentscheidbarkeit II 2/42


Wiederholung

BuK/WS 2019 VL-05: Unentscheidbarkeit II 3/42


Wdh.: Abzählbarkeit

Eine Menge M heisst abzählbar,


wenn M leer oder wenn es surjektive Funktion c : N ! M gibt.
Beispiele: endliche Mengen; N, Z, Q; {0, 1}⇤ ; jede formale Sprache;
Menge der Gödelnummern; Menge der TMen; Menge der Algorithmen

Eine Menge heisst überabzählbar, wenn sie nicht abzählbar ist.


Beispiele: R; P(N); P({0, 1}⇤ ); Menge aller Berechnungsprobleme

Direkte Schlussfolgerung
Es existieren nicht-berechenbare Probleme.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 4/42


Wdh.: Unentscheidbarkeit der Diagonalsprache

Definition (Diagonalsprache)
D = { w 2 {0, 1}⇤ | w = wi und Mi akzeptiert w nicht}

Satz
Die Diagonalsprache D ist nicht entscheidbar.
Beweis: Durch Diagonalisierung

BuK/WS 2019 VL-05: Unentscheidbarkeit II 5/42


Wdh.: Unentscheidbarkeit der Diagonalsprache


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

BuK/WS 2019 VL-05: Unentscheidbarkeit II 6/42


Wdh.: Bisher betrachtete unentscheidbare Probleme

Die folgenden Probleme sind nicht entscheidbar:

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 }

BuK/WS 2019 VL-05: Unentscheidbarkeit II 7/42


Wdh.: Komplement der Diagonalsprache

MD
accept accept
x
MD
reject reject

BuK/WS 2019 VL-05: Unentscheidbarkeit II 8/42


Wdh.: Halteproblem

MD

accept accept
i mit
w wi = w hMi iw
MH U reject
und
dann Mi

reject

BuK/WS 2019 VL-05: Unentscheidbarkeit II 9/42


Vorlesung VL-05
Unentscheidbarkeit II

Das Epsilon-Halteproblem

Der Satz von Rice


Anwendungen von Rice

Abschlusseigenschaften

BuK/WS 2019 VL-05: Unentscheidbarkeit II 10/42


Das Epsilon-Halteproblem

BuK/WS 2019 VL-05: Unentscheidbarkeit II 11/42


Das Epsilon-Halteproblem

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.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 12/42


Beweis (1)

Die neue TM MH mit Unterprogramm M✏ arbeitet wie folgt:

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

BuK/WS 2019 VL-05: Unentscheidbarkeit II 13/42


Beweis (2)

Illustration: Aus M✏ konstruieren wir MH .

MH
accept

x hMi,w hMw⇤ i
hMi und w M" reject
mit
x = hMiw

reject (Syntax)

Existenz von MH steht im Widerspruch zur Unentscheidbarkeit von H.


Daher gibt es M✏ nicht.
Daher ist das Epsilon-Halteproblem H✏ nicht entscheidbar.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 14/42


Beweis (3): Korrektheit
Falls Eingabe nicht von der Form x = hMiw ist, verwirft MH die Eingabe.
Wir nehmen nun an, dass Eingabe der Form x = hMiw vorliegt.
Für die Korrektheit ist somit noch zu zeigen:
hMiw 2 H ) MH akzeptiert hMiw
hMiw 62 H ) MH verwirft hMiw

hMiw 2 H ) M hält auf Eingabe w


) Mw⇤ hält auf der Eingabe ✏
) M✏ akzeptiert hMw⇤ i
) MH akzeptiert hMiw

hMiw 62 H ) M hält nicht auf Eingabe w


) Mw⇤ hält nicht auf der Eingabe ✏
) M✏ verwirft hMw⇤ i
) MH verwirft hMiw

BuK/WS 2019 VL-05: Unentscheidbarkeit II 15/42


Entscheidbar vs unentscheidbar

BuK/WS 2019 VL-05: Unentscheidbarkeit II 16/42


Unentscheidbar versus entscheidbar (1)
Wir haben gesehen, dass die folgenden Probleme unentscheidbar sind:

Gegeben hMi und w , gilt w 2 L(M)?


Gegeben hMi, gilt " 2 L(M)?

Analoge Argumente zeigen, dass folgende Probleme unentscheidbar sind:

Ü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?

BuK/WS 2019 VL-05: Unentscheidbarkeit II 17/42


Unentscheidbar versus entscheidbar (2)

Andrerseits ist jedes der folgenden Probleme entscheidbar:

Gegeben hMi, gilt L(M) ✓ {0, 1}⇤ ?


Gegeben hMi, wird L(M) von einer TM akzeptiert?
Gegeben hMi, gilt 2222 2 L(M)?
Gegeben hMi, gilt 2222 2
/ L(M)?
Gegeben hMi, hat M eine gerade Anzahl von Zuständen?
Gegeben hMi, besitzt M einen Endzustand?
Gegeben hMi, ist |hMi| eine Primzahl?

Anmerkung: Die TM M ist in Normalform mit ⌃ = {0, 1}

BuK/WS 2019 VL-05: Unentscheidbarkeit II 18/42


Partielle Funktionen

Da TMen im Allgemeinen nicht auf jeder Eingabe halten, berechnen sie


partielle Funktionen. Das können wir wie folgt formalisieren:

Die von einer TM M berechnete Funktion ist von der Form

fM : {0, 1}⇤ ! {0, 1}⇤ [ {?}

Das Zeichen ? (ausgesprochen als “bottom”) steht dabei für


undefiniert und bedeutet, dass die Maschine nicht hält.

Im Fall von Entscheidungsproblemen ist die Funktion von der Form

fM : {0, 1}⇤ ! {0, 1, ?}

Dabei steht 0 für Verwerfen, 1 für Akzeptieren und ? für


Nicht-Halten.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 19/42


Der Satz von Rice

BuK/WS 2019 VL-05: Unentscheidbarkeit II 20/42


Henry Gordon Rice (1920–2003)

Wikipedia: Henry Gordon Rice was an American logician and


mathematician, best known as the author of Rice’s theorem, which he
proved in his doctoral dissertation of 1951 at Syracuse University.

He was also a Professor of Mathematics at the University of New


Hampshire. After 1960 he was employed by Computer Sciences
Corporation in El Segundo.

Mathematics Genealogy Project


Henry G. Rice
Ph.D.: Syracuse University 1951
Dissertation:
Classes of Recursively Enumerable Sets and Their Decision Problems
Advisor: Paul Charles Rosenbloom
No students known

BuK/WS 2019 VL-05: Unentscheidbarkeit II 21/42


Satz von Rice

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.

Dann ist die Sprache

L(S) = {hMi | M berechnet eine Funktion aus S}

nicht entscheidbar.

Mit anderen Worten: Alle nicht-trivialen Aussagen über die von einer TM
berechnete Funktion sind unentscheidbar.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 22/42


Anwendungsbeispiele (1)

Beispiel 1
Es sei S = {fM | fM (✏) 6= ?}.
Dann ist

L(S) = {hMi | M berechnet eine Funktion aus S}


= {hMi | M hält auf Eingabe ✏}
= H✏

Gemäss dem Satz von Rice ist das Epsilin-Halteproblem H✏ also nicht
entscheidbar. (Aber das wussten wir ja schon.)

R
S

BuK/WS 2019 VL-05: Unentscheidbarkeit II 23/42


Anwendungsbeispiele (2)

Beispiel 2
Es sei S = {fM | 8w 2 {0, 1}⇤ : fM (w ) 6= ?}.
Dann ist

L(S) = {hMi | M berechnet eine Funktion aus S}


= {hMi | M hält auf jeder Eingabe}

Diese Sprache ist auch als das totale Halteproblem Htot bekannt.
Gemäss dem Satz von Rice ist die Sprache Htot nicht entscheidbar.

R
S

BuK/WS 2019 VL-05: Unentscheidbarkeit II 24/42


Anwendungsbeispiele (3)

Beispiel 3
Es sei S = {fM | 8w 2 {0, 1}⇤ : fM (w ) = 1}.
Dann ist

L(S) = {hMi | M berechnet eine Funktion aus S}


= {hMi | M hält auf jeder Eingabe mit Ausgabe 1}

Gemäss dem Satz von Rice ist die Sprache L(S) nicht entscheidbar.

S = {1}

BuK/WS 2019 VL-05: Unentscheidbarkeit II 25/42


Beweis des Satzes von Rice

BuK/WS 2019 VL-05: Unentscheidbarkeit II 26/42


Beweis des Satzes von Rice (0)

Hier ist noch einmal der Wortlaut des Satzes:


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.

Dann ist die Sprache

L(S) = {hMi | M berechnet eine Funktion aus S}

nicht entscheidbar.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 27/42


Beweis des Satzes von Rice (1)

Wir benutzen die Unterprogrammtechnik:


Aus einer TM ML(S) , die L(S) entscheidet, konstruieren wir
eine TM MH✏ , die das Epsilon-Halteproblem H✏ entscheidet.

Einige Vereinbarungen:

Es sei u die überall undefinierte


R
Funktion u(w ) ⌘ ?. S
O.B.d.A. u 62 S. f
Es sei f eine Funktion aus S. u
Es sei N eine TM, die f berechnet.

Anmerkung: Falls u 2 S gilt, so betrachten wir einfach das Komplement R \ S


statt S, und zeigen die Unentscheidbarkeit von L(R \ S). Hieraus ergibt sich
auch unmittelbar die Unentscheidbarkeit von L(S).

BuK/WS 2019 VL-05: Unentscheidbarkeit II 28/42


Beweis des Satzes von Rice (2)

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.

(3) Schlussendlich starten wir ML(S) mit der Eingabe hM ⇤ i.


Wir akzeptieren (verwerfen) genau dann, wenn ML(S) akzeptiert
(verwirft).

BuK/WS 2019 VL-05: Unentscheidbarkeit II 29/42


M"
accept

w Ist w eine w = hMi hM ⇤ i


Gödel- ML(S) reject
nummer?

reject (Syntax)

M⇤
x " f (x)
M N

BuK/WS 2019 VL-05: Unentscheidbarkeit II 30/42


Beweis des Satzes von Rice (3)
Korrektheit:
Bei Eingabe von w , wobei w keine Gödelnummer ist, verwirft MH✏ .
Bei Eingabe von w = hMi gilt:
w 2 H✏ ) M hält auf ✏
) M ⇤ berechnet f
f 2S
) hM ⇤ i 2 L(S)
) ML(S) akzeptiert hM ⇤ i
) MH✏ akzeptiert w

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

BuK/WS 2019 VL-05: Unentscheidbarkeit II 31/42


Satz von Rice für Java Programme

Konsequenzen für Java:

Es gibt keine algorithmische Methode (von Hand oder automatisiert;


heute oder morgen oder in ferner Zukunft) um festzustellen, ob ein
gegebenes Java Programm einer nicht-trivialen Spezifikation entspricht.

Analoge Konsequenzen gelten für alle anderen höheren


Programmiersprachen wie C, C++, Pascal, Algol, COBOL, Python,
FORTRAN, LISP, Prolog, Haskell, Scala, Idris, etc.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 32/42


Weitere Anwendungsbeispiele

BuK/WS 2019 VL-05: Unentscheidbarkeit II 33/42


Anwendungsbeispiele (4)

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.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 34/42


Anwendungsbeispiele (5)

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!

Ist H32 entscheidbar?

BuK/WS 2019 VL-05: Unentscheidbarkeit II 35/42


Anwendungsbeispiele (6)

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!

Ist L44 entscheidbar?

BuK/WS 2019 VL-05: Unentscheidbarkeit II 36/42


Anwendungsbeispiele (7)

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 }

BuK/WS 2019 VL-05: Unentscheidbarkeit II 37/42


Noch einmal: Das Collatz Problem

Die Collatz’sche Iterationsgleichung lautet:


(
x/2 wenn x gerade
x
3x + 1 wenn x ungerade

Collatz Problem
Erreicht die Collatz’sche Iteration von jedem natürlichen Startwert x aus
irgendwann einmal die Zahl x = 1?

Das Collatz-Problem ist eine konkrete Instanz des totalen


Halteproblems.
Wir wissen nicht, ob diese Instanz eine Ja- oder eine Nein-Instanz ist.
Der Satz von Rice ist für konkrete Probleminstanzen nutzlos.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 38/42


Abschlusseigenschaften

BuK/WS 2019 VL-05: Unentscheidbarkeit II 39/42


Komplement, Durchschnitt, Vereinigung

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.

Also: Die Menge der entscheidbaren Sprachen ist abgeschlossen unter


Komplement, Durchschnitt und Vereinigung.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 40/42


Beweis: Durchschnitt

Es seien M1 und M2 zwei TMen, die L1 respektive L2 entscheiden.

Eine TM M, die L1 \ L2 entscheidet:


Bei Eingabe w simuliert M zunächst das Verhalten von M1 auf w
und dann das Verhalten von M2 auf w .
Falls M1 und M2 beide das Wort w akzeptieren, so akzeptiert auch
M; andernfalls verwirft M.

Korrektheit:
Falls w 2 L1 \ L2 , so wird w akzeptiert.
Andernfalls wird w verworfen.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 41/42


Beweis: Vereinigung

Es seien M1 und M2 zwei TMen, die L1 respektive L2 entscheiden.

Eine TM M, die L1 [ L2 entscheidet:


Bei Eingabe w simuliert M zunächst das Verhalten von M1 auf w
und dann das Verhalten von M2 auf w .
Falls M1 oder M2 das Wort w akzeptiert, so akzeptiert auch M;
andernfalls verwirft M.

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.

BuK/WS 2019 VL-05: Unentscheidbarkeit II 42/42


VL-06: Rekursive Aufzählbarkeit

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 1/40


Organisatorisches

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

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 2/40


Wiederholung

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 3/40


Wdh.: Bisher betrachtete unentscheidbare Probleme

Die folgenden Probleme sind unentscheidbar:

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

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 4/40


Wdh.: Der Satz von Rice

Satz
Es sei R die Menge der von TMen berechenbaren partiellen Funktionen.
Es sei S eine Teilmenge von R mit ; ( S ( R.

Dann ist die Sprache

L(S) = {hMi | M berechnet eine Funktion aus S}

unentscheidbar.

R
S
f
u

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 5/40


Wdh.: Der Satz von Rice / Beweis

M"
accept

w Ist w eine w = hMi hM ⇤ i


Gödel- ML(S) reject
nummer?

reject (Syntax)

M⇤
x " f (x)
M N

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 6/40


Wdh.: Satz von Rice / Anwendungsbeispiele

Beispiel 2
Es sei S = {fM | 8w 2 {0, 1}⇤ : fM (w ) 6= ?}.
Dann ist

L(S) = {hMi | M berechnet eine Funktion aus S}


= {hMi | M hält auf jeder Eingabe}

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!

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 7/40


Vorlesung VL-06
Rekursive Aufzählbarkeit

Semi-Entscheidbarkeit
Rekursive Aufzählbarkeit
Abschlusseigenschaften
Berechenbarkeitslandschaft

Reduktionen
Das totale Halteproblem

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 8/40


Semi-Entscheidbarkeit

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 9/40


Semi-Entscheidbarkeit (1)

Eine Sprache L wird von einer TM M entschieden, wenn


M auf jeder Eingabe hält, und
M genau die Wörter aus L akzeptiert.
Wenn eine TM existiert, die die Sprache L entscheidet, so wird L als
rekursiv oder entscheidbar bezeichnet.

Eine Sprache L wird von einer TM M erkannt, wenn


M jedes Wort aus L akzeptiert, und
M kein Wort akzeptiert, das nicht in L enthalten ist.
Also: Die von M erkannte Sprache ist genau L(M).

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 10/40


Semi-Entscheidbarkeit (2)

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

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 11/40


Beispiel: Halteproblem

Beispiel
Das Halteproblem H = {hMiw | M hält auf w } ist nicht entscheidbar,
aber semi-entscheidbar.

Beweis: Die folgende TM MH erkennt die Sprache H.

Erhält MH eine syntaktisch inkorrekte Eingabe,


so verwirft MH die Eingabe.

Erhält MH eine Eingabe der Form hMiw ,


so simuliert MH die TM M mit Eingabe w
und akzeptiert, sobald/falls M auf w hält.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 12/40


Rekursive Aufzählbarkeit

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 13/40


Aufzähler (1)

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.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 14/40


Aufzähler (2)

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

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 15/40


Rekursive Aufzählbarkeit

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.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 16/40


Beweis (1): Rekursiv aufzählbar ! semi-entscheidbar

Angenommen, L ist rekursiv aufzählbar und hat einen Aufzähler A.


Wir konstruieren eine TM M, die L erkennt.

Bei Eingabe des Wortes w arbeitet M wie folgt:


M simuliert A mit Hilfe eines Bandes, das die Rolle des Druckers
übernimmt.
Immer wenn ein neues Wort auf das Band gedruckt worden ist,
vergleicht M dieses Wort mit w und akzeptiert bei Übereinstimmung.

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.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 17/40


Beweis (2): Semi-entscheidbar ! rekursiv aufzählbar
Angenommen, L ist semi-entscheidbar und wird von der TM M erkannt.
Wir konstruieren einen Aufzähler A für L.

In der k-ten Runde (mit k = 1, 2, 3, . . .)


simuliert der Aufzähler je k Schritte von M auf jedem der Wörter
w1 , . . . , wk .
Immer wenn die Simulation eines der Worte akzeptiert, druckt der
Aufzähler dieses Wort aus.

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

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 19/40


Abschlusseigenschaften

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 20/40


Durchschnitt und Vereinigung (1)

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.

Die Beweise sind sehr ähnlich zu den entsprechenden Beweisen für


entscheidbare Sprachen.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 21/40


Durchschnitt und Vereinigung (2)

Es seien M1 und M2 zwei TMen, die L1 respektive L2 erkennen.

Eine TM M, die L1 \ L2 erkennt:


Bei Eingabe w simuliert M zunächst das Verhalten von M1 auf w
und dann das Verhalten von M2 auf w .
Falls M1 und M2 beide akzeptieren, so akzeptiert auch M.

Eine TM M, die L1 [ L2 erkennt


Wir nehmen o.B.d.A. an, dass M über zwei Bänder verfügt.
Auf Band 1 wird M1 auf w simuliert.
Auf Band 2 wird M2 auf w simuliert.
Sobald ein Schritt gemacht wird, in dem M1 oder M2 akzeptiert,
akzeptiert auch die TM M.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 22/40


Komplement (1)

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.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 23/40


Komplement (2)

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.

Also: Die Menge der semi-entscheidbaren Sprachen ist abgeschlossen


unter Durchschnitt und Vereinigung, aber nicht unter Komplement.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 24/40


Die Berechenbarkeitslandschaft

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 25/40


Berechenbarkeitslandschaft (1)

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}

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 26/40


Berechenbarkeitslandschaft (2)

Probleme mit
rekursiv
rekursiv
aufzählbare
aufzählbarem
Probleme entscheidbare Komplement
Probleme
H H
H✏ D D H✏

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 27/40


Reduktionen

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 28/40


Reduktionen (1)

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 .

{0, 1}⇤ f {0, 1}⇤

L2
L1

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 29/40


Reduktionen (2)

Eine Reduktion ist ein Algorithmus,


der die Instanzen eines Startproblems L1
als Spezialfälle eines Zielproblems L2 formuliert.

M1 für L1
accept

x Reduktion: f (x)
Übersetze M2 für L2
x in f (x) reject

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 30/40


Reduktionen (3)

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 akzeptiert x , M2 akzeptiert f (x)


, f (x) 2 L2
, x 2 L1

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 31/40


Reduktionen (4)

Noch einmal: Der gerade bewiesene Satz


Falls L1  L2 und falls L2 rekursiv aufzählbar ist,
so ist auch L1 rekursiv aufzählbar.
Falls L1  L2 und falls L1 nicht rekursiv aufzählbar ist,
so ist auch L2 nicht rekursiv aufzählbar.

M1 für L1
accept

x Reduktion: f (x)
Übersetze M2 für L2
x in f (x) reject

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 32/40


Das totale Halteproblem

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 33/40


Das totale Halteproblem

Definition (Totales Halteproblem)


Htot = {hMi | M hält auf jeder Eingabe}

Wir wissen bereits: H✏ ist unentscheidbar, aber rekursiv aufzählbar.


Wir wissen bereits: H ✏ ist nicht rekursiv aufzählbar.
Wir werden zeigen:

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.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 34/40


Behauptung A: H ✏  H tot Beweis (1)

Wir beschreiben eine berechenbare Funktion f ,


die Ja-Instanzen von H ✏ auf Ja-Instanzen von H tot und
Nein-Instanzen von H ✏ auf Nein-Instanzen von H tot abbildet.

Es sei w die Eingabe für H ✏ .


Wenn w keine gültige Gödelnummer ist, so setzen wir f (w ) = w .
Falls w = hMi für eine TM M, so sei f (w ) := hM✏⇤ i die
Gödelnummer der TM M✏⇤ mit folgendem Verhalten:

M✏⇤ ignoriert die Eingabe und simuliert M mit der Eingabe ✏.

Die beschriebene Funktion f ist berechenbar. (Warum?)

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 35/40


Behauptung A: H ✏  H tot Beweis (2)

Für die Korrektheit zeigen wir:


(a) w 2 H ✏ ) f (w ) 2 H tot
(b) w 2
/ H ✏ ) f (w ) 62 H tot

Falls w keine Gödelnummer ist, gilt w 2 H ✏ und f (w ) 2 H tot .


Dieser Unterfall von (a) ist also korrekt erledigt.

Falls w = hMi für eine TM M, so betrachten wir f (w ) = hM✏⇤ i.


Dann gilt:

w 2 H ✏ ) M hält nicht auf der Eingabe ✏.


) M✏⇤ hält auf gar keiner Eingabe.
) hM✏⇤ i 62 Htot
) f (w ) = hM✏⇤ i 2 H tot und (a) ist korrekt.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 36/40


Behauptung A: H ✏  H tot Beweis (3)

Für die Korrektheit zeigen wir:


(a) w 2 H ✏ ) f (w ) 2 H tot
(b) w 2
/ H ✏ ) f (w ) 62 H tot

Falls w = hMi für eine TM M, so betrachten wir f (w ) = hM✏⇤ i.


Dann gilt:

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.

Damit ist Behauptung A bewiesen.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 37/40


Behauptung B: H ✏  Htot Beweis (1)

Wir beschreiben eine berechenbare Funktion f ,


die Ja-Instanzen von H ✏ auf Ja-Instanzen von Htot und
Nein-Instanzen von H ✏ auf Nein-Instanzen von Htot abbildet.

Es sei w die Eingabe für H ✏ . Es sei w 0 irgendein Wort aus Htot .


Wenn w keine gültige Gödelnummer ist, so setzen wir f (w ) = w 0 .
Falls w = hMi für eine TM M, so sei f (w ) := hM 0 i wobei sich die
TM M 0 auf Eingaben x der Länge |x| = ` wie folgt verhält:

M 0 simuliert die ersten ` Schritte von M auf der Eingabe ✏.


Wenn M innerhalb dieser ` Schritte hält, dann geht M 0 in eine
Endlosschleife; andernfalls hält M 0 .

Die beschriebene Funktion f ist berechenbar. (Warum?)

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 38/40


Behauptung B: H ✏  Htot Beweis (2)
Für die Korrektheit zeigen wir:
(a) w 2 H ✏ ) f (w ) 2 Htot
(b) w 2
/ H ✏ ) f (w ) 62 Htot

Falls w keine Gödelnummer ist, gilt w 2 H ✏ und f (w ) = w 0 2 Htot .


Dieser Unterfall von (a) ist also korrekt erledigt.

Falls w = hMi für eine TM M, so betrachten wir f (w ) = hM 0 i.

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)

Für die Korrektheit zeigen wir:


(a) w 2 H ✏ ) f (w ) 2 Htot
(b) w 2
/ H ✏ ) f (w ) 62 Htot

Falls w = hMi für eine TM M, so betrachten wir f (w ) = hM 0 i.


Dann gilt:

w 2 H✏ ) M hält auf der Eingabe ✏.


) 9i : M hält innerhalb von i Schritten auf ✏.
) 9i : M 0 hält auf keiner Eingabe mit Länge i.
0
) M hält nicht auf jeder Eingabe.
) f (w ) = hM 0 i 62 Htot und (b) ist korrekt.

Damit ist Behauptung B bewiesen.

BuK/WS 2019 VL-06: Rekursive Aufzählbarkeit 40/40


VL-07: Das Postsche Correspondenzproblem

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 1/47


Organisatorisches

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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 2/47


Wiederholung

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 3/47


Wdh.: Entscheidbarkeit und Rekursive Aufzählbarkeit

Eine Sprache L ist entscheidbar, falls eine TM M existiert,


die auf jeder Eingabe hält, und
die genau die Wörter aus L akzeptiert.

Eine Sprache L ist semi-entscheidbar, falls eine TM M existiert,


die jedes Wort aus L akzeptiert, und
die kein Wort akzeptiert, das nicht in L enthalten ist.

Eine Sprache L ist rekursiv aufzählbar, falls ein Aufzähler A existiert,


der jedes Wort in L (mindestens einmal) druckt, und
der kein Wort druckt, das nicht in L enthalten ist.
Fakt: L semi-entscheidbar () L rekursiv aufzählbar

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 4/47


Wdh.: Abschlusseigenschaften von Sprachen

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.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 5/47


Wdh.: Berechenbarkeitslandschaft

Probleme
rekursiv
mit rekursiv
aufzählbare
aufzählbarem
Probleme entscheidbare Komplement
Probleme
H H
H✏ D D H✏

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 6/47


Wdh.: Reduktionen (1)

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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 7/47


Wdh.: Reduktionen (2)

Eine Reduktion ist ein Algorithmus,


der die Instanzen eines Startproblems L1
als Spezialfälle eines Zielproblems L2 modelliert.

M1 für L1
accept

x Reduktion: f (x)
Übersetze M2 für L2
x in f (x) reject

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 8/47


Vorlesung VL-07
Das Postsche Correspondenzproblem

Definition des PCP


Definition des MPCP
Unentscheidbarkeit von MPCP und PCP
Leichte und schwierige Varianten

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 9/47


Das Postsche Correspondenzproblem (1)

Das Postsche Correspondenzproblem (PCP) ist ein Puzzle aus


Dominos.
Gegeben ist eine Menge K von Dominosteinen.
Jeder Dominostein ist mit zwei Wörtern über einem Alphabet ⌃
beschriftet, und zwar mit einem Wort in der oberen Hälfte und
einem Wort in der unteren Hälfte.

Die Aufgabe besteht darin, eine correspondierende Folge von


Dominos aus K zu finden, mit der sich oben und unten jeweils das
selbe Wort ergibt.
In der Folge darf jeder Dominostein beliebig oft verwendet werden.
Die Folge muss mindestens einen Dominostein enthalten.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 10/47


Das Postsche Correspondenzproblem (2)

Beispiel A
Für die Dominomenge
⇢     
b a ca dbd abc caeef
K = , , , , ,
ca ab a cef c abce

gibt es die correspondierende Folge h2, 1, 3, 2, 5i mit


    
a b ca a abc
ab ca a ab c

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 11/47


Das Postsche Correspondenzproblem (3)

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

Warum hat dieses PCP keine Lösung?

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 12/47


Das Postsche Correspondenzproblem (4)

Als Übung können Sie versuchen, mit Computer Programmen die


kürzeste Lösung für die folgenden drei PCPs zu finden:
Beispiel C
⇢  
aaba baab a
K1 = , ,
a aa aab

⇢   
aaa baa ab b
K2 = , , ,
aab a abb aa

⇢  
aab a b
K3 = , ,
a ba aab

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 13/47


Das Postsche Correspondenzproblem (5)

Formale Definition (Postsches Correspondenzproblem, PCP)


Eine Instanz des PCP besteht aus einer endlichen Menge
⇢ 
x1 xk
K = ,...,
y1 yk

wobei x1 , . . . , xk und y1 , . . . , yk nichtleere Wörter über einem endlichen


Alphabet ⌃ sind.
Das Problem besteht darin, zu entscheiden, ob es eine (nicht-leere)
correspondierende Folge hi1 , . . . , in i von Indizes in {1, . . . , k} gibt,
sodass

xi1 xi2 . . . xin = yi1 yi2 . . . yin

Die Elemente von K nennen wir Dominosteine oder Dominos.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 14/47


Emil Leon Post (1897–1954)

Wikipedia: Emil Post was a Polish-American mathematician and logician.


He is best known for his work in the field that eventually became known
as computability theory.

In 1936, Post developed, independently


of Alan Turing, a mathematical model of
computation which is sometimes called
Post’s machine or a Post-Turing
machine.
Post’s rewrite technique is now
ubiquitous in programming language
specification and design, and so with
Church’s lambda-calculus is a salient
influence of classical modern logic on
practical computing.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 15/47


Das modifizierte PCP

Definition (Modifiziertes PCP; kurz: MPCP)


Eine Instanz des MPCP besteht aus einer endlichen Menge
⇢ 
x1 xk
K = ,...,
y1 yk

wobei x1 , . . . , xk und y1 , . . . , yk nicht-leere Wörter über einem endlichen


Alphabet ⌃ sind.
Das Problem besteht darin zu entscheiden, ob es eine correspondierende
Folge hi1 , . . . , in i von Indizes mit i1 =1 gibt, sodass gilt:

xi1 xi2 . . . xin = yi1 yi2 . . . yin



x1
(Die Modifikation besteht also nur darin, dass der Stein das vorgegebene
y1
Startdomino ist, mit dem die correspondierende Folge beginnen muss.)

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 16/47


Arbeitsplan

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 17/47


Unser Arbeitsplan

Wir werden die folgenden beiden Aussagen beweisen.


Satz A
MPCP  PCP

Satz B
H  MPCP

Die Transitivität der Reduzierbarkeit (Übung) impliziert H  PCP.

Satz
Das PCP ist unentscheidbar.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 18/47


Berechenbarkeitslandschaft

rekursiv
Probleme
aufzählbare
mit rekursiv
Probleme
aufzählbarem
PCP MPCP entscheidbare Komplement
Probleme
H H
H✏ D D H✏

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 19/47


Übung

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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 20/47


Beweis von Satz A:
MPCP  PCP

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 21/47


Beweis von MPCP  PCP (1)

Wir modellieren eine MPCP Instanz als PCP Instanz:


⇢ 
x1 xk
Wir betrachten MPCP Instanz K = ,...,
y1 yk
Es seien # und $ zwei Symbole, die nicht im MPCP vorkommen
Wir konstruieren xi0 aus xi ,
indem wir hinter jedem Buchstaben ein # einfügen
Wir konstruieren yi0 aus yi ,
indem wir vor jedem Buchstaben ein # einfügen
Ferner setzen wir x00 = #x10 ; y00 = y10 ; xk+1
0 0
= $; und yk+1 = #$.
Damit berechnen wir die folgende PCP Instanz
⇢ 0  0  0  0
x0 x1 x x
f (K ) = , 0 , . . . , k0 , k+1
y00 y1 yk 0
yk+1

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 22/47


Beweis von MPCP  PCP (2)

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 #$

Lösung des MPCP:


   
ab a ab c
a b a abc

Entsprechende Lösung des PCP:


    
#a#b# a# a#b# c# $
#a #b #a #a#b#c #$

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 23/47


Beweis von MPCP  PCP, Korrektheit (1)

Wir zeigen: (1) Wenn K 2 MPCP, dann f (K ) 2 PCP

Es sei (i1 , i2 , . . . , in ) Lösung für MPCP K . Dann gilt i1 = 1 und

xi1 xi2 . . . xin = yi1 yi2 . . . yin = a1 a2 . . . as

für gewisse Buchstaben a1 , . . . , as aus ⌃.


Dann ist (0, i2 , . . . , in , k + 1) eine Lösung für PCP f (K ), denn

x00 xi02 . . . xi0n $ = #a1 #a2 # . . . #as #$ = y00 yi02 . . . yi0n #$

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.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 24/47


Beweis von MPCP  PCP, Korrektheit (2)

Wir zeigen: (2) Wenn f (K ) 2 PCP, dann K 2 MPCP

Es sei (i1 , i2 , . . . , in ) eine Lösung minimaler Länge für f (K ).


Fakt A: i1 = 0, da nur x00 und y00 mit dem selben Zeichen beginnen
0 0
Fakt B: in = k + 1, da nur xk+1 und yk+1 mit selbem Zeichen enden
Fakt C: ij 6= k + 1 für 1  j < n. Andernfalls kürzere Lösung.
Fakt D: ij 6= 0 für 2  j  n. Andernfalls folgen im oberen Wort
zwei # direkt aufeinander, was im unteren Wort unmöglich ist.
Durch das Löschen aller # und $ Symbole wird das PCP
Lösungswort also zum MPCP Lösungswort.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 25/47


Beweis von Satz B:
H  MPCP

(Illustrierendes Beispiel)

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 26/47


Illustrierendes Beispiel (1)

Wir betrachten die TM M = (Q, ⌃, , B, q0 , q, )


mit ⌃ = {0, 1}, = {0, 1, B}, und Q = {q0 , q1 , q2 , q},
und mit der folgenden Überführungsfunktion :

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)

Diese TM M erkennt die Sprache 0⇤ 1⇤ :


Bei Eingabeworten in 0⇤ 1⇤ erreicht die Berechnung den Zustand q,
und die Maschine akzeptiert.
Bei Eingabeworten nicht in 0⇤ 1⇤ bleibt die Berechnung im Zustand
q2 stecken, und der Kopf läuft weiter und weiter nach rechts.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 27/47


Illustrierendes Beispiel (2)

Die Berechnung der TM M auf einem gegebenen Eingabewort wird durch


eine Konfigurationsfolge beschrieben:
Konfigurationsfolge von M auf Eingabe w = 0011

q0 0011 ` 0q0 011 ` 00q0 11 ` 001q1 1 ` 0011q1 B ` 0011q1

Wir werden solche Konfigurationsfolgen nun durch geeignet gewählte


Dominos in einem MPCP beschreiben, kodieren, und simulieren.
Dominosteine / Teil 1
Beim Startdomino besteht das untere Wort aus der
Anfangskonfiguration mit drei zusätzlichen Trennzeichen:

#
##q0 0011#

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 28/47


Illustrierendes Beispiel (3)

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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 29/47


Illustrierendes Beispiel (4)

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.

In der ersten Ergänzungsphase konstruieren wir dadurch im unteren


String die Nachfolge-Konfiguration von M für q0 0011.

In den späteren Ergänzungsphasen konstruieren wir weitere


Nachfolge-Konfigurationen, wobei der obere String dem unteren
String immer um genau eine Konfiguration nachhinkt.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 30/47


Illustrierendes Beispiel (5)

Rekonstruktion der Konfigurationsfolge


Die ersten Dominos in der Lösung des Puzzles sind
      
# # q0 0 0 1 1 #
##q0 0011# # 0q0 0 1 1 #
     
# 0 q0 0 1 1 #
# 0 0q0 1 1 #
     
# 0 0 q0 1 1 #
# 0 0 1q1 1 #
     
# 0 0 1 q1 1 #
# 0 0 1 1q1 #
     
# 0 0 1 1 q1 #
... ...
# 0 0 1 1 q 1#

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 31/47


Illustrierendes Beispiel (6)

Achtung! Achtung! Achtung!


Der letzte Schritt war illegal,
da er einen nicht definierten Dominostein verwendet.

Deshalb ergänzen wir nun die Liste erlaubter Dominos:

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#

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 32/47


Illustrierendes Beispiel (7)

Wie beenden wir die Geschichte nun?


Wie ermöglichen wir es dem oberen String, seinen ewigen Rückstand am
Ende der Rechnung doch noch aufzuholen?

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

Schlussendlich fügen wir noch den Abschlussdomino hinzu:



#q##
#

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 33/47


Illustrierendes Beispiel (8)

Rekonstruktion der Konfigurationsfolge / Fortsetzung

     
# 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 # #

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 34/47


Beweis von Satz B:
H  MPCP

(Die formalen Details)

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 35/47


Zurück zum Beweis von Satz B

Nach dem illustrierenden Beispiel kommen wir zum eigentlichen Beweis


von Satz B und beweisen die Aussage H  MPCP.

Wir beschreiben eine berechenbare Funktion f , die eine syntaktisch


korrekte Instanz hMiw fürs Halteproblem H in eine syntaktisch
korrekte Instanz K := f hMiw fürs MPCP übersetzt
Dabei gilt: M hält auf w () K hat correspondierende Folge
Syntaktisch nicht korrekte Eingaben für H werden auf syntaktisch
nicht korrekte Eingaben fürs MPCP abgebildet
Für die MPCP Instanz verwenden wir das Alphabet [ Q [ {#} mit
# 62 [ Q

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 36/47


Die Reduktion (1)

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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 37/47


Die Reduktion (2)

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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 38/47


Die Reduktion (3)

Dominosteine (Überführungsdominos für implizite Blanks)


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

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 39/47


Die Reduktion (4)

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

Die Reduktion und die Beschreibung der Funktion f sind damit


abgeschlossen.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 40/47


Korrektheitsargument

Das Korrektheitsargument besteht aus drei Teilen:

(1) f ist berechenbar (ist bereits erledigt)

(2) M hält auf w ) K 2 MPCP (Hinrichtung)


(3) K 2 MPCP ) M hält auf w (Rückrichtung)

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 41/47


Korrektheit: Hinrichtung (1)

Wir wollen zeigen: M hält auf w ) K 2 MPCP

Die Berechnung von M auf w entspricht einer Konfigurationsfolge

k0 ` k1 ` · · · ` kt 1 ` kt

wobei k0 die Startkonfiguration im Zustand q0 und kt die


Endkonfiguration im Zustand q ist.

Wir konstruieren eine correspondierende Folge, die mit dem


Startdomino beginnt und die Konfigurationsfolge nachbaut.
Der obere String ist dann ein Präfix des unteren Strings:

## k0 ## k1 ## · · · ## kt 1 #

Der untere String gibt die vollständige Konfigurationsfolge an:

## k0 ## k1 ## · · · ## kt 1 ## kt #

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 42/47


Korrektheit: Hinrichtung (2)

Wir wollen zeigen: M hält auf w ) K 2 MPCP

Der obere String ist dann ein Präfix des unteren Strings:

## k0 ## k1 ## · · · ## kt 1 #

Der untere String gibt die vollständige Konfigurationsfolge an:

## k0 ## k1 ## · · · ## kt 1 ## kt #

Durch Hinzufügen von einer Folge von Löschdominos kann das


Nachhinken des oberen Strings fast ausgeglichen werden.
Danach sind beide Strings identisch bis auf einen Suffix der Form
#q#, der im oberen String fehlt.
Hinzufügen des Abschlussdominos macht beide Strings identisch.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 43/47


Korrektheit: Rückrichtung

Wir wollen zeigen: K 2 MPCP ) M hält auf w

Die Dominosteine im MPCP haben die folgenden Eigenschaften:


Beim Startdomino ist der obere String kürzer als der untere
Bei den Kopier- und Überführungsdominos ist der obere String
immer höchstens so lang wie der untere String
Nur auf Abschluss- und Löschdominos ist der obere String länger als
der untere String
Die correspondierende Folge für K liefert uns eine entsprechende
Konfigurationsfolge von M auf w .
Diese Konfigurationsfolge beginnt mit dem Startdomino
Diese Konfigurationsfolge muss zumindest einen Lösch- oder
Abschlussdomino enthalten (andernfalls wäre der untere String
länger als der obere String)
Deshalb erscheint der Zustand q in dieser Konfigurationsfolge.
BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 44/47
Leichte und schwierige Varianten
des PCPs

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 45/47


Varianten des PCPs (1)

Wie verhalten sich eingeschränkte Varianten des Problems?

Falls nur kurze Wörter erlaubt sind:

Wenn alle Wörter auf den Dominos Länge 1 haben,


so ist das PCP entscheidbar.
Wenn alle Wörter Länge 1 oder 2 haben,
so ist das PCP unentscheidbar.

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 46/47


Varianten des PCPs (2)

Falls nur wenige Dominos erlaubt sind:

Für 1 Domino ist das PCP trivial.

Für 2 Dominos ist das PCP entscheidbar.


[Ehrenfeucht & Rozenberg] (1981)

Für 3 und 4 Dominos ist die Entscheidbarkeit ungeklärt.

Für 5 Dominos ist das PCP unentscheidbar. [Neary] (2015)

Für 7 Dominos ist das PCP unentscheidbar.


[Matiyasevich & Sénizergues] (1996)

Für unbeschränkt viele Dominos ist das PCP unentscheidbar.


[Post] (1947)

BuK/WS 2019 VL-07: Das Postsche Correspondenzproblem 47/47


VL-08: Turing-Mächtigkeit

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-08: Turing-Mächtigkeit 1/49


Organisatorisches

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

BuK/WS 2019 VL-08: Turing-Mächtigkeit 2/49


Wiederholung

BuK/WS 2019 VL-08: Turing-Mächtigkeit 3/49


Wdh.: Das Postsche Correspondenzproblem

Formale Definition (Postsches Correspondenzproblem, PCP)


Eine Instanz des PCP besteht aus einer endlichen Menge
⇢ 
x1 xk
K = ,...,
y1 yk

wobei x1 , . . . , xk und y1 , . . . , yk nichtleere Wörter über einem endlichen


Alphabet ⌃ sind.
Das Problem besteht darin, zu entscheiden, ob es eine (nicht-leere)
correspondierende Folge hi1 , . . . , in i von Indizes in {1, . . . , k} gibt,
sodass

xi1 xi2 . . . xin = yi1 yi2 . . . yin

Die Elemente von K nennen wir Dominosteine oder Dominos.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 4/49


Wdh.: Unser Arbeitsplan

Wir werden die folgenden beiden Aussagen beweisen.


Satz A
MPCP  PCP

Satz B
H  MPCP

Die Transitivität der Reduzierbarkeit (Übung) impliziert H  PCP.

Satz
Das PCP ist unentscheidbar.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 5/49


Vorlesung VL-08
Turing-Mächtigkeit

Entscheidungsprobleme für CFGs


Integration in geschlossener Form
Satz von Richardson
Hilberts zehntes Problem
Satz von Matiyasevich

Turing-Mächtigkeit
Game of Life

BuK/WS 2019 VL-08: Turing-Mächtigkeit 6/49


Entscheidungsprobleme für CFGs

BuK/WS 2019 VL-08: Turing-Mächtigkeit 7/49


Context-freie Grammatiken (1)

Aus der FOSAP Vorlesung:


Definition
Eine context-freie Grammatik (CFG) G ist ein Quadrupel (N, ⌃, P, S),
wobei
N = Menge der Non-Terminal Symbole
⌃ = Terminal Alphabet
P = Menge von Regeln der Form A ! w
wobei A 2 N und w 2 (⌃ [ N)⇤
S = Element von N (Startsymbol)

Also: Bei jeder Regel in P steht auf der linken Seite nur ein einzelnes
Non-Terminal Symbol

BuK/WS 2019 VL-08: Turing-Mächtigkeit 8/49


Context-freie Grammatiken (2)

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.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 9/49


Entscheidungsprobleme für CFGs

Die folgenden Probleme für CFGs sind entscheidbar:

Gegeben CFG hG i und w 2 ⌃⇤ , gilt w 2 L(G )?


Gegeben CFG hG i, ist L(G ) leer?
Gegeben CFG hG i, ist L(G ) endlich?

Die folgenden Probleme für CFGs sind unentscheidbar:

Gegeben CFG hG i, ist G eindeutig?


Gegeben CFG hG i, gilt L(G ) = ⌃⇤ ?
Gegeben CFG hG i, ist L(G ) regulär?
Gegeben CFGs hG1 i und hG2 i, gilt L(G1 ) ✓ L(G2 )?
Gegeben CFGs hG1 i und hG2 i, ist L(G1 ) \ L(G2 ) leer?

BuK/WS 2019 VL-08: Turing-Mächtigkeit 10/49


Leerheit des Durchschnitts

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

PCP lösbar genau dann wenn L(G1 ) \ L(G2 ) nicht leer



G1 : S ! x8 x1 x4 x2 x5 x1 x4 b4 b1 b5 b2 b4 b1 b8

G2 : S ! y8 y1 y4 y2 y5 y1 y4 b4 b1 b5 b2 b4 b1 b8

BuK/WS 2019 VL-08: Turing-Mächtigkeit 11/49


Integration in geschlossener Form

BuK/WS 2019 VL-08: Turing-Mächtigkeit 12/49


Einige indefinite Integrale

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

BuK/WS 2019 VL-08: Turing-Mächtigkeit 13/49


Beispiel: Rationale Funktionen

Rationale Funktionen sind immer geschlossen integrierbar:

Satz (Joseph Liouville, 1838)


Wenn eine Funktion f (x) der Quotient von zwei Polynomen P(x) und
Q(x) ist, so kann f (x) als Summe von Termen der Form

a ax + b
und
(x b)n ((x c)2 + d 2 )n

geschrieben werden.

Da jeder derartige Term geschlossen integrierbar ist,


ist jede rationale Funktion f (x) geschlossen integrierbar.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 14/49


Natürliche Fragen zur geschlossenen Integration

Woran erkenne ich, dass eine Funktion nicht geschlossen integrierbar


ist (sodass ich mir nicht weiter den Kopf darüber zerbrechen muss)?

Woher weiss ich, ob nicht vielleicht irgendein anderer, besserer


Ansatz (eine trickreiche Substitution oder eine geschickte partielle
Integration) zum Ziel führt?

Können Computeralgebrasysteme wie MapleTM und MathematicaTM


jede geschlossen integrierbare Funktion integrieren?

Gibt es irgendwo am WWW eine Liste mit allen Funktionen, die


nicht geschlossen integrierbar sind?

BuK/WS 2019 VL-08: Turing-Mächtigkeit 15/49


Der Satz von Richardson

Eine Funktion heisst elementar, wenn sie durch Kombination von


Addition, Subtraktion, Multiplikation, Division,
Potenzieren, Wurzel ziehen, Logarithmieren, Betragsfunktion
und den trigonometrischen Funktionen konstruiert werden kann.

Im Jahr 1968 bewies der Britische Mathematiker Daniel Richardson das


folgende Unentscheidbarkeitsresultat:

Satz von Richardson (1968)


Es ist unentscheidbar, ob eine gegebene elementare Funktion eine
elementare Stammfunktion besitzt.
Der Beweis reduziert (im Wesentlichen) das Halteproblem für Turing
Maschinen auf das Integrationsproblem.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 16/49


Hilberts zehntes Problem

BuK/WS 2019 VL-08: Turing-Mächtigkeit 17/49


David Hilbert (1862–1943)

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.

Hilbert begründete die moderne


formalistische Au↵assung von den
Grundlagen der Mathematik und
veranlasste eine kritische Analyse der
mathematischen Begri↵sdefinitionen und
des mathematischen Beweises.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 18/49


Hilberts zehntes Problem

Auf dem Internationalen Mathematikercongress in Paris im Jahr 1900


präsentierte David Hilbert eine Liste mit 23 mathematischen Problemen.

Hilberts zehntes Problem (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.

Mit den ganzen rationalen Zahlen sind einfach unsere ganzen


Zahlen in Z gemeint.
Diophantische Gleichungen sind Gleichungen mit Polynomen in
einer Variablen (univariat) oder in mehreren Variablen (multivariat).

BuK/WS 2019 VL-08: Turing-Mächtigkeit 19/49


Diophantische Gleichungen

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

ein Term über den Variablen x, y , z mit dem Koeffizienten 6.


Ein Polynom ist eine endliche Summe von Termen, z.B.

6x 3 yz 2 + 3xy 2 x3 10

Eine diophantische Gleichung setzt ein Polynom gleich Null.


Die Lösungen der Gleichung entsprechen also den Nullstellen des
Polynoms. Obiges Polynom führt zur diophantischen Gleichung
6x 3 yz 2 + 3xy 2 x 3 = 10 mit der Nullstelle

(x, y , z) = (5, 3, 0)

BuK/WS 2019 VL-08: Turing-Mächtigkeit 20/49


Beispiele (1)

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.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 22/49


Beispiele (3)

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)

BuK/WS 2019 VL-08: Turing-Mächtigkeit 23/49


Ein weiteres Beispiel (1)

Aus der Schulzeit


Wie findet man ganzzahlige Lösungen von x 4 x3 4x 2 + 2x 24 = 0?
Man überprüft die Teiler des konstanten Glieds 24 und entdeckt x = 3
als einzige ganzzahlige Lösung.

Rechtfertigung: Die Gleichung kann umgeformt werden zu

x · (x 3 x2 4x + 2) = 24

BuK/WS 2019 VL-08: Turing-Mächtigkeit 24/49


Ein weiteres Beispiel (2)

Beobachtung
Es ist entscheidbar, ob eine univariate Diophantische Gleichung

an x n + an 1x
n 1
+ · · · + a2 x 2 + a1 x + a0 = 0

eine ganzzahlige Lösung x besitzt.


Jede ganzzahlige Lösung x ist ein Teiler von a0 .
Man muss also nur die ganzen Zahlen x mit |x|  |a0 | durchprobieren.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 25/49


Hilberts zehntes Problem und Dioph

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}

BuK/WS 2019 VL-08: Turing-Mächtigkeit 26/49


Rekursive Aufzählbarkeit von Dioph

Für ein Polynom p 2 Z[x1 , . . . , x` ] in ` Variablen


entspricht der Wertebereich der abzählbar unendlichen Menge Z` .

Der folgende Algorithmus erkennt daher Dioph:


Zähle die `-Tupel aus Z` in kanonischer Reihenfolge auf
und werte p für jedes dieser Tupel aus.
Akzeptiere, sobald eine dieser Auswertungen den Wert 0 ergibt.

Wir folgern:
Satz
Die Sprache Dioph ist rekursiv aufzählbar.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 27/49


Entscheidbarkeit von Dioph (1)

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?

BuK/WS 2019 VL-08: Turing-Mächtigkeit 28/49


Entscheidbarkeit von Dioph (2)

Erst siebzig Jahre, nachdem Hilbert sein Problem präsentiert hatte,


beantwortete der russische Mathematiker Yuri Matiyasevich diese Fragen:

Satz von Matiyasevich (1970)


Das Problem, ob ein ganzzahliges Polynom eine ganzzahlige Nullstelle
besitzt, ist unentscheidbar.

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.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 29/49


Entscheidbarkeit von Dioph (3)

Tatsächlich folgt aus dieser Beweiskette ein stärkeres Resultat:

Satz (Matiyasevich, Robinson, Davis & Putnam)


Für jede Teilmenge X ✓ Z der ganzen Zahlen sind die beiden folgenden
Aussagen äquivalent:
X ist rekursiv aufzählbar
Es existiert ein (k + 1)-variates Polynom p(x, y1 , . . . , yk ) mit
ganzzahligen Koeffizienten, sodass
X = {x 2 Z | 9y1 , . . . , yk 2 Z mit p(x, y1 , . . . , yk ) = 0}

Ganzzahlige Polynome sind also genauso berechnungsstark und


genauso mächtig wie Turing Maschinen.
Der Beweis ist technisch und lang (viel, viel, viel zu lang, um in
einer Grundvorlesung präsentiert zu werden).

BuK/WS 2019 VL-08: Turing-Mächtigkeit 30/49


Yuri Matiyasevich & Julia Robinson
Wikipedia: Yuri Vladimirovich Matiyasevich
(born 1947, in Leningrad) is a Russian
mathematician and computer scientist. In
1969–1970, he pursued his Ph.D. studies at
the Leningrad Department of the Steklov
Institute of Mathematics under the supervision
of Sergey Maslov. He is best known for his
negative solution of Hilbert’s tenth problem.

Wikipedia: Julia Hall Bowman Robinson


(1919–1985) was an American mathematician
noted for her contributions to the fields of
computability theory and computational
complexity theory, most notably in decision
problems. Her work on Hilbert’s 10th problem
played a crucial role in its ultimate resolution.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 31/49


Beispiel: Ein Primzahl-generierendes Polynom
Man erhält genau die Menge der Primzahlen, wenn man die 26 Variablen
im folgenden Polynom durch 26 beliebige nicht-negative ganze Zahlen
ersetzt und alle resultierenden nicht-negativen Werte ausdruckt:

(k + 2){1 ([wz + h + j q]2


+ [(gk + 2g + k + 1)(h + j) + h z]2
+ [16(k + 1)3 (k + 2)(n + 1)2 + 1 f 2 ]2
+ [2n + p + q + z e]2 + [e 3 (e + 2)(a + 1)2 + 1 o 2 ]2
+ [(a2 1)y 2 + 1 x 2 ]2 + [16r 2 y 4 (a2 1) + 1 u 2 ]2
+ [((a + u 2 (u 2 a))2 1)(n + 4dy )2 + 1 (x + cu)2 ]2
+ [(a2 1)`2 + 1 m 2 ]2
+ [ai + k + 1 ` i ]2 + [n + ` + v y ]2
2
+ [p + `(a n 1) + b(2an + 2a n 2n 2) m]2
+ [q + y (a p 1) + s(2ap + 2a p2 2p 2) x]2
+ [z + p`(a p) + t(2ap p2 1) pm]2 )}

BuK/WS 2019 VL-08: Turing-Mächtigkeit 32/49


Berechenbarkeitslandschaft

rekursiv
Probleme
aufzählbare
mit rekursiv
Probleme
aufzählbarem
PCP entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Dioph

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-08: Turing-Mächtigkeit 33/49


Turing-Mächtigkeit

BuK/WS 2019 VL-08: Turing-Mächtigkeit 34/49


Turing-mächtige Rechnermodelle

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.

Da die Registermaschine (RAM) die Turingmaschine simulieren kann,


ist sie Turing-mächtig
Auch eine viel schwächere Variante der RAM mit stark
eingeschränktem Befehlssatz ist Turing-mächtig

BuK/WS 2019 VL-08: Turing-Mächtigkeit 35/49


Registermaschinen (RAM)
..
.

c(4)
Programm
c(3)
c(2)

b c(0) c(1)

Befehlszähler Akkumulator Speicher


(unbeschränkt)

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

BuK/WS 2019 VL-08: Turing-Mächtigkeit 36/49


Eingeschränkte Registermaschine (Mini-RAM)

c(1000)

Programm ..
.

c(2)

b c(0) c(1)

Befehlszähler Akkumulator Speicher


(beschränkt)

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

BuK/WS 2019 VL-08: Turing-Mächtigkeit 37/49


Mächtigkeit der Mini-RAM

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

Zeigen Sie, dass die Mini-RAM Turing-mächtig ist.

Hinweis: Diese Übung wird viel einfacher, wenn man erst einmal den Sto↵
von VL-09 gesehen hat.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 38/49


Turing-Mächtigkeit: Weitere Beispiele

Reines HTML (ohne JavaScript; ohne Browser) ist nicht


Turing-mächtig
Tabellenkalkulationen (ohne Schleifen) sind nicht Turing-mächtig

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.

PostScript, Tex, Latex sind Turing-mächtig


Sogar PowerPoint ist Turing-mächtig (wegen Animated Features)

BuK/WS 2019 VL-08: Turing-Mächtigkeit 39/49


Conway’s Game of Life

BuK/WS 2019 VL-08: Turing-Mächtigkeit 40/49


Turing-Mächtigkeit: Game of Life

John Horton Conway’s “Game of Life” ist Turing-mächtig

BuK/WS 2019 VL-08: Turing-Mächtigkeit 41/49


John Horton Conway FRS (1937)

Wikipedia: John Horton Conway is an English mathematician active in


the theory of finite groups, knot theory, number theory, combinatorial
game theory, and coding theory. He has also contributed to many
branches of recreational mathematics, and invented the Game of Life.

In 2004, Conway and Simon Kochen proved


the free will theorem, a startling version of
the no-hidden-variables principle of
quantum mechanics. It states that (given
certain conditions) if an experimenter can
freely decide what quantities to measure in
a particular experiment, then elementary
particles must be free to choose their spins
to make the measurements consistent with
physical law.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 42/49


Game of Life: Regeln

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.

Ausgehend von einer Anfangskonfiguration entwickelt sich die


Zellenkonfiguration Schritt für Schritt folgendermassen:
Eine tote Zelle mit genau drei lebenden Nachbarn ist im nächsten
Schritt lebendig.
Lebende Zellen mit weniger als zwei oder mehr als drei lebenden
Nachbarn sterben ab.
Alle anderen Zellen bleiben unverändert.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 43/49


Game of Life: Fragen

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 ?

BuK/WS 2019 VL-08: Turing-Mächtigkeit 47/49


Game of Life: Antworten

Satz
Conway’s Game of Life ist Turing-mächtig.

Die folgenden Probleme sind unentscheidbar:


Stirbt das System mit Anfangskonfiguration K jemals aus?
Stabilisiert sich das System mit Anfangskonfiguration K jemals?
Verhält sich das System mit Anfangskonfiguration K irgendwann
einmal periodisch?
Erreicht das System mit Anfangskonfiguration K jemals die
Zielkonfiguration K 0 ?

Ausserdem gibt es Anfangskonfigurationen, die unbeschränkt wachsen.

BuK/WS 2019 VL-08: Turing-Mächtigkeit 48/49


VL-09: LOOP und WHILE Programme I

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 1/52


Organisatorisches

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

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 2/52


Wiederholung

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 3/52


Wdh.: Der Satz von Richardson

Eine Funktion heisst elementar, wenn sie durch Kombination von


Addition, Subtraktion, Multiplikation, Division,
Potenzieren, Wurzel ziehen, Logarithmieren, Betragsfunktion
und den trigonometrischen Funktionen konstruiert werden kann.

Im Jahr 1968 bewies der Britische Mathematiker Daniel Richardson das


folgende Unentscheidbarkeitsresultat:

Satz von Richardson (1968)


Es ist unentscheidbar, ob eine gegebene elementare Funktion eine
elementare Stammfunktion besitzt.
Der Beweis reduziert (im Wesentlichen) das Halteproblem für Turing
Maschinen auf das Integrationsproblem.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 4/52


Wdh.: Hilberts zehntes Problem

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.

Dioph = { hpi | p ist ein Polynom mit ganzzahligen Koeffizienten


und mit (mindestens) einer ganzzahligen Nullstelle}

Satz von Matiyasevich (1970)


Es ist unentscheidbar, ob ein (multivariates) ganzzahliges Polynom eine
ganzzahlige Nullstelle besitzt.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 5/52


Wdh.: Berechenbarkeitslandschaft

rekursiv
Probleme
aufzählbare
mit rekursiv
Probleme
aufzählbarem
PCP entscheidbare Komplement
Probleme
H H
H✏ D D H✏
Dioph

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 6/52


Wdh.: Turing-mächtige Rechnermodelle

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.

Da die Registermaschine (RAM) die Turingmaschine simulieren kann,


ist sie Turing-mächtig
Auch die Mini-RAM (eine schwächere Variante der RAM mit stark
eingeschränktem Befehlssatz) ist Turing-mächtig

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 7/52


Wdh.: Turing-Mächtigkeit

Reines HTML (ohne JavaScript; ohne Browser) ist nicht


Turing-mächtig
Tabellenkalkulationen (ohne Schleifen) sind nicht Turing-mächtig

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.

PostScript, Tex, Latex sind Turing-mächtig


Sogar PowerPoint ist Turing-mächtig (Animated Features)

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 8/52


Vorlesung VL-09
LOOP und WHILE Programme I

Die Programmiersprache LOOP


Die Programmiersprache WHILE

WHILE versus LOOP


WHILE ist Turing-mächtig

Die Ackermann Funktion

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 9/52


Die Programmiersprache LOOP

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 10/52


Programmiersprache LOOP

Wir betrachten eine einfache Programmiersprache namens LOOP,


deren Programme aus den folgenden syntaktischen Komponenten
aufgebaut sind:

Variablen: x0 x1 x2 x3 . . .
Konstanten: 0 und 1
Symbole: := + ;
Schlüsselwörter: LOOP DO ENDLOOP

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 11/52


LOOP / Syntax (1)

Die Syntax von LOOP ist induktiv definiert.

Induktive Definition / Induktionsanfang:

Zuweisungen
Für alle Variablen xi und xj und für jede Konstante c 2 {0, 1}
ist die Zuweisung

xi := xj + c

ein LOOP Programm.


Anmerkung: Auch das leere Programm ist ein LOOP Programm.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 12/52


LOOP / Syntax (2)

Induktive Definition / Induktionsschritt:

Hintereinanderausführung
Falls P1 und P2 LOOP Programme sind, so ist auch

P1 ; P 2

ein LOOP Programm.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 13/52


LOOP / Syntax (3)

Induktive Definition / Induktionsschritt:

LOOP-Konstrukt
Falls P ein LOOP Programm ist, so ist auch

LOOP xi DO P ENDLOOP

ein LOOP Programm.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 14/52


LOOP / Semantik (1)

Die Eingabe ist in den Variablen x1 , . . . , xm enthalten.


Alle anderen Variablen werden mit 0 initialisiert.
Das Resultat eines LOOP Programms ist die Zahl, die sich am Ende
der Abbarbeitung in der Variablen x0 ergibt.

LOOP Programme der Form xi := xj + c


sind Zuweisungen des Wertes xj + c an die Variable xi .

In einem LOOP Programm P1 ; P2


wird zunächst P1 und danach P2 ausgeführt.

Das Programm LOOP xi DO P ENDLOOP hat folgende Bedeutung:


P wird xi -mal hintereinander ausgeführt.
(Nur der Wert von xi zu Beginn der Schleife ist relevant. Ändert sich der Wert von xi
im Inneren von P, so hat dies keinen Einfluss auf die Anzahl der Wiederholungen.)

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 15/52


LOOP / Semantik (2)

Ein LOOP Programm P mit k Variablen


berechnet eine k-stellige Funktion der Form [P] : Nk ! Nk .

Ist P die Zuweisung xi := xj + c,


so ist [P](r0 , . . . , rk 1 ) = (r0 , . . . , ri 1 , rj + c, ri+1 , . . . , rk 1 ).

Ist P = P1 ; P2 eine Hintereinanderausführung,


so ist [P](r0 , . . . , rk 1 ) = [P2 ]([P1 ](r0 , . . . , rk 1 )).

Ist P = LOOP xi DO Q ENDLOOP ein LOOP-Konstrukt,


so gilt [P](r0 , . . . , rk 1 ) = [Q]ri (r0 , . . . , rk 1 ).

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 16/52


LOOP: Beispiele und Macros

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 17/52


LOOP Programme / Beispiele (1)

Das folgende Programm simuliert die Zuweisung xj := xi .

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;

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 18/52


LOOP Programme / Beispiele (2)

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

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 19/52


LOOP Programme / Beispiele (3)

Ü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

Die Division ohne Rest x0 := x1 DIV x2

Die Modulo-Operation x0 := x1 MOD x2

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 20/52


LOOP Programme / Beispiele (4)

Es seien P1 und P2 LOOP Programme, in denen die drei


Variablen x1 , x2 und x3 nicht vorkommen.
Beispiel E
x2 := 1; x3 := 0;
LOOP x1 DO x2 := 0; x3 := 1 ENDLOOP;
LOOP x2 DO P1 ENDLOOP;
LOOP x3 DO P2 ENDLOOP
Dieses Programm entspricht dem Konstrukt:
IF x1 = 0 THEN P1 ELSE P2 ENDIF

Übung
Skizzieren Sie ein LOOP Programm,
das “IF x1 = c THEN P1 ELSE P2 ENDIF” simuliert.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 21/52


Die Programmiersprache WHILE

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 22/52


Programmiersprache WHILE

Die Programme der Programmiersprache WHILE sind aus den folgenden


syntaktischen Komponenten aufgebaut:

Variablen: x0 x1 x2 x3 . . .
Konstanten: 0 und 1
Symbole: := + ; 6=
Schlüsselwörter: LOOP DO ENDLOOP WHILE ENDWHILE

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 23/52


WHILE / Syntax

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

ein WHILE Programm.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 24/52


WHILE / Semantik (1)

Analog zu LOOP Programmen:


Die Eingabe ist in den Variablen x1 , . . . , xm enthalten.
Alle anderen Variablen werden mit 0 initialisiert.
Das Resultat eines WHILE Programms ist die Zahl, die sich am
Ende der Abbarbeitung in der Variablen x0 ergibt.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 25/52


WHILE / Semantik (2)

Das Programm WHILE xi 6= 0 DO P ENDWHILE hat folgende


Bedeutung:
P wird solange ausgeführt, bis xi den Wert 0 erreicht.

Ein WHILE Programm P mit k Variablen


berechnet eine k-stellige Funktion der Form [P] : Nk ! Nk .

Ist P = WHILE xi 6= 0 DO Q ENDWHILE ein WHILE-Konstrukt,


so ist [P](r0 , . . . , rk 1 ) = [Q]` (r0 , . . . , rk 1 ) für die kleinste Zahl `,
für die die i -te Komponente von [Q]` (r0 , . . . , rk 1 ) gleich 0 ist.

Falls solch ein ` nicht existiert, so ist [P](r0 , . . . , rk 1) undefiniert.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 26/52


WHILE versus LOOP

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 27/52


WHILE versus LOOP (1)

Jede LOOP-berechenbare Funktion f : Nk ! N ist auch


WHILE-berechenbar.

Bemerkung
Die LOOP-Schleife

LOOP xi DO P ENDLOOP

kann auch durch die folgende WHILE-Schleife simuliert werden:

y := xi
WHILE y 6= 0 DO y := y 1; P ENDWHILE

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 28/52


WHILE versus LOOP (2a)

Es gibt WHILE Programme, die nicht terminieren:


Beispiel
x1 := 1;
WHILE x1 6= 0 DO x1 := x1 + 1 ENDWHILE

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 29/52


WHILE versus LOOP (2b)

LOOP Programme terminieren immer:


Satz
Jedes LOOP Programm hält auf jeder möglichen Eingabe nach endlich
vielen Schritten an.

Beweis: Durch Induktion über den Aufbau des Programms.


Zuweisungen
Hintereinanderausführung P = P1 ; P2
LOOP-Konstrukt P = LOOP xi DO Q ENDLOOP

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 30/52


WHILE versus LOOP (3)

Wir werden zeigen:

Satz (wird heute bewiesen)


Die Programmiersprache WHILE ist Turing-mächtig.
In anderen Worten: Jede berechenbare Funktion kann von einem WHILE
Programm berechnet werden.

Satz (wird in der nächsten Vorlesung bewiesen)


Die Programmiersprache LOOP ist nicht Turing-mächtig.
In anderen Worten: Es existiert eine berechenbare totale Funktion, die
von keinem LOOP Programm berechnet werden kann.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 31/52


Mächtigkeit von WHILE

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 32/52


Mächtigkeit von WHILE

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.

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 33/52


Simulation von TM durch WHILE

Wir betrachten eine TM M.


Zustandsmenge Q = {q0 , . . . , qt }
Der Anfangszustand ist q1 , und der Endzustand ist q0
TM im Zustand qi () WHILE Variable Zustand = i

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.

Die Werte in allen WHILE Variablen werden im Folgenden als


Dezimalzahlen interpretiert

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 34/52


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)

Entsprechende Konfiguration: 1122 q3 212111

Die vier entsprechenden Variablen im WHILE Programm:


Band-vor-Kopf 1122 Variable BandLinks
Kopf 2 Variable UntermKopf
fpoK-ba-dnaB 11121 Variable BandRechts
Zustand 3 Variable Zustand

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 35/52


Simulation von TM durch WHILE

Jeder Rechenschritt von M wird durch einige WHILE-Befehle simuliert.

Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus


(A) Update von Zustand
(B) Update von Symbol unterm Kopf
(C) Bewegung des Kopfes L,R,N

Beginn der Rechenschritt Simulation


Aktueller Zustand steht in der Variablen Zustand
Aktuelles Symbol unterm Kopf steht in der Variablen UntermKopf

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 36/52


Simulation von TM durch WHILE (A)

Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus


(A) Update von Zustand
(B) Update von Symbol unterm Kopf
(C) Bewegung des Kopfes L,R,N

Der Zustand wird auf den neuen Zustand qi gesetzt,


indem man das folgende Programmstück ausführt:

Zustand := i ;

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 37/52


Simulation von TM durch WHILE (B)

Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus


(A) Update von Zustand
(B) Update von Symbol unterm Kopf
(C) Bewegung des Kopfes L,R,N

Das Symbol unterm Kopf wird auf neues Symbol 2 {0, 1, 2} gesetzt,
indem man das folgende Programmstück ausführt:

UntermKopf := ;

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 38/52


Simulation von TM durch WHILE (C/links)

Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus


(A) Update von Zustand
(B) Update von Symbol unterm Kopf
(C) Bewegung des Kopfes L,R,N

Der Kopf wird einen Schritt nach links (L) bewegt,


indem man das folgende Programmstück ausführt:

BandRechts := 10 ⇥ BandRechts + UntermKopf;


UntermKopf := BandLinks MOD 10;
BandLinks := BandLinks DIV 10;

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 39/52


Illustration: Kopfbewegung nach links

Alte Situation vor Bewegung

··· B 1 1 1 2 1 2 2 1 1 B B B ···

BandLinks=1112 UntermKopf=1 BandRechts=1122

BandRechts := 10 ⇥ BandRechts + UntermKopf = 11220+1


UntermKopf := BandLinks MOD 10 = 2
BandLinks := BandLinks DIV 10 = 111

Neue Situation nach Bewegung

··· B 1 1 1 2 1 2 2 1 1 B B B ···

BandLinks=111 UntermKopf=2 BandRechts=11221

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 40/52


Simulation von TM durch WHILE (C/rechts)

Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus


(A) Update von Zustand
(B) Update von Symbol unterm Kopf
(C) Bewegung des Kopfes L,R,N

Der Kopf wird einen Schritt nach rechts (R) bewegt,


indem man das folgende Programmstück ausführt:

BandLinks := 10⇥BandLinks + UntermKopf;


UntermKopf := BandRechts MOD 10;
BandRechts := BandRechts DIV 10;

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 41/52


Simulation von TM durch WHILE (C/nichts)

Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus


(A) Update von Zustand
(B) Update von Symbol unterm Kopf
(C) Bewegung des Kopfes L,R,N

Der Kopf wird nicht bewegt (N),


indem man gar nichts macht und alle Variablen unverändert lässt:

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 42/52


Grobstruktur der Simulation (1)

Schlussendlich die Grobstruktur der Simulation:


Initialisierung
Schleifenstruktur

Initialisierung
Zustand := 1;
BandLinks := 0;
UntermKopf := Erstes Symbol im Eingabewort (als Dezimalzi↵er);
BandRechts := Restliches Eingabewort (dezimal & gespiegelt);

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 43/52


Grobstruktur der Simulation (2)

Die äussere Schleife


WHILE Zustand 6= 0 DO
IF Zustand=1 AND UntermKopf=0 THEN Schritt ENDIF;
IF Zustand=1 AND UntermKopf=1 THEN Schritt ENDIF;
IF Zustand=1 AND UntermKopf=2 THEN Schritt ENDIF;
IF Zustand=2 AND UntermKopf=0 THEN Schritt ENDIF;
IF Zustand=2 AND UntermKopf=1 THEN Schritt ENDIF;
IF Zustand=2 AND UntermKopf=2 THEN Schritt ENDIF;
IF Zustand=3 AND UntermKopf=0 THEN Schritt ENDIF;
.. .. .. ..
. . . .
.. .. .. ..
. . . .
IF Zustand=t AND UntermKopf=0 THEN Schritt ENDIF;
IF Zustand=t AND UntermKopf=1 THEN Schritt ENDIF;
IF Zustand=t AND UntermKopf=2 THEN Schritt ENDIF;
ENDWHILE

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 44/52


Die Ackermann Funktion

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 45/52


Ackermann Funktion: Definition

Definition
Die Ackermann Funktion A : N2 ! N ist folgendermassen definiert:

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 46/52


Ackermann Funktion: Beispiele (1)

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

Ein paar Beispiele für m = 1:


A(1, 0) = A(0, 1) = 2
A(1, 1) = A(0, A(1, 0)) = A(1, 0) + 1 = 3
A(1, 2) = A(0, A(1, 1)) = A(1, 1) + 1 = 4
A(1, 3) = A(0, A(1, 2)) = A(1, 2) + 1 = 5

Beobachtung
A(1, n) = n + 2

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 47/52


Ackermann Funktion: Beispiele (2)

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

Ein paar Beispiele für m = 2:


A(2, 0) = A(1, 1) = 3
A(2, 1) = A(1, A(2, 0)) = A(2, 0) + 2 = 5
A(2, 2) = A(1, A(2, 1)) = A(2, 1) + 2 = 7
A(2, 3) = A(1, A(2, 2)) = A(2, 2) + 2 = 9

Beobachtung
A(2, n) = 2n + 3

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 48/52


Ackermann Funktion: Beispiele (3)

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

Und ein paar Beispiele für m = 3:


A(3, 0) = A(2, 1) = 5
A(3, 1) = A(2, A(3, 0)) = 2 · A(3, 0) + 3 = 13
A(3, 2) = A(2, A(3, 1)) = 2 · A(3, 1) + 3 = 29
A(3, 3) = A(2, A(3, 2)) = 2 · A(3, 2) + 3 = 61

Beobachtung
A(3, n) = 2n+3 3

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 49/52


Ackermann Funktion: Zusammenfassung der Beispiele

Wenn man den ersten Parameter fixiert:

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

Bereits der Wert A(4, 2) = 265536 3


ist grösser als die Anzahl aller Atome im Weltraum.

“Wovon man nicht sprechen kann, darüber muss man schweigen.”

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 50/52


Exkurs: UpArrow-Notation (1)
Addition ist iterierte Nachfolgerbildung:
S(S(. . . (S(a) . . .) = a + b
| {z }
b mal

Multiplikation ist iterierte Addition:


a + ··· + a = a ⇥ b
| {z }
b mal

Potenzierung ist iterierte Multiplikation:


· · ⇥ a} = ab =: a " b
a| ⇥ ·{z
b mal

Der Potenzturm ist iterierte Potenzierung:


.a
..
a
a|{z} =: a "" b
b mal

Wiederholte Potenzturmbildung gibt a "" a "" . . . "" a =: a """ b


| {z }
b mal
BuK/WS 2019 VL-09: LOOP und WHILE Programme I 51/52
Exkurs: UpArrow-Notation (2)

Definition (UpArrow-Notation von Donald Knuth)


8
>
> 1 wenn b = 0
>
>
<a · b wenn m = 0
a "m b :=
>
> a b
wenn m = 1
>
>
: m 1 m
a" (a " (b 1)) sonst

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

BuK/WS 2019 VL-09: LOOP und WHILE Programme I 52/52


VL-10: LOOP und WHILE Programme II

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 1/51


Organisatorisches

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 2/51


Wiederholung

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 3/51


Wdh.: Programmiersprachen LOOP und WHILE

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 4/51


Wdh. LOOP / Semantik

Ein LOOP Programm P mit k Variablen


berechnet eine k-stellige Funktion der Form [P] : Nk ! Nk .

Ist P die Zuweisung xi := xj + c,


so ist [P](r0 , . . . , rk 1 ) = (r0 , . . . , ri 1 , rj + c, ri+1 , . . . , rk 1 ).

Ist P = P1 ; P2 eine Hintereinanderausführung,


so ist [P](r0 , . . . , rk 1 ) = [P2 ]([P1 ](r0 , . . . , rk 1 )).

Ist P = LOOP xi DO Q ENDLOOP ein LOOP-Konstrukt,


so gilt [P](r0 , . . . , rk 1 ) = [Q]ri (r0 , . . . , rk 1 ).

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 5/51


Wdh.: WHILE / Semantik

Ein WHILE Programm P mit k Variablen


berechnet eine k-stellige Funktion der Form [P] : Nk ! Nk .

Ist P = WHILE xi 6= 0 DO Q ENDWHILE ein WHILE-Konstrukt,


so ist [P](r0 , . . . , rk 1 ) = [Q]` (r0 , . . . , rk 1 ) für die kleinste Zahl `,
für die die i -te Komponente von [Q]` (r0 , . . . , rk 1 ) gleich 0 ist.

Falls solch ein ` nicht existiert, so ist [P](r0 , . . . , rk 1) undefiniert.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 6/51


Wdh.: WHILE versus LOOP

Jede LOOP-berechenbare Funktion f : Nk ! N ist auch


WHILE-berechenbar.

Es gibt WHILE Programme, die nicht terminieren.


LOOP Programme terminieren immer.

Satz
Die Programmiersprache WHILE ist Turing-mächtig.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 7/51


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

Die vier entsprechenden Variablen im WHILE Programm:


Band-vor-Kopf 1122 Variable BandLinks
Kopf 2 Variable UntermKopf
fpoK-ba-dnaB 11121 Variable BandRechts
Zustand 3 Variable Zustand

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 8/51


Vorlesung VL-10
LOOP und WHILE Programme II

Die Ackermann Funktion


Eigenschaften der Ackermann Funktion
Ackermann Funktion und LOOP Programme
Primitive Rekursion

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 9/51


Mächtigkeit von LOOP

Vermutung von David Hilbert (1926)


Die Menge der LOOP-berechenbaren Funktionen Nk ! N
stimmt mit der Menge der berechenbaren totalen Funktionen überein.
(Als Teil von Hilberts Programm, mit “finiten” Methoden die
Widerspruchsfreiheit der Axiomensysteme der Mathematik nachzuweisen.)

Satz (Ackermann, 1926/1928)


Es existieren berechenbare totale Funktionen Nk ! N, die nicht
LOOP-berechenbar sind.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 10/51


Wilhelm Ackermann (1896–1962)

Wikipedia: Wilhelm Friedrich Ackermann war ein deutscher


Mathematiker. Schüler von David Hilbert. Promotion 1924 in Göttingen.

1926 entdeckte er die nach ihm benannte


Ackermann Funktion, die in der Bere-
chenbarkeitstheorie eine wichtige Rolle
spielt. Ackermann war Gymnasiallehrer an
verschiedenen Schulen in Münster,
Burgsteinfurt und Lüdenscheid; er hielt auch
Vorlesungen an der Universität Münster.

D. Hilbert und W. Ackermann:


“Grundzüge der theoretischen Logik”
Springer Verlag, 1928

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 11/51


Die Ackermann Funktion

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 12/51


Ackermann Funktion: Definition

Definition
Die Ackermann Funktion A : N2 ! N ist folgendermassen definiert:

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 13/51


Ackermann Funktion: Einige Beispiele

Wenn man den ersten Parameter fixiert:

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

Bereits der Wert A(4, 2) = 265536 3


ist grösser als die Anzahl aller Atome im Weltraum.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 14/51


Exkurs: UpArrow-Notation (1)
Addition ist iterierte Nachfolgerbildung:
S(S(. . . (S(a) . . .) = a + b
| {z }
b mal

Multiplikation ist iterierte Addition:


a + ··· + a = a · b
| {z }
b mal

Potenzierung ist iterierte Multiplikation:


· · ⇥ a} = ab =: a " b
a| ⇥ ·{z
b mal

Der Potenzturm ist iterierte Potenzierung:


.a
..
a
a|{z} =: a "" b
b mal

Wiederholte Potenzturmbildung gibt a "" a "" . . . "" a =: a """ b


| {z }
b mal
BuK/WS 2019 VL-10: LOOP und WHILE Programme II 15/51
Exkurs: UpArrow-Notation (2)

Definition (UpArrow-Notation von Donald Knuth)


8
>
> 1 wenn b = 0
>
>
<a · b wenn m = 0
a "m b :=
>a
>
b
wenn m = 1
>
>
: m 1 m
a" (a " (b 1)) sonst

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 16/51


Don Knuth (1938)

Wikipedia: Donald Ervin Knuth is an American computer scientist,


mathematician, and professor emeritus at Stanford University. ACM
Turing Award 1974.

Knuth is the author of the multi-volume


work “The Art of Computer
Programming”; he popularized the
asymptotic notation (Big-Oh) in
algorithmics; he created the TeX
computer typesetting system and the
METAFONT font definition language.

Knuth-Morris-Pratt algorithm
Knuth-Bendix completion algorithm

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 17/51


Berechenbarkeit
der Ackermann Funktion

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 18/51


Die Ackermann Funktion ist berechenbar

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 19/51


Induktion über lexikographisch sortierte Paare (m, n)

0
0 n

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 20/51


Monotonie-Verhalten
der Ackermann Funktion

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 21/51


Monotonie-Verhalten

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)

Einfache Folgerung aus (M.1) und (M.2)


Für m m0 und n n0 gilt immer:

A(m, n) A(m0 , n0 )

Wenn (m, n) 6= (m0 , n0 ) gilt sogar strikte Ungleichheit.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 22/51


Monotonie-Beweis (M.1)

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

Wir wollen nun Ungleichung (M.1) zeigen: A(m, n + 1) > A(m, n)

Die Ackermann’sche Rekursionsgleichung liefert:

A(m, n + 1) = A(m 1, A(m, n))


A(m, n) = A(m 1, A(m, n 1))

Induktion liefert zuerst x := A(m, n) > A(m, n 1) =: y


und danach A(m 1, x) > A(m 1, y ).

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 23/51


Monotonie-Beweis (M.2)

Ein analoges induktives Argument beweist die Ungleichung (M.2).

Übung
Beweisen Sie die Ungleichung (M.2) mit vollständiger Induktion über die
lexikographisch sortierten Paare (m, n).

A(m + 1, n) > A(m, n) für alle m, n 0.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 24/51


Monotonie-Beweis (M.3)

(M.3) A(m + 1, n 1) A(m, n)

Induktionsanfang: Es gilt A(1, n 1) = n + 1 = A(0, n) für alle n 1.


Es gilt A(m + 1, 0) = A(m, 1) für alle m 0.
Induktionsannahme: Wir nehmen an, dass für (m0 , n0 ) mit (m0 < m)
oder (m0 = m) ^ (n0 < n) immer A(m0 + 1, n0 1) A(m0 , n0 ) gilt.

A(m + 1, n 1) = A(m, A(m + 1, n 2)) (Def)


A(m, A(m, n 1)) (Ind+Mono)
A(m 1, A(m, n 1) + 1) (Ind)
A(m 1, A(m, n 1)) (Mono)
= A(m, n) (Def)

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 25/51


Das Wachstumslemma

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 26/51


Wachstumslemma: Vorbereitungen (1)

Wir werden in diesem Kapitel ausschliesslich LOOP Programme


betrachten, die die folgende technische Annahme erfüllen:

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 27/51


Wachstumslemma: Vorbereitungen (2)

Wir betrachten ein fixes LOOP Programm P mit k Variablen.


Wir erinnern uns (aus VL-09):
Das Programm P berechnet die k-stellige Funktion [P] : Nk ! Nk .
Das LOOP Programm P übersetzt also einen Eingabevektor
~a = (a1 , . . . , ak ) 2 Nk in einen Ausgabevektor (b1 , . . . , bk ).

Definition
Für die Anfangswerte ~a = (a1 , . . . , ak ) 2 Nk der Variablen definieren wir

fP (~a) := b1 + b2 + · · · + bk

als die Summe aller Ergebniswerte in [P](~a) = (b1 , . . . , bk ).

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 28/51


Wachstumslemma: Vorbereitungen (3)

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 29/51


Wachstumslemma: Zentrale Aussage

Wir werden nun zeigen,


dass für jedes LOOP Programm P und für alle n 2 N
der Wert FP (n) echt kleiner ist als der Wert A(m, n),
falls der Parameter m nur gross genug gewählt wird.

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 30/51


Beweis: Induktion über Aufbau des Programms

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 31/51


Beweis: Induktionsanfang

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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 32/51


Beweis: Schritt für Hintereinanderausführung

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

FP (n)  FP2 (FP1 (n)) (Def)


< A(q, A(q, n)) (Ind+Mono)
 A(q, A(q + 1, n 1)) (Mono+M.3)
= A(q + 1, n) (Def)

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 33/51


Beweis: Schritt fürs LOOP-Konstrukt (1)

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

FP (n) < A(q, FQ (. . . FQ (FQ (n ↵)) . . .)) + ↵

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 34/51


Beweis: Schritt fürs LOOP-Konstrukt (2)

Und weiter geht’s:


Wiederholte Anwendung der Induktionsannahme FQ (`) < A(q, `)
liefert uns die ↵-zeilige Ungleichungskette

FP (n) < A(q, FQ (, FQ (. . . FQ (FQ (n ↵)) . . .)) + ↵


< A(q, A(q, FQ (. . . FQ (FQ (n ↵)) . . .)) + ↵
.. ..
. .
< A(q, A(q, A(q, . . . , A(q, n ↵)) . . .)) + ↵

Daraus folgt FP (n)  A(q, A(q, A(q, . . . , A(q, n ↵)) . . .))

(Begründung: Zwischen der linken Seite L und der rechten Seite R in


dieser Ungleichungskette liegen ↵ 1 weitere ganze Zahlen. Daher folgt
L  R ↵.)

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 35/51


Beweis: Schritt fürs LOOP-Konstrukt (3)

Und zum Schluss:


Wir haben: FP (n)  A(q, A(q, A(q, . . . , A(q, n ↵)) . . .))

Im innersten Teil der rechten Seite wenden wir zunächst (M.3) in der
Form A(q, n ↵)  A(q + 1, n ↵ 1) an

FP (n)  A(q, A(q, A(q, . . . A(q, A(q + 1, n ↵ 1))) . . .))

Dann wenden wir (↵ 1)-mal die Definition der Ackermann


Funktion in der Form A(q, A(q + 1, x)) = A(q + 1, x + 1) an und
arbeiten uns dabei Schritt für Schritt von innen nach aussen vor.
Dies führt schlussendlich zur gewünschten Ungleichung

FP (n)  A(q + 1, n 2) < A(q + 1, n)

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 36/51


Die Mächtigkeit von LOOP

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 37/51


Die Mächtigkeit von LOOP (1)

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.

Da die Funktion FP das Wachstum des Programms P beschränkt,


gilt per Definition für alle n 2 N: B(n)  FP (n)
Weiters liefert uns das Wachstumslemma eine fixe Zahl mP ,
sodass für alle n 2 N gilt: FP (n) < A(mP , n)

Wenn wir in den beiden roten Ungleichungen n := mP setzen,


so erhalten wir B(mP )  FP (mP ) < A(mP , mP ) = B(mP ).
Widerspruch! Q.E.D.!

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 38/51


Die Mächtigkeit von LOOP (2)

Wir erinnern uns: Die Ackermann Funktion ist Turing-berechenbar.


Satz
Die Ackermann Funktion ist WHILE-berechenbar.

Wir fassen zusammen:


Folgerung
Die Menge der LOOP-berechenbaren Funktionen
bildet eine echte Teilmenge der berechenbaren Funktionen.
Anders gesagt: Die Programmiersprache LOOP ist nicht Turing-mächtig

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 39/51


Landschaft um LOOP, WHILE, TM, RAM

TM = RAM = WHILE = berechenbar

LOOP

a n
+ ⇥ b ab k

A(m, n)

Ackermann Funktion

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 40/51


Primitiv rekursive Funktionen

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 41/51


Primitiv rekursive Funktionen

Die primitiv rekursiven Funktionen bilden eine Unterfamilie der


Funktionen Nk ! N mit k 1.

Sie sind induktiv definiert, und werden durch zwei Operationen


aus den sogenannten Basisfunktionen zusammengebaut.

Thoralf Skolem (1923):


“Begründung der elementaren Arithmetik durch die rekurrierende Denkweise ohne
Anwendung scheinbarer Veränderlichen mit unendlichem Ausdehnungsbereich”,
Skrifter utgit av Videnskapsselskapet i Kristiania 6, pp 1–38.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 42/51


Basisfunktionen

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

Anmerkung: Die Projektion auf die p-te von k Komponenten wird


manchmal mit ⇡k,p bezeichnet.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 43/51


Operation: Komposition

Definition (Operation)
Jede Komposition von primitiv rekursiven Funktionen ist primitiv
rekursiv.

Wenn die Funktion g : Nk ! N primitiv rekursiv ist und


wenn die k Funktionen h1 , . . . , hk : N` ! N primitiv rekursiv sind,
so ist auch die folgende Funktion f : N` ! N primitiv rekursiv:

f (x1 , . . . , x` ) = g(h1 (x1 , . . . , x` ), . . . , hk (x1 , . . . , x` ))

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.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 44/51


Operation: Primitive Rekursion

Definition (Operation)
Jede Funktion, die durch primitive Rekursion aus primitiv rekursiven
Funktionen entsteht ist primitiv rekursiv.

Wenn die beiden Funktionen g : Nk ! N und h : Nk+2 ! N primitiv


rekursiv sind, so ist auch die wie folgt definierte Funktion f : Nk+1 ! N
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

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 45/51


Intuition zu primitiv rekursiven Funktionen

Beobachtung: Jede primitiv rekursive Funktion ist berechenbar und total.

Klar für Basisfunktionen. Und die Komposition von berechenbaren


und totalen Funktionen ist ebenfalls berechenbar und total.
Angenommen, die beiden Funktionen g : Nk ! N und h : Nk+2 ! N
sind berechenbar. Dann berechnen wir der Reihe nach:

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 )

Damit haben wir dann auch f (n, x1 , . . . , xk ) = yn berechnet.

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 46/51


Primitiv rekursive Beispiele

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 47/51


Beispiel: Addition

Die Additionsfunktion add : N2 ! N mit add(x, y ) = x + y ist primitiv


rekursiv.

add(0, x) = x
add(n + 1, x) = succ(add(n, x))

Genauer: Die Additionsfunktion add : N2 ! N entsteht durch primitive


Rekursion aus der Projektion g(x) = ⇡1,1 (x) = x und aus der primitiv
rekursiven Funktion h(a, b, c) = succ(⇡3,2 (a, b, c)):

add(0, x) = g(x)
add(n + 1, x) = h(n, add(n, x), x)

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 48/51


Beispiel: Multiplikation

Die Multiplikationsfunktion mult : N2 ! N mit mult(x, y ) = x · y ist


primitiv rekursiv.

mult(0, x) = 0
mult(n + 1, x) = add(mult(n, x), x)

Genauer: Die Multiplikationsfunktion mult : N2 ! N entsteht durch


primitive Rekursion aus der konstanten Abbildung g(x) = 0 und aus der
primitiv rekursiven Funktion h(a, b, c) = add(⇡3,2 (a, b, c), ⇡3,3 (a, b, c)):

mult(0, x) = g(x)
mult(n + 1, x) = h(n, mult(n, x), x)

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 49/51


Beispiel: Vorgänger

Die Vorgängerfunktion pred : N ! N mit pred(x) = max{x 1, 0} ist


primitiv rekursiv.

pred(0) = 0
pred(n + 1) = n

Genauer: Die Vorgängerfunktion pred : N ! N entsteht durch primitive


Rekursion aus der konstanten Abbildung g() = 0 und aus der Projektion
h(a, b) = ⇡2,1 (a, b) = a:

pred(0) = g()
pred(n + 1) = h(n, pred(n))

BuK/WS 2019 VL-10: LOOP und WHILE Programme II 50/51


Beispiel: Subtraktion

Die (modifizierte) Subtraktionsfunktion sub : N2 ! N mit


sub(x, y ) = x . y = max{x y , 0} ist primitiv rekursiv.

Da die zugrunde liegende primitive Rekursion über die erste Komponente


läuft, definieren wir zunächst die Hilfsfunktion subAux(y , x) = x . y .
subAux(0, x) = x
subAux(n + 1, x) = pred(subAux(n, x))

Genauer: Die Hilfsfunktion subAux : N2 ! N entsteht aus


der Projektion g(x) = ⇡1,1 (x) = x und aus der primitiv rekursiven
Funktion h(a, b, c) = pred(⇡3,2 (a, b, c)):

subAux(0, x) = g(x)
subAux(n + 1, x) = h(n, subAux(n, x), x)

Danach definieren wir sub(x, y ) = subAux(⇡2,2 (x, y ), ⇡2,1 (x, y )).


BuK/WS 2019 VL-10: LOOP und WHILE Programme II 51/51
VL-11: Primitive Rekursion

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-11: Primitive Rekursion 1/48


Organisatorisches

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

BuK/WS 2019 VL-11: Primitive Rekursion 2/48


Wiederholung

BuK/WS 2019 VL-11: Primitive Rekursion 3/48


Wdh.: LOOP versus WHILE

Die Ackermann Funktion A : N2 ! N ist folgendermassen definiert:

A(0, n) = n+1 für n 0


A(m + 1, 0) = A(m, 1) für m 0
A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0

Satz
Die Ackermann Funktion ist nicht LOOP-berechenbar.

Da die Ackermann Funktion (durch eine TM) berechenbar ist, folgt:

Satz
Die Menge der LOOP-berechenbaren Funktionen
bildet eine echte Teilmenge der berechenbaren Funktionen.

BuK/WS 2019 VL-11: Primitive Rekursion 4/48


Wdh.: Die Berechenbarkeitslandschaft

Rekursiv
aufzählbare Probleme
Probleme rekursive mit rekursiv
Probleme aufzählbarem
PCP A(·, ·) Komplement

LOOP
H berechenbar H
H✏ D D H✏
Dioph

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-11: Primitive Rekursion 5/48


Douglas Hofstadter: “Gödel, Escher, Bach” (1979)

This book looks at the surprising


points of contact between the music
of Bach, the artwork of Escher, and
the mathematics of Gödel. It also
looks at the prospects for computers
and artificial intelligence for mimicking
human thought.

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.

BuK/WS 2019 VL-11: Primitive Rekursion 6/48


Vorlesung VL-11
Primitiv rekursive Funktionen

Primitiv rekursive Funktionen


Äquivalenz zu LOOP
µ-rekursive Funktionen
Äquivalenz zu WHILE

BuK/WS 2019 VL-11: Primitive Rekursion 7/48


Primitiv rekursive Funktionen

Die primitiv rekursiven Funktionen bilden eine Unterfamilie der


Funktionen Nk ! N mit k 1.

Sie sind induktiv definiert, und werden durch zwei Operationen


aus den sogenannten Basisfunktionen zusammengebaut.

BuK/WS 2019 VL-11: Primitive Rekursion 8/48


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

Anmerkung: Die Projektion Nk ! N auf die p-te von k Komponenten


wird manchmal mit ⇡k,p bezeichnet.

BuK/WS 2019 VL-11: Primitive Rekursion 9/48


Die beiden Operationen

Jede Komposition von primitiv rekursiven Funktionen ist primitiv


rekursiv.
Wenn die Funktion g : Nk ! N primitiv rekursiv ist und
wenn die k Funktionen h1 , . . . , hk : N` ! N primitiv rekursiv sind,
so ist auch die folgende Funktion f : N` ! N primitiv rekursiv:

f (x1 , . . . , x` ) = g(h1 (x1 , . . . , x` ), . . . , hk (x1 , . . . , x` ))

Jede Funktion, die durch primitive Rekursion aus primitiv rekursiven


Funktionen entsteht ist primitiv rekursiv.
Wenn die beiden Funktionen g : Nk ! N und h : Nk+2 ! N
primitiv rekursiv sind, so ist auch f : Nk+1 ! N primitiv rekursiv:

f (0, x1 , . . . , xk ) = g(x1 , . . . , xk )
f (n + 1, x1 , . . . , xk ) = h(n, f (n, x1 , . . . , xk ), x1 , . . . , xk )

BuK/WS 2019 VL-11: Primitive Rekursion 10/48


Intuition zu primitiv rekursiven Funktionen

Beobachtung: Jede primitiv rekursive Funktion ist berechenbar und total.

Klar für Basisfunktionen. Und die Komposition von berechenbaren


und totalen Funktionen ist ebenfalls berechenbar und total.
Angenommen, die beiden Funktionen g : Nk ! N und h : Nk+2 ! N
sind berechenbar. Dann berechnen wir der Reihe nach:

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 )

Damit haben wir dann auch f (n, x1 , . . . , xk ) = yn berechnet.

BuK/WS 2019 VL-11: Primitive Rekursion 11/48


Primitiv rekursive Beispiele

BuK/WS 2019 VL-11: Primitive Rekursion 12/48


Beispiel: Addition

Die Additionsfunktion add : N2 ! N mit add(x, y ) = x + y ist primitiv


rekursiv.

add(0, x) = x
add(n + 1, x) = succ(add(n, x))

Genauer: Die Additionsfunktion add : N2 ! N entsteht durch primitive


Rekursion aus der Projektion g(x) = ⇡1,1 (x) = x und aus der primitiv
rekursiven Funktion h(a, b, c) = succ(⇡3,2 (a, b, c)):

add(0, x) = g(x)
add(n + 1, x) = h(n, add(n, x), x)

BuK/WS 2019 VL-11: Primitive Rekursion 13/48


Beispiel: Multiplikation

Die Multiplikationsfunktion mult : N2 ! N mit mult(x, y ) = x · y ist


primitiv rekursiv.

mult(0, x) = 0
mult(n + 1, x) = add(mult(n, x), x)

Genauer: Die Multiplikationsfunktion mult : N2 ! N entsteht durch


primitive Rekursion aus der konstanten Abbildung g(x) = 0 und aus der
primitiv rekursiven Funktion h(a, b, c) = add(⇡3,2 (a, b, c), ⇡3,3 (a, b, c)):

mult(0, x) = g(x)
mult(n + 1, x) = h(n, mult(n, x), x)

BuK/WS 2019 VL-11: Primitive Rekursion 14/48


Beispiel: Vorgänger

Die Vorgängerfunktion pred : N ! N mit pred(x) = max{x 1, 0} ist


primitiv rekursiv.

pred(0) = 0
pred(n + 1) = n

Genauer: Die Vorgängerfunktion pred : N ! N entsteht durch primitive


Rekursion aus der konstanten Abbildung g() = 0 und aus der Projektion
h(a, b) = ⇡2,1 (a, b) = a:

pred(0) = g()
pred(n + 1) = h(n, pred(n))

BuK/WS 2019 VL-11: Primitive Rekursion 15/48


Beispiel: Subtraktion

Die (modifizierte) Subtraktionsfunktion sub : N2 ! N mit


sub(x, y ) = x . y = max{x y , 0} ist primitiv rekursiv.

Da die zugrunde liegende primitive Rekursion über die erste Komponente


läuft, definieren wir zunächst die Hilfsfunktion subAux(y , x) = x . y .
subAux(0, x) = x
subAux(n + 1, x) = pred(subAux(n, x))

Genauer: Die Hilfsfunktion subAux : N2 ! N entsteht aus


der Projektion g(x) = ⇡1,1 (x) = x und aus der primitiv rekursiven
Funktion h(a, b, c) = pred(⇡3,2 (a, b, c)):

subAux(0, x) = g(x)
subAux(n + 1, x) = h(n, subAux(n, x), x)

Danach definieren wir sub(x, y ) = subAux(⇡2,2 (x, y ), ⇡2,1 (x, y )).


BuK/WS 2019 VL-11: Primitive Rekursion 16/48
Weitere primitiv rekursive Beispiele (1)

Notation: Für ein logisches Prädikat verwenden wir


die Schreibweise [Prädikat], wobei
[Prädikat] = 0 falls Prädikat den Wahrheitswert falsch hat, und
[Prädikat] = 1 falls Prädikat den Wahrheitswert wahr hat.

Ü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

Kleiner: f : N2 ! {0, 1} mit f (x, y ) = [x < y ]


Grösser: f : N2 ! {0, 1} mit f (x, y ) = [x > y ]
Kleiner-gleich: f : N2 ! {0, 1} mit f (x, y ) = [x  y ]
Grösser-gleich: f : N2 ! {0, 1} mit f (x, y ) = [x y]

BuK/WS 2019 VL-11: Primitive Rekursion 17/48


Weitere primitiv rekursive Beispiele (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]

BuK/WS 2019 VL-11: Primitive Rekursion 18/48


Ein wichtiges Werkzeug:
Primitiv rekursive Bijektionen

BuK/WS 2019 VL-11: Primitive Rekursion 19/48


Eine Bijektion (1)

Die Funktion binom2 : N ! N mit


✓ ◆
x 1
binom2 (x) = = x(x 1) = 0 + 1 + 2 + · · · + (x 1)
2 2

ist primitiv rekursiv.

binom2 (0) = 0
binom2 (n + 1) = add(n, binom2 (n))

Die Funktion : N2 ! N mit


✓ ◆
x +y +1
(x, y ) = +x
2

ist primitiv rekursiv.

BuK/WS 2019 VL-11: Primitive Rekursion 20/48


Eine Bijektion (2)

Beobachtung (und Hausaufgabe am 3. Übungsblatt)


x+y +1
Die Funktion (x, y ) = 2 + x ist eine Bijektion zwischen N2 und 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 ···

BuK/WS 2019 VL-11: Primitive Rekursion 21/48


Die Umkehrfunktion der Bijektion (1)

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

BuK/WS 2019 VL-11: Primitive Rekursion 22/48


Die Umkehrfunktion der Bijektion (2)
Die Funktion f : N3 ! {0, 1} mit f (x, y , n) = [ (x, y ) = n] ist
primitiv rekursiv.

Die Funktion g : N3 ! {0, 1} mit


g(x, k, n) = [9y  k : (x, y ) = n] ist primitiv rekursiv:

g(x, 0, n) = f (x, 0, n)
g(x, k, n) = [f (x, k, n) = 1 _ g(x, k 1, n) = 1]

Wir definieren max ; = 0. Die Funktion h : N3 ! N mit


h(m, k, n) = max{x  m : 9y  k : (x, y ) = n} ist primitiv
rekursiv:

h(0, k, n) = 0
h(m, k, n) = max {h(m 1, k, n), m · g(m, k, n)}

BuK/WS 2019 VL-11: Primitive Rekursion 23/48


Die Umkehrfunktion der Bijektion (3)

Daraus folgt sofort:

Die Funktion : N ! N mit (n) = h(n, n, n) ist primitiv rekursiv

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:

Die Umkehrfunktionen und der Bijektion sind primitiv rekursiv.


Für alle n 2 N gilt ( (n), (n)) = n.

BuK/WS 2019 VL-11: Primitive Rekursion 24/48


Weitere Bijektionen

Aus der Bijektion : N2 ! N kann man weitere Bijektionen zwischen


Nk+1 und N bauen: Die primitiv rekursive Funktion

(n0 , (n1 , (n2 , . . . , (nk 1 , nk ) . . .))

weist jedem (k + 1)-Tupel (n0 , n1 , . . . , nk ) eine entsprechende Zahl in N


zu, die wir im Folgenden mit hn0 , n1 , . . . , nk i bezeichnen.

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:

n = hu0 (n), u1 (n), . . . , uk (n)i

BuK/WS 2019 VL-11: Primitive Rekursion 25/48


Äquivalenz zu LOOP Programmen

BuK/WS 2019 VL-11: Primitive Rekursion 26/48


Äquivalenz zu LOOP Programmen

Satz
Die Menge der primitiv rekursiven Funktionen fällt
mit der Menge der LOOP-berechenbaren Funktionen zusammen.

BuK/WS 2019 VL-11: Primitive Rekursion 27/48


Hinrichtung:
LOOP ! Primitiv rekursiv

BuK/WS 2019 VL-11: Primitive Rekursion 28/48


LOOP ! Primitiv rekursiv: Hauptidee

Wir betrachten eine LOOP-berechenbare Funktion f ,


die von einem LOOP Programm P berechnet wird.
Die im Programm P verwendeten Variablen seien x0 , x1 , . . . , xk .

Wir beweisen mit Induktion über den Aufbau von P, dass eine primitiv
rekursive Funktion gP : N ! N existiert, die die Arbeitsweise von P
simuliert:

Wenn das Programm P die Anfangswerte a0 , a1 , . . . , ak der Variablen in


die Endwerte b0 , b1 , . . . , bk übersetzt, dann gilt entsprechend

gP (ha0 , a1 , . . . , ak i) = hb0 , b1 , . . . , bk i

BuK/WS 2019 VL-11: Primitive Rekursion 29/48


LOOP ! Primitiv rekursiv (1)

Zuweisungen
Falls P aus der Zuweisung xi := xj + c besteht, so ist

gP (x) = hu0 (x), . . . , ui 1 (x), uj (x) + c, ui+1 (x), . . . , uk (x)i

BuK/WS 2019 VL-11: Primitive Rekursion 30/48


LOOP ! Primitiv rekursiv (2)

Hintereinanderausführung
Falls P die Form Q; R hat, so gilt

gP (x) = gR ( gQ (x) )

BuK/WS 2019 VL-11: Primitive Rekursion 31/48


LOOP ! Primitiv rekursiv (3)

LOOP-Konstrukt
Angenommen, P ist ein LOOP Programm von der Form

LOOP xi DO Q ENDLOOP

Wir definieren zunächst die (primitiv rekursive) Hilfsfunktion


h : N2 ! N mit

h(0, x) = x
h(n + 1, x) = gQ (h(n, x)).

Der Aufruf h(n, x) wendet das Programm Q genau n-mal


hintereinander auf die Eingabe x an.
Da der Wert xi am Anfang der Schleife durch ui (x) gegeben ist, gilt
gP (x) = h(ui (x), x)

BuK/WS 2019 VL-11: Primitive Rekursion 32/48


LOOP ! Primitiv rekursiv: Schluss
Schlussendlich geben wir Anfang und Ende der Simulation an:
Start des LOOP Programms
Die Eingabe ist in den Variablen x1 , . . . , xm enthalten.
Alle anderen Variablen werden mit 0 initialisiert.
Wenn die m Eingabevariablen die Werte x10 , . . . , xm
0
haben,
so ist der Eingabewert für die primitiv rekursive Simulation

x = h0, x10 , x20 , . . . , xm


0
, 0, 0, . . . , 0 i
| {z }
k m

Terminieren des LOOP Programms


Das Resultat ist die Zahl, die sich am Ende in der Variablen x0 ergibt.
Das Resultat des LOOP Programs P ergibt sich als
u0 gP (h0, x10 , x20 , . . . , xm
0
, 0, 0, . . . , 0i) .

BuK/WS 2019 VL-11: Primitive Rekursion 33/48


Rückrichtung:
Primitiv rekursiv ! LOOP

BuK/WS 2019 VL-11: Primitive Rekursion 34/48


Primitiv rekursiv ! LOOP: Hauptidee

Wir betrachten eine primitiv rekursive Funktion f : Nk ! N


Wir beweisen mit Induktion über die Definition von f , dass ein
LOOP Programm Pf existiert, das die Auswertung von f simuliert
Das Programm Pf nimmt die Variablenwerte x1 , . . . , xk als Eingabe
und terminiert mit x0 = f (x1 , . . . , xk ).

BuK/WS 2019 VL-11: Primitive Rekursion 35/48


Primitiv rekursiv ! LOOP (1)

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.

BuK/WS 2019 VL-11: Primitive Rekursion 36/48


Primitiv rekursiv ! LOOP (2)

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.

Anmerkung: Zwischenergebnisse kann sich die Simulation für später


merken, indem sie sie in separaten Variablen bis zur Wiederverwendung
zwischenspeichert.

BuK/WS 2019 VL-11: Primitive Rekursion 37/48


Primitiv rekursiv ! LOOP (3)

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 )

Das simulierende LOOP Programm Pf sieht dann wie folgt aus:

x0 := g(x1 , . . . , xk );
s := 0;
LOOP n DO
x0 := h(s, x0 , x1 , . . . , xk );
s := s + 1;
ENDLOOP;

BuK/WS 2019 VL-11: Primitive Rekursion 38/48


µ-rekursive Funktionen

BuK/WS 2019 VL-11: Primitive Rekursion 39/48


Der Kleene’sche µ-Operator

Wir definieren min ; = ?.


Definition
Es sei g : Nk+1 ! N [ {?} eine (partielle oder totale) Funktion mit k + 1
Argumenten (k 1). Durch Anwendung des µ-Operators auf g entsteht
eine neue Funktion f : Nk ! N [ {?} mit k Argumenten, wobei

f (x1 , . . . , xk ) = min{n | g(n, x1 , . . . , xk ) = 0 und


für alle m < n gilt g(m, x1 , . . . , xk ) 6= ?}.

Die entstehende Funktion f wird mit µg : Nk ! N [ {?} bezeichnet.

Anmerkung: Der µ–Operator arbeitet immer mit der ersten Komponente.

BuK/WS 2019 VL-11: Primitive Rekursion 40/48


Beispiele

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

BuK/WS 2019 VL-11: Primitive Rekursion 41/48


µ-rekursive Funktionen

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.

Anmerkung: Wenn eines der Argumente von f (x1 , . . . , xk ) den Wert ?


annimmt, so führt das zum Funktionswert f (x1 , . . . , xk ) = ?.

BuK/WS 2019 VL-11: Primitive Rekursion 42/48


Stephen Kleene (1909–1994)
Wikipedia: Stephen Cole Kleene was a student of Alonzo Church.
Kleene is best known as the founder of recursion theory, which
subsequently helped to provide the foundations of theoretical computer
science.

Kleene’s work grounds the study of


computable functions. A number of
mathematical concepts are named after
him: Kleene hierarchy, Kleene algebra,
the Kleene star (Kleene closure),
Kleene’s recursion theorem, and the
Kleene fixpoint theorem. He also
invented regular expressions, and made
significant contributions to the
foundations of mathematical
intuitionism.

BuK/WS 2019 VL-11: Primitive Rekursion 43/48


Äquivalenz zu WHILE Programmen

BuK/WS 2019 VL-11: Primitive Rekursion 44/48


Äquivalenz zu WHILE Programmen

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

BuK/WS 2019 VL-11: Primitive Rekursion 45/48


Hinrichtung: WHILE ! µ-rekursiv

Simulation eines WHILE Programms P


WHILE xi 6= 0 DO Q ENDWHILE

Wir recyclen die Hilfsfunktion h : N2 ! N, die durch den Aufruf


h(n, x) das Programm Q genau n-mal auf x anwendet:

h(0, x) = x
h(n + 1, x) = gQ (h(n, x)).

Die Funktion ui h : N2 ! N gibt den Wert ui h(n, x) = ui (h(n, x)) der


Variablen xi nach n-maliger Anwendung von Q an.
Die Funktion µ(ui h) : N ! N gibt die kleinste Zahl n = µ(ui h)(x)
an, für die xi nach n-maliger Anwendung von Q den Wert 0 hat.
Daher wird das WHILE Programm P simuliert durch
gP (x) = h( µ(ui h)(x), x)

BuK/WS 2019 VL-11: Primitive Rekursion 46/48


Rückrichtung: µ-rekursiv ! WHILE

Simulation des µ-Operators


Angenommen, die Funktion f : Nk ! N entsteht durch den µ-Operator
aus der µ-rekursiven Funktion g : Nk+1 ! N, also f = µg.

Das simulierende WHILE Programm Pf sieht dann wie folgt aus:

x0 := 0;
y := g(0, x1 , . . . , xk );
WHILE y 6= 0 DO
x0 := x0 + 1;
y := g(x0 , x1 , . . . , xk );
ENDLOOP;

BuK/WS 2019 VL-11: Primitive Rekursion 47/48


Landschaftsbild

TM = RAM = WHILE = µ-rekursiv

LOOP = primitiv rekursiv

a n
+ ⇥ b ab k

A(m, n)

Ackermann Funktion

BuK/WS 2019 VL-11: Primitive Rekursion 48/48


VL-12: P und NP

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-12: P und NP 1/48


Organisatorisches

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

BuK/WS 2019 VL-12: P und NP 2/48


Zusammenfassung: Berechenbarkeit

BuK/WS 2019 VL-12: P und NP 3/48


Zusammenfassung: Turing-Mächtigkeit

Wir haben die folgenden Turing-mächtigen Rechenmodelle und


Programmiersprachen kennengelernt:

Turingmaschine (TM)
k-Band-TM
Registermaschine (RAM)
WHILE-Programme (und somit C, Java, Pascal, Postscript, etc.)
µ-rekursive Funktionen (und somit LISP, Haskell, OCaml, etc)

Die folgenden Rechenmodelle sind hingegen nicht Turing-mächtig:

LOOP-Programme
Primitiv rekursive Funktionen

BuK/WS 2019 VL-12: P und NP 4/48


Zusammenfassung: Church-Turing These

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.

An Stelle von “TM” können wir auch jedes andere Turing-mächtige


Rechenmodell in die obigen Sätze einfügen.

BuK/WS 2019 VL-12: P und NP 5/48


Zusammenfassung: Berechenbarkeitslandschaft

Rekursiv
aufzählbare Probleme
Probleme mit rekursiv
entscheidbare aufzählbarem
PCP Probleme Komplement
primitiv
H rekursive H
Probleme
H✏ D D H✏
Dioph

Nicht rekursiv aufzählbare Probleme mit


nicht rekursiv aufzählbarem Komplement Htot

BuK/WS 2019 VL-12: P und NP 6/48


Zusammenfassung: Unentscheidbarkeit (1)

Methoden zum Nachweis von Nicht-Berechenbarkeit:

Diagonalisierung
Unterprogrammtechnik
Reduktionen (spezielle Variante der Unterprogrammtechnik)

Satz von Rice: Aussagen über Eigenschaften von Funktionen, die


durch eine gegebene TM berechnet werden, sind nicht entscheidbar

Schlussfolgerung aus Rice: Die automatische Verifikation von


Programmen in T-mächtigen Programmiersprachen ist unmöglich

BuK/WS 2019 VL-12: P und NP 7/48


Zusammenfassung: Unentscheidbarkeit (2)

Wichtige nicht berechenbare Probleme:

Halteproblem, in verschiedenen Varianten


Postsches Korrespondenzproblem
Verschiedene Entscheidungsprobleme für CFGs
Erkennung von Funktionen mit elementaren Stammfunktionen
Hilberts zehntes Problem

BuK/WS 2019 VL-12: P und NP 8/48


Wiederholung

BuK/WS 2019 VL-12: P und NP 9/48


Wdh.: Kostenmodelle der RAM

Modelle für die Rechenzeit einer RAM


Uniformes Kostenmaß:
Jeder Schritt der RAM zählt als eine Zeiteinheit.

Logarithmisches Kostenmaß:
Die Laufzeitkosten eines Schrittes der RAM sind proportional zur
binären Länge der Zahlen in den angesprochenen Registern.

BuK/WS 2019 VL-12: P und NP 10/48


Wdh.: Simulationen zwischen RAM und TM

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.

Also: TM und RAM im logarithmischen Kostenmodell können einander


gegenseitig mit polynomiellem Zeitverlust simulieren

BuK/WS 2019 VL-12: P und NP 11/48


Vorlesung VL-12
P und NP

Polynomielle Algorithmen
Die Komplexitätsklasse P
Non-deterministische Turingmaschinen
Die Komplexitätsklasse NP
Katalog von Problemen in NP
P versus NP

BuK/WS 2019 VL-12: P und NP 12/48


Komplexitätstheorie

Die Komplexitätstheorie versucht,


(entscheidbare!) algorithmische Probleme
nach ihrem Bedarf an Berechnungsressourcen zu klassifieren
und sie in Komplexitätsklassen einzuteilen.

Berechnungsressourcen:
Rechenzeit und Speicherplatz (als Funktion der Eingabelänge)

BuK/WS 2019 VL-12: P und NP 13/48


Polynomielle Algorithmen

BuK/WS 2019 VL-12: P und NP 14/48


Worst Case Laufzeit

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.

BuK/WS 2019 VL-12: P und NP 15/48


Polynomielle Zeit

Definition
Die Worst Case Laufzeit tA (n) eines Algorithmus A ist polynomiell
beschränkt, falls gilt

9↵ 2 N : tA (n) 2 O(n↵ )

Einen Algorithmus mit polynomiell beschränkter Worst Case Laufzeit


bezeichnen wir als polynomiellen Algorithmus oder auch als
Polynomialzeitalgorithmus.

Polynomiell beschränkt: O(n); O(n log n); O(n3 ); O(n100 )


n
Nicht polynomiell beschränkt: O(2n ); O(3n ); O(n!); O(22 )

BuK/WS 2019 VL-12: P und NP 16/48


Beispiel: Sortieren

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 ` = max1in 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

BuK/WS 2019 VL-12: P und NP 17/48


Weitere Beispiele

Die folgenden Probleme können in polynomieller Zeit gelöst werden:

Eulerkreis
Kürzester Weg
Minimaler Spannbaum
Maximaler Fluss
Maximum Matching
Grösster gemeinsamer Teiler
Konvexe Hülle in 2D

Primzahltest

BuK/WS 2019 VL-12: P und NP 18/48


Die Klasse P

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.

BuK/WS 2019 VL-12: P und NP 19/48


Beispiel: Graphzusammenhang (1)

Problem: Graphzusammenhang
Eingabe: Ein ungerichteter Graph G = (V , E )
Frage: Ist G zusammenhängend?

Anmerkung: Bei Graphproblemen gehen wir grundsätzlich davon aus, dass


der Graph in Form einer Adjazenzmatrix gegeben ist.

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

BuK/WS 2019 VL-12: P und NP 20/48


Beispiel: Graphzusammenhang (2)

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

Die Gesamtlänge der Eingabe ist L 2 ⇥(|V |2 ).


Die Gesamtlaufzeit liegt somit in

O(|V |2 log |V |) ✓ O(L log L) ✓ O(L2 )

BuK/WS 2019 VL-12: P und NP 21/48


Die non-deterministische
Turingmaschine (NTM)

BuK/WS 2019 VL-12: P und NP 22/48


Illustration

··· ⇤ 0 1 1 0 1 1 0 0 1 1 0 1 0 ⇤ ⇤ ⇤ ⇤ ···

NFA

BuK/WS 2019 VL-12: P und NP 23/48


NTM: Definition

Definition: Non-deterministische Turingmaschine (NTM)


Eine non-deterministische Turingmaschine (NTM) verfügt über
ein beidseitig unbeschränktes Arbeitsband,
einen Lese/Schreibkopf, und
einen Mechanismus, der die Zustandsüberführungen steuert.

Der einzige Unterschied zur deterministischen Turingmaschine TM


besteht darin, dass die Zustandsüberführungen bei der NTM nicht durch
eine Funktion sondern durch eine Relation gesteuert werden:

✓ ((Q \ {q̄}) ⇥ ) ⇥ (Q ⇥ ⇥ {L, R, N})

Berechnungen auf einer NTM sind nicht deterministisch, da es zu einer


Konfiguration mehrere direkte Nachfolgekonfigurationen geben kann.

BuK/WS 2019 VL-12: P und NP 24/48


Berechnungsbaum (1)

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}

Diese NTM hat für Eingabe w = 0011 den folgenden Berechnungsbaum:

q0 11 reject
q1 reject
q0 011
q1 1
q1 11 q2 accept
q0 0011
q2 1 reject

q1 011 reject

BuK/WS 2019 VL-12: P und NP 25/48


Berechnungsbaum (2)

Rechenweg einer NTM = Konfigurationsfolge, die mit


Startkonfiguration beginnt und mit Nachfolgekonfigurationen
fortgesetzt wird, bis Endkonfiguration im Zustand q̄ erreicht wird

Die möglichen Rechenwege einer NTM M auf einer Eingabe können in


einem Berechnungsbaum zusammengefasst werden:
Die Knoten des Baumes entsprechen Konfigurationen
Die Wurzel des Baumes entspricht der Startkonfiguration
Die Kinder einer Konfiguration entsprechen den möglichen
Nachfolgekonfigurationen

Der maximale Verzweigungsgrad des Berechnungsbaumes ist


:= max | (q, a)| q 2 Q \ {q̄}, a 2 .
Anmerkung: hängt nur von M und nicht von der Eingabe ab

BuK/WS 2019 VL-12: P und NP 26/48


Akzeptanzverhalten (1)

Definition: Akzeptanzverhalten der NTM


Eine NTM M akzeptiert die Eingabe x 2 ⌃⇤ ,
falls es mindestens einen Rechenweg von M gibt,
der in eine Konfiguration mit akzeptierendem Zustand führt.

Die von der NTM M erkannte Sprache L(M)


besteht aus allen von M akzeptierten Wörtern.

BuK/WS 2019 VL-12: P und NP 27/48


Akzeptanzverhalten (2)

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

Frage: Welche Sprache wird von dieser NTM erkannt?


Antwort: L(M) = {0i 1j | i , j 1}

BuK/WS 2019 VL-12: P und NP 28/48


Laufzeit einer NTM

Definition: Laufzeit der NTM


Die Laufzeit einer NTM M auf einer Eingabe x ist wie folgt definiert.
Falls x 2 L(M), so ist die Laufzeit TM (x) die Länge
des kürzesten akzeptierenden Rechenweges von M auf x.
Falls x 2
/ L(M), so ist die Laufzeit TM (x) = 0.

Die Worst Case Laufzeit tM (n) der NTM M auf Eingaben


der Länge n 2 N ist definiert als tM (n) := max{TM (x) | x 2 ⌃n }

BuK/WS 2019 VL-12: P und NP 29/48


Die Komplexitätsklasse NP

BuK/WS 2019 VL-12: P und NP 30/48


Die Klasse NP: Definition

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.

NP steht für Non-deterministisch Polynomiell

BuK/WS 2019 VL-12: P und NP 31/48


Beispiel

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

BuK/WS 2019 VL-12: P und NP 32/48


Alternative Charakterisierung von NP

Satz (Zertifikat Charakterisierung von NP)


Eine Sprache L ✓ ⌃⇤ liegt genau dann in NP,
wenn es einen polynomiellen deterministischen Algorithmus V
und ein Polynom p mit der folgenden Eigenschaft gibt:

x 2 L () 9y 2 {0, 1}⇤ , |y |  p(|x|) : V akzeptiert y #x

Anmerkungen:
Der polynomielle Algorithmus V wird auch Verifizierer genannt
Das Wort y 2 {0, 1}⇤ wird auch Zertifikat genannt

BuK/WS 2019 VL-12: P und NP 33/48


Beweis: NTM ) Zertifikat

x 2 L () 9y 2 {0, 1}⇤ , |y |  p(|x|) : V akzeptiert y #x

Es sei M eine NTM, die L in polynomieller Zeit erkennt


Die Laufzeit von M sei beschränkt durch ein Polynom q
Der maximale Verzweigungsgrad eines Berechnungsbaumes sei

Konstruktion von Zertifikat und Verifizierer:


Für die Eingabe x 2 L betrachten wir den kürzesten akzeptierenden
Rechenweg im Berechnungsbaum
Das Zertifikat y kodiert den akzeptierenden Rechenweg Schritt für
Schritt, mit  log2 Bits pro Verzweigung
Das Zertifikat hat polynomielle Länge |y |  log2 · q(|x|)
Der Verifizierer V erhält y #x und simuliert den Rechenweg der
NTM M für die Eingabe x

BuK/WS 2019 VL-12: P und NP 34/48


Beweis: Zertifikat ) NTM

x 2 L () 9y 2 {0, 1}⇤ , |y |  p(|x|) : V akzeptiert y #x

Es sei V ein Verifizierer mit polynomieller Laufzeitschranke


Das Polynom p beschränkt die Länge des Zertifikats

Konstruktion von NTM:


Für eine Eingabe x rät M zunächst non-deterministisch das
Zertifikat y 2 {0, 1}⇤ mit |y |  p(|x|)
Das Zertifikat wird in polynomieller Zeit p(|x|) geraten.

Dann simuliert M den Verifizierer V auf dem Wort y #x, und


akzeptiert wenn der Verifizierer akzeptiert
Die Zeit für die Simulation ist polynomiell beschränkt in der
polynomiellen Laufzeit des Verifizierers.

BuK/WS 2019 VL-12: P und NP 35/48


Katalog von Problemen in NP

BuK/WS 2019 VL-12: P und NP 36/48


Probleme in NP (1): Satisfiability

Problem: Satisfiability (SAT)


Eingabe: Eine Boole’sche Formel ' in CNF über einer
Boole’schen Variablenmenge X = {x1 , . . . , xn }
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?
Literal = positive oder negierte Variable
Klausel = ODER-Verknüpfung von einigen Literalen
Beispiele:
'1 = (x _ y _ z) ^ (¬x _ ¬y _ ¬z)
'1 = (x + y + z) (x + y + z)
'2 = (x _ y ) ^ (¬x _ y ) ^ (x _ ¬y ) ^ (¬x _ ¬y )
'2 = (x + y ) (x + y ) (x + y ) (x + y )

Frage: Wie sieht ein NP-Zertifikat für SAT aus?

BuK/WS 2019 VL-12: P und NP 37/48


Probleme in NP (2): Clique / Independent Set / VC

Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?

Problem: Independent Set (INDEP-SET)


Frage: Enthält G eine unabhängige Menge mit k Knoten?

Problem: Vertex Cover (VC)


Frage: Enthält G ein Vertex Cover mit  k Knoten?
Unabhängige Menge (independent set) S ✓ V spannt keine Kanten
Vertex Cover S ✓ V berührt alle Kanten

Frage: Wie sieht NP-Zertifikat für CLIQUE / INDEP-SET / VC aus?

BuK/WS 2019 VL-12: P und NP 38/48


Probleme in NP (3): Hamiltonkreis / TSP

Problem: Hamiltonkreis (Ham-Cycle)


Eingabe: Ein ungerichteter Graph G = (V , E )
Frage: Besitzt G einen Hamiltonkreis?

Problem: Travelling Salesman Problem (TSP)


Eingabe: Städte 1, . . . , n; Distanzen d(i , j); eine Zahl
Frage: Gibt es eine Rundreise (TSP-Tour) mit Länge höchstens ?

Fragen:
Wie sieht ein NP-Zertifikat für Ham-Cycle aus?
Wie sieht ein NP-Zertifikat für TSP aus?

BuK/WS 2019 VL-12: P und NP 39/48


Probleme in NP (4): Exact Cover

Problem: Exact Cover (EX-COVER)


Eingabe: Eine endliche Menge X ; Teilmengen S1 , . . . , Sm von X
Frage: Existiert eine Indexmenge I ✓ {1, . . . , m},
sodass die Mengen Si mit i 2 I eine Partition von X bilden?

Frage: Wie sieht ein NP-Zertifikat für Exact Cover aus?

BuK/WS 2019 VL-12: P und NP 40/48


Probleme in NP (5): SUBSET-SUM / PARTITION

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?

BuK/WS 2019 VL-12: P und NP 41/48


P versus NP

BuK/WS 2019 VL-12: P und NP 42/48


P versus NP

Übung
Beweisen Sie, dass P ✓ NP gilt

Argument 1: Über TM und NTM


Argument 2: Wie sieht das NP-Zertifikat für ein Problem in P aus?

BuK/WS 2019 VL-12: P und NP 43/48


Was haben wir bis jetzt gesehen?

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)

Intuitiv: NP enthält alle natürlichen Probleme, die nach einem konkreten


Lösungsobjekt fragen

BuK/WS 2019 VL-12: P und NP 44/48


Die grosse o↵ene Frage der Informatik

P=NP ?

Falls die Lösung eines Problems einfach zu überprüfen ist,


ist es dann auch immer einfach, die Lösung selbst zu entdecken?

BuK/WS 2019 VL-12: P und NP 45/48


Konsequenzen einer möglichen Antwort (1)

Falls P=NP gilt:

Viele schwierige Probleme aus Wirtschaft und Industrie können


schnell gelöst werden
Perfekte Fahrpläne, perfekte Produktionspläne, perfekte
Transportpläne, etc
Die Mathematik erreicht eine völlig neue Stufe: Wenn es für ein
Theorem einen kurzen Beweis gibt, so können wir diesen Beweis
auch schnell finden
Die moderne Kryptographie bricht zusammen

BuK/WS 2019 VL-12: P und NP 46/48


Konsequenzen einer möglichen Antwort (2)

Falls P6=NP gilt:

Schwierige Probleme aus Wirtschaft und Industrie können nur durch


viel Rechenzeit und Expertenwissen attackiert werden
Perfekte Lösungen für schwierige Optimierungsprobleme mit grossen
Datenmengen sind nicht zu erwarten
Die Mathematik arbeitet genauso weiter wie bisher
Die Kryptographie arbeitet genauso weiter wie bisher

(Default scenario, in dem die Informatik momentan arbeitet)

BuK/WS 2019 VL-12: P und NP 47/48


Eine Million Dollar Preisgeld

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

BuK/WS 2019 VL-12: P und NP 48/48


VL-13: Polynomielle Reduktionen

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-13: Polynomielle Reduktionen 1/48


Organisatorisches

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

BuK/WS 2019 VL-13: Polynomielle Reduktionen 2/48


Wiederholung

BuK/WS 2019 VL-13: Polynomielle Reduktionen 3/48


Wdh.: Non-deterministische Turingmaschine (NTM)

Definition: Akzeptanzverhalten der NTM


Eine NTM M akzeptiert die Eingabe x 2 ⌃⇤ ,
falls es mindestens einen Rechenweg von M gibt,
der in eine Konfiguration mit akzeptierendem Zustand führt.

q0 11 reject
q1 reject
q0 011
q1 1
q1 11 q2 accept
q0 0011
q2 1 reject

q1 011 reject

BuK/WS 2019 VL-13: Polynomielle Reduktionen 4/48


Wdh.: P und NP

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.

Satz (Zertifikat Charakterisierung von NP)


Eine Sprache L ✓ ⌃⇤ liegt genau dann in NP,
wenn es einen polynomiellen deterministischen Algorithmus V
und ein Polynom p mit der folgenden Eigenschaft gibt:

x 2 L () 9y 2 {0, 1}⇤ , |y |  p(|x|) : V akzeptiert y #x

BuK/WS 2019 VL-13: Polynomielle Reduktionen 5/48


Übung

Definition (Postsches Correspondenzproblem, PCP)


Eine Instanz des PCP besteht aus einer endlichen Menge
⇢ 
x1 xk
K = ,..., .
y1 yk

Die Frage ist, ob es eine (nicht-leere) correspondierende Folge hi1 , . . . , in i


gibt, sodass xi1 xi2 . . . xin = yi1 yi2 . . . yin gilt.

Ein zweifelhafter Satz


PCP 2 NP
Ein zweifelhafter Beweis:
Zertifikat = correspondierende Folge hi1 , . . . , in i
Verifizierer überprüft, ob xi1 xi2 . . . xin = yi1 yi2 . . . yin gilt

BuK/WS 2019 VL-13: Polynomielle Reduktionen 6/48


Wdh.: Probleme in NP

Problem: Satisfiability (SAT)


Eingabe: Eine Boole’sche Formel ' in CNF über einer
Boole’schen Variablenmenge X = {x1 , . . . , xn }
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?

Problem: Hamiltonkreis (Ham-Cycle)


Eingabe: Ein ungerichteter Graph G = (V , E )
Frage: Besitzt G einen Hamiltonkreis?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 7/48


Wdh.: Die Komplexitätslandschaft

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 ?

Falls die Lösung eines Problems einfach zu überprüfen ist,


ist es dann auch immer einfach, die Lösung selbst zu entdecken?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 9/48


Vorlesung VL-13
Polynomielle Reduktionen

Die Komplexitätsklasse EXPTIME

Lösung finden versus Lösbarkeit entscheiden


Optimieren versus Lösbarkeit entscheiden

Polynomielle Reduktionen

BuK/WS 2019 VL-13: Polynomielle Reduktionen 10/48


Die Komplexitätsklasse EXPTIME

BuK/WS 2019 VL-13: Polynomielle Reduktionen 11/48


EXPTIME: Definition

Definition: Komplexitätsklasse EXPTIME


EXPTIME ist die Klasse aller Entscheidungsprobleme,
die durch eine (deterministische) TM M entschieden werden, deren
Worst Case Laufzeit durch 2q(n) mit einem Polynom q beschränkt ist,

p
n
Laufzeit-Beispiele: 2 , 2n , 3n , n · 2n , n!, nn
n n
Aber nicht: 22 und nn

Frage: Wie verhalten sich die Klassen P und NP zu EXPTIME?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 12/48


EXPTIME: NP ✓ EXPTIME

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

Wir enumerieren alle Kandidaten y 2 {0, 1}⇤ mit |y |  p(|x|).


Wir testen jeden einzelnen Kandidaten mit dem Verifizierer V .
Wir akzeptieren, falls V einen der Kandidaten akzeptiert.

Anzahl der Kandidaten ⇡ 2p(|x|)


Zeit pro Kandidat ⇡ polynomiell in |x| + |y |
Ergo: Gesamtzeit ⇡ poly(|x|) · 2p(|x|)

BuK/WS 2019 VL-13: Polynomielle Reduktionen 13/48


EXPTIME: Zwei Beispiele

Problem: Satisfiability (SAT)


Eingabe: Eine Boole’sche Formel ' in CNF über der
Boole’schen Variablenmenge X = {x1 , . . . , xn }
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Problem: Hamiltonkreis (HAM-CYCLE)


Eingabe: Ein ungerichteter Graph G = (V , E ) mit |V | = n
Frage: Besitzt G einen Hamiltonkreis?

Frage: Welche (exponentielle) Zeitkomplexität ergibt sich aus dem


vorangehenden Beweis für die Probleme SAT und HAM-CYCLE?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 14/48


Lösung finden
versus
Lösbarkeit entscheiden

BuK/WS 2019 VL-13: Polynomielle Reduktionen 15/48


Lösung finden vs Lösbarkeit entscheiden

Ein beliebiges Entscheidungsproblem in NP


Eingabe: Ein diskretes Objekt X .
Frage: Existiert für dieses Objekt X ein Lösungsobjekt Y ?

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-13: Polynomielle Reduktionen 16/48


Beispiel: SAT (1)

Problem: Satisfiability (SAT)


Eingabe: Boole’sche Formel ' in CNF über X = {x1 , . . . , xn }
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Wenn wir in ' eine Variable x := 1 setzen,


so werden alle Klauseln mit Literal x dadurch erfüllt und
in allen Klauseln mit Literal x̄ fällt dieses Literal einfach weg.
Wir erhalten wir eine kürzere CNF-Formel '[x = 1].
Analog erhalten wir mit x := 0 die CNF-Formel '[x = 0].

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)

BuK/WS 2019 VL-13: Polynomielle Reduktionen 17/48


Beispiel: SAT (2)

Wir betrachten SAT Instanzen mit n Variablen und m Klauseln.


Satz
Angenommen, Algorithmus A entscheidet SAT Instanzen in T (n, m) Zeit.
Dann gibt es einen Algorithmus B, der für erfüllbare SAT Instanzen
in n · T (n, m) Zeit eine erfüllende Wahrheitsbelegung konstruiert.

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 '

BuK/WS 2019 VL-13: Polynomielle Reduktionen 18/48


Beispiel: CLIQUE

Problem: CLIQUE
Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k
Frage: Enthält G eine Clique mit k Knoten?

Wenn wir aus G einen Knoten v und alle zu v inzidenten Kanten


wegstreichen, so erhalten wir den kleineren Graphen G v
Falls G v eine k-Clique enthält, so ist v irrelevant
Falls G v keine k-Clique enthält, so muss v im Graphen bleiben

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.

BuK/WS 2019 VL-13: Polynomielle Reduktionen 19/48


Beispiel: Hamiltonkreis

Problem: Hamiltonkreis (Ham-Cycle)


Eingabe: Ein ungerichteter Graph G = (V , E )
Frage: Besitzt G einen Hamiltonkreis?

Wenn wir aus G eine Kante e wegstreichen, so erhalten wir den


kleineren Graphen G e
Falls G e einen Hamiltonkreis enthält, so ist e irrelevant
Falls G e keinen Hamiltonkreis enthält, so muss e bleiben

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.

BuK/WS 2019 VL-13: Polynomielle Reduktionen 20/48


Optimieren
versus
Lösbarkeit entscheiden

BuK/WS 2019 VL-13: Polynomielle Reduktionen 21/48


Optimieren vs Entscheiden

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

BuK/WS 2019 VL-13: Polynomielle Reduktionen 22/48


Beispiel: Travelling Salesman

Beim Travelling Salesman Problem sind Städte 1, . . . , n gegeben,


zusammen mit Distanzen d(i , j) für 1  i 6= j  n
Gesucht ist eine möglichst kurze Rundreise (Hamiltonkreis; Tour)
durch alle Städte

Problem: Travelling Salesman (TSP)


Eingabe: Natürliche Zahlen d(i , j) für 1  i 6= j  n
Zulässige Lösung: Permutation ⇡ von 1, . . . , n
n 1
X
Ziel: Minimiere d(⇡) := d(⇡(i ), ⇡(i + 1)) + d(⇡(n), ⇡(1))
i=1

Entscheidungsproblem:
Die Eingabe enthält zusätzlich eine Schranke
Frage: Existiert eine zulässige Lösung mit Länge d(⇡)  ?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 23/48


Beispiel: Bin Packing

Beim Bin Packing sollen n Objekte 1, . . . , n mit Gewichten w1 , . . . , wn


auf möglichst wenige Kisten mit Gewichtslimit B verteilt werden.

Problem: Bin Packing (BPP)


Eingabe: Eine ganze Zahl B und Zahlen w1 , . . . , wn 2 {1, . . . , B}
Zulässige Lösung: Partition von 1, . . . , n in Teilmengen T1 , . . . , Tk ,
sodass w (Tj )  B für alle 1  j  k gilt.
Ziel: Minimiere die Anzahl k der Teilmengen.

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  ?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 24/48


Beispiel: Knapsack

Beim Knapsack Problem (KP; Rucksackproblem) sind n Objekte mit


Gewichten w1 , . . . , wn und Profiten p1 , . . . , pn gegeben
Ausserdem ist eine Gewichtsschranke w gegeben
Wir suchen eine Teilmenge K der Objekte, die in einen Rucksack mit
Gewichtsschranke w passt und die den Gesamtprofit maximiert

Problem: Knapsack (KP)


Eingabe: Natürliche Zahlen w1 , . . . , wn , p1 , . . . , pn , und b
P
Zulässige Lösung: Menge K ✓ {1, . . . , n} mit w (K ) := i2K wi  w
P
Ziel: Maximiere p(K ) := i2K pi

Entscheidungsproblem:
Die Eingabe enthält zusätzlich eine Schranke für den Profit
Frage: Existiert eine zulässige Lösung K mit p(K ) ?

BuK/WS 2019 VL-13: Polynomielle Reduktionen 25/48


Allgemein: Optimieren vs Entscheiden

Für ein Optimierungsproblem mit einer Menge L von zulässigen Lösungen


und einer Kostenfunktion f : L ! N definieren wir das entsprechende
Entscheidungsproblem:

Eingabe: Wie im Optimierungsproblem; plus Schranke 2N


Frage: Existiert eine zulässige Lösung x 2 L
mit f (x) (für Maximierungsprobleme) respektive
mit f (x)  (für Minimierungsprobleme)?

Mit Hilfe eines Algorithmus, der das Optimierungsproblem löst,


kann man immer das entsprechende Entscheidungsproblem lösen.
(Wie?)
Mit Hilfe eines Algorithmus, der das Entscheidungsproblem löst,
kann man den optimalen Zielfunktionswert bestimmen
(und oft auch die dazugehörende optimale Lösung finden).

BuK/WS 2019 VL-13: Polynomielle Reduktionen 26/48


Beispiel: Knapsack (1)

Eingabe: Natürliche Zahlen w1 , . . . , wn , p1 , . . . , pn ; w ;


Zulässig: Menge K ✓ {1, . . . , n} mit w (K )  w

Optimierung: Berechne zulässiges K mit maximalem p(K )


Entscheidung: Existiert zulässiges 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.

Beweis: Aus einem schnellen Algorithmus A fürs Entscheidungsproblem


konstruieren wir zuerst einen schnellen Algorithmus B,
der den optimalen Zielfunktionswert bestimmt
und dann einen schnellen Algorithmus C ,
der eine optimale zulässige Lösung bestimmt

BuK/WS 2019 VL-13: Polynomielle Reduktionen 27/48


Beispiel: Knapsack (2)

Algorithmus B für (Phase 1)


Wir führen eine Binäre Suche mit den folgenden Parametern durch:
Der minimal mögliche Profit ist 0.
n
X
Der maximal mögliche Profit ist P := pi .
i=1
Wir finden den optimalen Zielfunktionswert durch Binäre Suche über
dem Wertebereich {0, . . . , P}.
In jeder Iteration verwenden wir den polynomiellen Algorithmus A
(für das Entscheidungsproblem), der uns mitteilt, in welcher Hälfte
des verbleibenden Wertebereichs wir weitersuchen müssen

Die Anzahl der Iterationen der Binärsuche ist dlog(P + 1)e.

BuK/WS 2019 VL-13: Polynomielle Reduktionen 28/48


Beispiel: Knapsack (3)

Algorithmus B besteht aus  dlog(P + 1)e Aufrufen von


Algorithmus A in der binären Suche.
Also ist die Gesamtlaufzeit von Algorithmus B durch
dlog(P + 1)e · T (|I |) beschränkt.

Die Eingabelänge |I | der Knapsack-Instanz I beträgt


n
X n
Y
|I | log(pi + 1) = log( (pi + 1))
i=1 i=1
n
X
log( (pi + 1)) ⇡ log(P + 1)
i=1

Die Gesamtlaufzeit von Algorithmus B ist durch |I | · T (|I |) beschränkt.

BuK/WS 2019 VL-13: Polynomielle Reduktionen 29/48


Beispiel: Knapsack (4)

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

Algorithmus C besteht im wesentlichen aus n + 1 Aufrufen des


polynomiellen Algorithmus B
Also ist die Gesamtlaufzeit von Algorithmus C durch n · |I | · T (|I |)
und folglich durch poly(|I |) · T (|I |) beschränkt

BuK/WS 2019 VL-13: Polynomielle Reduktionen 30/48


Polynomielle Reduktionen

BuK/WS 2019 VL-13: Polynomielle Reduktionen 31/48


Zur Erinnerung: Eine alte Seite aus Vorlesung VL-06

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 .

{0, 1}⇤ f {0, 1}⇤

L2
L1

BuK/WS 2019 VL-13: Polynomielle Reduktionen 32/48


Polynomielle Reduktionen (1)

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 .

{0, 1}⇤ f {0, 1}⇤

L2
L1

BuK/WS 2019 VL-13: Polynomielle Reduktionen 33/48


Polynomielle Reduktionen (2)

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

Wir konstruieren einen Algorithmus A1 , der L1 entscheidet:


Schritt 1: Berechne f (x)
Schritt 2: Simuliere Algorithmus A2 auf f (x)
Schritt 3: Akzeptiere x, genau dann wenn A2 akzeptiert

Schritt 1 hat Laufzeit p(|x|) und


Schritt 2 hat Laufzeit q(|f (x)|)  q(p(|x|) + |x|)

BuK/WS 2019 VL-13: Polynomielle Reduktionen 34/48


Polynomielle Reduktionen (3)

Algorithmus A1 für L1

x f (x) Algorithmus f (x) 2 L2 x 2 L1


Reduktion
A2 für L2 Y/N Y/N

BuK/WS 2019 VL-13: Polynomielle Reduktionen 35/48


Beispiel zu Reduktionen:
COLORING p SAT

BuK/WS 2019 VL-13: Polynomielle Reduktionen 36/48


COLORING p SAT

Problem: Knotenfärbung / COLORING


Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k 2 N
Frage: Gibt es eine Färbung c : V ! {1, . . . , k} der Knoten
mit k Farben, sodass benachbarte Knoten verschiedene Farben
erhalten? 8e = {u, v } 2 E : c(u) 6= c(v )?

Problem: Satisfiability (SAT)


Eingabe: Boole’sche Formel ' in CNF über der Variablenmenge X
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Satz
COLORING p SAT

BuK/WS 2019 VL-13: Polynomielle Reduktionen 37/48


Beispiel: Knotenfärbung von Graphen

BuK/WS 2019 VL-13: Polynomielle Reduktionen 38/48


COLORING p SAT: Die Reduktion

Die Boole’schen Variablen


Für jeden Knoten v 2 V und für jede Farbe i 2 {1, . . . , k}
führen wir eine Boole’sche Variable xvi ein.

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 )

Anzahl der Variablen = k |V |


Anzahl der Klauseln = |V | + k |E |
Gesamtlänge der Formel = k |V | + 2k |E | 2 O(k|V |2 )

BuK/WS 2019 VL-13: Polynomielle Reduktionen 39/48


COLORING p SAT: Korrektheit (1)

Graph G hat k-Färbung ) Formel ' ist erfüllbar

Es sei c eine k-Färbung für G


Für jeden Knoten v mit c(v ) = i setzen wir xvi = 1.
Alle anderen Variablen setzen wir auf 0.
Für jeden Knoten v 2 V ist (xv1 + xv2 + . . . + xvk ) erfüllt
Für {u, v } 2 E und i 2 {1, . . . , k} ist (x̄ui + x̄vi ) erfüllt
Andernfalls hätten beide Knoten u und v die selbe Farbe i .
Ergo: Diese Wahrheitsbelegung erfüllt die Formel '

BuK/WS 2019 VL-13: Polynomielle Reduktionen 40/48


COLORING p SAT: Korrektheit (2)

Formel ' ist erfüllbar ) Graph G hat k-Färbung

Wir betrachten eine beliebige erfüllende Belegung für '


Wegen der Klausel (xv1 + xv2 + . . . + xvk ) gibt es für jeden Knoten v
mindestens eine Farbe i mit xvi = 1
Für jeden Knoten wählen wir eine beliebige derartige Farbe aus

Wir behaupten: c(u) 6= c(v ) gilt für jede Kante {u, v } 2 E


Beweis: Falls c(u) = c(v ) = i , dann gilt xui = xvi = 1. Dann wäre
aber die Klausel (x̄ui + x̄vi ) verletzt

BuK/WS 2019 VL-13: Polynomielle Reduktionen 41/48


COLORING p SAT: Konsequenzen

Aus unserer Reduktion COLORING p SAT folgt:

Folgerung 1
Wenn SAT einen polynomiellen Algorithmus hat,
so hat auch COLORING einen polynomiellen Algorithmus.

Folgerung 2 (logisch äquivalent zu Folgerung 1)


Wenn COLORING keinen polynomiellen Algorithmus hat,
so hat auch SAT keinen polynomiellen Algorithmus.

BuK/WS 2019 VL-13: Polynomielle Reduktionen 42/48


Übung: Ex-Cover p SAT

Problem: Exact Cover (Ex-Cover)


Eingabe: Eine endliche Menge X ; Teilmengen S1 , . . . , Sm von X
Frage: Existiert eine Indexmenge I ✓ {1, . . . , m},
sodass die Mengen Si mit i 2 I eine Partition von X bilden?

Übung
Zeigen Sie: Ex-Cover p SAT

BuK/WS 2019 VL-13: Polynomielle Reduktionen 43/48


Beispiel zu Reduktionen:
Vertex Cover p SAT

BuK/WS 2019 VL-13: Polynomielle Reduktionen 44/48


Vertex Cover p SAT

Problem: Vertex Cover (VC)


Eingabe: Ein ungerichteter Graph G = (V , E ); eine Zahl k 2 N
Frage: Enthält G ein Vertex Cover mit  k Knoten?
Vertex Cover S ✓ V enthält mindestens einen Endpunkt von jeder Kante

Problem: Satisfiability (SAT)


Eingabe: Boole’sche Formel ' in CNF über der Variablenmenge X
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Satz
Vertex Cover p SAT

BuK/WS 2019 VL-13: Polynomielle Reduktionen 45/48


Vertex Cover p SAT: Eine zweifelhafte Reduktion

Die Boole’schen Variablen


Für jeden Knoten v 2 V
führen wir eine Boole’sche Variable xv ein.
(Variable xv ist TRUE) () (Knoten v ist im Vertex Cover)

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

Anzahl der Variablen = |V |


Anzahl der Klauseln ⇡ |V |k+1 (??????????)

BuK/WS 2019 VL-13: Polynomielle Reduktionen 46/48


Vertex Cover p SAT: Eine korrekte Reduktion

Die Boole’schen Variablen


Für jeden Knoten v 2 V und für jede Zahl i 2 {1, 2, . . . , k}
führen wir eine Boole’sche Variable xvi ein.

(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 )
1ik 1ik

Für jede Zahl i 2 {1, 2, . . . , k} und je zwei Knoten u, v 2 V mit u 6= v


verwenden wir die Klausel (x̄vi + x̄ui )

Anzahl der Variablen = k|V |


Anzahl der Klauseln ⇡ |E | + k|V |2

BuK/WS 2019 VL-13: Polynomielle Reduktionen 47/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-13: Polynomielle Reduktionen 48/48
VL-14: Der Satz von Cook & Levin

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 1/48
Organisatorisches

Heute: Vorlesungs-Evaluierung (gegen Ende der Stunde)

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

Definition: Komplexitätsklasse EXPTIME


EXPTIME ist die Klasse aller Entscheidungsprobleme,
die durch eine DTM M entschieden werden, deren Worst Case
Laufzeit durch 2q(n) mit einem Polynom q beschränkt ist,
p
n
Laufzeit-Beispiele: 2 , 2n , 3n , n · 2n , n!, nn
2n nn
Aber nicht: 2 und n

Satz
P ✓ NP ✓ EXPTIME

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 4/48
Wdh.: Lösung finden vs Lösbarkeit entscheiden

Ein beliebiges Entscheidungsproblem in NP


Eingabe: Ein diskretes Objekt X .
Frage: Existiert für dieses Objekt X ein Lösungsobjekt Y ?

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

Für ein Optimierungsproblem mit einer Menge L von zulässigen Lösungen


und einer Kostenfunktion f : L ! N definieren wir das entsprechende
Entscheidungsproblem:

Eingabe: Wie im Optimierungsproblem; plus Schranke 2N


Frage: Existiert eine zulässige Lösung x 2 L
mit f (x) (für Maximierungsprobleme) respektive
mit f (x)  (für Minimierungsprobleme)?

Mit Hilfe eines Algorithmus, der das Optimierungsproblem löst,


kann man immer das entsprechende Entscheidungsproblem lösen.
Mit Hilfe eines Algorithmus, der das Entscheidungsproblem löst,
kann man den optimalen Zielfunktionswert bestimmen
(und oft auch die dazugehörende optimale Lösung finden).

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 .

L1 p L2 und L2 p L3 impliziert L1 p L3 (Transitivität)


L1 p L2 und L2 2 P impliziert L1 2 P

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

Satz von Cook & Levin

NP-Vollständigkeit
Kochrezept für NP-Vollständigkeitsbeweise
NP-Vollständigkeit von 3-SAT

Karp’s Liste mit 21 Problemen

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 8/48
Polynomielle Reduktionen auf SAT

Problem: Satisfiability (SAT)


Eingabe: Boole’sche Formel ' in CNF über der Variablenmenge X
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Wir wissen bereits:


COLORING kann in polynomieller Zeit auf SAT reduziert werden
VC kann in polynomieller Zeit auf SAT reduziert werden
EX-COVER kann in polynomieller Zeit auf SAT reduziert werden

Natürliche Frage: Welche anderen Probleme können denn noch in


polynomieller Zeit auf SAT reduziert werden?

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

Satz (Cook & Levin)


Für alle L 2 NP gilt: L p SAT

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)

Wikipedia: Stephen Arthur Cook is an American-Canadian computer


scientist and mathematician who has made major contributions to the
fields of complexity theory and proof complexity.

His seminal paper “The complexity of


theorem proving procedures” (presented
at the 1971 Symposium on the Theory of
Computing) laid the foundations for the
theory of NP-Completeness.
The ensuing exploration of the boundaries
and nature of the class of NP-complete
problems has become one of the most
active and important research areas in
computer science.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 12/48
Leonid Levin (1948)

Wikipedia: Leonid Anatolievich Levin is a Soviet-American computer


scientist. He obtained his master’s degree at Moscow University in 1970
where he studied under Andrej Kolmogorov. He completed the Candidate
Degree academic requirements in 1972.
Levin is known for his work in
randomness in computing,
average-case complexity, foundations
of mathematics and computer science,
algorithmic probability, theory of
computation, and information theory.
Leonid Levin and Stephen Cook
independently discovered the existence
of NP-complete problems.
Levin was awarded the Knuth Prize in 2012 for his discovery of
NP-completeness and the development of average-case complexity.

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)

Es sei L ✓ ⌃⇤ ein beliebiges Problem in NP.


Es sei M eine NTM, die L in polynomieller Zeit erkennt.
Wir müssen/werden zeigen, dass L p SAT gilt.
Dazu konstruieren wir eine polynomiell berechenbare Funktion f ,
die jedes x 2 ⌃⇤ auf eine Formel ' =: f (x) abbildet, sodass gilt:

x 2 L , M akzeptiert x , ' 2 SAT

Wir nehmen folgende Eigenschaften der NTM M an:


M besucht keine Bandzelle links von der Startzelle.
Eine akzeptierende Rechnung von M geht in den Zustand qaccept
über, und bleibt dann dort in einer Endlosschleife.
Es gibt ein Polynom p(·), sodass M eine Eingabe x genau dann
akzeptiert, wenn es einen Rechenweg gibt, der nach p(|x|) Schritten
im Zustand qaccept gelandet ist.

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)

gibt, bei der Kp(n) im Zustand qaccept ist.

Unsere Formel ' wird derart konstruiert,


dass ' genau dann erfüllbar ist,
wenn solch eine akzeptierende Konfigurationsfolge existiert.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 16/48
Die Boole’schen Variablen (1)

Die Variablen in der Formel '


Q(t, q) für t 2 {0, . . . , p(n)} und q 2 Q
H(t, j) für t, j 2 {0, . . . , p(n)}
B(t, j, a) für t, j 2 {0, . . . , p(n)} und a 2

Interpretation der Variablen:


Die Belegung Q(t, q) = 1 besagt, dass sich die Berechnung zum
Zeitpunkt t im Zustand q befindet.
Die Belegung H(t, j) = 1 steht dafür, dass sich der Kopf zum
Zeitpunkt t an Bandposition j befindet.
Die Belegung B(t, j, a) = 1 bedeutet, dass zum Zeitpunkt t an
Bandposition j das Zeichen a geschrieben steht.

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

B(2, 0, 1) = 0 B(1, 0, 1) = 0 B(0, 0, 1) = 0


B(2, 1, 0) = 0 B(1, 1, 0) = 0 B(0, 1, 0) = 0

1
1
1

B(2, 1, 1) = 1 B(1, 1, 1) = 1 B(0, 1, 1) = 1


B(2, 2, 0) = 0 B(1, 2, 0) = 0 B(0, 2, 0) = 0

1
1
1

B(2, 2, 1) = 1 B(1, 2, 1) = 1 B(0, 2, 1) = 1


B(2, 3, 0) = 1 B(1, 3, 0) = 1 B(0, 3, 0) = 1

0
0
0

B(2, 3, 1) = 0 B(1, 3, 1) = 0 B(0, 3, 1) = 0


B(2, 4, 0) = 0 B(1, 4, 0) = 1 B(0, 4, 0) = 1

1
0
0

B(2, 4, 1) = 1 B(1, 4, 1) = 0 B(0, 4, 1) = 0


B(2, 5, 0) = 0 B(1, 5, 0) = 0 B(0, 5, 0) = 0

1
1
1

B(2, 5, 1) = 1 B(1, 5, 1) = 1 B(0, 5, 1) = 1




VL-14: Der Satz von Cook & Levin


q

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

Wir werden die akzeptierende Konfigurationsfolge in drei Phasen in die


Formel ' übersetzen.

Arbeitsphase A: Für jeden Zeitpunkt t beschreiben die Variablen


Q(t, q), H(t, j) und B(t, j, a) eine legale Konfiguration.

Arbeitsphase B: Die Konfiguration zum Zeitpunkt t + 1 entsteht


legal aus der Konfiguration zum Zeitpunkt t.

Arbeitsphase C: Startkonfiguration und Endkonfiguration sind legal.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 19/48
Arbeitsphase A (1)

Für jeden Zeitpunkt t konstruieren wir


eine Teilformel 't von Formel ', die nur dann erfüllt ist,
wenn die Variablen Q(t, q), H(t, j) und B(t, j, a) eine legale
Konfiguration Kt beschreiben.

A1. Es gibt genau einen Zustand q 2 Q mit Q(t, q) = 1.

A2. Es gibt genau eine Bandposition j 2 {0, . . . , p(n)} mit H(t, j) = 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.

Die drei erwünschten Eigenschaften A1/A2/A3 zum Zeitpunkt t (für


legale Konfigurationen) können daher jeweils durch eine Formel 't mit
polynomiell beschränkter Länge kodiert werden.

Phase A ist damit abgeschlossen.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 21/48
Arbeitsphase B (1)

Wir konstruieren für jeden Zeitpunkt t


eine Teilformel '0t von Formel ', die erzwingt, dass Kt
eine direkte Nachfolgekonfiguration von Konfiguration Kt 1 ist.

B1. Der Bandinhalt der Konfiguration Kt stimmt an allen Positionen mit


dem Bandinhalt der Konfiguration Kt 1 überein, mit der möglichen
Ausnahme von jener Position, an der der Kopf zum vorherigen
Zeitpunkt t 1 war.

B2. Zustand, Kopfposition und Bandinhalt an Kopfposition verändern


sich im Einklang mit der Übergangsrelation .

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)

y1 ^ ¬y2 ) y3 äquivalent zu ¬(y1 ^ ¬y2 ) _ y3


äquivalent zu ¬y1 _ y2 _ y3

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)

Eigenschaft B2 (Zustand, Kopfposition und Bandinhalt an Kopfposition


verändern sich gemäss Übergangsrelation ) wird wie folgt kodiert.

Für alle q 2 Q, für alle j 2 {0, . . . , p(n) 1} und für alle a 2


verwenden wir die Teilformel

Q(t 1, q) ^ H(t 1, j) ^ B(t 1, j, a) )


_
(Q(t, q 0 ) ^ H(t, j + ) ^ B(t, j, a0 ))
(q,a,q 0 ,a0 ,)2

wobei  die Werte L = 1, N = 0 und R = 1 annehmen kann.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 24/48
Arbeitsphase B (4)

⌃ = {0, 1} Start Ende Blank


= {0, 1, B}
q1 q2 B
··· B 0 0 1 1 ··· Q = {q1 , q2 , q3 }

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

Q(t 1, q1 ) ^ H(t 1, j) ^ B(t 1, j, 0) )


Q(t, q1 ) ^ H(t, j + 1) ^ B(t, j, B)
_ Q(t, q2 ) ^ H(t, j 1) ^ B(t, j, 1)

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 25/48
Arbeitsphase B (5)

Für alle q 2 Q, für alle j 2 {0, . . . , p(n) 1} und für alle a 2


verwenden wir die Teilformel

Q(t 1, q) ^ H(t 1, j) ^ B(t 1, j, a) )


_
(Q(t, q ) ^ H(t, j + ) ^ B(t, j, a0 ))
0

(q,a,q 0 ,a0 ,)2

wobei  die Werte L = 1, N = 0 und R = 1 annehmen kann.

Die Formel in Rot ist nicht in CNF


Die Formel in Rot besteht aus höchstens 3 + 3 Literalen
(wobei der maximale Verzweigungsgrad der NTM M ist)
Die Formel in Rot kann in eine äquivalente Formel in CNF mit
höchstens  33 +3 (3 + 3) Literalen umgeformt werden
Phase B ist damit abgeschlossen.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 26/48
Arbeitsphase C

Zum Schluss sorgen wir noch dafür,


dass Startkonfiguration mit Eingabe x = x0 x1 · · · xn 1
und Endkonfiguration korrekt beschrieben werden:

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 )

Phase C ist damit abgeschlossen.

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.

Satz (Cook & Levin)


Für alle L 2 NP gilt: L p SAT

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?

Satz (Cook & Levin)


Für alle L 2 NP gilt: L p SAT

Einfache Folgerung aus Cook & Levin


Wenn P 6= NP gilt, so besitzt SAT keinen polynomiellen Algorithmus.
Beweis:
Angenommen, SAT besitzt einen polynomiellen Algorithmus.
Es sei L eine beliebige Sprache in NP.
Die Reduktion L p SAT und der polynomielle Algorithmus für SAT
liefern uns zusammen einen polynomiellen Algorithmus für L.
Damit ist jede Sprache L 2 NP polynomiell lösbar. Widerspruch.

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⇤

Anmerkung: SAT ist NP-schwer.

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:

Satz (Cook & Levin)


SAT ist NP-vollständig.

Wir werden zeigen, dass CLIQUE, Ham-Cycle, PARTITION,


Knapsack und viele weitere Probleme ebenfalls NP-vollständig sind.
Unter der Annahme P 6= NP (Standardannahme) besitzt also keines
dieser Probleme einen polynomiellen Algorithmus.

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)

Die NP-Vollständigkeit von SAT haben wir durch eine lange


“Master-Reduktion” von allen Problemen in NP auf SAT bewiesen.
Um die NP-Vollständigkeit von anderen Problemen zu zeigen,
könnten wir natürlich für jedes neue Problem eine ähnlich mühsame
und ähnlich langwierige Master-Reduktion erstellen.
Ein viel einfacherer Ansatz weist die NP-Vollständigkeit von neuen
Problemen mit Hilfe der NP-Vollständigkeit von SAT nach.

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)

Hier ist das Kochrezept:

1. Man zeige L 2 NP.

2. Man wähle eine NP-vollständige Sprache L⇤ .


3. (Reduktionsabbildung): Man konstruiere eine Funktion f , die
Instanzen von L⇤ auf Instanzen von L abbildet.
4. (Polynomielle Zeit): Man zeige, dass f in polynomieller Zeit
berechnet werden kann.
5. (Korrektheit): Man beweise, dass f tatsächlich eine Reduktion ist.
Für jedes x 2 {0, 1}⇤ gilt x 2 L⇤ genau dann, wenn f (x) 2 L.

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

Beispiel einer Formel in 3-CNF:

' = (x̄1 _ x̄2 _ x3 ) ^ (x̄1 _ x2 _ x̄3 ) ^ (x1 _ x2 _ x̄3 )


| {z } | {z } | {z }
3 Literale 3 Literale 3 Literale

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

Aus einer 1-Klausel oder 2-Klausel machen wir eine äquivalente


3-Klausel, indem wir ein oder zwei Literale duplizieren
3-Klauseln bleiben 3-Klauseln
Auf k-Klauseln mit k 4 wenden wir wiederholt die folgende
Klauseltransformation (mit neu eingeführter Hilfsvariable h) an:
Die Klausel c = (`1 + `2 + `3 + · · · + `k ) wird ersetzt durch zwei
neue Klauseln (`1 + · · · + `k 2 + h) und (h̄ + `k 1 + `k ).

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 40/48
Klauseltransformation: Beispiel

Klauseltransformation für eine 5-Klausel


Wir beginnen mit der 5-Klausel (x1 + x̄2 + x3 + x4 + x̄5 )

Im ersten Transformationsschritt wird daraus eine 4-Klausel und eine


3-Klausel gemacht: (x1 + x̄2 + x3 + h1 ) (h̄1 + x4 + x̄5 )

Auf die 4-Klausel wird die Transformation dann erneut angewendet.


Dadurch entsteht nun (x1 + x̄2 + h2 ) (h̄2 + x3 + h1 ) (h¯1 + x4 + x̄5 ),
und es sind nur noch 3-Klauseln vorhanden.

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 41/48
Klauseltransformation: Korrektheit

Alte Klausel: c = (`1 + `2 + `3 + · · · + `k )


Neue Klauseln: c 0 = (`1 + · · · + `k 2 + h) und c 00 = (h̄ + `k 1 + `k )

(1) Wenn eine Wahrheitsbelegung beide neuen Klauseln c 0 und c 00 erfüllt,


so erfüllt sie automatisch auch die alte Klausel c:
Wenn h = 0, dann ist `1 + · · · + `k 2 wahr
Wenn h = 1, dann ist `k 1 + `k wahr

(2) Wenn eine Wahrheitsbelegung c erfüllt, so kann sie auf h erweitert


werden, sodass die beiden neuen Klauseln c 0 und c 00 erfüllt sind:
Die Wahrheitsbelegung macht mindestens ein Literal aus c wahr
Falls `1 + · · · + `k 2 wahr ist, setzen wir h = 0
Falls `k 1 + `k wahr ist, so setzen wir h = 1

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 42/48
3-SAT: NP-Vollständigkeit (Ende)

Durch Anwendung der Klauseltransformation entstehen aus einer


k-Klausel eine (k 1)-Klausel und eine 3-Klausel.
Nach k 3 Iterationen sind dann aus einer einzelnen alten k-Klausel
genau k 2 neue 3-Klauseln entstanden.
Aus k 4 alten Literalen entstehen also 3k 6 neue Literale.
Diese Transformation wird solange auf die Formel ' angewandt, bis
die Formel nur noch 3-Klauseln enthält.

Wenn ' aus p Literalen besteht, so besteht '0 aus höchstens 3p


Literalen.
Die Laufzeit der Reduktion ist daher polynomiell beschränkt.

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)

Wikipedia: Richard Manning Karp is an American computer scientist,


who has made many important discoveries in computer science,
operations research, and in the area of combinatorial algorithms.

Karp introduced the now standard


methodology for proving problems to be
NP-complete which has led to the
identification of many practical problems
as being computationally difficult.

Edmonds-Karp algorithm for max-flow


Hopcroft-Karp algorithm for matching
Rabin-Karp string search algorithm
Karp-Lipton theorem

BuK/WS 2019 VL-14: Der Satz von Cook & Levin 46/48
Karp’s Liste mit 21 NP-vollständigen Problemen

Im Jahr 1972 bewies Richard Karp die NP-Vollständigkeit von 21


kombinatorischen und graphen-theoretischen Problemen, die sich
hartnäckig einer effizienten algorithmischen Lösung entzogen hatten.

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

(Berechenbarkeit und Komplexität, WS 2019)

Gerhard Woeginger

WS 2019, RWTH

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 1/43


Organisatorisches

Nächste Vorlesung:
Mittwoch, Januar 15, 10:30–12:00, Aula

Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 2/43


Wiederholung

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 3/43


Wdh.: NP-schwer & NP-Vollständig

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.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 4/43


Wdh.: Der Satz von Cook & Levin

Problem: Satisfiability (SAT)


Eingabe: Boole’sche Formel ' in CNF über der Variablenmenge X
Frage: Existiert eine Wahrheitsbelegung von X , die ' erfüllt?

Satz (Cook & Levin)


SAT ist NP-vollständig.

Arbeitsphase A: Für jeden Zeitpunkt t beschreiben die Variablen


Q(t, q), H(t, j) und B(t, j, a) eine legale Konfiguration.
Arbeitsphase B: Die Konfiguration zum Zeitpunkt t + 1 entsteht
legal aus der Konfiguration zum Zeitpunkt t.
Arbeitsphase C: Startkonfiguration und Endkonfiguration sind legal.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 5/43


Wdh.: 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-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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 7/43


Wdh.: Kochrezept für NP-Vollständigkeitsbeweise

Kochrezept:

1. Man zeige L 2 NP.

2. Man wähle eine NP-vollständige Sprache L⇤ .


3. (Reduktionsabbildung): Man konstruiere eine Funktion f , die
Instanzen von L⇤ auf Instanzen von L abbildet.
4. (Polynomielle Zeit): Man zeige, dass f in polynomieller Zeit
berechnet werden kann.
5. (Korrektheit): Man beweise, dass f tatsächlich eine Reduktion ist.
Für x 2 {0, 1}⇤ gilt x 2 L⇤ genau dann, wenn f (x) 2 L.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 8/43


Vorlesung VL-15
Einige NP-vollständige Graphprobleme

NP-Vollständigkeit von CLIQUE


NP-Vollständigkeit von INDEP-SET
NP-Vollständigkeit von Vertex Cover
NP-Vollständigkeit von Ham-Cycle (gerichtet)
NP-Vollständigkeit von Ham-Cycle (ungerichtet)
NP-Vollständigkeit des TSP

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 9/43


NP-Vollständigkeit von CLIQUE

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 10/43


CLIQUE: Definition

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.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 11/43


CLIQUE: Nach unserem Kochrezept

1. Wir wissen bereits (aus VL-12), dass CLIQUE in NP liegt.

2. Wir wählen die NP-vollständige Sprache L⇤ = SAT


und wir werden SAT p CLIQUE zeigen.

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:

' ist erfüllbar , G besitzt k-Clique

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 12/43


CLIQUE: Beschreibung der Funktion f

Es seien c1 , . . . , cm die Klauseln der Formel '.


Es sei ki die Anzahl an Literalen in der i -ten Klausel ci .
Es seien `i,1 , . . . , `i,ki die Literale in der i -ten Klausel ci .

Für jedes Literal in jeder Klausel erzeugen wir einen entsprechenden


Knoten: V = {`i,j | 1  i  m, 1  j  ki }
Zwei Knoten werden mit einer Kante verbunden,
wenn sie aus verschiedenen Klauseln stammen und
wenn ihre Literale nicht Negationen voneinander sind.
Wir setzen k = m.

4. (Polynomielle Zeit):
Die Funktion f ist in Polynomialzeit berechenbar.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 13/43


CLIQUE: Beispiel

' = (x1 _ ¬x2 _ ¬x3 ) ^ (¬x1 _ x2 _ x3 ) ^ (x2 _ x3 )

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 14/43


CLIQUE: Korrektheit (1)

Lemma A: Formel ' erfüllbar ) G hat m-Clique

Betrachte beliebige erfüllende Belegung von '


Bilde Menge U mit einem erfüllten Literal von jeder Klausel
Behauptung: U bildet m-Clique

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 15/43


CLIQUE: Korrektheit (2)

Lemma B: G hat m-Clique ) Formel ' erfüllbar

Betrachte m-Clique U in G
Dann gehören die Literale in U zu lauter verschiedenen Klauseln

U enthält somit genau ein Literal pro Klausel


Kein Literal tritt sowohl positiv als auch negiert auf
Ergo: Alle diese Literale können gleichzeitig erfüllt werden
Also ist ' erfüllbar

5. (Korrektheit):
f ist Reduktion: x 2 L⇤ , f (x) 2 L

' 2 SAT , f (') = hG ; mi 2 CLIQUE

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 16/43


NP-Vollständigkeit von
INDEP-SET und Vertex Cover

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 17/43


Independent Set

Unabhängige Menge (independent set):


Teilmenge der Knoten, die keine Kanten induziert
Problem: INDEP-SET
Eingabe: Ein ungerichteter Graph G 0 = (V 0 , E 0 ); eine Zahl k 0
Frage: Enthält G 0 eine unabhängige Menge mit k 0 Knoten?

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 18/43


Vertex Cover (1)

Vertex Cover: Teilmenge der Knoten, die alle Kanten berührt

Problem: Vertex Cover (VC)


Eingabe: Ein ungerichteter Graph G 00 = (V 00 , E 00 ); eine Zahl k 00
Frage: Enthält G 00 ein Vertex Cover mit  k 00 Knoten?

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 19/43


Vertex Cover (2)

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 20/43


NP-Vollständigkeit von
Ham-Cycle (gerichtet)

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 21/43


D-Ham-Cycle: Definition

Problem: Gerichteter Hamiltonkreis (D-Ham-Cycle)


Eingabe: Ein gerichteter Graph G = (V , A)
Frage: Besitzt G einen gerichteten Hamiltonkreis?

Satz
D-Ham-Cycle ist NP-vollständig.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 22/43


D-Ham-Cycle: Nach unserem Kochrezept

1. D-Ham-Cycle liegt in NP

2. Wir wählen die NP-vollständige Sprache L⇤ = SAT


und wir werden SAT p D-Ham-Cycle zeigen.

3. (Reduktionsabbildung):
Wir konstruieren eine Funktion f , die eine CNF-Formel ' in einen
gerichteten Graphen G = (V , A) transformiert, sodass gilt:

' ist erfüllbar , G hat gerichteten Hamiltonkreis

Die CNF-Formel ' besteht aus Klauseln c1 , . . . , cm mit Boole’schen


Variablen x1 , . . . , xn .

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 23/43


D-Ham-Cycle: Reduktion / Diamantengadgets (1)
Für jede Variable xi enthält der Graph G das Diamantengadget Gi :

si

li ri

ti

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 24/43


D-Ham-Cycle: Reduktion / Diamantengadgets (2)
Diese n Diamantengadgets werden miteinander verbunden, indem wir die
Knoten ti und si+1 (für 1  i  n 1) sowie tn und s1 miteinander
identifizieren:
s1

l1 r1

t1 = s 2 st12

l2 r2

t2 = s 3 st23

l3 r3

t3

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 25/43


D-Ham-Cycle: Reduktion / Diamantengadgets (3)

In dem resultierenden Graphen besucht jede Rundreise, die im Knoten s1


startet, die Diamantengadgets in der Reihenfolge G1 , G2 , . . . , Gn .

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.

Die LR Variante interpretieren wir als Variablenbelegung xi = 0,


und die RL Variante als Variablenbelegung xi = 1.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 26/43


D-Ham-Cycle: Reduktion / Klauselknoten (1)

Jetzt fügen wir für jede Klausel cj einen weiteren Knoten ein.

(a) Falls das Literal xi in Klausel cj enthalten ist,


so verbinden wir Gadget Gi wie folgt mit dem Klauselknoten cj :

cj

li ri

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 27/43


D-Ham-Cycle: Reduktion / Klauselknoten (2)

(b) Falls das Literal x¯i in Klausel cj enthalten ist,


so verbinden wir Gadget Gi wie folgt mit dem Klauselknoten cj :

cj

li ri

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 28/43


D-Ham-Cycle: Reduktion / Klauselknoten (3)

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 29/43


D-Ham-Cycle: Illustration

' = (x1 _ ¬x2 _ ¬x3 ) ^ (¬x1 _ x2 _ x3 ) ^ (x2 _ x3 )

c1
s1

l1 r1
c2
st12

l2 r2
c3
st23

l3 r3

t3

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 30/43


D-Ham-Cycle: Korrektheit (1)

Lemma A: G hat gerichteten Hamiltonkreis ) ' erfüllbar

Wenn ein Klauselknoten cj aus einem Gadget Gi heraus von links


nach rechts durchlaufen wird, so muss nach unserer Konstruktion
die Klausel cj das Literal x̄i enthalten.
Also wird diese Klausel durch die mit der Laufrichtung von links nach
rechts assoziierten Belegung xi = 0 erfüllt.

Wenn ein Klauselknoten cj aus einem Gadget Gi heraus von rechts


nach links durchlaufen wird, so muss nach unserer Konstruktion die
Klausel cj das Literal xi enthalten.
Also wird diese Klausel cj durch die mit der Laufrichtung von rechts
nach links assoziierten Belegung xi = 1 erfüllt.

Also erfüllt die mit der Rundreise assoziierte Wahrheitsbelegung der


Variablen die Formel '.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 31/43


D-Ham-Cycle: Korrektheit (2)

Lemma B: ' erfüllbar ) G hat gerichteten Hamiltonkreis

Eine erfüllende Wahrheitsbelegung der Variablen legt für jedes


Diamantengadget G1 , . . . , Gn fest, ob es von rechts nach links oder
von links nach rechts durchlaufen wird.
Klauselknoten cj können wir in die Rundreise einbauen, indem wir
eine Variable xi auswählen, die cj erfüllt, und cj durch einen kleinen
Abstecher vom Diamantengadget Gi aus besuchen.

cj

li ri

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 32/43


D-Ham-Cycle: Korrektheit (3)

cj

li ri

Wenn cj für xi = 1 erfüllt ist, so ist xi positiv in cj enthalten. Ein


Besuch von cj beim Durchlaufen des Diamantengadgets Gi von
rechts nach links ist möglich.
Wenn cj für xi = 0 erfüllt ist, so ist xi in negierter Form in cj
enthalten. Ein Besuch von cj beim Durchlaufen des
Diamantengadgets Gi von links nach rechts ist möglich.
Also können alle Klauselknoten in die Rundreise eingebunden werden.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 33/43


D-Ham-Cycle: Zusammenfassung

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

' 2 SAT , f (') = hG i 2 D-Ham-Cycle

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 34/43


NP-Vollständigkeit von
Ham-Cycle (ungerichtet)

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 35/43


Ham-Cycle: Definition

Problem: Hamiltonkreis (Ham-Cycle)


Eingabe: Ein ungerichteter Graph G = (V , E )
Frage: Besitzt G einen Hamiltonkreis?

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

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 36/43


Ham-Cycle: Reduktion

Es sei G 0 = (V 0 , A0 ) eine Instanz von D-Ham-Cycle


Der ungerichtete Graph G ensteht aus G 0 durch lokale Ersetzung:

v vin vmid vout

G0 G

Interpretation:
vin ist der Eingangsknoten für vmid
vout ist der Ausgangsknoten für vmid

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 37/43


Ham-Cycle: Korrektheit

G 0 hat gerichteten Hamiltonkreis , G hat Hamiltonkreis

(A) Jeder Hamiltonkreis in G 0 kann o↵ensichtlich in einen Hamiltonkreis


in G transformiert werden.

(B) Wie sieht es mit der Umkehrrichtung aus?


Jeder Hamiltonkreis in G besucht den Knoten vmid zwischen den
beiden Knoten vin und vout
Entweder: vin – vmid – vout Oder: vout – vmid – vin

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.

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 38/43


Ham-Cycle: Übung

Übung
Zeigen Sie: Ham-Cycle p D-Ham-Cycle

Hinweis: Verwenden Sie lokale Ersetzungen

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 39/43


NP-Vollständigkeit des TSP

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 40/43


TSP: Alte und neue Definitionen

Problem: Travelling Salesman Problem (TSP)


Eingabe: Städte 1, . . . , n; Distanzen d(i , j); eine Zahl
Frage: Gibt es eine Rundreise (TSP-Tour) mit Länge höchstens ?

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 ?

Problem: {1, 2}-TSP


Eingabe: Städte 1, . . . , n; symmetrische Distanzen d(i , j) 2 {1, 2};
eine Zahl
Frage: Gibt es eine Rundreise (TSP-Tour) mit Länge höchstens ?

BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 41/43


TSP: Beweis der NP-Schwere
Satz
Die Probleme TSP und -TSP und {1, 2}-TSP sind NP-schwer.

Es genügt zu zeigen, dass {1, 2}-TSP NP-schwer ist.


Wir zeigen: Ham-Cycle p {1, 2}-TSP

Aus einem ungerichteten Graphen G = (V , E ) für Ham-Cycle


konstruieren wir eine entsprechende TSP Instanz.
Jeder Knoten v 2 V wird zu einer Stadt
Der Abstand zwischen Stadt u und Stadt v beträgt

1 falls {u, v } 2 E
d(u, v ) =
2 falls {u, v } 2
/E

Der Graph G hat genau dann einen Hamiltonkreis,


wenn die konstruierte TSP Instanz eine Tour mit Länge  |V | hat.
BuK/WS 2019 VL-15: NP-vollständige Graphprobleme 42/43
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-15: NP-vollständige Graphprobleme 43/43