mirror of
https://github.com/theoleuthardt/hwr-notes.git
synced 2026-06-06 03:21:07 +00:00
403 lines
22 KiB
Markdown
403 lines
22 KiB
Markdown
# Komplexitätstheorie – Vorlesung 1: Zusammenfassung
|
||
**Prof. Dr. Björn Grohmann | HWR Berlin | 18.02.2026**
|
||
|
||
---
|
||
## 1. Turing-Maschinen
|
||
|
||
### Historischer Hintergrund
|
||
|
||
Alan Turing (geboren 23. Juni 1912 in London, gestorben 8. Juni 1954) studierte Mathematik in Cambridge (B.A. 1934) und promovierte an der Princeton University (Ph.D. 1938) mit der Dissertation „Systems of Logic Based on Ordinals". Er entwickelte das Konzept der Turing-Maschine als abstraktes Berechnungsmodell, das bis heute die Grundlage der theoretischen Informatik bildet.
|
||
|
||
### Formale Definition
|
||
|
||
Eine **Turing-Maschine** ist ein 7-Tupel $(Q, \Sigma, \Gamma, \delta, q_0, q_{\text{accept}}, q_{\text{reject}})$, wobei $Q$, $\Sigma$ und $\Gamma$ endliche Mengen sind:
|
||
|
||
1. $Q$ ist die **Zustandsmenge** (set of states).
|
||
2. $\Sigma$ ist das **Eingabealphabet**, das das Blanksymbol $\sqcup$ nicht enthält.
|
||
3. $\Gamma$ ist das **Bandalphabet**, wobei $\sqcup \in \Gamma$ und $\Sigma \subseteq \Gamma$.
|
||
4. $\delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \{L, R\}$ ist die **Übergangsfunktion** (transition function).
|
||
5. $q_0 \in Q$ ist der **Startzustand** (start state).
|
||
6. $q_{\text{accept}} \in Q$ ist der **Akzeptierzustand** (accept state).
|
||
7. $q_{\text{reject}} \in Q$ ist der **Ablehnungszustand** (reject state), wobei $q_{\text{reject}} \neq q_{\text{accept}}$.
|
||
|
||
Die Turing-Maschine besteht aus einer endlichen Steuerung (control) und einem **unendlich langen Band**, auf dem Symbole gelesen und geschrieben werden.
|
||
|
||
### Konfiguration
|
||
|
||
Eine **Konfiguration** beschreibt den vollständigen Zustand einer TM zu einem Zeitpunkt: Sie umfasst den aktuellen Zustand, den Bandinhalt und die Position des Lese-/Schreibkopfes. Beispiel: Die Konfiguration $1011q_701111$ bedeutet, dass sich die Maschine im Zustand $q_7$ befindet und der Kopf auf dem Zeichen unmittelbar rechts von $q_7$ steht.
|
||
|
||
### Beispiel: Sprache $B = \{w\#w \mid w \in \{0,1\}^*\}$
|
||
|
||
Diese Sprache besteht aus allen Wörtern, die aus zwei identischen Hälften bestehen, getrennt durch ein #-Zeichen. Die TM arbeitet wie folgt:
|
||
|
||
- Das erste Zeichen der linken Hälfte wird gelesen, durch $x$ ersetzt und gemerkt (Zustand $q_1$).
|
||
- Der Kopf wandert nach rechts über das #-Zeichen zum entsprechenden Zeichen der rechten Hälfte.
|
||
- Stimmt das Zeichen überein, wird es ebenfalls durch $x$ ersetzt; der Kopf wandert zurück zum nächsten unmarkierten Zeichen links.
|
||
- Dieser Prozess wiederholt sich, bis alle Zeichen abgeglichen sind.
|
||
- Wenn am Ende nur $x$-Symbole und ein # auf dem Band stehen und ein Blank erreicht wird → **accept**.
|
||
- Bei jedem Mismatch → **reject**.
|
||
|
||
Das Zustandsdiagramm umfasst die Zustände $q_1$ bis $q_8$ sowie $q_{\text{accept}}$ (und implizite reject-Pfade, die im Diagramm der Vorlesung weggelassen wurden).
|
||
|
||
### Church-Turing-These
|
||
|
||
> „Jede effektiv berechenbare Funktion kann durch eine Turing-Maschine berechnet werden."
|
||
|
||
Dies ist keine mathematisch beweisbare Aussage, sondern eine **These** (Hypothese). Sie wird gestützt durch die Tatsache, dass alle bekannten Berechnungsmodelle (WHILE-Programme, GOTO-Programme, Lambda-Kalkül, Rule 110 Zellularautomaten etc.) äquivalent zur Turing-Maschine sind.
|
||
|
||
---
|
||
|
||
## 2. Äquivalente Berechnungsmodelle
|
||
|
||
### WHILE-Programme
|
||
|
||
WHILE-Programme sind ein einfaches Berechnungsmodell mit folgender Syntax:
|
||
|
||
- $P \rightarrow X := X + C$ (Inkrement)
|
||
- $\mid\quad X := X - C$ (Dekrement, wobei das Ergebnis nicht negativ wird)
|
||
- $\mid\quad P;\; P$ (Sequenz)
|
||
- $\mid\quad \text{WHILE } X \neq 0 \text{ DO } P \text{ END}$ (Schleife)
|
||
|
||
WHILE-Programme sind **Turing-vollständig**, d.h. sie können genau die gleichen Funktionen berechnen wie eine Turing-Maschine.
|
||
|
||
### GOTO-Programme
|
||
|
||
GOTO-Programme bestehen aus nummerierten Anweisungen $M_1: A_1;\; M_2: A_2;\; \ldots;\; M_k: A_k$ mit den Operationen:
|
||
|
||
- $x_i := x_j + n$ (Addition einer Konstante)
|
||
- $x_i := x_j - n$ (Subtraktion einer Konstante)
|
||
- $\text{GOTO } M_i$ (unbedingter Sprung)
|
||
- $\text{IF } x_i = n \text{ GOTO } M_j$ (bedingter Sprung)
|
||
- $\text{HALT}$ (Programmende)
|
||
|
||
Auch GOTO-Programme sind äquivalent zu Turing-Maschinen.
|
||
|
||
### Rule 110 (Zellularautomat)
|
||
|
||
Rule 110 ist ein eindimensionaler Zellularautomat, dessen Übergangsregel durch die Binärdarstellung der Zahl 110 (01101110) definiert wird. Jede Zelle wird basierend auf ihrem eigenen Zustand und den Zuständen ihrer beiden Nachbarn aktualisiert. Es wurde bewiesen, dass Rule 110 **Turing-vollständig** ist – ein einfacher Zellularautomat kann also universelle Berechnungen durchführen.
|
||
|
||
---
|
||
|
||
## 3. Varianten von Turing-Maschinen
|
||
|
||
### Multitape Turing Machine (Mehrband-TM)
|
||
|
||
Die Übergangsfunktion einer $k$-Band-TM hat die Form:
|
||
|
||
$$\delta: Q \times \Gamma^k \rightarrow Q \times \Gamma^k \times \{L, R, S\}^k$$
|
||
|
||
Die Maschine verfügt über $k$ separate Bänder mit eigenen Köpfen (Input-Tape mit Read-Only-Head, Work-Tape und Output-Tape mit Read/Write-Heads).
|
||
|
||
**Theorem:** Jede Multitape-TM hat eine äquivalente Single-Tape-TM. Die Simulation erfolgt, indem alle Bänder auf einem einzigen Band kodiert werden (getrennt durch #-Symbole), wobei die Kopfpositionen durch markierte Symbole (z.B. Punkte über den Zeichen) dargestellt werden.
|
||
|
||
### Universelle Turing-Maschine (UTM)
|
||
|
||
Es existiert eine TM $\mathcal{U}$, die für jede Eingabe $x, \alpha \in \{0,1\}^*$ das Ergebnis $\mathcal{U}(x, \alpha) = M_\alpha(x)$ berechnet, wobei $M_\alpha$ die durch die **Gödelnummer** $\alpha$ kodierte Turing-Maschine ist.
|
||
|
||
Die UTM nutzt mehrere Arbeitsbänder: ein Input-Tape, Work-Tapes (Simulation des Arbeitsbandes von $M$, Beschreibung von $M$, aktueller Zustand von $M$) und ein Output-Tape.
|
||
|
||
**Simulationsoverhead:** Wenn $M_\alpha$ in $T$ Schritten hält, so hält $\mathcal{U}(x, \alpha)$ in $O(CT \log T)$ Schritten, wobei $C$ eine Konstante ist, die nur von der Alphabetgröße, Bandanzahl und Zustandsanzahl von $M_\alpha$ abhängt.
|
||
|
||
### Nichtdeterministische Turing-Maschine (NTM)
|
||
|
||
Die Übergangsfunktion einer NTM hat die Form:
|
||
|
||
$$\delta: Q \times \Gamma \rightarrow \mathcal{P}(Q \times \Gamma \times \{L, R\})$$
|
||
|
||
Statt eines einzigen Nachfolgezustands gibt es eine **Menge** möglicher Übergänge. Die NTM kann als Maschine mit drei Bändern simuliert werden: Input-Tape, Simulation-Tape und Address-Tape (das die nichtdeterministischen Entscheidungen kodiert).
|
||
|
||
**Theorem:** Jede NTM hat eine äquivalente DTM. Jede $t(n)$-Zeit-NTM (mit $t(n) \geq n$) kann durch eine deterministische TM in Zeit $2^{O(t(n))}$ simuliert werden — also mit **exponentiellem Zeitverlust**.
|
||
|
||
**Akzeptanzkriterium:** Eine NTM akzeptiert eine Eingabe, wenn **mindestens ein** Berechnungspfad akzeptiert. Sie lehnt ab, wenn **alle** Pfade ablehnen.
|
||
|
||
---
|
||
|
||
## 4. Laufzeit und Zeitkomplexität
|
||
|
||
### Running Time (deterministisch)
|
||
|
||
Sei $M$ eine deterministische TM, die auf allen Eingaben hält. Die **Laufzeit** (running time / time complexity) von $M$ ist die Funktion $f: \mathbb{N} \rightarrow \mathbb{N}$, wobei $f(n)$ die **maximale Anzahl von Schritten** ist, die $M$ auf einer Eingabe der Länge $n$ benötigt. Man sagt: „$M$ läuft in Zeit $f(n)$" oder „$M$ ist eine $f(n)$-Zeit-Turing-Maschine."
|
||
|
||
### Running Time (nichtdeterministisch)
|
||
|
||
Sei $N$ eine nichtdeterministische TM, die ein Entscheider ist. Die **Laufzeit** von $N$ ist die Funktion $f: \mathbb{N} \rightarrow \mathbb{N}$, wobei $f(n)$ die **maximale Anzahl von Schritten** ist, die $N$ auf **irgendeinem Zweig** ihrer Berechnung bei einer Eingabe der Länge $n$ benötigt.
|
||
|
||
### Time Constructibility
|
||
|
||
Eine Funktion $t: \mathbb{N} \rightarrow \mathbb{N}$ mit $t(n) \geq O(n \log n)$ heißt **zeitkonstruierbar** (time constructible), wenn die Funktion, die den String $1^n$ auf die Binärdarstellung von $t(n)$ abbildet, in Zeit $O(t(n))$ berechenbar ist.
|
||
|
||
Es gibt auch eine alternative Definition, bei der lediglich $t(n) \geq n$ gefordert wird.
|
||
|
||
Typische zeitkonstruierbare Funktionen sind z.B. $n$, $n \log n$, $n^2$, $2^n$.
|
||
|
||
### Overhead-Resultate (Simulationskosten)
|
||
|
||
| Transformation | Zeitoverhead |
|
||
|---|---|
|
||
| **Alphabetreduktion** (beliebiges Alphabet → $\{0,1,\sqcup,\triangleright\}$) | $4 \log |\Gamma| \cdot T(n)$ |
|
||
| **Tape-Reduktion** ($k$ Bänder → 1 Band) | $5k \cdot T(n)^2$ |
|
||
| **Bidirektionale TM → Unidirektionale TM** | $4 \cdot T(n)$ |
|
||
|
||
### Zeitkomplexitätsklasse TIME
|
||
|
||
Sei $t: \mathbb{N} \rightarrow \mathbb{R}^+$ eine Funktion. Die **Zeitkomplexitätsklasse** $\text{TIME}(t(n))$ ist die Menge aller Sprachen, die von einer $O(t(n))$-Zeit-Turing-Maschine entschieden werden können.
|
||
|
||
---
|
||
|
||
## 5. Entscheidbarkeit
|
||
|
||
### Turing-erkennbar (rekursiv aufzählbar / semi-entscheidbar)
|
||
|
||
Eine Sprache heißt **Turing-erkennbar** (Turing-recognizable), wenn es eine TM gibt, die sie erkennt. Das bedeutet:
|
||
|
||
- Für $w \in L$: Die TM akzeptiert.
|
||
- Für $w \notin L$: Die TM lehnt ab **oder hält nicht** (läuft unendlich lange).
|
||
|
||
### Turing-entscheidbar (rekursiv / entscheidbar)
|
||
|
||
Eine Sprache heißt **Turing-entscheidbar** (Turing-decidable), wenn es eine TM gibt, die sie entscheidet. Das bedeutet:
|
||
|
||
- Für $w \in L$: Die TM akzeptiert.
|
||
- Für $w \notin L$: Die TM lehnt ab.
|
||
- Die TM **hält immer** (auf jeder Eingabe).
|
||
|
||
### Zusammenhang
|
||
|
||
**Theorem:** Eine Sprache ist entscheidbar **genau dann, wenn** sie sowohl Turing-erkennbar als auch co-Turing-erkennbar ist.
|
||
|
||
Beweisskizze: Man lässt die TM $M_1$ (für $L$) und $M_2$ (für $\overline{L}$) parallel auf der Eingabe $w$ laufen. Wenn $M_1$ akzeptiert → accept; wenn $M_2$ akzeptiert → reject. Da eine der beiden Maschinen für jede Eingabe irgendwann akzeptiert, hält das Verfahren immer.
|
||
|
||
---
|
||
|
||
## 6. Das Halteproblem
|
||
|
||
### $A_{\text{TM}}$ – Die Akzeptanzsprache
|
||
|
||
$$A_{\text{TM}} = \{\langle M, w \rangle \mid M \text{ ist eine TM und } M \text{ akzeptiert } w\}$$
|
||
|
||
$A_{\text{TM}}$ ist **semi-entscheidbar** (Turing-erkennbar): Man simuliert $M$ auf $w$. Wenn $M$ akzeptiert → accept; wenn $M$ ablehnt → reject. Problem: Wenn $M$ nicht hält, hält auch der Simulator nicht.
|
||
|
||
**Theorem:** $A_{\text{TM}}$ ist **unentscheidbar**.
|
||
|
||
### $HALT_{\text{TM}}$ – Das Halteproblem
|
||
|
||
$$HALT_{\text{TM}} = \{\langle M, w \rangle \mid M \text{ ist eine TM und } M \text{ hält auf Eingabe } w\}$$
|
||
|
||
**Theorem:** $HALT_{\text{TM}}$ ist **unentscheidbar**.
|
||
|
||
### Beweis per Diagonalisierung
|
||
|
||
Der Beweis der Unentscheidbarkeit von $A_{\text{TM}}$ verwendet ein **Diagonalisierungsargument** (Widerspruchsbeweis):
|
||
|
||
1. Angenommen, es gibt einen Entscheider $H$ für $A_{\text{TM}}$.
|
||
2. Konstruiere daraus eine Maschine $D$, die bei Eingabe $\langle M \rangle$ die Maschine $H$ auf $\langle M, \langle M \rangle \rangle$ simuliert und das Ergebnis **invertiert**.
|
||
3. Was passiert bei $D(\langle D \rangle)$?
|
||
- Falls $D$ akzeptiert → $H$ sagt "$D$ akzeptiert $\langle D \rangle$" → $D$ sollte ablehnen. **Widerspruch!**
|
||
- Falls $D$ ablehnt → $H$ sagt "$D$ akzeptiert $\langle D \rangle$ nicht" → $D$ sollte akzeptieren. **Widerspruch!**
|
||
4. Also kann $H$ nicht existieren.
|
||
|
||
Das Diagonalisierungsargument funktioniert über eine Matrix: Die Zeilen sind Turing-Maschinen $T_1, T_2, T_3, \ldots$, die Spalten sind Eingaben $i_1, i_2, i_3, \ldots$, und die Einträge (0 oder 1) zeigen, ob $T_i$ die Eingabe $i_j$ akzeptiert. Die Maschine $D$ invertiert die Diagonale — und erzeugt so den Widerspruch, da $D$ als Zeile in der Matrix selbst vorkommen müsste.
|
||
|
||
---
|
||
|
||
## 7. Weitere unentscheidbare Probleme
|
||
|
||
### Postsches Korrespondenzproblem (PCP)
|
||
|
||
**Gegeben:** Eine endliche Folge von Wortpaaren $(x_1, y_1), \ldots, (x_k, y_k)$ mit $x_i, y_i \in \{0,1\}^+$ (dargestellt als Dominos mit oberer und unterer Hälfte).
|
||
|
||
**Gefragt:** Gibt es eine endliche Folge von Indizes $i_1, \ldots, i_n \in \{1, \ldots, k\}$, sodass $x_{i_1} \ldots x_{i_n} = y_{i_1} \ldots y_{i_n}$? (Können Kopien der Dominos so aneinandergelegt werden, dass oben und unten das gleiche Wort steht?)
|
||
|
||
Das PCP ist **unentscheidbar**, aber immerhin **semi-entscheidbar** (man kann systematisch alle Kombinationen durchprobieren).
|
||
|
||
Benannt nach **Emil Leon Post** (1897–1957).
|
||
|
||
### Hilberts 10. Problem
|
||
|
||
David Hilbert formulierte 1900 die Frage: Gibt es ein Verfahren, mit dem man für eine beliebige diophantische Gleichung (Polynomgleichung mit ganzzahligen Koeffizienten) entscheiden kann, ob sie eine ganzzahlige Lösung hat?
|
||
|
||
**Antwort (1970, Matijassewitsch):** Nein — dieses Problem ist **unentscheidbar**.
|
||
|
||
### Probleme der Prädikatenlogik
|
||
|
||
| Problem | Frage | Status |
|
||
|---|---|---|
|
||
| **Erfüllbarkeitsproblem** | Ist ein prädikatenlogischer Ausdruck $A$ über Signatur $S$ erfüllbar? | semi-entscheidbar, unentscheidbar |
|
||
| **Gültigkeitsproblem** | Ist $A$ allgemeingültig? | semi-entscheidbar, unentscheidbar |
|
||
| **Unerfüllbarkeitsproblem** | Ist $A$ unerfüllbar? | semi-entscheidbar, unentscheidbar |
|
||
|
||
Das Erfüllbarkeitsproblem und das Gültigkeitsproblem sind jeweils **semi-entscheidbar**. Das Unerfüllbarkeitsproblem ist ebenfalls semi-entscheidbar (da es das Komplement des Gültigkeitsproblems ist).
|
||
|
||
### Weitere unentscheidbare Sprachen über TMs
|
||
|
||
| Sprache | Definition | Semi-entscheidbar? |
|
||
|---|---|---|
|
||
| $E_{\text{TM}}$ | $\{\langle M \rangle \mid M \text{ ist TM und } L(M) = \emptyset\}$ | Nein (co-Turing-erkennbar) |
|
||
| $EQ_{\text{TM}}$ | $\{\langle M_1, M_2 \rangle \mid L(M_1) = L(M_2)\}$ | Nein |
|
||
| $REGULAR_{\text{TM}}$ | $\{\langle M \rangle \mid L(M) \text{ ist regulär}\}$ | Nein |
|
||
| $MIN_{\text{TM}}$ | $\{\langle M \rangle \mid M \text{ ist eine minimale TM}\}$ | **Nicht einmal semi-entscheidbar** |
|
||
|
||
$MIN_{\text{TM}}$ enthält die Beschreibungen aller TMs, für die es keine kürzere äquivalente TM gibt.
|
||
|
||
---
|
||
|
||
## 8. Die Klasse P
|
||
|
||
### Definition
|
||
|
||
$$\text{P} = \bigcup_k \text{TIME}(n^k)$$
|
||
|
||
**P** ist die Klasse aller Sprachen, die in **polynomieller Zeit** auf einer **deterministischen** Single-Tape-Turing-Maschine entscheidbar sind.
|
||
|
||
### Beispiele: Welche Mengen liegen in P?
|
||
|
||
| Menge | In P? | Begründung |
|
||
|---|---|---|
|
||
| $\mathbb{N} = \{1, 2, 3, \ldots\}$ | Ja | Trivial entscheidbar (jede natürliche Zahl akzeptieren) |
|
||
| $2\mathbb{N} = \{2, 4, 6, \ldots\}$ | Ja | Letztes Bit prüfen (gerade Zahl) |
|
||
| $\mathbb{P}$ (Primzahlen) | Ja | AKS-Algorithmus (2002) läuft in Polynomialzeit |
|
||
| $\{p + q \mid p, q \in \mathbb{P}\}$ (Summen von Primzahlen) | Ja | Alle Zerlegungen $p + q = n$ durchprobieren, jeweils Primzahltest |
|
||
| $\{p \cdot q \mid p, q \in \mathbb{P}\}$ (Produkte von Primzahlen) | Ja | Faktorisierung in Polynomialzeit prüfbar (Probedivision genügt, da nur Zerlegung in zwei Primfaktoren gefragt) |
|
||
|
||
---
|
||
|
||
## 9. Die Klasse NP
|
||
|
||
### Verifier-basierte Definition
|
||
|
||
Ein **Verifier** für eine Sprache $A$ ist ein Algorithmus $V$, sodass:
|
||
|
||
$$A = \{w \mid V \text{ akzeptiert } \langle w, c \rangle \text{ für ein Zertifikat } c\}$$
|
||
|
||
Ein **polynomieller Verifier** läuft in polynomieller Zeit **bezogen auf die Länge von $w$** (nicht von $c$).
|
||
|
||
Eine Sprache $A$ ist **polynomiell verifizierbar**, wenn sie einen polynomiellen Verifier hat.
|
||
|
||
### Definition von NP
|
||
|
||
$$\text{NP} = \text{die Klasse aller Sprachen mit polynomiellen Verifizierern}$$
|
||
|
||
**Äquivalente Definition über NTMs:**
|
||
|
||
**Theorem:** Eine Sprache ist in NP genau dann, wenn sie von einer **nichtdeterministischen polynomialzeit-TM** entschieden wird.
|
||
|
||
$$\text{NP} = \bigcup_k \text{NTIME}(n^k)$$
|
||
|
||
### Kernunterschied P vs. NP
|
||
|
||
- **P** = Klasse der Sprachen, deren Mitgliedschaft schnell **entschieden** werden kann.
|
||
- **NP** = Klasse der Sprachen, deren Mitgliedschaft schnell **verifiziert** werden kann (gegeben ein passendes Zertifikat).
|
||
|
||
### Beispiele: Welche Mengen liegen in NP?
|
||
|
||
| Menge | In NP? | Begründung |
|
||
|---|---|---|
|
||
| $\{p + q \mid p, q \in \mathbb{P}\}$ | Ja | Zertifikat: die beiden Primzahlen $p, q$; Verifikation: Summe prüfen + Primzahltests |
|
||
| $\{p \cdot q \mid p, q \in \mathbb{P}\}$ | Ja | Zertifikat: die beiden Primfaktoren; Verifikation: Produkt prüfen + Primzahltests |
|
||
| $\{n \in \mathbb{N} \mid n \neq p \cdot q, \; p,q \in \mathbb{P}\}$ (Primzahlen) | Ja | Zertifikat: $n$ selbst (bzw. AKS-Test); da $\mathbb{P} \in \text{P} \subseteq \text{NP}$ |
|
||
| $\text{SAT}$ (erfüllbare Boolesche Formeln) | Ja | Zertifikat: eine erfüllende Belegung; Verifikation: Formel auswerten |
|
||
| $\text{UNSAT}$ (unerfüllbare Boolesche Formeln) | Unklar | Kein offensichtliches kurzes Zertifikat; vermutlich nicht in NP (liegt in co-NP) |
|
||
|
||
---
|
||
|
||
## 10. P vs. NP
|
||
|
||
### Die offene Frage
|
||
|
||
Es ist unbekannt, ob $\text{P} = \text{NP}$ oder $\text{P} \subsetneq \text{NP}$ gilt.
|
||
|
||
- Falls $\text{P} = \text{NP}$: Jedes Problem, dessen Lösung effizient überprüfbar ist, wäre auch effizient lösbar.
|
||
- Falls $\text{P} \neq \text{NP}$: Es gibt Probleme, die effizient überprüfbar, aber nicht effizient lösbar sind.
|
||
|
||
Die meisten Informatiker vermuten $\text{P} \neq \text{NP}$.
|
||
|
||
### Millennium-Problem
|
||
|
||
Das P-vs-NP-Problem ist eines der sieben **Millennium-Probleme** des Clay Mathematics Institute, ausgelobt im Jahr 2000, mit einem Preisgeld von **1 Million US-Dollar** für eine Lösung. Von den sieben Problemen wurde bisher nur die **Poincaré-Vermutung** gelöst (Perelman, 2003).
|
||
|
||
---
|
||
|
||
## 11. NP-Vollständigkeit und Reduktionen
|
||
|
||
### Polynomialzeit-berechenbare Funktion
|
||
|
||
Eine Funktion $f: \Sigma^* \rightarrow \Sigma^*$ heißt **polynomialzeit-berechenbar** (polynomial time computable function), wenn eine polynomialzeit-TM $M$ existiert, die bei Eingabe $w$ mit $f(w)$ auf dem Band hält.
|
||
|
||
### Polynomialzeit-Reduktion
|
||
|
||
Eine Sprache $A$ ist **polynomialzeit-reduzierbar** auf Sprache $B$ (geschrieben $A \leq_P B$), wenn eine polynomialzeit-berechenbare Funktion $f: \Sigma^* \rightarrow \Sigma^*$ existiert, sodass für alle $w$ gilt:
|
||
|
||
$$w \in A \iff f(w) \in B$$
|
||
|
||
Die Funktion $f$ heißt **Polynomialzeit-Reduktion** von $A$ auf $B$.
|
||
|
||
Intuition: Wenn $A \leq_P B$, dann ist $B$ **mindestens so schwer** wie $A$. Wenn ich $B$ lösen kann, kann ich auch $A$ lösen (indem ich erst $f$ anwende und dann den Algorithmus für $B$ benutze).
|
||
|
||
### NP-Vollständigkeit (NP-completeness)
|
||
|
||
Eine Sprache $B$ ist **NP-vollständig**, wenn zwei Bedingungen erfüllt sind:
|
||
|
||
1. $B \in \text{NP}$ (das Problem liegt in NP), **und**
|
||
2. Jede Sprache $A \in \text{NP}$ ist polynomialzeit-reduzierbar auf $B$ (d.h. $A \leq_P B$ für alle $A \in \text{NP}$).
|
||
|
||
### NP-hard (NP-schwer)
|
||
|
||
Wenn $B$ nur die **zweite Bedingung** erfüllt (jedes Problem aus NP ist auf $B$ reduzierbar), aber $B$ nicht notwendigerweise selbst in NP liegt, heißt $B$ **NP-hard**.
|
||
|
||
### Beziehung im Venn-Diagramm
|
||
|
||
- $\text{P} \subseteq \text{NP} \subseteq \text{NP-hard}$ (als Inklusionskette)
|
||
- $\text{NP-complete} = \text{NP} \cap \text{NP-hard}$ (die Schnittmenge)
|
||
|
||
Wenn man ein NP-hardes Problem effizient lösen könnte, könnte man damit **jedes** Problem in NP effizient lösen.
|
||
|
||
### Cook-Levin-Theorem
|
||
|
||
**Theorem (Cook 1971, Levin 1973):** $\text{SAT}$ ist **NP-vollständig**.
|
||
|
||
$$\text{SAT} = \{\langle \phi \rangle \mid \phi \text{ ist eine erfüllbare Boolesche Formel}\}$$
|
||
|
||
**Konsequenz:** $\text{SAT} \in \text{P} \iff \text{P} = \text{NP}$.
|
||
|
||
Das Cook-Levin-Theorem war das erste Resultat, das die Existenz NP-vollständiger Probleme nachwies. Es zeigt: SAT ist das „universelle" Problem in NP — wenn man SAT in Polynomialzeit lösen könnte, wären alle NP-Probleme in Polynomialzeit lösbar.
|
||
|
||
---
|
||
|
||
## 12. Die Landschaft der Komplexitätsklassen (Überblick)
|
||
|
||
Die Vorlesung zeigte das „Landscape of Computational Complexity" (University at Buffalo, 2008), das die Hierarchie der Komplexitätsklassen visualisiert:
|
||
|
||
- **REG** ⊂ **L** ⊂ **NL** ⊂ **P** ⊂ **NP** ⊂ **PSPACE** ⊂ **EXP** ⊂ **NEXP** ⊂ **EXPSPACE**
|
||
- Auf der anderen Seite die **Arithmetische Hierarchie**: REC ⊂ RE, co-RE, und darüber TOT und höhere Stufen
|
||
- **Complexity Zoo**: Eine Sammlung von über 545 Komplexitätsklassen (gepflegt von Scott Aaronson u.a.)
|
||
|
||
Wichtige offene Fragen umfassen unter anderem: P ≠ NP, L ≠ NL, NP ≠ co-NP, P ≠ PSPACE, und viele weitere Separierungen.
|
||
|
||
---
|
||
|
||
## Glossar der wichtigsten Begriffe
|
||
|
||
| Begriff | Definition |
|
||
|---|---|
|
||
| **Turing-Maschine (TM)** | Abstraktes Berechnungsmodell mit unendlichem Band, endlicher Steuerung und Lese-/Schreibkopf |
|
||
| **Konfiguration** | Momentaufnahme einer TM: Zustand + Bandinhalt + Kopfposition |
|
||
| **Church-Turing-These** | Jede effektiv berechenbare Funktion ist Turing-berechenbar |
|
||
| **Multitape TM** | TM mit mehreren Bändern; äquivalent zur Single-Tape TM |
|
||
| **Universelle TM** | TM, die jede andere TM simulieren kann (über deren Gödelnummer) |
|
||
| **Gödelnummer** | Binäre Kodierung einer Turing-Maschine |
|
||
| **NTM** | Nichtdeterministische TM; Übergangsfunktion liefert Menge von Möglichkeiten |
|
||
| **Zeitkomplexität** | Maximale Schrittzahl einer TM auf Eingaben der Länge $n$ |
|
||
| **Time constructible** | Funktion $t(n)$, deren Wert in $O(t(n))$ Schritten berechnet werden kann |
|
||
| **Turing-erkennbar** | TM akzeptiert alle $w \in L$, kann aber auf $w \notin L$ endlos laufen |
|
||
| **Turing-entscheidbar** | TM akzeptiert alle $w \in L$ und lehnt alle $w \notin L$ ab (hält immer) |
|
||
| **Halteproblem** | Frage, ob eine TM auf einer Eingabe hält; unentscheidbar |
|
||
| **Diagonalisierung** | Beweistechnik: Konstruktion eines Widerspruchs durch Selbstreferenz |
|
||
| **PCP** | Postsches Korrespondenzproblem; unentscheidbar, aber semi-entscheidbar |
|
||
| **P** | Klasse der in Polynomialzeit deterministisch entscheidbaren Sprachen |
|
||
| **NP** | Klasse der in Polynomialzeit verifizierbaren Sprachen |
|
||
| **Verifier** | Algorithmus, der bei Eingabe $(w, c)$ die Mitgliedschaft von $w$ in $L$ prüft |
|
||
| **Polynomialzeit-Reduktion** | Transformation $A \leq_P B$: $w \in A \iff f(w) \in B$ mit $f$ in Polynomialzeit |
|
||
| **NP-vollständig** | In NP + jedes NP-Problem ist darauf reduzierbar |
|
||
| **NP-hard** | Jedes NP-Problem ist darauf reduzierbar (muss nicht selbst in NP sein) |
|
||
| **SAT** | Erfüllbarkeitsproblem für Boolesche Formeln; erstes nachgewiesenes NP-vollständiges Problem |
|
||
| **Cook-Levin-Theorem** | SAT ist NP-vollständig; SAT ∈ P ⟺ P = NP |
|