\documentclass[11pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath,amssymb,amsthm,mathtools}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\usepackage[margin=2.5cm]{geometry}
\usepackage{alltt}
\usepackage{array}

% =====================================================================
% 1:1-Transkription der Kapitel 6 und 7 des Vorlesungsskripts
% "Einführung in die Komplexitätstheorie" / "Approximative Algorithmen"
%
% Hinweis: Text, Formeln, Sätze und Beweise sind vollständig übernommen.
% Die Abbildungen sind in TikZ nachgebaut; sehr komplexe Abbildungen
% (Hamiltonkreis-Komponenten, 3-dim-Matching-Rad etc.) sind als
% kommentierte Platzhalter markiert.
% =====================================================================

% Gemeinsamer Zähler für alle Umgebungen wie im Original
\theoremstyle{plain}
\newtheorem{satz}{Satz}[chapter]
\newtheorem{lemma}[satz]{Lemma}
\newtheorem{korollar}[satz]{Korollar}
\theoremstyle{definition}
\newtheorem{definition}[satz]{Definition}
\newtheorem{beispiel}[satz]{Beispiel}
\newtheorem{uebung}[satz]{\"Ubung}
\theoremstyle{remark}
\newtheorem{bemerkung}[satz]{Bemerkung}

\newcommand{\OPT}{\mathrm{OPT}}
\newcommand{\true}{\mathit{true}}
\newcommand{\false}{\mathit{false}}
\newcommand{\NP}{\mathrm{NP}}
\newcommand{\PP}{\mathrm{P}}

\newcommand{\abbtext}[1]{\fbox{\parbox{0.9\textwidth}{\small\emph{Abbildung:} #1}}}

\begin{document}

\setcounter{chapter}{5}
\setcounter{page}{200}

\chapter{Einf\"uhrung in die Komplexit\"atstheorie}

In den vorherigen Kapiteln haben wir bereits einige theoretische Probleme
kennengelernt. Wir haben insbesondere gesehen, dass sich einige Probleme
schneller l\"osen (bzw.\ approximieren) lassen als andere. Au\ss erdem scheint
es Probleme zu geben, bei denen man schnell den Mut verliert, eine exakte
L\"osung in Polynomialzeit zu berechnen. Diese Probleme scheinen schwerer zu
sein als andere. Was ist die Schwere eines Problems? Die
Komplexit\"atstheorie befasst sich noch weitergehend mit der Frage nach der
Komplexit\"at von Problemen, d.h.\ man versucht zu klassifizieren wie schwer
Probleme sind.

In diesem Kapitel werden wir die Komplexit\"atsklassen $\PP$ und $\NP$
einf\"uhren und wollen dann die Begriffe der $\NP$-Schwere und
$\NP$-Vollst\"andigkeit verstehen. Im Anschluss werden wir einige Beispiele
$\NP$-vollst\"andiger Probleme studieren.

\section{Einleitung: Cliquenproblem}

Als erstes Beispiel betrachten wir das sogenannte Cliquenproblem auf Graphen.
Eine \emph{Clique} ist eine Teilmenge $C \subseteq V$, wobei
$\{u,v\} \in E$ f\"ur alle $u,v \in C$ mit $u \neq v$. Das Cliquenproblem
k\"onnen wir nun wie folgt angeben:

\begin{description}
  \item[Gegeben:] Ein ungerichteter Graph $G=(V,E)$ und eine Zahl $k \geq 1$.
  \item[Entscheide:] Hat der Graph $G$ eine Clique $C \subseteq V$ mit
    mindestens $k$ Knoten (d.h.\ mit $|C| \geq k$)?
\end{description}

Dies ist ein sogenanntes \emph{Entscheidungsproblem}, welches also als
Antwort Ja oder Nein gibt.

\begin{beispiel}
Man betrachte den folgenden Graphen $G=(V,E)$ mit $V=\{1,2,3,4,5\}$ und
$E=\{\{1,2\},\{1,3\},\{2,3\},\{3,4\},\{3,5\}\}$:

\begin{center}
\abbtext{Graph mit den Knoten $1,\dots,5$: die Knoten $1,2,3$ bilden ein Dreieck; die Knoten $4$ und $5$ h\"angen jeweils nur an Knoten $3$.}
\end{center}

Hier ist $C=\{1,2,3\}$ eine Clique der Gr\"o\ss e 3, aber $C=\{2,3,4\}$ ist
keine Clique.
\end{beispiel}

Offensichtlich l\"ost der folgende Algorithmus das Problem exakt:

\begin{quote}
\textbf{Algorithmus:}\\
Teste f\"ur alle $V' \subseteq V$ mit $|V'| = k$, ob $V'$ eine Clique bildet.
\end{quote}

Wir bezeichnen mit $T(G,k)$ seine Laufzeit f\"ur eine Eingabe $(G,k)$.

\begin{lemma}
Der obige Algorithmus hat im schlimmsten Fall mindestens exponentielle
Laufzeit; d.h.\ $T(G,k) \geq 2^{|V|/2}$ f\"ur $k = |V|/2$.
\end{lemma}

\begin{proof}
F\"ur $|V| = n$, $k = n/2$ und $n$ gerade: Der Test f\"ur jedes $V'$
erfordert $\Omega(k^2)$ Schritte. Es gibt $\binom{n}{k}$ viele
$k$-elementige Teilmengen. Dann erhalten wir hier mit
\[
\binom{n}{n/2} = \frac{n(n-1)\cdots(n/2+1)}{n/2\,(n/2-1)\cdots 1} \geq 2^{n/2}
\]
mindestens eine exponentielle Laufzeit.
\end{proof}

\textbf{Frage:} Gibt es schnellere (bzw.\ insbesondere polynomielle)
Algorithmen?

\begin{definition}\leavevmode
\begin{enumerate}
  \item[(i)] Ein \emph{Alphabet} $\Sigma$ ist eine endliche Menge an
    Symbolen. $\Sigma^{*}$ ist die Menge aller endlichen W\"orter \"uber
    $\Sigma$.
  \item[(ii)] F\"ur jedes $x \in \Sigma^{*}$ bezeichne $|x|$ die L\"ange von
    $x$.
\end{enumerate}
\end{definition}

\begin{bemerkung}
Jeder Algorithmus arbeitet auf einem Alphabet (d.h.\ seine Eingaben und
Ausgaben sind Elemente aus $\Sigma^{*}$). F\"ur einen Algorithmus $A$
bezeichnet $A(x)$ die Ausgabe zur Eingabe $x \in \Sigma^{*}$.

Die Laufzeit eines Algorithmus $A$ zur Eingabe $x$ (gegeben durch die Anzahl
der ausgef\"uhrten Operationen) wird durch $T_A(x)$ bezeichnet. Die
Worst-Case-Laufzeit zu Eingaben der Gr\"o\ss e $n$ ist
\[
T_A(n) = \max\{T_A(x) \mid x \in \Sigma^{*}, |x| = n\}.
\]
\end{bemerkung}

\begin{definition}\leavevmode
\begin{enumerate}
  \item[(i)] Eine Teilmenge $L \subseteq \Sigma^{*}$ hei\ss t
    \emph{Sprache}.
  \item[(ii)] Ein \emph{Entscheidungsproblem} ist ein Tripel $(L,U,\Sigma)$,
    wobei $L,U$ Sprachen sind und $L \subseteq U$.
  \item[(iii)] Ein Algorithmus $A$ \emph{l\"ost} das Entscheidungsproblem
    $(L,U,\Sigma)$ (oder auch $A$ \emph{entscheidet} die Sprache $L$
    bez\"uglich $U$), wenn f\"ur alle $x \in U$ gilt:
    \begin{itemize}
      \item $x \in L$ impliziert $A(x) = 1$,
      \item $x \notin L$ impliziert $A(x) = 0$.
    \end{itemize}
\end{enumerate}
\end{definition}

H\"aufig ist $U = \Sigma^{*}$. Dann sagt man, dass $A$ die Sprache
$L \subseteq \Sigma^{*}$ entscheidet. Das Cliquenproblem etwa k\"onnen wir
als Sprache (Menge von W\"ortern) wie folgt darstellen:
\begin{align*}
\mathrm{CLIQUE} = \{\, u\#v \mid\ & u \in \{0,1\}^{*} \text{ stellt Adjazenzmatrix von } G \text{ dar},\\
 & v \in \{0,1\}^{*} \text{ stellt } k \text{ dar},\\
 & G \text{ hat Clique mit } k \text{ Knoten} \,\}.
\end{align*}
Hierbei ist $\Sigma^{*} = \{0,1\}^{*}$ die Menge aller endlichen W\"orter
(inklusive dem leeren Wort $\epsilon$) \"uber dem Alphabet
$\Sigma = \{0,1\}$.

\begin{bemerkung}
$u$ ist ein Wort der L\"ange $O(|V|^2)$, $v$ ist ein Wort der L\"ange
$O(\log |V|)$.
\end{bemerkung}

\section{Komplexit\"atsklassen P, NP}

\begin{definition}
Die Menge aller polynomiell entscheidbaren Sprachen bzw.\
Entscheidungsprobleme wird mit $\PP$ bezeichnet:
\[
\PP = \{L \subseteq \Sigma^{*} \mid \text{es existiert ein Algorithmus } A,
\text{ der } L \text{ in Laufzeit } T_A(n) = O(n^d) \text{ mit } d = O(1)
\text{ entscheidet}\}.
\]
\end{definition}

Neben $\PP$ gibt es unter anderem auch die Klasse $\NP$. Diese wird h\"aufig
\"uber \emph{nicht-deterministische Algorithmen} eingef\"uhrt (bei denen es
zu jeder Eingabe eine endliche Menge von Rechenwegen gibt).

\begin{definition}
Ein nicht-deterministischer Algorithmus entscheidet eine Sprache $L$,
\begin{itemize}
  \item wenn es f\"ur jedes Wort $w \in L$ mindestens einen Rechenweg gibt,
    der $w$ akzeptiert,
  \item wenn jeder akzeptierende Rechenweg in polynomieller Zeit l\"auft und
  \item wenn f\"ur jedes Wort $w \notin L$ jeder Rechenweg $w$ ablehnt.
\end{itemize}
Die Anzahl der Rechenwege kann dabei exponentiell von der Eingabe
abh\"angen.
\end{definition}

Die Klasse $\NP$ ist nun genau die Menge aller Sprachen, die durch einen
nicht-deterministischen Algorithmus in Polynomialzeit entschieden werden
k\"onnen. Wir bedienen uns hier allerdings einer alternativen Definition der
Klasse $\NP$ \"uber \emph{polynomielle Verifizierer}. Die so definierten
Klassen von Problemen sind aber gleich.

\begin{definition}
Es sei $L \subseteq \Sigma^{*}$. Ein (deterministischer) Algorithmus, der
auf $\Sigma^{*} \times \Sigma^{*}$ arbeitet, hei\ss t ein
\emph{Verifizierer} f\"ur $L$, wenn
\[
L = \{x \in \Sigma^{*} \mid \exists c \in \Sigma^{*} \text{ mit } A(x,c)=1\}.
\]
Hierbei nennt man ein Wort $c$ mit $A(x,c)=1$ ein \emph{Zertifikat} f\"ur
$x$ (bzw.\ f\"ur die Aussage $x \in L$).
\end{definition}

\begin{definition}
Ein Algorithmus $A$ ist ein \emph{polynomieller Verifizierer} f\"ur eine
Sprache $L$, wenn eine Konstante $d$ existiert, so dass es f\"ur jedes
$x \in L$ ein Zertifikat $c$ gibt mit $T_A(x,c) = O(|x|^d)$.
\end{definition}

\begin{definition}
Die Klasse aller polynomiell verifizierbaren Sprachen wird mit $\NP$
bezeichnet; d.h.
\[
\NP = \{L \subseteq \Sigma^{*} \mid \text{es existiert ein polynomieller
Verifizierer f\"ur } L\}.
\]
\end{definition}

\begin{satz}
Es gilt $\PP \subseteq \NP$.
\end{satz}

\begin{proof}
Zu einem Entscheidungsproblem $L$ aus $\PP$ gibt es einen Algorithmus $A$,
der $L$ entscheidet. Diesen Algorithmus kann man als Verifizierer auffassen,
der die zweite Eingabe $c$ einfach ignoriert. Damit ist $L$ auch in $\NP$.
\end{proof}

Nun k\"onnen wir auf das Cliquenproblem zur\"uckkommen und die folgende
Aussage beweisen.

\begin{lemma}\label{lem:clique-np}
Das Entscheidungsproblem $k$-\textsc{Clique} ist in $\NP$.
\end{lemma}

\begin{proof}
Durch Angabe eines polynomiellen Verifizierers f\"ur $k$-\textsc{Clique}.
Der Algorithmus bekommt neben der Eingabe (einen Graph $G=(V,E)$ und eine
Zahl $k$) ein Zertifikat (u.z.\ eine Teilmenge $C \subseteq V$). Der
Algorithmus testet dann, ob $C$ eine Clique der Gr\"o\ss e $\geq k$ ist.
Der Test geht wie folgt:
\begin{enumerate}
  \item[(1)] pr\"ufe f\"ur alle zweielementigen Teilmengen
    $\{u,v\} \subseteq C$, ob $\{u,v\} \in E$ liegt.
  \item[(2)] gebe Ausgabe Ja aus, wenn jeder Test in (1) positiv ausfiel und
    $|C| \geq k$ ist. Ansonsten Ausgabe Nein.
\end{enumerate}
Schritt (1) geht in Zeit $O(|C|^2) = O(|V|^2)$ und die
Kardinalit\"atspr\"ufung in (2) in $O(|C|) = O(|V|)$ Zeit. Da die
Eingabel\"ange $\Omega(|V| + |E|)$ ist, ist die Laufzeit des Algorithmus
polynomiell.
\end{proof}

Nachdem wir nun gesehen haben, wie die Klassen $\PP$ und $\NP$ definiert
haben, k\"onnen wir den Begriff der Schwere genauer beleuchten. Daf\"ur ist
es notwendig zu verstehen, wann ein Problem auf ein anderes Problem
reduziert werden kann. Wir ben\"otigen die folgende Definition.

\begin{definition}
Es seien $L_1 \subseteq \Sigma_1^{*}$, $L_2 \subseteq \Sigma_2^{*}$ zwei
Sprachen.
\begin{enumerate}
  \item[(i)] Eine Funktion $f\colon \Sigma_1^{*} \to \Sigma_2^{*}$ mit der
    Eigenschaft
    \[
    w \in L_1 \Leftrightarrow f(w) \in L_2 \quad \forall w \in \Sigma_1^{*}
    \]
    hei\ss t \emph{Transformation} von $L_1$ auf $L_2$.
  \item[(ii)] Eine solche Transformation hei\ss t \emph{polynomielle
    Transformation}, wenn es ein Polynom $p$ und einen Algorithmus $A$ gibt,
    der f\"ur alle $w \in \Sigma_1^{*}$ die Ausgabe $f(w)$ der L\"ange
    $\leq p(|w|)$ in (polynomieller) Zeit $T_A(w) \leq p(|w|)$ berechnet.
\end{enumerate}
Dann hei\ss t $L_1$ \emph{polynomiell reduzierbar} auf $L_2$. Als Notation
verwenden wir $L_1 \leq L_2$.
\end{definition}

Endlich k\"onnen wir den Begriff der $\NP$-Schwere bzw.\
$\NP$-Vollst\"andigkeit formal fassen:

\begin{definition}\leavevmode
\begin{enumerate}
  \item[(i)] Eine Sprache $L_0$ hei\ss t \emph{$\NP$-schwer}, g.d.w.\
    $\forall L \in \NP: L \leq L_0$.
  \item[(ii)] Eine Sprache $L_0$ hei\ss t \emph{$\NP$-vollst\"andig},
    g.d.w.\ $L_0 \in \NP$ und $\forall L \in \NP$ gilt: $L \leq L_0$.
\end{enumerate}
\end{definition}

Eine fundamentale Eigenschaft der $\NP$-Vollst\"andigkeit ist die folgende:

\begin{satz}\label{satz:pnp}
Es sei $L_0$ $\NP$-vollst\"andig. Dann gilt $\PP = \NP$, g.d.w.\
$L_0 \in \PP$.
\end{satz}

\begin{proof}
$\Rightarrow$: Es sei $\PP = \NP$. Zeige dann, dass $L_0 \in \PP$.

$L_0$ ist $\NP$-vollst\"andig. Dann gilt insbesondere $L_0 \in \NP$. Wegen
$\PP = \NP$ gilt dann $L_0 \in \PP$.

$\Leftarrow$: Es sei $L_0 \in \PP$. Zeige hier, dass $\PP = \NP$.

Da $L_0 \in \PP$ ist, gibt es einen Algorithmus $A_0$, der $L_0$ in
Polynomzeit $T_0$ entscheidet. Es sei nun $L \in \NP$ beliebig gew\"ahlt.
Zeige: $L \in \PP$.

Da $L_0$ $\NP$-vollst\"andig ist und $L \in \NP$, gilt $L \leq L_0$. Sei
also $A_f$ ein Algorithmus, der die polynomielle Transformation $f$ von $L$
auf $L_0$ in Polynomzeit $T_f$ berechnet mit
$u \in L \Leftrightarrow f(u) \in L_0$.

Wir konstruieren $A$ aus $A_0$ und $A_f$ durch Hintereinanderschalten;
siehe folgendes Bild:

\begin{center}
\abbtext{Blockdiagramm: Die Eingabe $u$ l\"auft in den Block $A_f$ (Zeit $T_f(|u|)$), dessen Ausgabe $f(u)$ in den Block $A_0$ (Zeit $T_0(|f(u)|)$); $A_0$ antwortet mit ja oder nein.}
\end{center}

Dann akzeptiert $A$ ein Wort $u$, g.d.w.\ $A_0$ das Wort $f(u)$ akzeptiert.
Dies ist \"aquivalent zu $f(u) \in L_0$ bzw.\ $u \in L$. D.h.\ Algorithmus
$A$ entscheidet $L$ mit Gesamtlaufzeit
$\leq T_f(|u|) + T_0(|f(u)|) \leq T(|u|)$ f\"ur ein Polynom $T$. Hierbei
verwende, dass $|f(u)| \leq \mathrm{poly}(|u|)$ und dass die Komposition von
Polynomen wieder ein Polynom ergibt.
\end{proof}

\textbf{Konsequenz von Satz \ref{satz:pnp}:} Wenn ein $\NP$-vollst\"andiges
Entscheidungsproblem in $\PP$ liegt, dann sind alle
$\NP$-Entscheidungsprobleme in $\PP$.

Die gleiche Aussage gilt auch f\"ur ein $\NP$-schweres Problem.

\begin{center}
\textbf{Offenes Problem der Komplexit\"atstheorie:}\\[2pt]
Gilt $\PP = \NP$ oder $\PP \neq \NP$?
\end{center}

Dies ist eines der wichtigsten offenen Probleme der Informatik. Es wurde vom
Clay Mathematics Institute in die Liste der Millennium-Probleme
aufgenommen; mit einem Preisgeld von 1~Million Dollar:
\texttt{www.claymath.org}.

\begin{bemerkung}\label{bem:transitiv}
Wenn $L_1 \leq L_2$ und $L_2 \leq L_3$, dann gilt auch $L_1 \leq L_3$.
\end{bemerkung}

\begin{proof}
siehe \"Ubung.
\end{proof}

\begin{korollar}\label{kor:np-konstruktion}
Ist $L_0$ $\NP$-vollst\"andig, $L_0 \leq L_1$ und $L_1 \in \NP$, so ist auch
$L_1$ $\NP$-vollst\"andig.
\end{korollar}

\begin{proof}
Zeige die folgende Behauptung: $\forall L \in \NP$ gilt $L \leq L_1$.

Sei dazu $L \in \NP$ beliebig gew\"ahlt. Zeige dann die Aussage
$L \leq L_1$. Wegen der $\NP$-Vollst\"andigkeit von $L_0$ und da
$L \in \NP$ ist, gilt $L \leq L_0$. Nach Voraussetzung gilt zus\"atzlich
$L_0 \leq L_1$. Da die Relation $\leq$ transitiv ist (siehe Bemerkung
\ref{bem:transitiv}), gilt dann: $L \leq L_1$.

Da $L_1 \in \NP$ wegen der Voraussetzung, ist daher $L_1$ auch
$\NP$-vollst\"andig.
\end{proof}

Das obige Ergebnis in Korollar \ref{kor:np-konstruktion} erm\"oglicht uns,
$\NP$-vollst\"andige Probleme aus bekannten $\NP$-vollst\"andigen Problemen
zu konstruieren (bzw.\ deren $\NP$-Vollst\"andigkeit zu beweisen). F\"ur
diese Entscheidungsprobleme gibt es keine polynomiellen Algorithmen, au\ss er
$\PP = \NP$.

\section{Definition von P und NP per Turingmaschine}

Eine \emph{nicht-deterministische Turingmaschine} (NDTM) hat die Form:
\[
M = (Q, \Gamma, q_0, \delta, F).
\]
Hierbei beschreibt $Q$ die nicht-leere endliche Zustandsmenge, $\Gamma$ das
Arbeitsalphabet, wobei $\Gamma \supset \Sigma$ gilt (dabei ist $\Sigma$ das
Eingabealphabet). Die Zustandsmenge enth\"alt den Anfangszustand
$q_0 \in Q$ und die Endzustandsmenge $F \subset Q$. Zuletzt beschreibt
$\delta$ die \"Ubergangsfunktion:
\[
\delta\colon Q \times \Gamma \longrightarrow 2^{\,Q \times \Gamma \times \{-1,0,1\}}.
\]
Es gilt, dass $|\delta(q,a)| = 0,1,2,\dots$ sein kann, man also mehrere
m\"ogliche Folgezust\"ande haben kann.

\begin{center}
\abbtext{Bandskizze einer Turingmaschine: horizontales Band mit Inschrift $u\,a\,u'$; das Feld mit $a$ ist als Arbeitsfeld hervorgehoben, ein Pfeil vom Zustand $q$ zeigt darauf.}
\end{center}

Ein \"Ubergang $\delta(q,a) \to (q', a', -1/1/0)$ besagt: im Zustand $q$
mit $a$ auf dem Arbeitsfeld (AF) drucke $a'$ auf AF, bewege den
Schreiblesekopf (bzw.\ das AF) nach links, rechts oder bleibe stehen und
gehe danach in Zustand $q'$ \"uber.

Die m\"oglichen Berechnungen einer NDTM wird \"uber \emph{Konfigurationen}
(die die Bandinschrift plus den Zustand enthalten) beschrieben, wobei eine
Konfiguration $c$ wie folgt definiert ist:
\[
c \in \Gamma^{*} \times Q \times \Gamma \times \Gamma^{*}
\qquad u\, q\, a\, v,
\]
wobei $u$ und $v$ W\"orter sind, $q$ ein Zustand und $a$ der Buchstabe auf
dem AF ist.

F\"ur $u = u'b$, $v$ sei die \emph{Folgekonfiguration} von $uqav$ definiert
durch:
\[
\begin{array}{ll}
u'\,q'\,b\,a'\,v & \text{falls } \delta(q,a) = (a', 1, q')\\[2pt]
u'\,b\,a'\,q'\,v & \text{falls } \delta(q,a) = (a', -1, q')\\[2pt]
u'\,b\,q'\,a'\,v & \text{falls } \delta(q,a) = (a', 0, q')
\end{array}
\]
Als Notation verwenden wir $C \vdash C'$; dabei ist $C'$ die
Folgekonfiguration von $C$.

\textbf{Berechnung zu W\"ortern bzw.\ Eingaben:} Hierbei ist die
Startkonfiguration durch $q_0 \flat w$ gegeben, wobei $\flat$ ein
Sonderzeichen ,,Blank`` (bzw.\ ein Leerzeichen) darstellt mit
$\flat \in \Gamma \setminus \Sigma$. Eine Konfiguration $C$ nennt man
\emph{Stopkonfiguration}, falls keine Folgekonfiguration von $C$ existiert.
Eine Berechnung zu einer Eingabe $w \in \Sigma^{*}$ kann dann durch eine
Folge $C_0, \dots, C_k$ von Konfigurationen dargestellt werden, wobei $C_0$
die Startkonfiguration zu einer Eingabe $w$ ist, $C_i \vdash C_{i+1}$ f\"ur
alle $i < k$ gilt und $C_k$ eine Stopkonfiguration ist. Eine Berechnung
hei\ss t genau dann \emph{akzeptierend}, wenn der Zustand von $C_k$ in $F$
liegt.

Sei $L \subseteq \Sigma^{*}$ und $T\colon \mathbb{N} \to \mathbb{N}$. $M$
akzeptiert $L$ [in nicht deterministischer Zeit $T$] genau dann wenn
$\forall w \in \Sigma^{*}$: ($w \in L \iff \exists$ akzeptierende Berechnung
von $M$ zu $w$ [mit L\"ange $\leq T(|w|)$]).

Damit k\"onnen wir die Zugeh\"origkeit zu der Komplexit\"atsklasse $\NP$
nun definieren.

\begin{definition}
Eine Sprache $L \subset \Sigma^{*}$ ist in $\NP$ $\iff$ $\exists$ eine NDTM
$M$ \"uber Alphabet $\Gamma \supset \Sigma$ und ein Polynom $T$, so dass
gilt: $M$ akzeptiert $L$ in nicht deterministischer Zeit $T$.
\end{definition}

\textbf{Deterministische Turingmaschine (DTM)} \; Falls
$|\delta(q,a)| \leq 1$ $\forall (q,a) \in Q \times \Gamma$, es also
h\"ochstens einen g\"ultigen \"Ubergang aus jedem Zustand gibt, nennt man
eine Turingmaschine \emph{deterministisch}. Die Berechnung der DTM ist
analog zu NDTMs \"uber Konfigurationen definiert.

Eine DTM $M$ \emph{entscheidet} $L$ [in deterministischer Zeit $T$] genau
dann wenn f\"ur alle W\"orter $w \in \Sigma^{*}$ die Berechnung von $w$ mit
einer Stopkonfiguration endet [und L\"ange $\leq T(|w|)$ hat]. Dabei liegt
der Zustand der Stopkonfigurationen in $F$, genau dann wenn $w$ in $L$
liegt.

Die Zugeh\"origkeit zu der Komplexit\"atsklasse $\PP$ wird nun analog
definiert.

\begin{definition}
$L \subset \Sigma^{*} \in \PP$ $\iff$ $\exists$ eine DTM $M$ \"uber Alphabet
$\Gamma \supset \Sigma$ und ein Polynom $T$, so dass $M$ die Sprache $L$ in
Zeit $T$ entscheidet.
\end{definition}

Nun bleibt zu zeigen, dass beide gezeigten Definitionen der
Komplexit\"atsklasse $\NP$ \"aquivalent sind, sie also die gleiche Klasse
beschreiben.

\begin{satz}
Die Klassen der Sprachen bez\"uglich Verifizierer und NDTM sind
\"aquivalent und beschreiben beide die gleiche Klasse $\NP$.
\end{satz}

\begin{proof}
$"\supset"$: Sei $N$ eine NDTM, die eine Sprache $L$ in Zeit $n^c$ f\"ur
eine Konstante $c$ entscheidet. F\"ur jedes $x \in L$ gibt es eine Folge
nicht-deterministischer \"Uberg\"ange, so dass $N$ bei Eingabe $x$ einen
akzeptierenden Zustand $q_{\mathrm{acc}}$ erreicht. Diese Folge kann durch
einen String $u$ der L\"ange $n^c$ \"uber einem Alphabet $\sigma'$ mit
$O(1)$ vielen Buchstaben repr\"asentiert werden (hierbei h\"angt die
Kardinalit\"at von $\sigma'$ von der maximalen Anzahl von Verzweigungen
(d.h.\ $|\delta(q,a)|$) ab). Dann folgt direkt, dass es eine DTM $M$ gibt,
die bei Eingabe $\langle x,u \rangle$ genau dieselben Berechnungen
durchf\"uhrt, also die gleichen \"Uberg\"ange wie $N$ macht. F\"ur die
Eingabe $x \in L$ folgt also auch, dass $M$ einen akzeptierenden Zustand
erreichen muss. Dann ist $M$ also auch ein Verifizierer f\"ur $L$.

$"\subset"$: Sei $L \subseteq \Sigma^{*}$ gegeben und sei $M$ ein
Verifizierer f\"ur $L$. Sei $p\colon \mathbb{N} \to \mathbb{N}$ ein
Polynom, das die L\"ange der Zertifikate angibt. Sei $n^c$ die Laufzeit der
DTM $M$, wobei $c$ wieder eine Konstante ist. Eine NDTM $N$, die $w$ in
Polynomzeit entscheidet, kann bei Eingabe $x \in \Sigma^{*}$ wie folgt
vorgehen:

\emph{Phase (1):} Nutze nicht-deterministische Entscheidungen um einen
beliebigen String $u$ der L\"ange $\mathrm{poly}(|x|)$, also polynomiell in
$|x|$, auf ein Arbeitsband zu schreiben.

\emph{Phase (2):} Simuliere $M$ bei Eingabe $\langle x,u \rangle$. Dann
folgt direkt, dass $N$ in Polynomzeit entscheidet, da $M$ diese Eingabe in
Polynomzeit verifizieren kann.
\end{proof}

\section{Satisfiability Problem (SAT)}

Der Kanadier Stephen A.~Cook begr\"undete 1971 die Klasse der
$\NP$-vollst\"andigen Probleme in $\NP$, indem er zeigte, dass ein
$\NP$-vollst\"andiges Problem existiert. Dieses Problem ist das sogenannte
\emph{Satisfiability Problem} (SAT). Leonid Levin hatte einen
vergleichbaren Satz 1973 ver\"offentlicht.

\subsection*{Satisfiability Problem (SAT)}

Das Satisfiability Problem (SAT) formalisiert die Frage nach der
Erf\"ullbarkeit eines aussagenlogischen Ausdrucks. Aussagenlogische
Ausdr\"ucke sind zusammengesetzt aus Variablen und den elementaren
Operatoren/Junktoren $\wedge$ (und), $\vee$ (oder) und $\neg$ (nicht). Die
Variablen sind Boolesche Variablen und wir notieren sie als $x_i$, d.h.\
$x_0, x_1, x_{10}, x_{11}, \dots$ und so weiter. F\"ur jede Variable $x_i$
existieren zwei \emph{Literale}. Diese sind das positive Literal $x_i$ und
das negative Literal $\neg x_i$. Aus den Literalen setzt man mit dem
elementaren Operator $\vee$ (oder) sogenannte \emph{Klauseln} zusammen,
d.h.\ disjunktive Ausdr\"ucke der Form $(y_1 \vee \dots \vee y_k)$ mit
Literalen $y_1, \dots, y_k$.

Ein Ausdruck $\alpha = C_1 \wedge \dots \wedge C_m$ mit Klauseln
$C_1, \dots, C_m$ hei\ss t Ausdruck in \emph{Konjunktiver Normalform}
(KNF). Ein Ausdruck $\alpha$ hei\ss t \emph{erf\"ullbar}, g.d.w.\ eine
Belegung $\varphi$ der Variablen in $\alpha$ mit $\true$, $\false$
existiert, so dass $\alpha$ unter der Belegung $\varphi$ zu $\true$
ausgewertet wird (siehe Beispiel~\ref{bsp:sat}).

Nun k\"onnen wir das SAT-Problem als Sprache wie folgt angeben:
\[
\mathrm{SAT} = \{\alpha \mid \alpha \text{ Boolescher Ausdruck in KNF},\
\alpha \text{ erf\"ullbar}\}
\]

\begin{bemerkung}
$\mathrm{SAT} \subset \{x, 1, 0, \vee, \wedge, \neg, (, )\}^{*}$.
\end{bemerkung}

\begin{beispiel}\label{bsp:sat}
Betrachte $\alpha = (x_1 \vee x_{10}) \wedge (x_1 \vee \neg x_{10}) \wedge
(x_{10})$. Wir erhalten die folgende Wahrheitstabelle:
\begin{center}
\begin{tabular}{c c | c}
$x_1$ & $x_{10}$ & $\alpha$\\
\hline
$\false$ & $\false$ & $\false$\\
$\true$  & $\false$ & $\false$\\
$\false$ & $\true$  & $\false$\\
$\true$  & $\true$  & $\true$
\end{tabular}
\end{center}
Die Belegung $\psi(x_1) = \psi(x_{10}) = \true$ ist eine erf\"ullende
Belegung.
\end{beispiel}

\begin{satz}[Cook, 1971 / Levin, 1973]
$\mathrm{SAT}$ ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
\textbf{$\mathrm{SAT} \in \NP$} \; Wir skizzieren dies f\"ur eine
entsprechende nichtdeterministische Turingmaschine mit den
Zwischenergebnissen auf dem Turingband in Abb.~\ref{abb:sat-np}. Salopp
gesagt ,,raten`` wir nichtdeterministisch eine Belegung der Variablen und
pr\"ufen dann, ob sie den Ausdruck erf\"ullt.

\begin{figure}[h]
\begin{center}
\begin{tabular}{c}
$\alpha$\\
(1) $\downarrow$ det.\\
$\alpha\#$Liste der auftretenden Variablen\\
(2) $\downarrow$ nichtdet.\\
$\alpha\#$Belegung der Variablen durch wahr/falsch:\\
$x_{101} \to T_{101}$ oder $F_{101}$.\\
(3) $\downarrow$ det.\\
$\alpha\#$Wert von $\alpha$\\
(4) $\downarrow$ det.\\
$F$, wenn $\alpha = $ wahr; dummy-Zustand, falls $\alpha = $ falsch.
\end{tabular}
\end{center}
\caption{$\mathrm{SAT} \in \NP$: Alle vier Schritte sind in polynomieller
Zeit ausf\"uhrbar.}\label{abb:sat-np}
\end{figure}

\textbf{$L \in \NP \Longrightarrow L \leq \mathrm{SAT}$} \; Sei $M$ eine
NDTM und akzeptiere $L$ in nichtdeterministischer Zeit $T$ (f\"ur ein
geeignetes Polynom $T$). Wir suchen eine Transformation $u \to \alpha_u$,
die polynomzeitberechenbar ist mit
$u \in L \iff \alpha_u \in \mathrm{SAT}$.

\emph{Idee:} $\alpha_u$ wird so beschrieben, dass $M$ f\"ur $u$ in genau
$T(u)$ Schritten eine akzeptierende Stoppkonfiguration erreicht. Sei also
\[
M = (Q, \Gamma, q_0, \delta, F),
\]
wobei $Q = \{q_0, \dots, q_s\}$, $F = \{q_r, \dots, q_s\}$,
$\Gamma = \{a_0, \dots, a_m\}$, $a_0 = \flat$. Ohne Einschr\"ankung der
Allgemeinheit gelte: Akzeptiert $M$ das Wort $u = a_{j_1} \dots a_{j_{|u|}}$
mit einer Berechnung der L\"ange h\"ochstens $T(|u|)$, so akzeptiere $M$
das Wort mit einer Berechnung der L\"ange genau gleich $T(|u|)$.

Wir stellen $\delta$ durch eine Folge von Zeilen (F\"unftupeln)
$z_1, \dots, z_\varrho$ der Form $q\,a\,q'\,a'\,\beta$ dar (f\"ur
$(q',a',\beta) \in \delta(q,a)$). O.B.d.A.\ betrachten wir nur
Turingmaschinen, die nicht links vom Feld 0 arbeiten. Der zu konstruierende
Ausdruck in KNF $\alpha$ enth\"alt Variablen, deren Bedeutung in
Tabelle~\ref{tab:sat-var} zusammengefasst ist.

\begin{table}[h]
\begin{center}
\begin{tabular}{l|l}
Variablen in $\alpha_k$ & Bedeutung (wahr, falls \dots)\\
\hline
$z_{tk}$ & nach $t$ Schritten wird Zustand $q_k$ erreicht\\
$s_{ti}$ & nach $t$ Schritten ist Feld Nr.\ $i$ das Arbeitsfeld\\
$b_{tl}$ & nach $t$ Schritten wird Zeile $z_l$ ausgef\"uhrt\\
$a_{tij}$ & nach $t$ Schritten steht auf Feld Nr.\ $i$ der Buchstabe $a_j$
\end{tabular}\\[4pt]
Hierbei ist $0 \leq t, i \leq T(|u|)$, $0 \leq k \leq S$,
$1 \leq l \leq \varrho$, $0 \leq j \leq m$.
\end{center}
\caption{Variablen in $\alpha_k$}\label{tab:sat-var}
\end{table}

Die Anzahl der Variablen ist nach oben durch $c \cdot T(|u|)^2$
beschr\"ankt, wobei $c$ eine von der Turingmaschine abh\"angige Konstante
ist.

Wir bauen nun einen Ausdruck $\alpha_u$ auf mit
\[
\alpha_u = \alpha_{\text{Anfang}} \wedge \alpha_{\text{Ende}} \wedge
\alpha_{\text{Eindeutig}} \wedge \alpha_{\text{\"Ubergang}}.
\]
Das Ziel ist, dass erf\"ullende Belegungen von $\alpha_u$ den
akzeptierenden Berechnungen in Zeit $T(|u|)$ von $M$ f\"ur
$u = a_{j_1} \dots a_{j_{|u|}}$ entsprechen sollen. Wir setzen
\begin{align*}
\alpha_{\text{Anfang}} &= z_{00} \wedge s_{00} \wedge a_{000} \wedge
a_{01j_1} \wedge a_{02j_2} \wedge \dots \wedge a_{0|u|j_{|u|}} \wedge
a_{0(|u|+1)0} \wedge \dots \wedge a_{0\,T(|u|)\,0}\\
\alpha_{\text{Ende}} &= z_{T(|u|)\,r} \vee \dots \vee z_{T(|u|)\,s}\\
\alpha_{\text{Eindeutig}} &= \bigwedge_{0 \leq t \leq T(|u|)}
\Big(\text{,,genau ein Zustand``} \wedge \text{,,genau ein Arbeitsfeld``}\\
&\qquad\qquad \wedge \text{,,f\"ur alle Felder } i = 0, \dots, T(|u|)
\text{ genau ein Buchstabe``}\Big)
\end{align*}
Den ersten Teil, ,,genau ein Zustand``, schreiben wir als
\[
(z_{t0} \vee \dots \vee z_{ts}) \wedge \bigwedge_{i \neq j}
\underbrace{\neg(z_{ti} \wedge z_{tj})}_{(\neg z_{ti} \vee \neg z_{tj})},
\]
die anderen Bedingungen analog. Wir setzen
\[
\alpha_{\text{\"Ubergang}} = \bigwedge_{0 \leq t \leq T(|u|)} \alpha_t,
\]
wobei $\alpha_t$ Folgendes modelliert:
\begin{itemize}
  \item Buchstaben auf nicht-Arbeitsfeldern bleiben unver\"andert
  \item Falls das Arbeitsfeld Nr.\ $i$ hat und die $l$.\ Zeile
    $q_{k_l} a_{j_l} q_{\tilde{k}_l} a_{\tilde{j}_l} \beta_l$ ausgef\"uhrt
    wird, gilt:
    \begin{enumerate}
      \item[a)] nach $t$ Schritten wird $q_{k_l}$ erreicht
      \item[b)] nach $t$ Schritten steht auf Feld $i$ der Buchstabe
        $a_{j_l}$
      \item[c)] nach $t+1$ Schritten wird $q_{\tilde{k}_l}$ erreicht
      \item[d)] nach $t+1$ Schritten steht auf Feld $i$ Buchstabe
        $a_{\tilde{j}_l}$
      \item[e)] nach $t+1$ Schritten hat das Arbeitsfeld die Nummer
        $i + \beta_l$.
    \end{enumerate}
\end{itemize}
Wir erhalten insgesamt:
\begin{align*}
\alpha_t = \bigwedge_{0 \leq i \leq T(|u|)} \Bigg(
& \bigwedge_{0 \leq j \leq m} \Big( ((\neg s_{ti}) \wedge a_{tij}) \to
a_{(t+1)ij} \Big)\\
\wedge & \bigwedge_{1 < l \leq \varrho} \Big( (s_{ti} \wedge b_{tl}) \to
(z_{tk_l} \wedge a_{tij_l} \wedge z_{(t+1)\tilde{k}_l} \wedge
a_{(t+1)i\tilde{j}_l} \wedge s_{(t+1)(i+\beta_l)}) \Big) \Bigg)
\end{align*}
Insgesamt kann man $\alpha_u = \alpha_{\text{Anfang}} \wedge
\alpha_{\text{Ende}} \wedge \alpha_{\text{Eindeutig}} \wedge
\alpha_{\text{\"Ubergang}}$ in KNF darstellen. Wir m\"ussen noch zeigen:
\begin{enumerate}
  \item[a)] die Transformation $u \mapsto \alpha_u$ ist polynomiell, und
  \item[b)] es existiert eine akzeptierende Berechnung von $M$ zu $u$ der
    L\"ange $T(|u|)$ dann und nur dann, wenn $\alpha_u$ erf\"ullbar ist.
\end{enumerate}

\begin{enumerate}
  \item[a)] Wir bestimmen die Anzahl bzw.\ H\"aufigkeit der Variablen in
    $\alpha_u$:
    \begin{itemize}
      \item in $\alpha_{\text{Anfang}}$: $T(n) + 3$
      \item in $\alpha_{\text{Ende}}$: $\leq s + 1 = |Q|$
      \item in $\alpha_{\text{Eindeutig}}$:
        $\leq (T(n)+1)\big[s + 1 + 2(s+1)^2 + (T(n)+1)^2 +
        (T(n)+1)(m+1)^2 + (\varrho+1)^2\big] \leq c(T(n))^3$
      \item in $\alpha_{\text{\"Ubergang}}$:
        $(T(n)+1)^2 \big[(3(m+1)) + (15(\varrho+1))\big] \leq c'T(n)^2$
      \item insgesamt: $\leq dT(n)^3$
    \end{itemize}
    (f\"ur geeignete, von $M$ abh\"angige Konstanten $c, c', d$). Die
    L\"ange einer Variablen ist nach oben durch $\bar{c}\log T(n)$
    beschr\"ankt (f\"ur geeignetes $\bar{c}$), also ist die L\"ange von
    $\alpha_u$ durch $\bar{d}T(n)^3 \log T(n)$ beschr\"ankt, also
    polynomiell in $n = |u|$.
  \item[b)] $\Rightarrow$ \; Sei $C_0, \dots, C_{T(|u|)}$ eine
    akzeptierende Berechnung. Dann liefert das eine Belegung der Variablen
    von $\alpha_u$ so, dass $\alpha_u$ den Wert wahr erh\"alt, und zwar:
    \begin{align*}
    \mathrm{Wert}(z_{tk}) = \text{wahr} &\iff C_t \text{ hat Zustand } q_k\\
    \mathrm{Wert}(s_{ti}) = \text{wahr} &\iff \text{in } C_t \text{ hat das
    Arbeitsfeld die Nr.\ } i\\
    &\ \ \vdots
    \end{align*}
    $\Leftarrow$ \; Betrachte eine erf\"ullende Belegung von $\alpha_u$.
    Wegen $\alpha_{\text{Eindeutig}} = $ wahr existiert zu jedem Zeitpunkt
    $t$ genau ein $k$ mit $z_{tk} = $ wahr. Bezeichne diese $k$ mit $k(t)$.
    Analog definiere $i(t)$, $l(t)$, $j(t,i)$. F\"ur alle Zeitpunkte $t$
    wird eine Konfiguration $C_t$ eindeutig definiert durch den Zustand
    $q_{k(t)}$, Arbeitsfeld Nr.\ $i(t)$, Bandinschrift
    $a_{j(t,0)}, \dots, a_{j(t,T(|u|))}$.

    Wir zeigen nur noch: $C_0, \dots, C_{T(|u|)}$ ist eine akzeptierende
    Berechnung. Wegen $\alpha_{\text{Anfang}} = $ wahr ist $C_0$ die
    Startkonfiguration zu $u$. Wegen $\alpha_{\text{Ende}} = $ wahr ist
    $C_{T(|u|)}$ eine akzeptierende Konfiguration. Wegen
    $\alpha_{\text{\"Ubergang}} = $ wahr geschieht der \"Ubergang
    $C_t \to C_{t+1}$ gem\"a\ss{} Zeile $z_{l(t)}$. Insgesamt erhalten wir
    eine akzeptierende Berechnung von $M$ auf $u$. \qedhere
\end{enumerate}
\end{proof}

Im Folgenden werden wir nun einige $\NP$-vollst\"andige Probleme betrachten
und ihre Schwere insbesondere beweisen. Es zeigt sich etwa, dass SAT sogar
dann $\NP$-vollst\"andig bleibt, wenn man pro Klausel nur maximal 3 Literale
erlaubt. Dieses Problem nennen wir 3-SAT.

\section{SAT mit kleinen Klauseln (3-SAT)}

\[
\text{3-SAT} = \{\alpha \mid \alpha \text{ Boolescher Ausdruck in KNF mit}
\leq 3 \text{ Literalen pro Klausel},\ \alpha \text{ erf\"ullbar}\}.
\]

\begin{satz}
\emph{3-SAT} ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
Es reicht zu zeigen: $\mathrm{SAT} \leq \text{3-SAT}$. Gesucht ist eine
polynomzeit-berechenbare Transformation $\varphi\colon \alpha \to
\bar{\alpha}$ mit
\[
\alpha \in \mathrm{SAT} \Leftrightarrow \bar{\alpha} \in \text{3-SAT}.
\]

\emph{Idee:} $y_1 \vee y_2 \vee y_3 \vee y_4$ ist erf\"ullbar, g.d.w.\
$(y_1 \vee y_2 \vee x) \wedge (\neg x \vee y_3 \vee y_4)$ ist erf\"ullbar.
Hierbei ist $x$ eine neue Hilfsvariable.

\emph{Begr\"undung:} $y_1 \vee \dots \vee y_4$ erf\"ullbar
$\Leftrightarrow$ $y_1 \vee y_2$ erf\"ullbar oder $y_3 \vee y_4$
erf\"ullbar $\Leftrightarrow$ $y_1 \vee y_2 \vee x$ erf\"ullbar und
$y_3 \vee y_4 \vee \neg x$ erf\"ullbar.

\emph{Allgemein:} $(y_1 \vee \dots \vee y_n)$ erf\"ullbar
$\Leftrightarrow$
$(y_1 \vee y_2 \vee x_1) \wedge (\neg x_1 \vee y_3 \vee x_2) \wedge \dots
\wedge (\neg x_{n-3} \vee y_{n-1} \vee y_n)$ erf\"ullbar.

$\Rightarrow$: Es sei $(y_1 \vee \dots \vee y_n)$ wahr. Sind
$(y_1 \vee y_2)$ oder $(y_{n-1} \vee y_n)$ wahr, so ist die rechte Seite
erf\"ullbar durch Wahl $x_1 = \dots = x_{n-3} = \false$ falls
$y_1 \vee y_2$ wahr ist (bzw.\ alle Hilfsvariablen gleich $\true$ falls
$y_{n-1} \vee y_n$ wahr ist). Andernfalls sei $y_i$ wahr f\"ur
$i \notin \{1, 2, n-1, n\}$. In diesem Fall setze
$x_1, \dots, x_{i-2} = \true$ und $x_{i-1}, \dots, x_{n-3} = \false$.

$\Leftarrow$: Es sei eine Belegung gegeben, die die rechte Seite erf\"ullt.
Falls alle $y_i = \false$ sind, k\"onnen nicht alle Disjunktionen $\true$
werden.
\[
(y_1 \vee y_2 \vee x_1) \wedge (\neg x_1 \vee y_3 \vee x_2) \wedge \dots
\wedge (\neg x_{n-3} \vee y_{n-1} \vee y_n).
\]
Wenn $y_1 \vee y_2$ falsch ist, so muss $x_1$ wahr sein. Dann ist
$\neg x_1 \vee y_3$ auch falsch und $x_2$ muss wahr sein. Am Ende ist dann
aber $\neg x_{n-3}$ und $y_{n-1} \vee y_n$ falsch und wir haben einen
Widerspruch.

Definiere $\alpha \to \bar{\alpha}$ entsprechend klauselweise. Dann gilt
$|\bar{\alpha}| \leq c|\alpha|$ mit $c = O(1)$ und
$\alpha \to \bar{\alpha}$ ist polynomzeit-berechenbar.
\end{proof}

Wir betrachten erneut das Cliquenproblem und analysieren dieses Mal also
auch die Schwere des Problems.

\section{Cliquenproblem ($k$-Clique)}

\begin{description}
  \item[Gegeben:] Ein ungerichteter Graph $G=(V,E)$ und eine Zahl
    $k \geq 1$. Eine Clique ist eine Teilmenge $C \subseteq V$ mit
    $\{u,v\} \in E$ f\"ur alle $u,v \in C$ mit $u \neq v$.
  \item[Entscheide:] Hat der gegebene Graph $G$ eine Clique
    $C \subseteq V$ mit mindestens $k$ Knoten (d.h.\ mit $|C| \geq k$)?
\end{description}

\begin{satz}
Das Problem $k$-\textsc{Clique} ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
(a) $k$-\textsc{Clique} $\in \NP$: siehe Lemma~\ref{lem:clique-np}.
(b) Zeige: $\mathrm{SAT} \leq k$-\textsc{Clique}.

Es sei $F$ ein Boolescher Ausdruck in KNF, wobei
$F = F_1 \wedge \dots \wedge F_m$ und
$F_i = (y_{i1} \vee \dots \vee y_{i\ell_i})$ eine Klausel mit $\ell_i$
Literalen ist. Konstruktion von $G = (V,E)$ (dies geht in poly.\ Zeit):
\begin{align*}
V &= \{[i,j] \mid 1 \leq i \leq m,\ 1 \leq j \leq \ell_i\}\\
E &= \{\{[i,j],[i',j']\} \mid i \neq i' \text{ und }
y_{ij} \neq \neg y_{i'j'}\}
\end{align*}

\emph{Behauptung:} $F$ ist erf\"ullbar $\Leftrightarrow$ $G$ enth\"alt
eine Clique mit $k = m$ Knoten.

\begin{beispiel}
Betrachte $(x_1 \vee x_2 \vee x_3) \wedge (\neg x_1 \vee \neg x_2) \wedge
(x_1 \vee \neg x_2 \vee \neg x_3)$; ist erf\"ullbar mit
$\psi(x_1) = \psi(x_3) = \true$ und $\psi(x_2) = \false$. Zur Konstruktion
von $G$ und Clique $C$ siehe folgendes Bild:

\begin{center}
\abbtext{Graph mit acht Knoten $[i,j]$ f\"ur die Literale der drei Klauseln: $[1,1],[1,2],[1,3]$ (links), $[2,1],[2,2]$ (oben), $[3,1],[3,2],[3,3]$ (rechts). Kanten verbinden genau die Knoten verschiedener Klauseln, deren Literale nicht komplement\"ar sind. Die Knoten $[1,1]$ ($x_1$), $[2,2]$ ($\neg x_2$) und $[3,1]$ ($x_1$) bilden eine 3-Clique.}
\end{center}
\end{beispiel}

$\Rightarrow$: Es sei $F$ erf\"ullbar. Dann existiert ein $\psi$ mit
$\psi(F) = \true$. F\"ur diese Belegung gilt $\psi(F_i) = \true$ f\"ur alle
$i = 1, \dots, m$. Dann $\exists\ \psi\ \forall\ i = 1, \dots, m\
\exists\ r_i \in \{1, \dots, \ell_i\}$ mit $\psi(y_{ir_i}) = \true$.

Setze nun $C = \{[i,r_i] \mid 1 \leq i \leq m\}$ und zeige, dass $C$ eine
$m$-Clique ist.

Falls $\{[i,r_i],[j,r_j]\} \notin E$ f\"ur ein Paar $i,j$ mit $i \neq j$,
dann muss (wegen der Definition von $E$) $y_{ir_i} = \neg y_{jr_j}$ sein.
Dagegen gilt aber $\psi(y_{ir_i}) = \psi(y_{jr_j}) = \true$; ein
Widerspruch. Also bildet $C$ eine Clique.

$\Leftarrow$: Es sei $C$ eine $m$-Clique in $G$. Da es keine Kante zwischen
Knoten mit gleicher erster Komponente gibt, gilt:
\[
C = \{[1,r_1],[2,r_2],\dots,[m,r_m]\}
\]
f\"ur gewisse $r_1, r_2, \dots, r_m$. Definiere eine Belegung $\psi$ mit
$\psi(y_{1r_1}) = \psi(y_{2r_2}) = \dots = \psi(y_{mr_m}) = \true$.

Dies geht widerspruchsfrei, da $y_{ir_i} \neq \neg y_{jr_j}$ f\"ur alle
$1 \leq i \neq j \leq m$. Daraus folgt, dass $\psi(F_i) = \true$ f\"ur alle
$1 \leq i \leq m$ und damit $\psi(F) = \true$ ist.
\end{proof}

Ein weiteres Problem auf Graphen ist das sogenannte F\"arbungsproblem. Eine
\emph{$k$-F\"arbung} eines ungerichteten Graphen $G = (V,E)$ ist eine
Abbildung $f\colon V \to \{1, \dots, k\}$ mit $f(i) \neq f(j)$ f\"ur alle
$\{i,j\} \in E$ mit $i \neq j$. Eine $k$-F\"arbung $f$ f\"arbt also die
Knoten des Graphen $G$ mit $k$ Farben so, dass Kanten nur zwischen
unterschiedlich gef\"arbten Knoten existieren.

\section{F\"arbungsproblem ($k$-Color)}

\begin{description}
  \item[Gegeben:] Ein ungerichteter Graph $G=(V,E)$ und eine Zahl
    $k \geq 1$.
  \item[Entscheide:] Hat der gegebene Graph $G$ eine $k$-F\"arbung?
\end{description}

\begin{satz}
Das F\"arbungsproblem $k$-\textsc{Color} ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
(a) $k$-\textsc{Color} $\in \NP$: W\"ahle als Zertifikat eine Abbildung
$f\colon V \to \{1, \dots, k\}$ und teste, ob $f$ eine $k$-F\"arbung ist.
Der Testschritt geht in Zeit $O(|V| + |E|)$.

(b) Zeige: 3-SAT $\leq$ $k$-\textsc{Color}. Es sei $F$ Boolescher Ausdruck
in KNF mit $F = F_1 \wedge \dots \wedge F_m$ und $F_i$ Klausel der L\"ange
$\leq 3$ und ohne Paare $x_j \vee \neg x_j$ in einer Klausel (diese
Klauseln k\"onnen eliminiert werden).

Konstruktion von $G = (V,E)$ mit $|V| = 3n + m + 1$:
\begin{align*}
V ={} & \{x_i, \bar{x}_i, v_i \mid 1 \leq i \leq n\} \cup
\{F_j \mid 1 \leq j \leq m\} \cup \{z\}.\\
E ={} & \{\{v_i, v_j\} \mid 1 \leq i \neq j \leq n\}\\
& \cup \{\{v_i, x_j\}, \{v_i, \bar{x}_j\} \mid 1 \leq i \neq j \leq n\}\\
& \cup \{\{x_i, \bar{x}_i\} \mid 1 \leq i \leq n\}\\
& \cup \{\{x_i, F_j\} \mid \text{falls } x_i \text{ kein Literal in }
F_j\}\\
& \cup \{\{\bar{x}_i, F_j\} \mid \text{falls } \neg x_i \text{ kein
Literal in } F_j\}\\
& \cup \{\{v_i, z\} \mid 1 \leq i \leq n\} \cup \{\{F_j, z\} \mid
1 \leq j \leq m\}.
\end{align*}

\begin{beispiel}
Konstruktion f\"ur $(x_1 \vee x_2) \wedge (\neg x_1 \vee x_3)$.

\begin{center}
\abbtext{Graph mit Knoten $z$ (oben), $v_1,v_2,v_3$ (untereinander eine Clique, jeder mit $z$ verbunden), Literalknoten $x_i$/$\neg x_i$ f\"ur $i=1,2,3$ (jedes Paar durch eine Kante verbunden) und Klauselknoten $F_1,F_2$ (jeweils mit $z$ verbunden). Jeder Knoten $v_i$ ist mit allen Literalknoten $x_j,\neg x_j$ f\"ur $j \neq i$ verbunden; jeder Klauselknoten $F_j$ ist mit genau den Literalen verbunden, die \emph{nicht} in $F_j$ vorkommen (hier: $F_1$ mit $\neg x_1, \neg x_2, x_3, \neg x_3$ und $F_2$ mit $x_1, x_2, \neg x_2, \neg x_3$).}
\end{center}

Dieser Graph ist 4-f\"arbbar und $\psi(x_1) = \psi(x_3) = \true$,
$\psi(x_2) = \false$ ist erf\"ullende Belegung.
\end{beispiel}

\emph{Behauptung:} $F$ ist erf\"ullbar $\Leftrightarrow$ $G$ kann mit
$n+1$ Farben gef\"arbt werden.

\emph{Vor\"uberlegung:} $\{v_1, \dots, v_n, z\}$ ist Clique. Daher brauchen
wir $n+1$ Farben um $v_1, \dots, v_n, z$ zu f\"arben. O.B.d.A.\ gilt
$f(v_i) = i$ und $f(z) = n+1$; ansonsten umf\"arben. Desweiteren gilt
$\forall j$: $x_j, \bar{x}_j$ sind mit jedem $v_i$ f\"ur $i \neq j$
verbunden. Dann folgt $f(x_j), f(\bar{x}_j) \in \{j, n+1\}$. Da
$\{x_j, \bar{x}_j\} \in E$ folgt $f(x_j) \neq f(\bar{x}_j)$.

D.h.\ einer der beiden Knoten wird mit Farbe $j$ und der andere mit $n+1$
gef\"arbt, falls eine $n+1$ F\"arbung existiert. Dies erzeugt die
Variablensetzung.

\emph{Beweis der Behauptung.} $\Rightarrow$: $F$ ist erf\"ullbar. Dann
existiert eine Belegung $\psi$, so dass $F_j$ ein Literal $y$ mit
$\psi(y) = \true$ enth\"alt. F\"arbe nun
\[
f(x_i) = \begin{cases} i & \text{falls } \psi(x_i) = \true\\
n+1 & \text{sonst}\end{cases}
\]
und $f(\bar{x}_i)$ entsprechend. Dann ist
$\{x_i, \bar{x}_i, v_i \mid 1 \leq i \leq n\} \cup \{z\}$ korrekt mit
$n+1$ Farben gef\"arbt. Weiter ist $F_j$ mit $x_i$ und $\bar{x}_i$
verbunden, falls $x_i$ bzw.\ $\neg x_i$ kein Literal in $F_j$ ist. F\"ur
ein Literal $y \in \{x_i, \neg x_i\}$ in $F_j$ gilt $\psi(y) = \true$ und
$\{y, F_j\} \notin E$. F\"arbe dann $f(F_j) = i$. Dies ergibt dann korrekte
F\"arbung.

$\Leftarrow$: Gegeben sei eine F\"arbung, die o.B.d.A.\ gegeben ist durch
$f(v_i) = i$ und $f(z) = n+1$. Dann sind $x_j, \bar{x}_j$ wie oben
beschrieben mit Farbe $j$ und $n+1$ gef\"arbt. Betrachte Variablenbelegung
\[
\psi(x_j) = \begin{cases} \true & \text{falls } x_j \text{ Farbe } j
\text{ hat}\\ \false & \text{sonst}\end{cases}
\]
und setze $\psi(\neg x_j) = \neg\psi(x_j)$. $F_j$ hat $\leq 3$ Literale.
Daher ist $F_j$ mit $\geq 2n-3$ Knoten aus
$\{x_i, \bar{x}_i \mid 1 \leq i \leq n\}$ (und mit $z$) verbunden.

\emph{Annahme:} $\psi(F_j) = \false$; d.h.\ alle drei Literale in $F_j$
sind nach Definition mit $n+1$ gef\"arbt. Desweiteren ist $F_j$ verbunden
mit Knoten aus $\{x_1, \bar{x}_1, \dots, x_n, \bar{x}_n\}$ und Farben
$1, \dots, n$ (wegen der Voraussetzung \"uber die Paare
$x_j \vee \neg x_j$) und mit $z$ und Farbe $f(z) = n+1$. Daraus folgt
$f(F_j) \notin \{1, \dots, n+1\}$ und wir erhalten einen Widerspruch (da
$f$ eine $n+1$ F\"arbung ist).
\end{proof}

\section{3-dimensionales Matching}

\begin{description}
  \item[Gegeben:] Mengen $U, V, W$ mit $|U| = |V| = |W|$ und Teilmenge
    $T \subseteq V \times W \times U$.
  \item[Entscheide:] Gibt es eine Teilmenge $M \subseteq T$ mit
    $|M| = |U|$ mit der Eigenschaft: F\"ur jede zwei unterschiedliche
    $(v,w,u), (v',w',u') \in M$ gilt: $u \neq u'$, $v \neq v'$ und
    $w \neq w'$?
\end{description}

\begin{satz}
Das 3-dimensionale Matchingproblem (3-dim.\ Matching) ist
$\NP$-vollst\"andig.
\end{satz}

\begin{proof}
(a) 3-dim.\ Matching ist in $\NP$. W\"ahle als Zertifikat eine
entsprechende Teilmenge $M \subseteq T$ und teste die obigen Bedingungen.

(b) $\mathrm{SAT} \leq$ 3-dim.\ Matching. Es sei $F$ ein Boolescher
Ausdruck mit Variablen $x_1, \dots, x_n$ und Klauseln $C_1, \dots, C_m$.
Konstruiere Instanz $(V, W, U, T)$ mit:
\begin{align*}
V &= \{a_i^j \mid i = 1, \dots, n,\ j = 1, \dots, m\}
\cup \{v_j \mid j = 1, \dots, m\}
\cup \{c_k \mid k = 1, \dots, m(n-1)\}\\
W &= \{b_i^j \mid i = 1, \dots, n,\ j = 1, \dots, m\}
\cup \{w_j \mid j = 1, \dots, m\}
\cup \{d_k \mid k = 1, \dots, m(n-1)\}\\
U &= \{x_i^j, \bar{x}_i^j \mid i = 1, \dots, n,\ j = 1, \dots, m\}
\end{align*}
Es gilt $|U| = |V| = |W| = 2nm$. $T$ enthalte die folgenden Vektoren
\begin{enumerate}
  \item[(1)] $(a_i^j, b_i^j, x_i^j)$ und $(a_i^{j+1}, b_i^j, \bar{x}_i^j)$
    f\"ur $i = 1, \dots, n$, $j = 1, \dots, m$, wobei $a_i^{m+1} = a_i^1$.

    Beachte: die $a$- und $b$-Knoten tauchen in den anderen Vektoren nicht
    mehr auf. Hier \"uberdeckt man in $M$ entweder alle $x_i^j$ f\"ur
    $j = 1, \dots, m$ oder alle $\bar{x}_i^j$. Das erzeugt die
    Variablensetzung $x_i = \false$ oder $x_i = \true$.
  \item[(2)] $(v_j, w_j, \lambda^j)$ f\"ur $j = 1, \dots, m$ und $\lambda$
    Literal von $C_j$.

    Die $v$- und $w$-Knoten tauchen in anderen Vektoren nicht mehr auf.
    $\Rightarrow$ F\"ur jede Klausel $C_j$ m\"ussen wir ein Literal
    $\lambda$ ausw\"ahlen und einen Vektor $(v_j, w_j, \lambda^j) \in M$.
    D.h.\ die Knoten $v_j, w_j$ werden mit dem wahren Literal aus $C_j$
    gematcht.
  \item[(3)] Die $c$- und $d$-Knoten spielen die Rolle einer Garbage
    Collection. Die Vektoren haben die Form $(c_k, d_k, x_i^j)$,
    $(c_k, d_k, \bar{x}_i^j)$ f\"ur $k = 1, \dots, m(n-1)$ und
    $i = 1, \dots, n$ und $j = 1, \dots, m$.

    Damit sammelt man $(n-1)m$ Literale auf.
\end{enumerate}
Zeige dann die Behauptung: $F$ ist erf\"ullbar $\Leftrightarrow$
$(V, W, U, T)$ enth\"alt ein 3-dim.\ Matching.

Zur Variablensetzung betrachte folgendes Bild:

% --- PLATZHALTER: "Rad"-Abbildung zur Variablensetzung ---
% Im Original: kreisfoermige Anordnung der Knoten x^1..x^4, xbar^1..xbar^4
% mit den a^j/b^j-Knoten dazwischen (Zahnrad-Struktur).
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original: zyklische
,,Zahnrad``-Struktur der Vektoren $(a_i^j, b_i^j, x_i^j)$ und
$(a_i^{j+1}, b_i^j, \bar{x}_i^j)$ mit den Knoten $x^1,\dots,x^4$,
$\bar{x}^1,\dots,\bar{x}^4$ und $a^1,\dots,a^4$, $b^1,\dots,b^4$.]}}}
\end{center}

Konstruktion f\"ur $(x_1 \vee \neg x_2) \wedge (\neg x_1 \vee \neg x_2)$
mit $\psi(x_1) = \true$ und $\psi(x_2) = \false$:

% --- PLATZHALTER: Matching-Abbildung zum Beispiel ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original: Instanz
mit Knoten $x_1^1, x_1^2, \bar{x}_1^1, \bar{x}_1^2, x_2^1, x_2^2,
\bar{x}_2^1, \bar{x}_2^2$, den Klauselknoten $v_1, w_1, v_2, w_2$ sowie
$a_1^1, a_1^2, b_1^1, b_1^2, a_2^1, a_2^2, b_2^1, b_2^2$ und dem gew\"ahlten
Matching.]}}}
\end{center}
\end{proof}

\section{3-Exact Cover}

\begin{description}
  \item[Gegeben:] Familie $F = \{S_1, \dots, S_n\}$ von $n$ Teilmengen
    einer Menge $U = \{u_1, \dots, u_{3m}\}$ mit $|S_j| = 3$ f\"ur alle
    $j = 1, \dots, n$.
  \item[Entscheide:] Gibt es eine Teilfamilie von $F$ mit $m$ Teilmengen
    $S_{i_1}, \dots, S_{i_m}$ und $\bigcup_{j=1,\dots,m} S_{i_j} = S$.
\end{description}

\begin{satz}
Das Problem 3-Exact Cover ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
Dies folgt, da jede Instanz von 3-dim.\ Matching als eine Instanz von
3-Exact Cover aufgefasst werden kann.
\end{proof}

\section{SubSet Sum}

\begin{description}
  \item[Gegeben:] $n$ ganze Zahlen $c_1, \dots, c_n$ und eine Zahl $K$.
  \item[Entscheide:] Gibt es eine Teilmenge $S \subseteq \{1, \dots, n\}$
    mit $\sum_{j \in S} c_j = K$?
\end{description}

\begin{satz}
Das Problem SubSet Sum ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
(a) SubSet Sum $\in \NP$: W\"ahle als Zertifikat eine Teilmenge und teste,
ob Summe gleich $K$ ist.

(b) 3-Exact Cover $\leq$ SubSet Sum. Gegeben sei eine Familie von $n$
Mengen der Kardinalit\"at 3 und Grundmenge $U = \{u_1, \dots, u_{3m}\}$.
Konstruiere Zahlen $c_1, \dots, c_n$.

\emph{Idee:} Schreibe jede Menge $S_j$ in $F$ als einen Bitvektor der
L\"ange $3m$. Zum Beispiel $\{u_1, u_5, u_6\}$ als $100011$. Nun
interpretiere jeden Bitvektor als Zahl zur Basis $(n+1)$:
\[
c_j = \sum_{u_i \in S_j} (n+1)^{i-1}
\]
Dann gibt z.B.\ die Menge $\{u_1, u_5, u_6\}$ die Zahl
$(n+1)^0 + (n+1)^4 + (n+1)^5$.

Sei $K$ die Zahl zum Bitvektor $11\dots1$ der L\"ange $3m$. Dann gilt
\[
K = \sum_{j=0}^{3m-1} (n+1)^j.
\]

\emph{Behauptung:} $\exists$ $m$ Teilmengen in $F$, die
$\{u_1, \dots, u_{3m}\}$ \"uberdeckt $\Leftrightarrow$ es gibt Teilmenge
der $c_j$, deren Summe genau $K$ ergibt.

$\Leftarrow$: Sei $S \subseteq \{1, \dots, n\}$ mit
$\sum_{j \in S} c_j = K$.

Beachte: (1) Koeffizienten von $(n+1)^i$ sind immer 0 oder 1. (2) Wir haben
$< (n+1)$ Summanden auf der rechten Seite, da $|S| \leq n$. D.h.\ es gibt
keinen \"Ubertrag bei der Addition zur Basis $(n+1)$. Und wir erhalten
genau eine 1 in jeder Bitposition. Daraus folgt, dass
$C = \{S_j \mid j \in S\}$ genau die Menge $\{u_1, \dots, u_{3m}\}$
\"uberdeckt.

$\Rightarrow$: Gegeben sei ein Exact Cover $C$ von
$\{u_1, \dots, u_{3m}\}$. Dann folgt sofort $\sum_{S_j \in C} c_j = K$.
\end{proof}

\section{Partition}

\begin{description}
  \item[Gegeben:] $n$ ganze Zahlen $c_1, \dots, c_n$.
  \item[Entscheide:] Gibt es eine Teilmenge $S \subseteq \{1, \dots, n\}$
    mit $\sum_{j \in S} c_j = \frac{1}{2}\sum_{j=1}^{n} c_j$?
\end{description}

\begin{satz}
Das Problem Partition ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
(a) Partition $\in \NP$ (klar).

(b) SubSet Sum $\leq$ Partition. Gegeben seien Zahlen
$c_1, \dots, c_n, K$. Setze $N = \sum_{j=1}^{n} c_j + 1$ und konstruiere
die folgende Menge von $(n+2)$ Gegenst\"anden:
$\{1, \dots, n\} \cup \{b, c\}$ mit Zahlen $c_1, \dots, c_n$ und
$c_{n+1} = N - K$ und $c_{n+2} = K + 1$. Dann gilt
$\sum_{j=1}^{n+2} c_j = (N-1) + (N-K) + (K+1) = 2N$. D.h.
\[
\frac{1}{2}\sum_{j=1}^{n+2} c_j = N.
\]

\emph{Behauptung:} $c_1, \dots, c_n, K$ ist Ja-Eingabe von SubSet Sum
$\Leftrightarrow$ $c_1, \dots, c_{n+2}$ ist Ja-Eingabe von Partition.

\emph{Vorbemerkung:} $\{b, c\}$ k\"onnen nicht in einer L\"osung zusammen
vorkommen, da
\[
c_{n+1} + c_{n+2} = (N-K) + (K+1) = N + 1.
\]

$\Rightarrow$: Sei $S \subseteq \{1, \dots, n\}$ mit
$\sum_{j \in S} c_j = K$ gegeben. W\"ahle $S \cup \{b\}$ und erhalte
$\sum_{j \in S} c_j + c_{n+1} = K + (N-K) = N$. Dies ist L\"osung von
Partition.

$\Leftarrow$: Sei $S \subseteq \{1, \dots, n+2\}$ L\"osung von Partition
mit $\sum_{j \in S} c_j = N$ gegeben. Dann gilt f\"ur die Komplementmenge
$S^c = \{1, \dots, n+2\} \setminus S$ auch $\sum_{j \in S^c} c_j = N$.
Wegen der obigen Vorbemerkung k\"onnen $b$ und $c$ nicht beide in $S$ und
auch nicht in $S^c$ liegen. O.B.d.A.\ liege $b \in S$ und damit
$c \notin S$.

Dann gilt
\[
N = \sum_{j \in S} c_j = \sum_{j \in S \setminus \{b,c\}} c_j + c_{n+1}
= \sum_{j \in S \setminus \{b,c\}} c_j + (N - K)
\]
Deswegen gilt nun
\[
\sum_{j \in S \setminus \{b,c\}} c_j = K;
\]
d.h.\ $S \setminus \{b,c\}$ ist L\"osung von SubSet Sum.
\end{proof}

\section{Rucksackproblem}

\begin{description}
  \item[Gegeben:] $n$ Gegenst\"ande mit Gr\"o\ss en $c_1, \dots, c_n$ und
    Gewinnen $p_1, \dots, p_n$ und Rucksackkapazit\"at $K$ und Profitwert
    $P$.
  \item[Entscheide:] Gibt es eine Teilmenge $S \subseteq \{1, \dots, n\}$
    der $n$ Gegenst\"ande mit Gesamtgr\"o\ss e $\sum_{j \in S} c_j \leq K$
    und Gesamtprofit $\sum_{j \in S} p_j \geq P$?
\end{description}

\begin{satz}
Das Rucksackproblem ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
Spezialfall mit $c_j = p_j$ f\"ur alle Gegenst\"ande und $P = K$
entspricht dem SubSet Sum Problem.
\end{proof}

\section{Exponentialzeit-Hypothese}

Die Exponentialzeit-Hypothese (ETH) ist eine, bisher unbewiesene,
Rechenh\"arte-Annahme. Formuliert wurde sie von Impagliazzo, Paturi und
Zane im Jahre 2001 [IPZ01].

\begin{satz}[Exponential Time Hypothesis]
Es existiert eine positive Zahl $\delta \in \mathbb{R}$ so dass 3-SAT mit
$n$ Variablen und $m$ Klauseln nicht in Zeit $2^{\delta n}(n+m)^{O(1)}$
gel\"ost werden kann.
\end{satz}

Dieses Theorem ist dadurch motiviert, dass alle bekannten Algorithmen f\"ur
3-SAT eine Laufzeit von $c^n (n+m)^{O(1)}$ besitzen. Die derzeit kleinste
Konstante $c$ ist $1{,}30704$.

\begin{lemma}[Sparsifikation-Lemma]
Unter der Annahme der ETH existiert ein $\delta' \in \mathbb{R}_{\geq 0}$,
so dass 3-SAT mit $m$ Klauseln nicht in Zeit
$O(2^{\delta' m}) = 2^{\delta' m}(n+m)^{O(1)}$ gel\"ost werden kann.
\end{lemma}

Aus obigem Lemma folgt, dass kein Algorithmus mit Laufzeit $2^{o(m)}$
f\"ur 3-SAT existieren kann.

\begin{satz}
Gegeben eine 3-SAT Formel $\Phi$ mit $n$ Variablen und $m$ Klauseln ist es
m\"oglich einen Graphen $G$ mit $O(n+m)$ Knoten in polynomieller Zeit zu
konstruieren, der genau dann 3-f\"arbbar ist, wenn $\Phi$ erf\"ullbar ist.
\end{satz}

Da es m\"oglich ist diesen Graphen in polynomieller Zeit zu erstellen und
die Anzahl der Knoten linear in Variablen und Klauseln ist, k\"onnen wir
direkt unter Annahme der ETH folgendes schlussfolgern.

\begin{satz}
Unter Annahme der ETH gibt es keinen $2^{o(n)}$ Algorithmus f\"ur
3-F\"arbung.
\end{satz}

Mittels \"ahnlichen Transformationen k\"onnen wir \"ahnliche Ergebnisse
auch f\"ur das Cliquenproblem, Vertex Cover und Independent Set folgern.

\begin{satz}
Unter Annahme der ETH gibt es keinen $2^{o(n)}$ Algorithmus f\"ur das
Cliquenproblem, Vertex Cover und Independent Set.
\end{satz}

Die ETH hat auch Konsequenzen f\"ur die bekannten Subset Sum und
Partition-Probleme. Wir zeigen eine Reduktion von 3-SAT auf Subset Sum und
schlie\ss en damit folgendes:

\begin{satz}
Partition, Subset Sum k\"onnen nicht in Zeit
$2^{o(n)}\mathrm{poly}(|I|)$ entschieden werden, au\ss er die ETH ist
falsch.
\end{satz}

\begin{proof}[Beweis (Beweis von Ingo Wegener)]
Gegeben sei eine Formel mit Variablen $x_1, \dots, x_n$ und Klauseln
$c_1, \dots, c_m$. F\"ur jede Variable $x_i$ erzeuge zwei Gegenst\"ande
$a_i, b_i$ mit Gr\"o\ss e
\begin{align*}
s(a_i) &= 10^{i-1} + \sum_{j \in [m],\, x_i \in c_j} 10^{n+j-1}\\
s(b_i) &= 10^{i-1} + \sum_{j \in [m],\, \bar{x}_i \in c_j} 10^{n+j-1}
\end{align*}
[Alle Zahlen haben $n+m$ Ziffern zur Basis 10.] Erzeuge zus\"atzlich zwei
Dummy Items $d_j, e_j$ f\"ur Klausel $c_j$ mit
$s(d_j) = s(e_j) = 10^{n+j-1}$.

Die Itemmenge $A = \{a_i, b_i \mid i \in [n]\} \cup
\{d_j, e_j \mid j \in [m]\}$. Target-Wert ist dann
\[
B = \sum_{i=1}^{n} 10^{i-1} + \sum_{j=1}^{m} 3 \cdot 10^{n+j-1}
\]

\emph{Bemerkung:} (a): Eine L\"osung kann nur entweder $a_i$ oder $b_i$
enthalten. Dies folgt aus der Variablensetzung.

(b): Bei den h\"oheren Ziffern ben\"otigt man durch die Variablensetzung
Werte 1, 2 oder 3 ($\hat{=}$ \# Literale, die erf\"ullt sind pro Klausel)
[die Dummy Items kann man nutzen um auf genau 3 zu kommen].

F\"ur den Beweis zeige noch: Die Reduktion ist streng (d.h.\ $|A| = O(m)$)
\begin{enumerate}
  \item[a)] Wir k\"onnen annehmen, dass $n \leq 3m$ [beachte:
    $m \leq O(n^3)$]
    \[
    \to |A| = 2n + 2m \leq_{n \leq 3m} 6m + 2m = 8m
    \]
\end{enumerate}
Der Rest geht dann per indirektem Beweis. Daf\"ur nehmen wir an, dass ein
Algorithmus f\"ur Subset Sum mit Laufzeit $2^{o(n)}\mathrm{poly}(|I|)$
existiert. F\"ur eine Formel $\Phi$ in 3-SAT in KNF mit $m$ Klauseln
konstruiere Instanz von Subset Sum mit $\leq 8m = O(m)$ Gegenst\"anden und
l\"ose diese Instanz mit obigem Algorithmus.
\[
2^{o(8m)}\mathrm{poly}(|I|) = 2^{o(m)}\mathrm{poly}(|I|).
\]
Wegen Korrektheit und Laufzeit der Reduktion bestimmt dies die
Erf\"ullbarkeit von $\Phi$ in der Laufzeit von
$2^{o(m)}\mathrm{poly}(|I|)$. Dies ist ein Widerspruch zum Sparsification
Lemma der ETH. Als Anmerkung: Ohne das Sparsification Lemma kann kein
Algorithmus f\"ur Subset Sum existieren mit Laufzeit von
$2^{o(\sqrt[3]{n})}$.
\end{proof}

\paragraph{Einschub:} Eine Anmerkung zur $o$-Notation: Die kleine
$o$-Notation ist wie folgt definiert.
\[
f(x) = o(g(x)) \Leftrightarrow
\forall c > 0: \exists x_0 \geq 0: \forall x \geq x_0:
|f(x)| \leq c \cdot |g(x)|
\]
Man kann dies auch als $\frac{f(x)}{g(x)} \to 0$ f\"ur $x \to \infty$
schreiben. Nach dieser Definition gilt also auch dass $\delta n = o(n)$,
weswegen die beiden Schreibweisen austauschbar verwendet werden. Die
Originale Formulierung der ETH verwendet die $\delta n$ Notation, weswegen
sie in unserer Formulierung der Theoreme verwendet wurde.

\section{Hamiltonkreis Problem}

Das Hamiltonkreis Problem (HK) ist wie folgt definiert:

\begin{description}
  \item[Gegeben:] Ein ungerichteter Graph $G = (V,E)$ mit
    $V = \{v_1, \dots, v_n\}$.
  \item[Entscheide:] Gibt es einen Hamiltonschen Kreis; d.h.\ eine
    Permutation $\pi$ der Knoten $(v_{\pi(1)}, \dots, v_{\pi(n)})$ mit
    $\{v_{\pi(i)}, v_{\pi(i \bmod n + 1)}\} \in E$ f\"ur alle
    $i = 1, \dots, n$?
\end{description}

\begin{beispiel}
Der Graph in dem folgenden Bild hat einen entsprechenden Hamiltonkreis;
dieser ist fettgezeichnet.

\begin{center}
\abbtext{Graph mit f\"unf Knoten und acht Kanten; ein Hamiltonkreis \"uber alle f\"unf Knoten ist fett hervorgehoben, die restlichen drei Kanten geh\"oren nicht zum Kreis.}
\end{center}
\end{beispiel}

\begin{satz}
Das Hamiltonkreis Problem ist $\NP$-vollst\"andig.
\end{satz}

\begin{bemerkung}
Die gleiche Aussage gilt auch f\"ur gerichtete Graphen.
\end{bemerkung}

\begin{proof}
(a) HK ist in $\NP$: W\"ahle als Zertifikat eine Permutation $\pi$ der
Knoten und teste, ob $\{v_{\pi(i)}, v_{\pi(i+1 \bmod n)}\} \in E$ ist
f\"ur alle $i = 1, \dots, n$.

(b) $3\text{-}SAT' \leq HK$: Gegeben sei eine SAT Formel mit genau 3
Literalen pro Klausel (ist ebenfalls $\NP$-vollst\"andig). Zur Beweisidee
geben wir die folgenden Graph-Konstruktionen an. Als erstes verwende die
folgende $A$-Komponente:

% --- A-Komponente (Leiter-Graph) ---
\begin{center}
\abbtext{$A$-Komponente (Leitergraph): eine obere Reihe aus sechs Knoten (linke Ecke $1$, rechte Ecke $3$) und eine untere Reihe aus sechs Knoten (linke Ecke $2$, rechte Ecke $4$), jeweils zu einem Pfad verbunden; die vier inneren Knotenpaare sind \"uber vier mittlere Knoten $5,6,7,8$ sprossenartig verbunden (oben--Mitte--unten).}
\end{center}

Dann gibt es zwei M\"oglichkeiten, die Komponente $A$ zu durchlaufen; siehe
die folgenden zwei Abbildungen:

% --- PLATZHALTER: die zwei Durchlauf-Varianten der A-Komponente ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildungen im Original: die
zwei m\"oglichen Hamilton-Durchl\"aufe der $A$-Komponente
(Zickzack-Pfade $1 \to 3$ oben bzw.\ $2 \to 4$ unten).]}}}
\end{center}

F\"ur jede Klausel verwenden wir die folgende Komponente $B$:

% --- PLATZHALTER: B-Komponente ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original:
$B$-Komponente mit den rechten Knoten $1, 2, 3, 4$ (Kanten
$\{u_1,u_2\}, \{u_2,u_3\}, \{u_3,u_4\}$) und innerer
Dreiecks-/Rechteckstruktur.]}}}
\end{center}

Eine der vielen M\"oglichkeiten, wie $B$ durchlaufen werden kann, ist im
folgenden Bild dargestellt.

% --- PLATZHALTER: Beispiel-Durchlauf der B-Komponente ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original: ein
m\"oglicher Hamilton-Durchlauf der $B$-Komponente
(fettgezeichnete Kanten).]}}}
\end{center}

Insgesamt gibt es f\"ur jede nicht-leere Teilmenge der rechten Kanten
$\{u_1, u_2\}, \{u_2, u_3\}, \{u_3, u_4\}$ eine M\"oglichkeit die
Komponente $B$ zu durchlaufen. Bei einer leeren Teilmenge dieser Kanten
funktioniert dies aber nicht; dies entspricht dem Fall, dass alle Literale
falsch gew\"ahlt worden sind. Als Kurzform f\"ur die Spezialkomponenten
$A$ und $B$ verwenden wir:

% Kurzform A-Komponente
\begin{center}
\abbtext{Kurzform der $A$-Komponente: zwei parallele Kanten $1$--$3$ (oben) und $2$--$4$ (unten), verbunden \"uber einen mittleren Kreis-Knoten $5$ mit Doppelpfeilen zu beiden Kanten.}
\end{center}

% Kurzform B-Komponente
\begin{center}
\abbtext{Kurzform der $B$-Komponente: vier \"ubereinanderliegende Knoten $1,2,3,4$ mit den B\"ogen $\{1,2\}, \{2,3\}, \{3,4\}$; ein Kreis-Knoten $5$ links zeigt mit Pfeilen auf alle vier Knoten.}
\end{center}

Im folgenden Beispiel zeigen wir die Konstruktion des Graphen $G$ zu einem
Booleschen Ausdruck $F$.

\begin{beispiel}
Ausdruck $F = (x_1 \vee \neg x_2 \vee x_3) \wedge
(\neg x_1 \vee x_2 \vee \neg x_3) \wedge
(\neg x_1 \vee \neg x_2 \vee x_3)$ und der zugeh\"orige konstruierte Graph
$G$:

% --- PLATZHALTER: Gesamtkonstruktion zu Beispiel 6.44 ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original: Graph
$G$ mit den $B$-Komponenten $10, 11, 12$ (links, eine pro Klausel), den
$A$-Komponenten $1$--$9$ (Mitte, eine pro Literalvorkommen) und dem
rechten Pfad mit den Knotenpaaren $13/14$, $15/16$, $17/18$ (Doppelkanten
$\{v_i, w_i\}$ f\"ur die Variablensetzung).]}}}
\end{center}
\end{beispiel}

F\"ur die Variablensetzung von Variable $x_i$ w\"ahlt man im rechten Pfad
im obigen Bild jeweils zwischen zwei Knoten $v_i, w_i$ f\"ur
$i = 1, \dots, n$ die rechte oder linke Kopie der Kante $\{v_i, w_i\}$.
Die $A$-Komponenten werden nun genutzt um die Verbindung zwischen den
Variablen und den Literalen in den $B$-Komponenten zu den entsprechenden
Klauseln herzustellen. Dazu bezeichnen wir die $u$-Knoten in der
$B$-Komponente zu Klausel $F_i$ mit $u_{i1}, u_{i2}, u_{i3}$ und $u_{i4}$.

Wenn das $j$.te Literal in Klausel $F_i$ gleich $x_k$ ist, dann verbinden
wir die Kante $\{u_{ij}, u_{ij+1}\}$ via einer $A$-Komponente mit der
linken Kopie von $\{v_k, w_k\}$. Wenn das $j$.te Literal gleich
$\neg x_k$, so verbinden wir die Kante $\{u_{ij}, u_{ij+1}\}$ mit der
rechten Kopie.

Formal beweist man am Ende die folgende Aussage: $F$ ist erf\"ullbar genau
dann, wenn $G$ einen Hamiltonkreis besitzt.
\end{proof}

Die Details findet man im Buch von Papadimitriou und Steiglitz.

\subsection*{\"Ubungsaufgaben}

\begin{uebung}
Die Eingabe des Problems $\mathrm{SAT}^3$ ist ein boolscher Ausdruck in
KNF, f\"ur den entschieden werden soll, ob es mindestens 3 erf\"ullende
Belegungen f\"ur diese Formel gibt.

Zeigen Sie, dass $\mathrm{SAT}^3$ $\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
Eine NAE-$k$-SAT (Not-All-Equal) Formel hat folgende Form
$\bigwedge_{i=1}^{m}(z_1^i, \dots, z_k^i)$, wobei eine Klausel
$(z_1^i, \dots, z_k^i)$ mit Literalen $z_1^i, \dots, z_k^i$ genau dann
erf\"ullt ist, wenn mindestens ein Literal zu wahr und mindestens ein
Literal zu falsch ausgewertet wird.

Beispiel: F\"ur die NAE-3-SAT Formel $(x, y, z) \wedge (\neg x, y, z)$ ist
durch $x = y = z = \true$ keine erf\"ullende Belegung gegeben, da in
diesem Fall die erste Klausel nicht erf\"ullt ist. Bei der Belegung
$x = y = \true$ und $z = \false$ hingegen ist die Formel erf\"ullt.

Zeigen Sie in einem ersten Schritt, dass NAE-4-SAT $\NP$-vollst\"andig
ist, und in einem zweiten Reduktionsschritt zeigen, dass ebenfalls
NAE-3-SAT $\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
Ein Independent Set in einem Graphen $G = (V,E)$ ist eine Menge von Knoten
$I$, so dass f\"ur je zwei Knoten $i, j \in I$ gilt, dass
$\{i,j\} \notin E$. F\"ur das Problem \textsc{Independent Set} ist ein
Graph $G = (V,E)$ sowie eine Zahl $k \in \mathbb{N}$ gegeben und es soll
entschieden werden, ob es in $G$ ein Independent Set mit $k$ Knoten gibt.

Zeigen Sie, dass das Problem \textsc{Independent Set}
$\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
Ein Vertex Cover in einem Graphen $G = (V,E)$ ist eine Menge von Knoten
$C \subseteq V$ so dass f\"ur jede Kante $\{v,w\} \in E$ gilt das
$v \in C$ oder $w \in C$. F\"ur das Problem \textsc{Vertex Cover} ist ein
Graph $G = (V,E)$ sowie eine Zahl $k \in \mathbb{N}$ gegeben und es soll
entschieden werden, ob es in $G$ ein Vertex Cover mit $k$ Knoten gibt.

Zeigen Sie, dass das Problem \textsc{Vertex Cover} $\NP$-vollst\"andig
ist.
\end{uebung}

\begin{uebung}
In dem Problem \textsc{Clique-Member} ist ein Graph $G = (V,E)$, ein
Knoten $v \in V$ sowie eine Zahl $k \in \mathbb{N}$ gegeben und es soll
entschieden werden, ob es eine Clique mit $k$ Knoten gibt, die den Knoten
$v$ enth\"alt.

Zeigen Sie, dass \textsc{Clique-Member} $\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
In dem Problem \textsc{Clique-Nomember} ist ein Graph $G = (V,E)$, ein
Knoten $v \in V$ sowie eine Zahl $k \in \mathbb{N}$ gegeben und es soll
entschieden werden, ob es eine Clique mit $k$ Knoten gibt, die den Knoten
$v$ nicht enth\"alt.

Zeigen Sie, dass \textsc{Clique-Nomember} $\NP$-vollst\"andig ist, indem
Sie eine Reduktion von \textsc{Clique} auf \textsc{Clique-Nomember}
angeben.
\end{uebung}

\begin{uebung}
In dem Problem \textsc{Z-Clique} ist ein zusammenh\"angender Graph
$G = (V,E)$ und eine Zahl $k \in \mathbb{N}$ gegeben und es soll
entschieden werden, ob $G$ eine Clique mit $k$ Knoten enth\"alt.

Zeigen Sie, dass \textsc{Z-Clique} $\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
Zeigen Sie, dass das \textsc{Partition} Problem ebenfalls $\NP$-schwer
ist, wenn eine Teilmenge $A'' \subseteq A$ gesucht ist mit
\[
\sum_{a \in A''} a = 3 \sum_{a \in A \setminus A''} a.
\]
\end{uebung}

\begin{uebung}
F\"ur das Problem \textsc{Subset Sum Cardinality} seien $n$ ganze Zahlen
$c_1, \dots, c_n \in \mathbb{N}_{>0}$ (wobei $n$ gerade sei) sowie eine
Zahl $K \in \mathbb{N}$ gegeben. Es soll entschieden werden, ob es eine
Teilmenge $S \subset \{1, \dots, n\}$ gibt mit $|S| = n/2$ und
$\sum_{i \in S} c_i = K$.

Zeigen Sie, dass das Problem \textsc{Subset Sum Cardinality}
$\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
Eine Eingabe des Problems \textsc{Even-Knapsack} ist eine Menge von Items
$I$, sowie ein Rucksack mit gerader Gr\"o\ss e $B$ (d.h.\ es gibt
$b \in \mathbb{N}$ mit $B = 2b$), sowie ein Profitwert $P \in \mathbb{N}$.
Jedes Item hat eine Gr\"o\ss e $s_i \in \mathbb{N}$ und einen Profit
$p_i \in \mathbb{N}$. Das Entscheidungsproblem ist eine Teilmenge
$I' \subseteq I$ zu finden mit $\sum_{i \in I'} s_i \leq B$ und
$\sum_{i \in I'} p_i \geq P$.

Zeigen Sie, dass \textsc{Even-Knapsack} $\NP$-vollst\"andig ist.
\end{uebung}

\begin{uebung}
Die Probleme Multiple-Choice-Knapsack (kurz MC-Knapsack) ist wie folgt
definiert: Gegeben sind endliche Mengen
$C_1, \dots, C_k \subseteq \mathbb{N} \times \mathbb{N}$ von Items, eine
Kapazit\"at $B \in \mathbb{N}$ und ein Zielprofit $P \in \mathbb{N}$. Wir
bezeichnen $C_i$ als Klasse von Items und f\"ur ein Item
$(w,p) \in C_i$ ist $w$ das Gewicht und $p$ der Profit des Items. Es soll
entschieden werden, ob aus jeder Klasse $C_i$ genau ein Item $(w_i, p_i)$
gew\"ahlt werden kann, sodass die gew\"ahlten Items gemeinsam den
Zielprofit erf\"ullen ohne die Kapazit\"at zu \"uberschreiten, d.h.\
$\sum_{i \in [k]} p_i \geq P$ und $\sum_{i \in [k]} w_i \leq B$.

Das Problem ist in $\NP$. Zeigen Sie: MC-Knapsack ist $\NP$-vollst\"andig.
\end{uebung}

\chapter{Approximative Algorithmen}

Das letzte Kapitel hat uns Einblicke in die Schwierigkeit der polynomiellen
Berechenbarkeit gegeben. Wir wissen nun insbesondere, dass es viele Probleme
gibt, deren exakte L\"osung eine gro\ss e, nicht-polynomielle Laufzeit
ben\"otigt -- es sei denn, es gilt $\PP = \NP$. In Ermangelung einer
Eingebung zu der Frage, ob $\PP = \NP$ oder $\PP \neq \NP$ gilt, hat sich
die Disziplin der Approximativen Algorithmen entwickelt; anstatt eine
exakte L\"osung zu verlangen, l\"asst man die Berechnung geringf\"ugig
schlechterer L\"osungen zu, welche sich aber deutlich schneller berechnen
lassen. Die exakte L\"osung wird in diesem Sinne nur noch approximiert.

In diesem Kapitel wollen wir einige solche Approximationsalgorithmen
studieren.

\section{Traveling Salesman Problem}

\begin{description}
  \item[Gegeben:] Eine Menge $V = \{1, \dots, n\}$, Distanzen
    $d(i,j) \in \mathbb{Z}^{+} \cup \{\infty\}$ f\"ur alle
    $i, j \in \{1, \dots, n\}$
  \item[Gesucht:] Eine minimale Rundreise, die jeden Knoten genau einmal
    besucht.
\end{description}

Formal: Eine L\"osung ist gegeben durch eine Permutation $\Pi$ von
$\{1, \dots, n\}$, wobei die L\"ange der Tour
$\sum_{i=1}^{n} d(\Pi(i), \Pi(i+1))$ mit $\Pi(n+1) = \Pi(1)$ ist.

\begin{beispiel}
Betrachte den folgenden Graphen mit 4 Knoten:

\begin{center}
\abbtext{Vollst\"andiger Graph mit vier Knoten $1,2,3,4$ als Quadrat: die vier Seiten haben Distanz $1$, die beiden Diagonalen Distanz $2$.}
\end{center}

Eine optimale Rundreise ist $[1,2,3,4,1]$ mit L\"ange 4.
\end{beispiel}

\begin{satz}
Das Entscheidungsproblem zum Traveling Salesman Problem, ob eine Rundreise
mit L\"ange $\leq L$ existiert, ist $\NP$-vollst\"andig.
\end{satz}

\begin{proof}
Dies folgt durch eine Reduktion vom Hamiltonkreis Problem: W\"ahle f\"ur
jede Kante $\{u,v\} \in E$ den Wert $d(u,v) = 1$ und f\"ur alle anderen
Paare $\{u,v\} \notin E$ den Wert $d(u,v) = |V| + 1$ sowie $L = |V|$.
\end{proof}

Durch Modifikation der Distanzen $d(u,v) = \infty$ f\"ur alle
$\{u,v\} \notin E$, kann man sogar zeigen, dass es keinen approximativen
Algorithmus f\"ur das allgemeine TSP Problem mit beschr\"ankter
Approximationsg\"ute gibt.

Deswegen betrachten wir den \emph{symmetrischen Fall} des TSP mit
$d(i,j) = d(j,i)$ und mit Erf\"ullung der Dreiecksungleichung (kurz:
$\Delta$-Ungleichung) $d(i,j) \leq d(i,k) + d(k,j)$; siehe auch folgendes
Bild:

\begin{center}
\abbtext{Dreieck mit den Ecken $i$, $j$ und $k$: die direkte Kante $i$--$j$ und der Umweg \"uber $k$ veranschaulichen die $\Delta$-Ungleichung.}
\end{center}

\begin{bemerkung}
Das TSP bleibt $\NP$-vollst\"andig im symmetrischen Fall mit
Dreiecksungleichung.
\end{bemerkung}

\begin{definition}
Es sei $G$ ein Multigraph mit parallelen Kanten. Ein \emph{Eulerscher
Kreis} ist ein Kreis, der jede Kante von $G$ genau einmal besucht.
\end{definition}

\begin{beispiel}[K\"onigsberger Br\"uckenproblem]
\leavevmode
\begin{center}
\abbtext{Schematische Karte: vier Landmassen $A, B, C, D$, verbunden durch sieben Br\"ucken (je zwei zwischen $A$--$B$ und $A$--$C$, je eine zwischen $A$--$D$, $B$--$D$ und $C$--$D$).}
\end{center}

\textbf{Frage:} Gibt es einen Rundweg, bei dem man \"uber jede der 7
Br\"ucken genau einmal l\"auft?

Wir k\"onnen das Br\"uckenproblem in ein Graphproblem wie folgt
transformieren:

\begin{center}
\abbtext{Multigraph mit vier Knoten $A, B, C, D$ und sieben Kanten: Doppelkanten $A$--$B$ und $A$--$C$, einfache Kanten $A$--$D$, $B$--$D$ und $C$--$D$.}
\end{center}

\textbf{Frage:} Gibt es einen Eulerschen Kreis in dem Graphen?
\end{beispiel}

Die Frage nach einem Eulerschen Kreis l\"asst sich durch das folgende
Kriterium beantworten.

\begin{satz}
Es sei $G$ ein zusammenh\"angender Multigraph. Dann sind \"aquivalent:
\begin{enumerate}
  \item[(a)] $G$ ist Eulersch (d.h.\ besitzt einen Eulerschen Kreis).
  \item[(b)] Jeder Knoten in $G$ hat geraden Grad.
  \item[(c)] Die Kantenmenge von $G$ kann in disjunkte Kreise zerlegt
    werden.
\end{enumerate}
\end{satz}

\begin{proof}
zur \"Ubung.
\end{proof}

Mit Hilfe von dem obigen Kriterium sieht man nun, dass der obige Graph zum
K\"onigsberger Br\"uckenproblem Knoten mit ungeradem Grad besitzt und es
daher keinen entsprechenden Rundweg gibt.

Wir betrachten nun den folgenden Algorithmus:

\begin{quote}
\begin{alltt}
\textbf{Algorithmus} \(\Delta TSP1\)(V = \{1,...,n\}, D = (d(i,j)))
1  Berechne einen minimalen spannenden Baum \(T\) des Graphen
2  \(K\sb{n}\) mit Distanzen \(d(i,j)\);
3  Konstruiere einen Multigraphen \(G\) aus \(T\) durch Verdoppeln
4  aller Kanten;
5  Bestimme einen Eulerschen Kreis \(K\) in \(G\);
6  Bestimme eine Rundreise \(R\) aus \(K\) durch Abk\"urzungen;
7  return Rundreise \(R\).
\end{alltt}
\end{quote}

\begin{beispiel}
Betrachte den Graphen mit $V = \{A, B, C, D, E\}$; siehe folgendes Bild
(links).

% Links: vollstaendiger Graph mit allen Distanzen (Gewichte gemaess
% Original: 2,2,2,2,1,2,1,3,3,3); rechts: MST mit Gewicht 6.
\begin{center}
\abbtext{Links: vollst\"andiger Graph auf $V=\{A,B,C,D,E\}$ mit Distanzen, u.a.\ $d(A,E)=1$, $d(B,C)=1$, $d(A,C)=2$, $d(C,D)=2$ (\"ubrige Distanzen $2$ bzw.\ $3$). Rechts: minimaler Spannbaum $T$ mit den Kanten $A$--$E$ ($1$), $B$--$C$ ($1$), $A$--$C$ ($2$), $C$--$D$ ($2$); Gewicht $w(T)=6$.}
\end{center}

Eine optimale Tour ist $[C, B, D, E, A, C]$ der L\"ange 8. Der Algorithmus
berechnet einen Baum $T$ mit Gewicht $w(T) = 6$; siehe obiges Bild
(rechts). Wir erhalten den Graphen $G$ durch Verdopplung der Kanten mit
$w(G) = 12$; siehe folgendes Bild:

\begin{center}
\abbtext{Multigraph $G$: die vier Baumkanten $A$--$C$, $A$--$E$, $B$--$C$ und $C$--$D$ liegen jeweils doppelt vor; Gesamtgewicht $12$.}
\end{center}

Als Eulerschen Kreis erhalten wir $K = [C, A, E, A, C, B, C, D, C]$ mit
L\"ange $d(K) = 12$; und durch die Abk\"urzungen (d.h.\ \"Uberspringen der
schon vorher besuchten Knoten) erhalten wir die Rundreise
$R = [C, A, E, B, D, C]$ mit L\"ange $d(R) = 10$.
\end{beispiel}

\begin{satz}
Der Algorithmus $\Delta TSP1$ hat eine multiplikative G\"ute 2; d.h.\
$d(R) \leq 2\,\OPT(I)$, wobei $\OPT(I)$ die L\"ange einer minimalen
Rundreise zu der Eingabe $I$ mit $V = \{1, \dots, n\}$ und Distanzen
$D = (d(i,j))$ ist.
\end{satz}

\begin{proof}
Die Behauptung folgt aus den folgenden Ungleichungen:
\begin{enumerate}
  \item[(1)] Das Gewicht $w(T) \leq \OPT(I)$, da eine optimale Rundreise
    nach Weglassen einer Kante einen spannenden Baum ergibt und $w(T)$
    das kleinste Gewicht eines spannenden Baums ist.
  \item[(2)] $d(K) = 2w(T) \leq 2\,\OPT(I)$. Die erste Gleichung folgt
    wegen der Verdopplung der Kanten und die Ungleichung wegen (1).
  \item[(3)] $d(R) \leq d(K)$. Das gilt, da wegen der
    $\Delta$-Ungleichung die folgende Ungleichung gilt:
    $d(i,j) \leq d(i,\ell_1) + d(\ell_1,\ell_2) + \dots + d(\ell_t,j)$;
    siehe auch folgendes Bild:

    \begin{center}
    \abbtext{Oben ein Pfad $i$--$\ell_1$--$\dots$--$\ell_t$--$j$, unten die direkte Kante $i$--$j$: wegen der $\Delta$-Ungleichung ist $d(i,j)$ h\"ochstens so lang wie der Umweg.}
    \end{center}

    Formal zeigt man die obige Ungleichung per Induktion nach $t \geq 1$.
    \qedhere
\end{enumerate}
\end{proof}

\begin{bemerkung}
Es gibt Beispiele f\"ur Eingaben $I$ zu dem Traveling Salesman Problem mit
$\OPT(I) = n$, bei denen der Algorithmus $\Delta TSP1$ eine Rundreise der
L\"ange $2n - 2$ berechnet.
\end{bemerkung}

\begin{proof}
Zur Beweisidee geben wir hier ein Beispiel mit $n = 8$ Knoten. Betrachte
einen Stern mit Knoten 8 in der Mitte und Knoten $1, \dots, 7$ au\ss en,
die \"uber einen Kreis miteinander verbunden sind. Formal haben wir
$V = \{1, \dots, 8\}$ und
$E = \{\{i,8\} \mid i = 1, \dots, 7\} \cup \{\{i,i+1\} \mid
i = 1, \dots, 6\} \cup \{\{7,1\}\}$. Alle Kanten haben die Distanz 1; die
anderen Nicht-Kanten haben Distanz 2.

Eine optimale TSP Tour hat die Form $[1,2,3,4,5,6,7,8,1]$ der L\"ange 8.
Dagegen kann der MST Algorithmus einen Stern mit 8 als Mittelpunkt und
allen anderen Knoten au\ss en generieren; d.h.\ $T = (V, E')$ hat die
Kantenmenge $E' = \{\{i,8\} \mid i = 1, \dots, 7\}$. Durch Verdopplung der
Kanten erhalten wir einen Multigraphen mit $2n - 2$ Kanten. Eine
m\"ogliche Eulertour ist
\[
[8, 1, 8, 3, 8, 5, 8, 7, 8, 2, 8, 4, 8, 6, 8].
\]
Der Algorithmus erzeugt dann \"uber die Abk\"urzungen die folgende Tour:
\[
[8, 1, 3, 5, 7, 2, 4, 6, 8]
\]
mit L\"ange $14 = 2n - 2$.
\end{proof}

\begin{definition}
Ein \emph{Matching} in einem ungerichteten Graphen $G = (V,E)$ ist eine
Teilmenge $E' \subseteq E$ von Kanten, von denen keine zwei Kanten einen
gemeinsamen Endpunkt gemeinsam haben. Bei Gewichten $d(i,j)$ auf den
Kanten sei $d(E') = \sum_{\{i,j\} \in E'} d(i,j)$ das Gewicht von $E'$.
Ein Matching ist \emph{perfekt}, falls jeder Knoten $v \in V$ dabei
\"uberdeckt wird; d.h.\ $2|E'| = |V|$.
\end{definition}

\begin{beispiel}
Ein bipartiter Graph $G$ und ein perfektes Matching:

\begin{center}
\abbtext{Bipartiter Graph mit je drei Knoten links und rechts und mehreren Kanten; ein perfektes Matching aus drei Kanten (jeder linke Knoten mit genau einem rechten Knoten) ist fett hervorgehoben.}
\end{center}
\end{beispiel}

\begin{satz}[Lawler 1976]
Ein perfektes Matching in einem Graphen $G = (V,E)$ mit minimalem Gewicht
kann in Zeit $O(|V|^3)$ berechnet werden.
\end{satz}

\begin{proof}
siehe z.B.\ Vorlesung Discrete Optimization.
\end{proof}

Eine bessere Approximationsg\"ute erhalten wir, in dem wir die Knoten mit
ungeraden Grad optimaler durch Kanten augmentieren. Hier hilft uns ein
Matching mit minimalem Gewicht. Man beachte, dass die Anzahl der Knoten
mit ungeradem Grad gerade ist; siehe auch Lemma 5.4.

\begin{quote}
\begin{alltt}
\textbf{Algorithmus} \(\Delta TSP2\)(V = \{1,...,n\}, D = (d(i,j)))
 1  Berechne einen minimalen spannenden Baum \(T\) des
 2  Graphen \(K\sb{n}\) mit Gewichten \(d(i,j)\);
 3  Bestimme die Menge \(X\) der Knoten in \(T\),
 4  die ungeraden Grad haben;
 5  Bilde den vollst\"andigen Graphen \(H\) auf \(X\)
 6  mit Gewichten \(d(i,j)\) f\"ur \(i,j \in X\) mit \(i \neq j\).
 7  Bestimme ein perfektes Matching \(K\) in \(H\) mit minimalem
 8  Gewicht.
 9  Bilde den Multigraphen \(G\), der aus \(T\) durch
10  Hinzuf\"ugen aller Kanten aus \(K\) entsteht.
11  Bestimme einen Eulerschen Kreis \(C\) in \(G\);
12  Bestimme eine Rundreise \(R\) aus \(C\) durch Abk\"urzungen;
13  return Rundreise \(R\).
\end{alltt}
\end{quote}

\begin{satz}[Christofides]
Der Algorithmus $\Delta TSP2$ hat eine multiplikative G\"ute $1{,}5$;
d.h.\ $d(R) \leq 1{,}5\,\OPT(I)$.
\end{satz}

\begin{proof}
Es gilt $d(C) = w(T) + d(K) \leq \OPT(I) + d(K)$. Man zeige nun, dass
$d(K) \leq \OPT(I)/2$. Daraus folgt dann die Behauptung.

Sei dazu $(i_1, \dots, i_{2m})$ mit $|X| = 2m$ die Reihenfolge, in der die
Knoten von $X$ in einer optimalen Tour $\delta$ von $I$ durchlaufen
werden. Betrachte die Matchings:
\begin{align*}
M_1 &= \{\{i_1, i_2\}, \{i_3, i_4\}, \dots, \{i_{2m-1}, i_{2m}\}\}\\
M_2 &= \{\{i_2, i_3\}, \{i_4, i_5\}, \dots, \{i_{2m}, i_1\}\}
\end{align*}
Betrachte eine optimale Tour und die Knoten aus $X$:

% Skizze: optimale Tour (Kreis) mit markierten X-Knoten i1..i6 und x, y
\begin{center}
\abbtext{Optimale Tour als Kreis: auf dem Kreis liegen die $X$-Knoten $i_1,\dots,i_6$ in dieser Reihenfolge sowie weitere Knoten $x$ und $y$. $M_1$ verbindet die aufeinanderfolgenden Paare $(i_1,i_2),(i_3,i_4),(i_5,i_6)$; $M_2$ die versetzten Paare $(i_2,i_3),(i_4,i_5),(i_6,i_1)$.}
\end{center}

Wegen der $\Delta$-Ungleichung gilt:
$\OPT(I) \geq d(i_1,i_2) + d(i_2,i_3) + \dots + d(i_{2m},i_1) =
d(M_1) + d(M_2)$. Daher gilt:
$\OPT(I) \geq d(M_1) + d(M_2) \geq 2d(K)$, da $K$ ein perfektes Matching
bez\"uglich $X$ mit minimalem Gewicht ist. Deswegen gilt:
$d(K) \leq \OPT(I)/2$ und damit die Behauptung.
\end{proof}

\begin{beispiel}
Zu unserem Graphen im obigen Beispiel erhalten wir den folgenden
induzierten Graphen $H$ rechts mit einem perfektem Matching $K$ und
Gewicht $w(K) = 3$:

\begin{center}
\abbtext{Links: der MST aus dem obigen Beispiel (Kanten $A$--$E$, $B$--$C$, $A$--$C$, $C$--$D$). Rechts: vollst\"andiger Graph $H$ auf $X=\{B,C,D,E\}$ (die Knoten mit ungeradem Grad in $T$) mit Gewichten $d(B,C)=1$, $d(D,E)=2$, $d(B,E)=2$, $d(C,D)=2$, $d(B,D)=3$, $d(C,E)=3$; das minimale perfekte Matching $K=\{\{B,C\},\{D,E\}\}$ mit Gewicht $3$ ist fett hervorgehoben.}
\end{center}

Als Multigraphen $G$ erhalten wir dann

\begin{center}
\abbtext{Multigraph $G$ aus $T$ plus Matching $K$: Kanten $A$--$C$ ($2$), $A$--$E$ ($1$), $C$--$D$ ($2$), Doppelkante $B$--$C$ ($1$) und Kante $D$--$E$ ($2$); alle Knoten haben geraden Grad.}
\end{center}

Ein Eulerkreis in $G$ ist $C = [C, B, C, A, E, D, C]$ und nach den
Abk\"urzungen erhalten wir $R = [C, B, A, E, D, C]$ mit L\"ange
$d(R) = 9$.
\end{beispiel}

\begin{lemma}
Es gibt Beispiele f\"ur Eingaben $I$ zu dem Traveling Salesman Problem mit
$\OPT(I) = n$, bei denen der Algorithmus $\Delta TSP2$ von Christofides
eine Rundreise der L\"ange $(n-1) + \lfloor n/2 \rfloor$ berechnet.
\end{lemma}

\begin{proof}
zur \"Ubung.
\end{proof}

\section{Rucksackproblem}

Dass das Rucksackproblem $\NP$-vollst\"andig ist, haben wir schon am Ende
des letzten Kapitels gesehen. Hier wollen wir nun einige einfache
Approximationsalgorithmen studieren.

\begin{description}
  \item[Gegeben:]\leavevmode
    \begin{itemize}
      \item $n$ Gegenst\"ande mit Gewichten
        $w_0, \dots, w_{n-1} \in \mathbb{N}$ und Gewinnen
        $p_0, \dots, p_{n-1} \in \mathbb{N}$.
      \item Rucksack der Kapazit\"at $B \in \mathbb{N}$.
    \end{itemize}
  \item[Gesucht:] Teilmenge $I \subseteq \{0, \dots, n-1\}$ mit
    $\sum_{i \in I} w_i \leq B$ und
    \[
    \sum_{i \in I} p_i = \max\Big\{\sum_{i \in I'} p_i \,\Big|\,
    I' \subseteq \{0, \dots, n-1\},\ \sum_{i \in I'} w_i \leq B\Big\}.
    \]
\end{description}

\begin{satz}
Das Entscheidungsproblem zum Rucksackproblem ist $\NP$-vollst\"andig;
sogar wenn $w_i = p_i$ f\"ur alle $i = 0, \dots, n-1$.
\end{satz}

\begin{proof}
siehe Kapitel Einf\"uhrung in die Komplexit\"atstheorie.
\end{proof}

Zun\"achst betrachten wir einen einfachen Greedy Algorithmus (GA):

\begin{quote}
\begin{alltt}
\textbf{Algorithmus} GA(I = ((\(w\sb{0}\),\(p\sb{0}\)),...,(\(w\sb{n-1}\),\(p\sb{n-1}\)), B))
1  sortiere die Gegenst\"ande, so dass
   \(p\sb{0}/w\sb{0} \geq p\sb{1}/w\sb{1} \geq \ldots \geq p\sb{n-1}/w\sb{n-1}\);
2  setze \(S = \emptyset\);
3  for i = 0 to n-1 do
4      if \((\sum\sb{j \in S} w\sb{j}) + w\sb{i} \leq B\) then
5          \(S = S \cup \{i\}\)
6      fi
7  od
8  return(\(S\)).
\end{alltt}
\end{quote}

Es sei $GA(I)$ der Gesamtgewinn der durch Algorithmus GA berechneten
L\"osung $S \subseteq \{0, \dots, n-1\}$ und $\OPT(I)$ der Gesamtgewinn
einer optimalen L\"osung zur Eingabe $I$.

\begin{satz}\leavevmode
\begin{enumerate}
  \item[(a)] Die Laufzeit des Algorithmus GA ist $O(n \log n)$.
  \item[(b)] Der Algorithmus GA hat eine multiplikative G\"ute gr\"o\ss er
    gleich $B - 1$ (d.h.\ $\OPT(I)/GA(I) \geq (B-1)$).
\end{enumerate}
Der Algorithmus GA hat daher keine konstante Worst-Case G\"ute.
\end{satz}

\begin{proof}
Zu (a): hierzu speichere bei jedem Hinzuf\"ugen eines Gegenstands die
momentan benutzte Kapazit\"at $K$. Dann geht Schritt (2--8) in $O(n)$
Zeit. Die Gesamtlaufzeit ergibt sich durch das Sortieren in
$O(n \log n)$.

Zu (b): Betrachte das folgende Beispiel:
$I = ((w_0, p_0) = (1,1), (w_1, p_1) = (B, B-1), B)$. Hier gilt
$p_0/w_0 = 1$ und $p_1/w_1 = (B-1)/B < 1$. Der Algorithmus liefert hier
$S = \{0\}$ mit Gewinn 1; optimal ist aber $S_{\mathrm{opt}} = \{1\}$ mit
Gewinn $B - 1$.

In diesem Fall gilt $\OPT(I)/GA(I) = B - 1$. D.h.\ im allgemeinen Fall
ist die Rate unbeschr\"ankt.
\end{proof}

\emph{Hinweis:} Man beachte, dass GA in dem obigen Beispiel das Element
mit maximalem Profit $p_{\max}$ ignoriert hat. Aus diesem Grunde
betrachten wir eine leichte Modifikation von GA, die sofort hilft die
Approximationsg\"ute zu beschr\"anken.

\begin{quote}
\begin{alltt}
\textbf{Algorithmus} MGA(I = ((\(w\sb{0}\),\(p\sb{0}\)),...,(\(w\sb{n-1}\),\(p\sb{n-1}\)), B))
1  berechne L\"osung \(S\sb{1}\) mit Algorithmus GA,
2  berechne L\"osung \(S\sb{2} = \{j\}\) mit \(p\sb{j} = \max\sb{i \in \{0,...,n-1\}} p\sb{i}\),
3  w\"ahle L\"osung \(S \in \{S\sb{1}, S\sb{2}\}\) mit gr\"o\ss{}erem Gewinn.
4  return(\(S\)).
\end{alltt}
\end{quote}

Es sei $MGA(I)$ der Gesamtgewinn der durch Algorithmus MGA berechneten
L\"osung $S \subseteq \{0, \dots, n-1\}$ und $\OPT(I)$ der Gesamtgewinn
einer optimalen L\"osung zur Eingabe $I$.

\begin{satz}
Die Worst-Case G\"ute von Algorithmus MGA ist 2 (d.h.\
$\OPT(I)/MGA(I) \leq 2$ f\"ur alle Eingaben $I$).
\end{satz}

\begin{proof}
Betrachte relaxierte Version des Rucksackproblems, bei dem Gegenst\"ande
fraktional genommen werden d\"urfen. Es sei $\OPT_f(I)$ der maximale Wert
einer fraktionalen L\"osung $x^{*}$. Es gilt dann
$\OPT(I) \leq \OPT_f(I)$, da der L\"osungsraum sich vergr\"o\ss ert und
ein Max-Problem vorliegt.

Eine fraktionale L\"osung $x^{*}$ von $\max \sum_{j=1}^{n} x_j p_j$ mit
$\sum_j x_j w_j \leq B$ und $x_j \in [0,1]$ f\"ur alle $j = 1, \dots, n$
nimmt Gegenst\"ande in der sortierten Reihenfolge
\[
p_1/w_1 \geq p_2/w_2 \geq \dots \geq p_n/w_n,
\]
wobei die ersten $k$ Gegenst\"ande ganzzahlig (d.h.\ $x_j^{*} = 1$) und
der letzte Gegenstand fraktional mit $x_{k+1}^{*} \in [0,1)$ gew\"ahlt
wird.

\emph{Beachte:} Es gilt $\sum_{j=1}^{k} w_j \leq B$ und
$\sum_{j=1}^{k+1} w_j > B$. Insgesamt haben wir
$\sum_{j=1}^{k+1} x_j^{*} w_j = B$. Falls wir einen fraktionalen
Gegenstand haben mit $x_{k+1}^{*} > 0$, so gilt
$\sum_{j=1}^{k} w_j < B$.

Im Folgenden zeigen wir, dass eine optimale fraktionale L\"osung die
obige Form hat. Angenommen, wir haben ein Teilst\"uck eines Gegenstands
$\ell > k+1$ der L\"ange $x_\ell^{*} w_\ell$ im Rucksack mit
$p_\ell/w_\ell < p_{k+1}/w_{k+1}$ und $x_\ell^{*} > 0$. Dann muss ein
anderes St\"uck $(1 - x_i^{*})w_i$ mit $i \leq k+1$ und $x_i^{*} < 1$ im
Rucksack fehlen (wegen den obigen Bedingungen). Betrachte die minimale
L\"ange
$\mathrm{length} = \min\{(1 - x_i^{*})w_i,\ x_\ell^{*} w_\ell\}$. Das
folgende Bild veranschaulicht die genaue Situation:

% --- PLATZHALTER: Austausch-Skizze (fraktionale Loesung) ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original:
Gegenst\"ande $1, 2, \dots, i, \dots, k, \dots, \ell, \dots, n$ als
Balken ($w_j$ Breite, $p_j$ H\"ohe); der Rucksackinhalt ist gr\"un
markiert; das fehlende St\"uck $(1-x_i^{*})w_i$ von Gegenstand $i$ und
das St\"uck $x_\ell^{*} w_\ell$ bzw.\ $y_\ell w_\ell$ von Gegenstand
$\ell$ werden ausgetauscht.]}}}
\end{center}

Dann gilt $\mathrm{length} = y_i w_i = y_\ell w_\ell$ mit
$y_i \in (0, 1 - x_i^{*}]$ und $y_\ell \in (0, x_\ell^{*}]$ und
$p_i/w_i \geq p_{k+1}/w_{k+1} > p_\ell/w_\ell$.

\emph{Frage:} Wie bestimmt man $y_i, y_\ell$?

Man beachte, dass
$\mathrm{length} = \min\{(1 - x_i^{*})w_i,\ x_\ell^{*} w_\ell\} > 0$.

\emph{Fall 1:} $(1 - x_i^{*})w_i = \mathrm{length}$. Hier setze
$y_i = (1 - x_i^{*})$ und $y_\ell = \mathrm{length}/w_\ell$.

\emph{Fall 2:} $x_\ell^{*} w_\ell = \mathrm{length}$. Hier setze
$y_\ell = x_\ell^{*}$ und $y_i = \mathrm{length}/w_i$.

Ersetze nun die L\"ange $y_\ell w_\ell$ in der L\"osung durch $y_i w_i$.
Der Profitgewinn durch diesen Austausch ist dann
$y_i p_i - y_\ell p_\ell$ und es gilt:
\begin{align*}
y_i p_i - y_\ell p_\ell &> y_i (p_\ell/w_\ell) w_i - y_\ell p_\ell\\
&= y_i w_i p_\ell/w_\ell - y_\ell p_\ell\\
&= y_\ell w_\ell p_\ell/w_\ell - y_\ell p_\ell\\
&= y_\ell p_\ell - y_\ell p_\ell = 0.
\end{align*}
D.h.\ der Profitgewinn ist echt positiv und damit kann ein solcher
obiger Fall nicht auftreten.

Nun kommen wir zur Absch\"atzung der Approximationsg\"ute: Da $k+1$ das
erste Item ist, dass der Algorithmus GA nicht nimmt, gilt
\[
\OPT_f(I) \leq GA(I) + p_{k+1}.
\]
Der Algorithmus MGA berechnet L\"osung mit Wert $GA(I)$ oder
$p_{\max} \geq p_{k+1}$ (bzw.\ sogar genauer mit Wert
$\max\{GA(I), p_{\max}\}$). Daher gilt
\begin{align*}
\OPT(I) &\leq \OPT_f(I) \leq GA(I) + p_{k+1}\\
&\leq GA(I) + p_{\max} \leq 2 \max\{GA(I), p_{\max}\}\\
&= 2 \cdot MGA(I) \qedhere
\end{align*}
\end{proof}

\begin{bemerkung}\leavevmode
\begin{enumerate}
  \item[(a)] Der Algorithmus MGA l\"auft in Zeit $O(n \log n)$.
  \item[(b)] Durch eine Modifikation von MGA k\"onnen wir auch einen
    approximativen Algorithmus angeben mit Worst Case G\"ute 2, der in
    $O(n)$ Zeit l\"auft.
\end{enumerate}
\end{bemerkung}

\begin{proof}
Wir verwenden als Idee zur Laufzeitverbesserung (b) hierzu den
Median-Algorithmus um das sogenannte Split-Item $k+1$ in $O(n)$ Zeit zu
finden.
\end{proof}

Der folgende Algorithmus verallgemeinert die Idee vom MGA Algorithmus,
in dem er alle $k$-elementigen Teilmengen durchprobiert, in den Rucksack
vorplaziert, wenn das m\"oglich ist, und mit Hilfe vom GA Algorithmus die
Restkapazit\"at auff\"ullt.

\paragraph{Algorithmus von Sahni}\leavevmode\\
\textbf{Gegeben:} Parameter $k \in \{0, \dots, n\}$.\\
\emph{Idee:} F\"ur jedes $k$ definiere Algorithmus $A_k$ wie folgt:
\begin{enumerate}
  \item[(1)] w\"ahle eine Teilmenge $S$ mit $|S| \leq k$
    Gegenst\"anden, die am Anfang im Rucksack liegen,
  \item[(2)] wende Algorithmus GA auf die \"ubrigen Elemente an und
    f\"uge die ausgew\"ahlten Gegenst\"ande zus\"atzlich in den Rucksack
    ein.
\end{enumerate}
Wende (1) + (2) auf alle m\"oglichen Teilmengen $S$ mit $|S| \leq k$ an
und w\"ahle L\"osung mit maximalem Gewinn.

Die Technik nennt man \emph{$k$-Enumeration}. Es sei $A_k(I)$ der Gewinn
der L\"osung, den der Algorithmus $A_k$ von Sahni bez\"uglich einer
Eingabe $I$ und Parameter $k \in \{0, \dots, n\}$ produziert.

\begin{satz}
F\"ur alle $k \geq 1$ gilt: $A_k$ hat G\"ute $\leq 1 + 1/k$ und Laufzeit
$T_{A_k}(n) = O(n^{k+1})$.
\end{satz}

\begin{proof}
siehe Vorlesung Effiziente Algorithmen.
\end{proof}

\paragraph{Idee f\"ur ein schnelleres Verfahren:} Konstruiere aus dem
exakten Algorithmus \textsc{Knapsack} aus Kapitel 2 zum Rucksackproblem
einen polynomiellen approximativen Algorithmus.

\emph{Erinnerung:} Das dynamische Programm zum Rucksackproblem hat eine
nicht-polynomielle (bzw.\ eine sogenannte pseudo-polynomielle) Laufzeit
$O(n^2 \cdot p_{\max})$, wobei
$p_{\max} = \max\{p_i \mid 0 \leq i \leq n-1\}$. Hierbei k\"onnte
$p_{\max}$ exponentiell in der Eingabegr\"o\ss e sein; siehe auch
Bemerkung 2.20.

\paragraph{Idee zu Algorithmus $A_K$}\leavevmode
\begin{enumerate}
  \item[(1)] konstruiere eine Eingabe $I_K$ mit Gewinnen
    $p_i' = \lfloor p_i/K \rfloor$ (alle anderen Gr\"o\ss en $w_i$ und
    $B$ bleiben gleich).
  \item[(2)] wende Algorithmus \textsc{Knapsack} auf Eingabe $I_K$ an.
\end{enumerate}
Der Algorithmus $A_K$ berechnet eine L\"osung
$S \subseteq \{0, \dots, n-1\}$ mit Gr\"o\ss e
$\sum_{i \in S} w_i \leq B$ und maximalem Gewinn $\sum_{i \in S} p_i'$.

Wir entwickeln aus $A_K$ ein Verfahren $A_\epsilon$ durch die Wahl
\[
K = \frac{\epsilon\, p_{\max}}{(1/\epsilon + 1)n}.
\]

\begin{satz}
Der Algorithmus $A_\epsilon$ l\"auft in Zeit $O(n^3/\epsilon)$ und hat
eine Worst-Case G\"ute $\OPT(I)/A_\epsilon(I) \leq 1 + \epsilon$.
\end{satz}

Man nennt eine solche Familie von Algorithmen $(A_\epsilon)$ ein
\emph{vollst\"andiges polynomielles Approximationsschema} (FPTAS).

\begin{proof}
(a) zur Laufzeit: F\"ur die skalierten Profite gilt:
$p'_{\max} = \max_i p_i' = \max_i \lfloor p_i/K \rfloor =
\max_i \lfloor p_i (1/\epsilon + 1)n / (\epsilon\, p_{\max}) \rfloor =
\lfloor (1/\epsilon + 1)n/\epsilon \cdot \epsilon \rfloor =
O(n/\epsilon)$.

Der Algorithmus \textsc{Knapsack} angewandt auf die skalierte Instanz
hat dann eine Laufzeit von
\[
O(n^2 p'_{\max}) = O(n^2\, n/\epsilon) = O(n^3/\epsilon).
\]

(b) zur G\"ute: Es gilt zun\"achst
\begin{equation}
\OPT(I) \leq K \cdot \OPT(I_K) + K \cdot n \tag{1}
\end{equation}
Da $p_i' = \lfloor p_i/K \rfloor \geq p_i/K - 1$, haben wir
$p_i \leq K \cdot (p_i' + 1)$ und deswegen haben wir
\begin{align*}
\OPT(I) = \sum_{i \in I_{\mathrm{opt}}} p_i
&\leq \sum_{i \in I_{\mathrm{opt}}} (K p_i' + K)\\
&\leq \sum_{i \in I_{\mathrm{opt}}} K p_i' + K \cdot n
\leq K \cdot \OPT(I_K) + K \cdot n
\end{align*}
Beachte, dass $I_{\mathrm{opt}}$ eine zul\"assige L\"osung von $I_K$ ist
und $(I_K)_{\mathrm{opt}}$ i.a.\ ein h\"oheren Gewinn als
$I_{\mathrm{opt}}$ bez\"uglich Instanz $I_K$ hat. Daneben gilt:
\begin{equation}
K \cdot \OPT(I_K) \leq A_K(I) \tag{2}
\end{equation}
Da $p_i' \leq p_i/K$ gilt
\begin{align*}
K \cdot \OPT(I_K) = K \cdot \sum_{i \in (I_K)_{\mathrm{opt}}} p_i'
&\leq K \cdot \sum_{i \in (I_K)_{\mathrm{opt}}} p_i/K\\
&= \sum_{i \in (I_K)_{\mathrm{opt}}} p_i \leq A_K(I).
\end{align*}
Aus (1) + (2) folgt
\[
\OPT(I) \leq A_K(I) + K \cdot n.
\]
Da alle $w_i \leq B$ (ansonsten kann Gegenstand $i$ aus der Instanz
gel\"oscht werden), gilt $\OPT(I) \geq p_{\max} = \max_i p_i$.

Wir erhalten
\begin{align*}
\frac{\OPT(I)}{A_\epsilon(I)} \leq \frac{A_K(I) + Kn}{A_K(I)}
= 1 + \frac{Kn}{A_K(I)}
&\leq 1 + \frac{Kn}{\OPT(I) - Kn}\\
&\leq 1 + \frac{Kn}{p_{\max} - Kn} = 1 + \epsilon.
\end{align*}
Die letzte Gleichung gilt, da
\[
\frac{Kn}{p_{\max} - Kn}
= \frac{\frac{p_{\max}}{(1/\epsilon+1)n} \cdot n}
{p_{\max} - \frac{p_{\max}}{(1/\epsilon+1)n}\, n}
= \frac{\frac{1}{(1/\epsilon+1)}}{1 - \frac{1}{(1/\epsilon+1)}}
= \frac{\frac{1}{1/\epsilon+1}}{\frac{1/\epsilon+1-1}{1/\epsilon+1}}
= \frac{1}{1/\epsilon} = \epsilon. \qedhere
\]
\end{proof}

\paragraph{Weitere Approximationsschema}
\begin{itemize}
  \item $O(n^2/\epsilon)$ (Ibarra und Kim 1975).
  \item $O(n \log(1/\epsilon) + 1/\epsilon^4)$ (Lawler 1979).
  \item $O(n \min\{\log n, \log(1/\epsilon)\} + 1/\epsilon^2
    \log(1/\epsilon) \min\{n, 1/\epsilon \log(1/\epsilon)\})$
    (Kellerer, Pferschy 2004).
  \item $\tilde{O}(n + (1/\epsilon)^{5/2})$ (Rhee 2015).
  \item $\tilde{O}(n + (1/\epsilon)^{12/5})$ (Chan 2018).
  \item $\tilde{O}(n + (1/\epsilon)^{9/4})$ (Jin 2019).
\end{itemize}
In der $\tilde{O}$ Notation vernachl\"assigt man $\log(.)$-Terme in der
Laufzeit.

\begin{bemerkung}
Es gibt kein FPTAS mit einer Laufzeit $O((n + 1/\epsilon)^{2-\delta})$,
au\ss er $(\min,+)$ Convolution hat einen Algorithmus mit einer
subquadratischen Laufzeit (Cygan u.a.\ 2017 bzw.\ K\"unnemann u.a.\
2017).
\end{bemerkung}

\section{Scheduling}

Der Begriff Scheduling beschreibt die Problematik der Erstellung eines
Ablaufplans bzw.\ Schedules, der Prozessen zeitlich begrenzt Ressourcen,
wie etwa Maschinen bzw.\ Prozessoren oder Speicher, zuteilt. Dabei
untersucht man die Optimierung bzw.\ Approximation diverser
Zielfunktionen. Eine klassische Variante wird formal als $P||C_{\max}$
angegeben und l\"asst sich wie folgt formulieren.

\begin{description}
  \item[Gegeben:] $n$ Jobs $J = \{J_1, \dots, J_n\}$ mit
    Ausf\"uhrungszeiten $p_1, \dots, p_n \in \mathbb{N}$ und $m$
    identische Maschinen.
  \item[Gesucht:] Partition von $J$ in $m$ Teilmengen
    $B_1, \dots, B_m$ mit minimaler maximaler Last
    \[
    C_{\max} = \max_{1 \leq i \leq m} \sum_{J_j \in B_i} p_j.
    \]
\end{description}

Den Wert $C_{\max}$ nennt man auch den \emph{Makespan} des Schedules. Das
Problem wird bezeichnet durch $P||C_{\max}$ bzw.\ $Pm||C_{\max}$, wenn
die Anzahl der Maschinen $m$ konstant ist. Im Folgenden betrachten wir
eine Instanz f\"ur das Schedulingproblem $P||C_{\max}$:

\begin{table}[h]
\begin{center}
\begin{tabular}{c|ccccc}
$J_j$ & $J_1$ & $J_2$ & $J_3$ & $J_4$ & $J_5$\\
\hline
$p_j$ & 1 & 2 & 1 & 3 & 1
\end{tabular}\\[4pt]
$m = 2$
\end{center}
\caption{Schedulinginstanz}
\end{table}

F\"ur diese Instanz mit zwei Maschinen k\"onnen wir etwa die beiden
folgenden Ablaufpl\"ane/Schedules als zul\"assig erkennen:
\begin{itemize}
  \item $B_1 = \{J_1, J_2, J_5\}$, $B_2 = \{J_4, J_5\}$ mit Makespan 4.
  % Anm.: so im Original; gemaess Abbildung ist B1 = {J1, J2, J3},
  % B2 = {J4, J5} gemeint.

  \begin{center}
  \abbtext{Gantt-Diagramm mit zwei Maschinen: $M_1$ f\"uhrt $J_1$ ($0$--$1$), $J_2$ ($1$--$3$), $J_3$ ($3$--$4$) aus; $M_2$ f\"uhrt $J_4$ ($0$--$3$), $J_5$ ($3$--$4$) aus. Makespan $4$.}
  \end{center}

  \item $B_1 = \{J_1, J_3, J_4\}$, $B_2 = \{J_2, J_5\}$ mit Makespan 5.

  \begin{center}
  \abbtext{Gantt-Diagramm mit zwei Maschinen: $M_1$ f\"uhrt $J_1$ ($0$--$1$), $J_3$ ($1$--$2$), $J_4$ ($2$--$5$) aus; $M_2$ f\"uhrt $J_2$ ($0$--$2$), $J_5$ ($2$--$3$) aus. Makespan $5$.}
  \end{center}
\end{itemize}

Man erkennt leicht, dass der erste Ablaufplan ein optimaler Ablaufplan
ist. Der optimale Makespan ist also 4. Wie schwer ist nun dieses Problem?
Der folgende Satz gibt uns Auskunft.

\begin{satz}
Das Schedulingproblem auf identischen Maschinen $Pm||C_{\max}$ ist
$\NP$-vollst\"andig sogar f\"ur $m = 2$ Maschinen.
\end{satz}

\begin{proof}
Dies folgt durch eine Reduktion des Partitionsproblems.
\end{proof}

Man mache sich klar, dass daraus unmittelbar auch die
$\NP$-Vollst\"andigkeit von $P||C_{\max}$ folgt. Wir wollen nun einen
ersten Approximationsalgorithmus studieren, den wir
\textsc{ListScheduling} nennen.

\begin{quote}
\begin{alltt}
\textbf{Algorithmus} ListScheduling(L=(\(J\sb{1}\),...,\(J\sb{n}\)),m)
1  for i=1 to m do
2      \(E\sb{i} = 0\); \(B\sb{i} = \emptyset\);
3  od
4  for j=1 to n do
5      w\"ahle Job \(J\sb{j}\) aus Liste L;
6      w\"ahle Maschine \(M\sb{i}\) mit minimaler Last \(E\sb{i}\);
7      \(B\sb{i} = B\sb{i} \cup \{J\sb{j}\}\);
8      \(E\sb{i} = E\sb{i} + p\sb{j}\);
9  od
\end{alltt}
\end{quote}

Es sei $LS(I)$ die L\"ange eines List Schedules und $\OPT(I)$ die
L\"ange eines optimalen Schedules zur Eingabe $I$.

\begin{satz}\leavevmode
\begin{enumerate}
  \item[(a)] F\"ur alle Eingaben $I = (L,m)$ gilt
    $LS(I)/\OPT(I) \leq 2 - 1/m$.
  \item[(b)] Es existiert eine Eingabe $I^{*}$ mit
    $LS(I^{*}) = (2 - 1/m)\OPT(I^{*})$. Der Algorithmus hat also eine
    multiplikative G\"ute bzw.\ absolute Worst Case G\"ute von
    $2 - 1/m$.
\end{enumerate}
\end{satz}

\begin{proof}
Zu (a): O.B.d.A.\ hat Maschine $M_1$ nach der Zuordnung die h\"ochste
Last $L = \sum_{j \in B_1} p_j$ (ansonsten nummeriere die Maschinen um).
Es sei $J_k$ der letzte Job, der auf Maschine $M_1$ fertig wird. Dann
haben alle Maschinen eine Last $L_i \geq L - p_k$. Zu dem Zeitpunkt, wo
$J_k$ der Maschine $M_1$ zugeordnet wurde, hatte $M_1$ die kleinste Last
$L - p_k$. Wir illustrieren dies in Abb.~\ref{abb:ls}.

\begin{figure}[h]
\begin{center}
\abbtext{Gantt-Diagramm der Maschinen $M_1,\dots,M_m$: $M_1$ endet mit dem Job $J_k$ zum Zeitpunkt $L$; alle anderen Maschinen haben eine Last von mindestens $L-p_k$. Gestrichelte Linien markieren die Zeitpunkte $L-p_k$ und $L$.}
\end{center}
\caption{Maschine $M_1$ hat mit $J_k$ bzw.\ ohne $J_k$ die gr\"o\ss te
Last bzw.\ kleinste Last}\label{abb:ls}
\end{figure}

Daraus folgt sofort die folgende Absch\"atzung:
\[
\sum_{i=1}^{n} p_i \geq m(L - p_k) + p_k.
\]
Daneben gilt (da die gesamte Last $\sum p_i$ auf $m$ Maschinen verteilt
werden muss und mindestens eine Maschine eine Last $\geq \sum p_i/m$
hat):
\[
\sum_{i=1}^{n} p_i/m \leq \OPT(I).
\]
Da nun $LS(I) = L$ ist, gilt
\begin{align*}
\OPT(I) \geq \sum_{i=1}^{n} p_i/m &\geq m(L - p_k)/m + p_k/m\\
&= L - (1 - 1/m)p_k = LS(I) - (1 - 1/m)p_k
\end{align*}
Da $\OPT(I) \geq p_k$ folgt nun
$\OPT(I) \geq LS(I) - (1 - 1/m)\OPT(I)$ bzw.
\[
LS(I) \leq (2 - 1/m)\OPT(I).
\]

Zu (b): zur \"Ubung.
\end{proof}

Wir haben gesehen, dass ein erstaunlich einfacher Algorithmus schon eine
G\"ute von 2 garantieren kann. Allerdings f\"allt auf, dass die
beliebige Wahl des n\"achsten Jobs (in Zeile 5) mitunter schlecht sein
kann. Es scheint besser zu sein, die Jobs absteigend ihrer
Ausf\"uhrungszeit nach zu plazieren, was uns zum folgenden Algorithmus
\textsc{LPT Scheduling} f\"uhrt.

\begin{quote}
\begin{alltt}
\textbf{Algorithmus} LPT Scheduling(I=(J,m))
1  sortiere die Jobs in J so, dass \(p\sb{1} \geq p\sb{2} \ldots \geq p\sb{n}\);
2  wende den List Scheduling Algorithmus an auf I=(L,m)
   mit L=(\(J\sb{1}\),...,\(J\sb{n}\))
\end{alltt}
\end{quote}

Es sei $LPT(I)$ die L\"ange eines LPT Schedules bez\"uglich einer
Eingabe $I = (J,m)$.

\begin{satz}
Der LPT Algorithmus hat eine absolute Worst Case Rate von
$4/3 - 1/(3m)$; d.h.
\begin{equation}
LPT(I) \leq (4/3 - 1/(3m))\OPT(I). \tag{$*$}
\end{equation}
\end{satz}

\begin{proof}
\emph{Annahme:} Es existiert eine Jobmenge $J$ und Maschinenzahl $m$,
die die Behauptung $(*)$ nicht erf\"ullt. Der Satz gilt sofort f\"ur
$m = 1$ (in diesem Fall gilt n\"amlich $LPT(I) = \OPT(I)$). Daher nehmen
wir an: $m \geq 2$ und $n$ ist minimal (d.h.\ wir haben ein minimales
Gegenbeispiel).

\emph{Annahme:} Es existiert ein Job $J_r$ mit $r < n$, f\"ur den die
Fertigstellungszeit $f_r = LPT(I = (J,m))$ gilt. Betrachte
$J' = \{J_1, \dots, J_r\}$ mit Liste $L' = (J_1, \dots, J_r)$. Dann gilt
$LPT(I = (J,m)) = LPT(I' = (J',m))$ und der optimale Wert
$\OPT(I') \leq \OPT(I)$. Damit haben wir
\[
\frac{LPT(I')}{\OPT(I')} \geq \frac{LPT(I)}{\OPT(I)} > 4/3 - 1/(3m)
\]
ein kleineres Gegenbeispiel gefunden. Widerspruch zur Minimalit\"at von
$n$.

Es gilt also $f_k < LPT(I = (J,m))$ f\"ur alle $k < n$. Desweiteren
haben wir die Ungleichungen:
\begin{align}
\OPT(I) &\geq \frac{1}{m}\sum_{i=1}^{n} p_i \tag{1}\\
\sum_{i=1}^{n-1} p_i &\geq m s_n = m(LPT(I) - p_n), \tag{2}
\end{align}
wobei $s_n$ der Startzeitpunkt von Job $J_n$ ist.

\begin{center}
\abbtext{Gantt-Diagramm: alle $m$ Maschinen sind bis zum Startzeitpunkt $s_n$ l\"uckenlos mit den Jobs $J_1,\dots,J_{n-1}$ besch\"aftigt; anschlie\ss end l\"auft $J_n$ (L\"ange $p_n$) bis zum Zeitpunkt $LPT(J)$.}
\end{center}

\emph{Beachte:} Alle Maschinen sind bis zum Zeitpunkt $s_n$ voll
besch\"aftigt (d.h.\ keine Maschine ist idle vor dem Zeitpunkt $s_n$).
\begin{align*}
\frac{LPT(I)}{\OPT(I)} = \frac{s_n + p_n}{\OPT(I)}
&\leq_{(2)} \frac{p_n}{\OPT(I)} +
\frac{1}{m\,\OPT(I)}\sum_{i=1}^{n-1} p_i\\
&= \frac{(m-1)p_n}{m\,\OPT(I)} +
\frac{1}{m\,\OPT(I)}\sum_{i=1}^{n} p_i\\
&\leq_{(1)} \frac{(m-1)p_n}{m\,\OPT(I)} + 1.
\end{align*}
Da $(*)$ f\"ur $I$ nicht gilt, folgt
\[
1 + \frac{(m-1)p_n}{m\,\OPT(I)} \geq \frac{LPT(I)}{\OPT(I)}
> 4/3 - 1/(3m).
\]
Daraus folgt
\[
\frac{(m-1)p_n}{m\,\OPT(I)} > 1/3 - 1/(3m) = \frac{m-1}{3m}
\quad\text{bzw.}\quad
p_n > \frac{\OPT(I)}{3}.
\]
(d.h.\ der kleinste Job $J_n$ ist gr\"o\ss er als $\OPT(I)/3$). Daraus
folgt, dass keine Maschine in einem optimalen Schedule mehr als 2 Jobs
ausf\"uhren kann.

Als n\"achstes transformieren wir einen optimalen Schedule
$D_{\mathrm{opt}}$ f\"ur solch eine Jobmenge mit $p_n > \OPT(I)/3$ in
einen Schedule $\bar{D}_{\mathrm{opt}}$, der zus\"atzliche Eigenschaften
erf\"ullt.

\paragraph{Transformation I.1 f\"ur $D_{\mathrm{opt}}$.} Gegeben sei ein
Schedule $D_{\mathrm{opt}}$ mit Makespan $C_{\max}$ und zwei Jobs $J_i$
und $J_{i'}$ auf einer Maschine und zwei Jobs $J_j$ und $J_{j'}$ auf
einer anderen Maschine, wobei $p_i > p_j$ und $p_{i'} > p_{j'}$ ist.

% --- Skizze Transformation I.1 ---
\begin{center}
\abbtext{Zwei Maschinen: oben $J_i$ gefolgt von $J_{i'}$, unten $J_j$ gefolgt von $J_{j'}$, mit $p_i > p_j$ und $p_{i'} > p_{j'}$.}
\end{center}

Wenn wir $J_{i'}$ und $J_{j'}$ vertauschen, so erhalten wir den
folgenden Schedule $D'_{\mathrm{opt}}$ mit Makespan
$C'_{\max} \leq C_{\max}$:

\begin{center}
\abbtext{Nach dem Tausch von $J_{i'}$ und $J_{j'}$: oben $J_i$ gefolgt von $J_{j'}$, unten $J_j$ gefolgt von $J_{i'}$; der Makespan wird dadurch nicht gr\"o\ss er.}
\end{center}

\paragraph{Transformation I.2 f\"ur $D_{\mathrm{opt}}$.} Gegeben sei ein
Schedule $D_{\mathrm{opt}}$ mit Makespan $C_{\max}$ und zwei Jobs $J_i$
und $J_{i'}$ auf einer Maschine und ein Job $J_j$ auf einer anderen
Maschine, wobei $p_i > p_j$ ist.

Wenn wir den Job $J_{i'}$ auf die andere Maschine verschieben, so
erhalten wir einen Schedule $D'_{\mathrm{opt}}$ ebenso mit Makespan
$C'_{\max} \leq C_{\max}$:

\begin{center}
\abbtext{Oben $J_i$ gefolgt von $J_{i'}$, unten nur $J_j$ (mit $p_i > p_j$); der Job $J_{i'}$ wird auf die untere Maschine verschoben.}
\end{center}

\paragraph{Transformation II f\"ur $D_{\mathrm{opt}}$.} Gegeben sei ein
Schedule $D_{\mathrm{opt}}$ mit Makespan $C_{\max}$ und zwei Jobs $J_i$
und $J_{i'}$ auf einer Maschine mit $p_i < p_j$. In diesem Fall
vertauschen wir die Reihenfolge beider Jobs auf der entsprechenden
Maschine:

\begin{center}
\abbtext{Eine Maschine mit $J_i$ vor $J_j$ und $p_i < p_j$; die Reihenfolge der beiden Jobs auf der Maschine wird vertauscht.}
\end{center}

\emph{Beachte:} Keine der Transformationstypen I.1, I.2 oder II erh\"oht
den Makespan.

\begin{definition}[Lastfunktion]
Bei gegebenen Lastwerten $L_i$ auf den Maschinen $M_i$ in einem Schedule
$D$ ist die Lastfunktion
$L(D) = \sum_{1 \leq i < j \leq m} |L_i - L_j|$.
\end{definition}

\begin{bemerkung}\leavevmode
\begin{enumerate}
  \item[(1)] Erhalten wir einen Schedule $D'$ aus $D$ durch eine Type I
    Transformation, so gilt $L(D') < L(D)$.
  \item[(2)] Erhalten wir einen Schedule $D'$ aus $D$ durch eine Type II
    Transformation, so gilt $L(D') = L(D)$.
\end{enumerate}
\end{bemerkung}

Wir wenden nun auf $D_{\mathrm{opt}}$ alle m\"oglichen Type I und Type
II Transformationen an, bis keine Transformation mehr anwendbar ist. Es
sei $D^{*}$ der erzeugte Schedule. Ein solcher Schedule existiert, da
\begin{enumerate}
  \item[(1)] es nur endlich viele Anordnungen von $n$ Jobs auf $m$
    Maschinen gibt,
  \item[(2)] wir zwischen zwei Type I Transformationen nur endlich viele
    Type II Transformationen einf\"ugen k\"onnen,
  \item[(3)] wir wegen Eigenschaft (1) in der obigen Bemerkung nur
    endlich viele Type I Transformationen ausf\"uhren k\"onnen.
\end{enumerate}
$D^{*}$ erf\"ullt die folgende Bedingung:

% --- PLATZHALTER: Skizze zu D* (drei Maschinen mit Ji,Ji', Jj,Jj', Jk) ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original: drei
Maschinen mit Jobs $J_i, J_{i'}$ auf der ersten, $J_j, J_{j'}$ auf der
zweiten und dem einzelnen Job $J_k$ auf der dritten Maschine.]}}}
\end{center}

Wenn wir zwei Jobs $J_i, J_{i'}$ auf einer Maschine, zwei Jobs
$J_j, J_{j'}$ auf einer zweiten Maschine und einen einzelnen Job $J_k$
auf einer dritten Maschine haben mit $p_i > p_j$, so folgt
\begin{equation}
\begin{aligned}
p_{j'} \geq p_{i'},\quad p_i \leq p_k,\quad p_i \geq p_{i'},\\
p_j \leq p_k,\quad p_j \geq p_{j'}.
\end{aligned}
\tag{$**$}
\end{equation}
Durch Umordnen der Maschinen in $D^{*}$ erhalten wir einen Schedule
$\bar{D}_{\mathrm{opt}}$:

% --- PLATZHALTER: Skizze zu D-bar-opt ---
\begin{center}
\fbox{\parbox{0.85\textwidth}{\small\emph{[Abbildung im Original:
Maschinen mit Einzeljobs $J_{k_1}, \dots, J_{k_s}$ oben und
Jobpaaren $(J_{i_1}, J_{i'_1}), \dots, (J_{i_t}, J_{i'_t})$ darunter.]}}}
\end{center}

Hierbei gelten die Ungleichungen $p_{k_1} \geq \dots \geq p_{k_s}$ sowie
$p_{i_1} \geq \dots \geq p_{i_t}$ und wegen $(**)$ haben wir
$p'_{i_1} \leq \dots \leq p'_{i_t}$ und $p_{k_s} \geq p_{i_1}$ sowie
$p_{i_t} \geq p'_{i_t}$. Damit haben wir die folgende Ordnung der Jobs:
\[
p_{k_1} \geq \dots \geq p_{k_s} \geq p_{i_1} \geq \dots \geq p_{i_t}
\geq p'_{i_t} \geq \dots \geq p'_{i_1}.
\]
Der Schedule $\bar{D}_{\mathrm{opt}}$ ist nun \"aquivalent zu einem List
Schedule $D_L$ bei gegebener Liste $L = (J_1, \dots, J_n)$ mit
$p_1 \geq \dots \geq p_n$ (bis auf Vertauschen von Jobs mit gleicher
Ausf\"uhrungszeit). Daraus folgt aber
\[
LPT(I = (J,m)) = \OPT(I = (J,m)).
\]
Wegen $LPT(I)/\OPT(I) > 4/3 - 1/(3m)$ erhalten wir nun aber einen
Widerspruch (d.h.\ es kann kein Gegenbeispiel f\"ur die Ungleichung
$(*)$ existieren).
\end{proof}

\begin{bemerkung}
F\"ur jede Anzahl $m$ von Maschinen existiert eine Eingabe
$I_m^{*} = (J^{*}, m)$ mit
\[
\frac{LPT(I_m^{*})}{\OPT(I_m^{*})} = \frac{4}{3} - \frac{1}{3m}.
\]
\end{bemerkung}

\begin{proof}
zur \"Ubung.
\end{proof}

\begin{satz}
F\"ur jede Genauigkeit $\epsilon > 0$ gibt es einen approximativen
Algorithmus $A_\epsilon$ f\"ur $P||C_{\max}$ mit
$A_\epsilon(I) \leq (1 + \epsilon)\OPT(I)$ und Laufzeit
$2^{O(1/\epsilon \log^2(1/\epsilon))} + O(n)$.
\end{satz}

\begin{bemerkung}
Eine Familie $(A_\epsilon)$ von solchen Algorithmen nennt man ein
(effizientes) polynomielles Approximationsschema (EPTAS).
\end{bemerkung}

Details: siehe Vorlesung Effiziente Algorithmen.

\subsection*{\"Ubungsaufgaben}

\begin{uebung}
Zeigen Sie:
\begin{itemize}
  \item Ein zusammenh\"angender ungerichteter Graph $G = (V,E)$
    enth\"alt eine Eulertour genau dann, wenn jeder Knoten in $V$
    geraden Knotengrad hat.
  \item Ein stark zusammenh\"angender gerichteter Graph $G = (V,E)$
    enth\"alt eine Eulertour genau dann, wenn f\"ur jeden Knoten
    $v \in V$ gilt, dass $d_{\mathrm{in}}(v) = d_{\mathrm{out}}(v)$.
\end{itemize}
\end{uebung}

\end{document}
