Sei $V =\{x_1, \dots, x_n\}$ die Menge der Variablen.
Als Literal $l$ bezeichnet man eine Variable $x_i \in V$ oder ihre Negation $\overline{x_i}$.
Eine Oder-Klausel (kurz Klausel) $C = l_1\lor\dots\lor l_k$ ist eine Oder-Verknüpfung von Literalen.
Eine Boolesche $(n, m)$-Formel $\Phi= C_1\land\dots\land C_m$ in konjunktiver Normalform ist eine Und-Verknüpfung von Oder-Klauseln aus $n$ Variablen aus $V$.
Berechnet ein Algorithmus $A$ in Zeit $t(\abs{I})$ eine Ausgabe $\sigma_I^A \in\solution(I)$ für Eingabe $I \in\domain$, wird er als $t(n)$-Zeit-Approximationsalgorithmus bezeichnet. Es gilt die Schreibweise $A(I)= f(\sigma_I^A)$.
Sei $\Pi$ ein kombinatorisches Optimierungsproblem, sodass in allen Instanzen $I$ alle vorkommenden Zahlen natürliche Zahlen sind. Sei $\maxnr(I)$ die größte in $I$ vorkommende Zahl. Ein Algorithmus wird als pseudo-polynomiell bezeichnet, falls es ein Polynom $\poly(\cdot, \cdot)$ gibt, sodass für alle Instanzen $I$ seine Laufzeit $\poly(\abs{I}, \maxnr(I))$ ist.
Kann also das Problem so eingeschränkt werden, dass für alle Instanzen $I$ die größte vorkommende Zahl durch ein Polynom begrenz wird, also $\maxnr(I)\le q(\abs{I})$ mit Polynom $q$ gilt, so ist auch die Laufzeit des Algorithmus polynomiell.
Ein NP-vollständiges Entscheidungsproblem $L$ wird als stark NP-vollständig bezeichnet, wenn es ein Polynom $q$ gibt, sodass $L_q =\{x \mid x \in L, \maxnr(x)\le q(\abs{x})\}$ NP-vollständig ist. Gibt es kein solches Polynom, gilt $L$ als schwach NP-vollständig.
Eine äquivalente Charakterisierung ist: Das NP-vollständige Entscheidungsproblem $L$ ist stark vollständig, falls es keinen pseudo-polynomiellen Algorithmus für $L$ gibt (unter der Annahme $P \neq NP$).
\item\hamilton{} und \problem{Clique} sind stark NP-vollständig, da bei ihnen das Polynom $q(n)= n$ ausreicht.
\item\tsp{} ist stark NP-vollständig, da sogar das $\deltatsp$ mit Gewichten 1 und 2 NP-vollständig ist.
\item\rucksack{} ist schwach NP-vollständig, weil es einen pseudo-polynomiellen Algorithmus für die Optimierungsvariante gibt, der auch für das Entscheidungsproblem verwendet werden kann.
Konstruiere aus einer Instanz $I =\encoded{ W, \vol, p, B \rangle$ eine neue Probleminstanz $I' =\langle W, \vol, p', B}$ mit $p'(w)=(k +1)\cdot p(w)$.
Eine zulässige Lösung $\sigma$ für $I$ ist auch eine zulässige Lösung für $I'$. Gleiches gilt aufgrund der Monotonie der Multiplikation auch für optimale Lösungen.
Durch die Multiplikation aller Preise mit $k +1$ beträgt die \enquote{Lücke} zwischen den optimalen und der ersten nicht-optimalen Lösung für $I'$ mindestens $k +1$.
Da $A$ eine absolute Güte von $k$ garantiert und in Polynomzeit terminiert, kann es nur eine optimale Lösung für $I'$, welche auf optimal für $I$ ist, zurückgeben. Damit ist das $NP$-vollständige \rucksack{} in Polynomzeit exakt lösbar.
Die hierbei verwendete Vorgehensweise einer Selbstreduktion sowie das \enquote{Aufblasen} des Problems (\enquote{Scaling}, \enquote{Gap Amplification}) lässt sich auch auf viele andere Probleme wie etwa \setcover{} anwenden. Folglich kann eine konstante Gütegarantie nur für vergleichsweise wenig Probleme erreicht werden.
Durch Benutzung von $A$ mit beliebiger konstanter relativer Gütegarantie $r \in\naturals$ kann \hamilton{} auf das volle \tsp reduziert werden. Es wird also $\hamilton{}\le\mathrm{p}\tsp[r]$ für alle $r$ gezeigt:
Sei der Graph $G =(V, E)$ mit $n =\abs{V}$, gegeben. Dazu wird nun passend eine Probleminstanz $I_G =\encoded{ K_n, c}$ für \tsp erzeugt. $c$ wird wie folgt konstruiert:
Der Ansatz der Konstruktion von Probleminstanzen anderer $NP$-schwerer Probleme und der anschließenden Verwendung eines Scaling-Arguments kann auch für weitere Probleme verwendet werden. Ebenfalls können damit bestimmte Bereiche für mögliche konstante relative Gütegarantien ausgeschlossen werden, etwa $\rho < \frac{3}{2}$ bei \problem{BinPacking}.
Während die Ergebnisse von Approximationsalgorithmen mit absoluter oder relativer Gütegarantie nur durch eine Modifikation oder Wechsel des Algorithmus verbessert werden können, ist es manchmal gewünscht, im Gegenzug für eine verlängerte Laufzeit eine bessere Güte zu erreichen. Dafür sind sogenannte Approximationsschemata geeignet.
\subsection{Definition}
Sei $\Pi$ ein Optimierungsproblem und $A$ ein Approximationsalgorithmus für $\Pi$, der eine Probleminstanz $I$ von $\Pi$ und ein $0 < \varepsilon < 1$ bekommt.
\item$A$ ist ein polynomielles Approximationsschema (PAS) für $\Pi$, wenn $A$ zu jedem $I$ und für jedes $\varepsilon$ in Zeit $\bigO(\poly(\abs{I}))$ eine zulässige Lösung zu $I$ mit relativem Fehler $\varepsilon_A(I, \varepsilon)\le\varepsilon$ berechnet.
\item$A$ ist ein streng polynomielles Approximationsschema (FPAS), wenn $A$ ein PAS mit Laufzeit $\bigO(poly\left(\abs{I}, \frac{1}{\varepsilon}\right))$ ist.
Sei $A$ ein (F)PAS und zu jeder Eingabe $I$$Z(I)$ eine obere Schranke. Sei $\varepsilon^*=\frac{1}{Z(I)+1}$, dann ist $A(I, \varepsilon^*)=\opt(I)$. Sofern $A$ ein FPAS ist, liegt die Laufzeit in $\bigO(\poly(\abs{I}, Z(I)))$.
Da die Werte zulässiger Lösungen immer ganzzahlig sind, folgt $\abs{\opt(I)- A(I, \varepsilon^*)}=0$, damit also die Optimalität von $A(I, \varepsilon^*)$.
Sei $\Pi$ ein Optimierungsproblem. Wenn es ein Polynom $q(\cdot, \cdot)$ gibt, sodass $\forall I \in\domain: \opt(I)\le q(\abs{I}, \maxnr(I))$ gilt, dann folgt aus der Existenz eines FPAS für $\Pi$, dass ein pseudo-polynomieller exakter Algorithmus für $\Pi$ existiert.
Da $G$ mit $k$ Farben gefärbt ist, gibt es $k$ Mengen $U_i$ an Knoten, die jeweils mit der gleichen Farbe $i$ gefärbt sind.
Es muss nach einem Durchschnitsargument eine Menge $U_i$ mit $\abs{U_i}\geq\left\lceil\frac{1}{k}\cdot\abs{V}\right\rceil$ geben. Jeder der Knoten $u$ in $U_i$ kann maximal mit allen Knoten aus $V \setminus U_i$ verbunden sein. Es folgt also
aufgelöst werden. Solange $n_t \ge1$ gilt, wird ein neuer Knoten nach $U$ gelegt. Durch Umformen obiger Ungleichung lässt sich dies für $t \ge\log_k\left(\frac{n}{3}\right)$ garantieren. Es folgt also $\abs{U}\ge\left\lceil\log_k\left(\frac{n}{3}\right)\right\rceil$.
Für einen knoten-$k$-färbbaren Graph $G =(V, E)$ mit $n =\abs{V}$ gibt \greedycoltwo{} eine Färbung mit höchstens $\frac{3n}{\log_k \left(\frac{n}{16}\right)}$. Die relative Gütegarantie liegt als in $\bigO\left(\frac{n}{\log n}\right)$.
Zur Vereinfachung bezeichne $n_t =\abs{V^{(t)}}$. Aus der Analyse von \greedyis{} folgt $\abs{U_t}\ge\log_k\left(\frac{n_t}{3}\right)$. Es ergibt sich die Rekursion
Solange $n_t \ge\frac{n}{\log_k\left(\frac{n}{16}\right)}$ also gilt, werden pro Runde mindestens $\frac{1}{2}\cdot\log_k\left(\frac{n}{16}\right)$ Knoten pro Runde gefärbt. Nach höchstens $t \le\frac{2n}{\log_k\left(\frac{n}{16}\right)}$ gilt die Ungleichung nicht mehr. Färbt man jetzt alle verbliebenen Knoten mit jeweils einer eigenen Farbe, werden insgesamt maximal $\frac{n}{\log_k\left(\frac{n}{16}\right)}+ t \leq\frac{3n}{\log_k\left(\frac{n}{16}\right)}$ vergeben.
Mit $k =\chi_G =\opt(G)$ ergibt sich für die relative Gütegarantie:
\section{Christofides' Algorithmus \algo{CH} für das metrische \tsp$\deltatsp$}
Ein Matching $M$ eines kantengewichteten Graphen $G$ ist ein Teilgraph von $G$ mit $\Delta(G)\le1$. Ist $G$ ein vollständiger Graph mit $\abs{V}$ gerade, dann gibt es perfekte Matchings. In einem perfekten Matching haben alle Knoten genau den Grad 1. Ein perfektes Matching mit kleinstmöglichem Gewicht wird als leichtestes Matching bezeichnet. Ein solches leichtestes Matching kann in $\bigO(n^{2.5}\cdot(\log n)^4)$ berechnet werden.
Wird in einem Pfad jede Kante des (Multi-)Graph genau einmal besucht, so spricht man von einem Euler-Pfad. Bildet der Pfad einen Kreis, so nennt man ihn Euler-Kreis oder Euler-Tour. Haben alle Knoten von $G$ geraden Grad, so existiert eine Euler-Tour in $G$. Diese lässt sich in $\bigO(\abs{V}+\abs{E})$ berechnen.
\State berechne auf dem durch $S$ induzierten Teilgraphen des $K_n$ ein leichtestes Matching $M_\ch$
\State berechne eine Euler-Tour $E =(u_1, u_2, \dots)$ auf $T_\ch\cupdot M_\ch$\Comment{$T_\ch\cupdot M_\ch$ kann Multi-Graph sein, alle Knoten haben geraden Grad}
\algo{CH}, gestartet mit einer Eingabe auf $n$ Knoten, garantiert eine relative Güte von $\rho_\ch\le\frac{3}{2}-\frac{1}{n}$ in einer Laufzeit von $\bigO(n^{2.5}\cdot(\log n)^4)$.
\item Da $R^*$ aus $n$ Kanten besteht, muss durch ein Durchschnittsargument mindestens eine Kante $e$ mit $c(e)\ge\frac{c(R^*)}{n}$ existieren. Wird diese aus $R^*$ entfernt, so enthält man einen Spannbaum des $K_n$. Da $T_\ch$ minimal ist, gilt
\item In beliebigen Bäumen ist die Anzahl der Knoten mit ungeradem Grad gerade.
\item Zur Vereinfachung werden die Knoten so umbenannt, dass $R^*=(u_1, u_2, \dots, u_n, u_1)$ ist.
$S$ kann dann als $S =\{u_{i_1}, \dots, u_{i_{\abs{S}}}\}$ mit $i_1 < \dots < i_{\abs{S}}$ geschrieben werden.
Aus $S$ kann ein Kreis $H =(u_{i_1}, \dots, u_{i_{\abs{S}}}, u_{i_1})$ gebildet werden. Durch die Dreiecksungleichung ($\abs{H}\le n$ und jede \enquote{Abkürzung} ist maximal gleich lang wie der Weg in $R^*$) gilt $c(H)\le c(R^*)$.
Es können zwei perfekte Matching $M_1$ und $M_2$ auf $H$ berechnet werden, denn $\abs{S}$ ist gerade. Weil $M_\ch$ minimal ist, folgt o.B.d.A. mit $c(M_1)\le c(M_2)$ die Aussage
\item Da jeder Knoten in $T_\ch\cupdot M_\ch$ geraden Grad hat, kann eine Euler-Tour $E$ berechnet werden. Weil diese nur Kanten aus $T_\ch\cupdot M_\ch$ benutzt, kann ihre Länge mit den vorherigen Ergebnissen wie folgt beschränkt werden:
Sei $F_j(\alpha)$, wobei $j \in\{0, 1, \dots, n\}$ und $\alpha\in\mathbb{Z}$ gilt, das kleinste benötigte Rucksackvolumen, mit dem man einen Wert von mindestens $\alpha$ erreichen kann, wenn man die ersten $j$ Waren einpacken darf.
\algo{AR\textsubscript{$k$}} macht bei Eingabe $I$ einen relativen Fehler von $\varepsilon_{\algo{AR\textsubscript{$k$}}}\le\frac{k \cdot n}{P_{\max}}$ und hat eine Laufzeit von $\bigO(n^2\cdot\frac{P_{\max}}{k})$.
Sei $R^*$ die Indexmenge einer optimalen Rucksackfüllung für $I$ und $R_k$ die berechnete Indexmenge der Lösung des um $k$ reduzierten Problems $I_\red$.
Da $R_k$ eine optimale Lösung für $I_\red$ ist, gilt $\opt(I_\red)\geq\sum_{j\in R^*}\left\lfloor\frac{p_j}{k}\right\rfloor$. Weiterhin ist $R_k$ eine zulässige Lösung für $I$.
Der folgende Algorithmus $A$ nutzt die sogenannte probabilistische Methode aus, in dem eine Belegung für jede Variable stochastisch unabhängig durchgeführt wird:
Eingesetzt in die vorherige Aussage, erhält man dann $\left(1-\frac{1}{2^k}\right)\cdot m = m -\overbrace{\frac{m}{2^k}}^{< 1}$. Aus einem Durchschnittsargument folgt auch hier, dass es eine Belegung $b$ mit $m -1 < \wahr(b, \Phi)\le m$ geben muss, wegen der Ganzzahligkeit von $\wahr$ werden also alle $m$ Klauseln erfüllt.
Es bezeichnen im Folgenden $S_j^{\oplus}$ die Menge der Variablen, die in $C_j$ nicht negiert vorkommen, und $S_j^{\ominus}$ die Menge der Variablen, die in $C_j$ negiert vorkommen.
Für jede boolesche Variable $x_i$ wird eine 0-1-Variable $\hat{x}_i$ eingeführt; für jede Klausel $C_j$ eine 0-1-Variable $\hat{Z}_j$.
Relaxiert man die Bedingungen, dass $\hat{x}_i, \hat{Z}_j \in\{0, 1\}$ gelten muss, und stellt fordert stattdessen $\forall i, j: 0\le\hat{x}_i, \hat{Z}_j \le1$, kann das resultierende LP $B_\rel$ in Polynomzeit gelöst werden. Das LP selbst hat ebenfalls eine polynomiell beschränkte Anzahl an Bedingungen, sodass die Gesammtlaufzeit auch polynomiell beschränkt ist.
Eine Möglichkeit hierzu stellt der durch die stochastische Funktion $\phi: \left[0, 1\right]\mapsto\left[0, 1\right]$ parametrisierte Algorithmus $\algo{RandomizedRounding}[\pi]$ dar:
Sei $k_j$ die Anzahl der Literale in $C_j$, dann gilt:
\begin{equation*}
P\left[C_j\,\text{wird durch den Algorithmus $B$ erfüllt}\right]\ge\left(1 - \left(1 - \frac{1}{k_j}\right)^{k_j}\right)\cdot\hat{Z}_j
\end{equation*}
\end{satz}
\begin{proof}
Erneut wird über die Gegenwahrscheinlichkeit argumentiert:
\begin{equation*}
P\left[C_j\,\text{wird durch den Algorithmus $B$ nicht erfüllt}\right] = \left[\Pi_{x_i\in S_j^{\oplus}} \left(1 - \hat{x}_i\right)\right]\cdot\left[\Pi_{x_i\in S_j^{\ominus}} \hat{x}_i\right]
\end{equation*}
Es folgt
\begin{align*}
P&\left[C_j\,\text{wird durch den Algorithmus $B$ erfüllt}\right] = 1- \left[\Pi_{x_i\in S_j^{\oplus}} \left(1 - \hat{x}_i\right)\right]\cdot\left[\Pi_{x_i\in S_j^{\ominus}} \hat{x}_i\right]\\
beträgt die erwartete Anzahl an erfüllten Klauseln von Algorithmus $B$ bei einer Eingabe $\Phi$ in KNF mindestens $\left(1-\frac{1}{e}\right)\cdot\opt(\Phi)\approx0.632\cdot\opt(\Phi)$.
Algorithmus $B$ hat also eine erwartete relative Güte von
Mit $\pi(x)=\frac{1}{2}\cdot x +\frac{1}{4}$ oder $1-\frac{1}{4^x}\le\pi(x)\le4^{x-1}$ kann Algorithmus $B$ sogar eine erwartete relative Güte von $\frac{4}{3}$ erreichen.
\subsection{Hybrider Ansatz durch Kombination mehrerer Verfahren}
Aus den bestimmten Gütegarantien lässt sich ablesen, dass Algorithmus $A$ besonders gut für Formeln geeignet ist, die keine Klauseln aus nur einem Literal enthalten. Algorithmus $B$ eignet sich allgemein gut, wenn die auftretenden Klauseln kurz sind.
Beide Verfahren können nun automatisch kombiniert werden, um eine insgesamt bessere Gütegarantie zu erreichen.
Dier erste Möglichkeit hierzu ist der Algorithmus $C_{p_A}$:
\subsection{Derandomisierung durch die Methode der bedingten Erwartungswerte}
Die Ansätze mancher randomisierten Algorithmen können so modifiziert werden, dass sie deterministisch ein Ergebnis zurückliefern, was mindestens so gut wie der Erwartungswert des nicht-deterministischen Algorithmus ist.
Man macht sich hierbei unter anderem die Eigenschaft des randomisierten Algorithmus zu Nutze, dass der Erwartungswert auch ohne wirkliche Ausführung des Algorithmus berechenbar ist.
Der Algorithmus \algo{Derand\_$A$} benutzt den Erwartungswert für Algorithmus $A$ um nach und nach alle Variablen $x_i$ zu belegen. Für jede Variable wird einmal \true{} und \false{} eingesetzt, dann mit der resultierenden Formel mit höherem Erwartungswert fortgefahren:
Der Algorithmus \algo{Derand\_$A$} approximiert \maxsat mit relativer Worst-Case-Güte $\rho_{\algo{Derand\_}A}^{\mathrm{wc}}=\frac{1}{1-\frac{1}{2^k}}$ in Polynomzeit.
Sie liegt in der Größenordnung $\bigO(k^4\cdot\abs{\encoded{\mathrm{LP}}}^2)$.
\subsection{Ganzzahligkeitslücke}
Der für \maxsat{} gewählte Ansatz lässt sich im Prinzip auch auf verschiedenste andere kombinatorische Optimierungsprobleme $\Pi$ anwenden. Verallgemeinert bezeichnet man ihn als Rundungsansatz (exemplarisch für Maximierungsprobleme):
\begin{enumerate}
\item Beschreibung der Instanz $I$ von $\Pi$ durch ein ganzzahliges Lineares Programm $X$, was als Arithmetisierung bezeichnet wird.
Es gilt damit $\opt(I)=\opt(X)$.
\item Fallenlassen der Ganzzahligkeitsbedingung (Relaxierung), sodass das entstandene Lineare Programm $X_\rel$ in Polynomzeit lösbar ist.
Durch die Superoptimalität gilt $\opt(X_\rel)\ge\opt(X)$.
\item Der Approximationsalgorithmus $A$ löst $X_\rel$ und rundet die rationalen Lösungen geschickt zu einer zulässigen Lösung $\sigma\in\solution(I)$.
\item Beweis, dass $A(I)\ge\frac{1}{\rho}\cdot\opt(X_\rel)$ gilt.
\item Aus der Superoptimalität folgt $A(I)\ge\frac{1}{p}\cdot\opt(I)$.
\end{enumerate}
Für ein kombinatorisches Maximierungsproblem $\Pi$ mit Eingaben $I \in\domain$ sei $X$ jeweils das äquivalente ILP und $X_\rel$ jeweils das relaxierte LP.
die Ganzzahligkeitslücke (\enquote{integrality gap}) der Relaxierung.
Für das LP $B_\rel$ für \maxsat{} bestimmt sich die Ganzzahligkeitslücke aus der booleschen $(2,4)$-Formel $\Phi=(x_1\lor x_2)\land(\overline{x_1}\lor x_2)\land(x_1\lor\overline{x_2})\land(\overline{x_1}\lor\overline{x_2})$:
$\opt(\phi)=3$, aber $\opt(B_\rel)=4$. Damit folgt $\gamma\le\frac{4}{3}$.
Allgemein folgen mit $\gamma\ge\frac{\opt(X_\rel)}{\opt(X)}$ die beiden Aussagen
\begin{align*}
A(I) &\ge\frac{\gamma}{\rho}\cdot\opt(I)\\
\rho&\gamma
\end{align*}
Daraus kann geschlossen werden, dass der Rundungsansatz die Ganzzahligkeitslücke nicht überwinden kann und Modellierung in LP mit geringer Ganzzahligkeitslücke wichtig ist.
Sei $X =\{S_{i_1}, \dots, S_{i_l}\}$ eine Sammlung von Gruppen, dann bezeichne die Notation $V(X)= S_{i_1}\cup\dots\cup S_{i_l}$ die Menge der von $X$ überdeckten Objekte.
Weiter bezeichne $G_S =\max\{\abs{S_i}\mid1\le i\le m\}$ die Mächtigkeit der größten Gruppe, $\degree_S(u)=\abs{\{S_i \mid u \in S_i \in S\}}$ den Grad des Objekts $u \in V$ und $\Delta_S =\max{\{\degree_S(u)\mid u \in V\}}$ den Grad von $S$.
Bei der Arithmetisierung wird pro Gruppe $S_i$ eine 0-1-Variable $x_i$ eingeführt, die genau dann 1 ist, wenn $S_i \in S_\cov$.
Damit lautet das ILP $X$ für \setcover:
\begin{align*}
\min&\quad\sum_{i=1}^{m} x_i\\
\text{gemäß}&\quad\sum_{i: u \in S_i} x_1 \ge 1 &\forall u \in V\\
&\quad x_i \in\{0, 1\}&\forall i \in\{1, \dots, m\}
\end{align*}
\begin{satz}
Für die kanonische Relaxierung $X_\rel$ von $X$ gilt für die Ganzzahligkeitslücke