% !TeX spellcheck = de_DE
\documentclass[11pt,a4paper,toc]{scrartcl}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage[ngerman]{babel}
\usepackage{amssymb}
\usepackage{scrextend}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{enumitem}
\usepackage{mathtools}
\usepackage[load=named]{siunitx}
\usepackage{csquotes}
\usepackage[hidelinks]{hyperref}
%\usepackage{listings}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
%\usepackage{pgfplots}
\usepackage{tikz}
%\usetikzlibrary{positioning}
%\usetikzlibrary{arrows.meta}
%\usetikzlibrary{quotes}
%\usetikzlibrary{angles}
%\usetikzlibrary{babel}
%\usetikzlibrary{fit}
%\usepackage{datetime}
%\usepackage{xcolor}

\DeclareMathOperator{\opt}{OPT}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}

\newcommand{\cupdot}{\mathbin{\mathaccent\cdot\cup}}

\newtheorem*{satz}{Satz}
\newtheorem*{lemma}{Lemma}
\newtheorem*{zeuge}{Zeuge}

\newcommand*{\algo}[1]{\textsc{#1}}
\newcommand*{\problem}[1]{\textsc{#1}}

\setlist[enumerate,1]{label={\arabic*.}}
\setlist[enumerate,2]{label={\alph*)}}

\title{Approximationsalgorithmen}
\author{Marco Ammon}
\date{\today}

\makeatletter
\g@addto@macro\bfseries{\boldmath}
\makeatother

\begin{document}
\maketitle

\tableofcontents
\clearpage
\section{Kombinatorisches Optimierungsproblem $\Pi$}
\subsection{Definition}
\begin{align*}
	\mathcal{D} &= \text{Menge der Eingaben $I$}\\
	\mathcal{S}(I \in \mathcal{D}) &= \text{Menge der zur Eingabe $I$ zulässigen Lösungen}\\
	f: \mathcal{S}(I) \mapsto \mathbb{N}^{\neq 0} &= \text{Bewertungs-/Kosten-/Maßfunction}\\
	\mathrm{ziel} \in \{\min, \max\}
\end{align*}
\begin{enumerate}
	\item Beschränkung auf natürliche Zahlen, weil Vergleich reeller Zahlen bislang nicht beweisbar schnell funktioniert.
	\item Ausschluss der 0 für spätere Definitionen sinnvoll (lässt sich durch Modifikation von $f$ in der Regel trivial erreichen)
\end{enumerate}

Gesucht ist zu $I \in \mathcal{D}$ eine zulässige Lösung $\sigma_\mathrm{opt} \in \mathcal{S}(I)$, sodass
\begin{equation*}
	\opt(I) = f(\sigma_\mathrm{opt}) = \mathrm{ziel}\{f(\sigma) \mid \sigma \in \mathcal{S}(I) \}
\end{equation*}

\subsection{Beispiele}
TODO: TSP, Rucksackproblem, etc.

\section{$t(n)$-Zeit-Approximationsalgorithmus $A$}
Für Eingabe $I \in \mathcal{D}$ berechnet $A$ in Zeit $t(\abs{I})$ eine Ausgabe $\sigma_I^A \in \mathcal{S}(I)$. Es gilt die Schreibweise $A(I) = f(\sigma_I^A)$.

\section{Konstante Gütegarantie}
\subsection{Definition}
\begin{enumerate}
	\item $A$ hat bei Eingabe $I$ absolute Güte von
	\begin{equation*}
	\kappa_A(I) = \abs{A(I) - \opt(I)}
	\end{equation*}
	\item Die absolute Worst-Case-Güte von $A$ abhängig von der Eingabelänge $n = \abs{I}$ ist die Funktion
	\begin{equation*}
		\kappa_A^{\mathrm{wc}}(n) = \max\{\kappa_A(I) \mid I \in \mathcal{D}, \abs{I} <= n\}
	\end{equation*}
	\item $A$ garantiert eine absolute Güte von $\kappa_A: \mathbb{N} \mapsto \mathbb{N}$, falls für alle $n \in \mathbb{N}$ gilt:
	\begin{equation*}
		\kappa_A^{\mathrm{wc}}(n) \le \kappa_A(n)
	\end{equation*}
	\item $A$ hat eine absolute Abweichung von $\kappa'_A: \mathbb{N} \mapsto \mathbb{N}$, falls für unendlich viele $n$ gilt
	\begin{equation*}
		\kappa'_A(n) \le \kappa_A^{wc}(n)
	\end{equation*}
	Eine unendlich große Menge $\mathcal{D}' \subseteq \mathcal{D}$ heißt $\kappa'_A(n)$-Zeugenmenge gegen $A$, wenn für alle $I \in \mathcal{D}'$ gilt:
	\begin{equation*}
		\kappa_A(I) \ge \kappa'_A(\abs{I})
	\end{equation*}
\end{enumerate}

\subsection{Unmöglichkeitsergebnis für das Rucksackproblem}
\begin{satz}
	Falls $P \neq NP$, dann gibt es keine Konstante $n\in \mathbb{N}$, sodass es einen polynomiellen Approximationsalgorithmus $A$ für das Rucksackproblem gibt mit
	\begin{equation*}
		\abs{A(I) - \opt(I)}  \le k
	\end{equation*}
\end{satz}
\begin{proof}[Widerspruchsbeweis]
	Unter der Annahme, dass $A$ und $k$ existieren, kann \problem{Rucksack} in Polynomzeit exakt gelöst werden, was $P = NP$ zur Folge hat:
	
	Konstruiere aus einer Instanz $I = \langle W, \mathrm{vol}, p, B \rangle$ eine neue Probleminstanz $I' = \langle W, \mathrm{vol}, p', B\rangle$ 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 \problem{Rucksack} in Polynomzeit exakt lösbar.
\end{proof}

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 \problem{SetCover} anwenden. Folglich kann eine konstante Gütegarantie nur für vergleichsweise wenig Probleme erreicht werden.

\section{Relative Gütegarantie}
\subsection{Definition}
\begin{enumerate}
	\item $A$ hat bei Eingabe $I$ eine relative Güte von
	\begin{equation*}
	\rho_A(I) = \max\left\{\frac{A(I)}{\opt(I)}, \frac{\opt(I)}{A(i)}\right\} \ge 1
	\end{equation*}
	\item Die relative worst-case-Güte von $A$ ist die Funktion
	\begin{equation*}
	\rho_A^\mathrm{wc}(n) = \max\left\{\rho_A(I)\mid I \in \mathcal{D}, \abs{i}\le n\right\}
	\end{equation*}
	\item $A$ garantiert eine relative Güte von $\rho_A : \mathbb{N} \mapsto \mathbb{N}$, falls für alle $n \in \mathbb{N}$ gilt
	\begin{equation*}
	\rho_A^{\mathrm{wc}}(n) \le \rho_A(n)
	\end{equation*}
	\item $A$ macht für die Eingabe $I \in \mathcal{D}$ einen relativen Fehler von
	\begin{equation*}
	\varepsilon_A(I) = \frac{\abs{A(I) - \opt(I)}}{\opt(I)} = \abs{\frac{A(I)}{\opt(I)} - 1}
	\end{equation*}
	\item $A$ garantiert einen relativen Fehler von $\varepsilon_A(n)$, falls für alle $\{I\mid I \in \mathcal{D}, \abs{I}\le n\}$ gilt
	\begin{equation*}
	\varepsilon_A(I) \le \varepsilon_A(n)
	\end{equation*}
	\item $A$ hat eine relative Abweichung von $\rho'_A : \mathbb{N} \mapsto \mathbb{N}$, falls für unendlich viele $n$ gilt
	\begin{equation*}
	\rho_A^\mathrm{wc}(n) \ge \rho'_A(n)
	\end{equation*}
	
	Eine unendlich große Menge $\mathcal{D}' \subseteq \mathcal{D}$ heißt $\rho'_A(n)$-Zeugenmenge gegen $A$, wenn für alle $I \in \mathcal{D}'$ gilt
	\begin{equation*}
	\rho_A(I) \ge \rho'_A(\abs{I})
	\end{equation*}
\end{enumerate}

Es folgen daraus direkt, dass
\begin{enumerate}
	\item bei einem Minimierungsproblem $1 + \varepsilon_A(n) = \rho_A(n)$ ist.
	\item bei einem Maximierungsproblem $1 - \varepsilon_A(n) = \frac{1}{\rho_A(n)}$ ist.
	\item für alle Probleme $\varepsilon_A(n) \le \rho_A(n) - 1$ ist.
\end{enumerate}

Weiter lassen sich damit obere bzw. untere Schranken der Optimallösung aus einer approximierten Lösung angeben. Es folgt, dass
\begin{enumerate}
	\item bei einem Minimierungsproblem gilt
	\begin{equation*}
	\frac{1}{\rho_A(\abs{I})} \cdot A(I) \le \opt(I) \le A(I) \le \rho_A(\abs{I})\cdot \opt(I)
	\end{equation*}
	\item bei einem Maximierungsproblem gilt
	\begin{equation*}
	\frac{1}{\rho_A(\abs{I})} \cdot \opt(I) \le A(I) \le \opt(I) \le \rho_A(\abs{I}) \cdot A(I)
	\end{equation*}
	\item bei beiden Problemtypen mit der Beziehung
	\begin{equation*}
	\abs{A(I) - \opt(I)} \le \varepsilon_A(\abs{I}) \cdot \opt(I)
	\end{equation*}
	gilt
	\begin{equation*}
	(1 - \varepsilon_A(\abs{I})) \cdot \opt(I) \le A(I) \le (1 + \varepsilon_A(\abs{I})) \cdot \opt(I)
	\end{equation*}
\end{enumerate}

\subsection{Unmöglichkeitsergebnis für das allgemeine Traveling Salesperson Problem \problem{TSP}}
\begin{satz}
	Wenn es einen polynomiellen Approximationsalgorithmus $A$ mit konstanter relativer Gütegarantie $r$ für das volle \problem{TSP} gibt, dann gilt $P = NP$.
\end{satz}
\begin{proof}[Beweis durch Reduktion]
	Durch Benutzung von $A$ mit beliebiger konstanter relativer Gütegarantie $r \in \mathbb{N}$ kann \problem{Hamilton} auf das volle \problem{TSP} reduziert werden. Es wird also $\problem{Hamilton} \le \mathrm{p} \problem{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 = \langle K_n, c\rangle$ für \problem{TSP} erzeugt. $c$ wird wie folgt konstruiert:
	\begin{equation*}
		c(u,v) = \begin{cases*}
		1 & falls $\{u, v\} \in E$ (\enquote{kurze} Kante)\\
		\left(r - 1\right)\cdot n + 2 & sonst (\enquote{lange} Kante)
		\end{cases*}
	\end{equation*}
	$I_G$ kann in Polynomzeit aus $G$ berechnet werden. Es gilt weiter:
	\begin{itemize}
		\item $G \in \problem{Hamilton} \Rightarrow$ kürzeste Rundreise in $I_G$ hat die Länge $n$
		\item $G \notin \problem{Hamilton} \Rightarrow$ kürzeste Rundreise in $I_G$ nimmt mindestens eine der langen Kanten und hat damit eine Länge von mindestens
		\begin{equation*}
		(r - 1) \cdot n + 2 + n - 1 = r \cdot n +1 > r \cdot n
		\end{equation*}
		\item $I_G$ besitzt keine zulässige Lösung $\sigma$ mit $n + 1\le c(\sigma) \le r \cdot n$.
	\end{itemize}

	
	Durch den folgenden Algorithmus kann also \problem{Hamilton} entschieden werden:
	\begin{algorithmic}[]
		\State konstruiere $I_G$
		\State approximiere mit $A$ eine kürzeste Rundreise $A(I_G)$
		\If{$A(I_G) > r \cdot \abs{V}$}
			\State \Return $G \notin \problem{Hamilton}$
		\Else
			\State \Return $G \in \problem{Hamilton}$
		\EndIf
	\end{algorithmic}
\end{proof}

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

\section{Approximationsschemata}
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.
\begin{enumerate}
	\item $A$ ist ein polynomielles Approximationsschema (PAS) für $\Pi$, wenn $A$ zu jedem $I$ und für jedes $\varepsilon$ in Zeit $\mathcal{O}(\mathrm{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 $\mathcal{O}(poly\left(\abs{I}, \frac{1}{\varepsilon}\right))$ ist.
\end{enumerate}

\begin{satz}[Umwandlung eines (F)PAS in einen exakten Algorithmus]
	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 $\mathcal{O}(\mathrm{poly}(\abs{I}, Z(I)))$.
\end{satz}
\begin{proof}
	Starte $A$ mit Eingabe $I$ und $\varepsilon^*$. Es wird eine zulässige Lösung zu $I$ gefunden, für ihren relativen Fehler gilt
	\begin{equation*}
		\varepsilon_a(I, \varepsilon^*) = \frac{\abs{\opt(I) - A(I, \varepsilon^*)}}{\opt(I)} \le \varepsilon^*
	\end{equation*}
	Weil $\opt(I) \le Z(I)$ beschränkt ist, folgt für die Abweichung
	\begin{equation*}
		\abs{\opt(I) - A(I, \varepsilon^*)} \le \varepsilon^* \cdot \opt(I) = \frac{\opt(I)}{Z(I) + 1} < 1
	\end{equation*}
	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^*)$.
\end{proof}

\section{Das Problem der Unabhängigen Knotenmengen \problem{IS}}
\subsection{Definition}
\begin{align*}
	\mathcal{D} &= \{\langle G\rangle \mid G = (V, E)\,\text{ein Graph}\}\\
	\mathcal{S}(\langle G \rangle) &= \{ U \mid U \subseteq V, \forall u, v \in U: (u, v) \notin E\}\\
	f(U) &= \abs{U}\\
	\mathrm{ziel} &= \max
\end{align*}

\subsection{Algorithmen}
\paragraph{\algo{GreedyIS}}
\begin{algorithmic}[]
	\State $U = \emptyset, t = 0, V^{(0)} = V$
	\While{$V^{(t)} \neq \emptyset$}
		\State $G^{(t)} =\, \text{der durch}\,V^{(t)}\,\text{induzierte Graph}$
		\State $u_l =$ ein Knoten mit minimalem Grad in $G^{(t)}$
		\State $V^{(t+1)} = V^{(t)} - \left(\{u_l\} \cup \Gamma_{G^{(t)}}(u_l)\right)$
		\State $U = U \cup \{u_l\}$
		\State $t = t + 1$
	\EndWhile
	\State \Return $U$
\end{algorithmic}

\begin{satz}
	Sei $G$ ein knoten-$k$-färbbarer Graph, dann ist 
	\begin{equation*}
		\algo{GreedyIS}(G) \ge \left\lceil \log_k\left(\frac{\abs{V}}{3}\right) \right\rceil
	\end{equation*}
\end{satz}

\begin{proof}
	Mit dem folgenden Hilfslemma kann eine Beziehung zwischen der Anzahl der notwendigen Farben und dem minimalen Grad des Graphs hergestellt werden.
	\begin{lemma}
		Sei $G$ ein knoten-$k$-färbbarer Graph, dann gilt:
		\begin{equation*}
			\exists u \in V: \mathrm{deg}_G(u) \le \left\lfloor \left(1 - \frac{1}{k}\right) \cdot \abs{V}\right\rfloor
		\end{equation*}
	\end{lemma}
	\begin{proof}
		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
		\begin{equation*}
			\mathrm{deg}_G(u) \leq \abs{V} - \abs{U_i} \le  \abs{V} -  \left\lceil \frac{1}{k}\cdot \abs{V}\right\rceil = \left\lfloor \left(1 - \frac{1}{k}\right) \cdot \abs{V}\right\rfloor
		\end{equation*}
	\end{proof}
	Zur Vereinfachung gelte $n = \abs{V}$ und $n_t = \abs{V^{(t)}}$. Es kann $k \ge 2$ angenommen werden.
	Mit dem Hilfslemma ergibt sich für die Anzahl der Knoten folgende Rekursion:
	\begin{align*}
		n_0 &= n\\
		n_{t+1} &\ge n_t - \left\lfloor \left(1 - \frac{1}{k}\right) \cdot n_t\right\rfloor -1 \ge \frac{n_t}{k} - 1
	\end{align*}
	Sie kann zur Ungleichung
	\begin{equation*}
		n_t \ge \frac{n}{k^t} - \underbrace{\frac{k}{k - 1} \cdot \left(1 - \frac{1}{k^t}\right)}_{\le 2\, \text{für $k\ge 2$}} \ge \frac{n}{k^t} - 2
	\end{equation*}
	aufgelöst werden. Solange $n_t \ge 1$ 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$.
\end{proof}

\section{Graphfärbbarkeitsprobleme}
\subsection{Knotenfärbungsproblem}
\subsubsection{Definition}
\begin{align*}
	\mathcal{D} &= \{\langle G\rangle \mid G = (V, E)\,\text{ein ungerichteter Graph mit mindestens einer Kante}\}\\
	\mathcal{S}(\langle G \rangle) &= \{ c_\mathrm{V} \mid c_\mathrm{V}\, \text{ist eine Knotenfärbung von}\, G\}\\
	f(c_\mathrm{V}) &= \abs{c_\mathrm{V}(V)}\\
	\mathrm{ziel} &= \min
\end{align*}

Die Größe der kleinsten möglichen Knotenfärbung ist die chromatische Zahl $\chi(G)$.
\subsubsection{Algorithmen}
\paragraph{\algo{GreedyCol}}
\begin{algorithmic}[]
	\ForAll{$u_i \in V$}
		\State $c_\mathrm{V}(u_i) = \infty$
	\EndFor
	\ForAll{$i \in [1,\dots, \abs{V}]$}
		\State $c_\mathrm{V}(u_i) = \min\{\mathbb{N}\setminus\{c_\mathrm{V}(\Gamma(u_i))\}\}$
	\EndFor
	\State\Return $c_\mathrm{V}$
\end{algorithmic}

\begin{satz}
	\algo{GreedyCol} berechnet in Zeit $\mathcal{O}(\abs{V} + \abs{E})$ eine Knotenfärbung aus höchstens $\Delta(G) + 1$ Farben.
\end{satz}
\begin{proof}
	Da ein Knoten $u$ maximal $\Delta(G)$ viele Nachbarn haben kann, muss in $[1,\dots,\Delta(G)+1]$ noch mindestens eine Farbe frei sein.
\end{proof}

\begin{satz}
	\algo{GreedyCol} garantiert eine absolute Güte von
	\begin{equation*}
		\kappa_\algo{GreedyCol}(G) = \algo{GreedyCol}(G) - \opt(G) \le \Delta(G) + 1 - 2 = \Delta(G) - 1
	\end{equation*}
	, weil die untere Schranke $\opt(G)\ge 2$ für Graphen mit $\abs{V} \ge 2$ gilt.
\end{satz}

\begin{zeuge}
	$\Delta(G) - 1$-Zeuge gegen \algo{GreedyCol}: TODO (Abbildung 2.1)
\end{zeuge}

\paragraph{GreedyCol2}
\begin{algorithmic}[]
	\State $t = 1, V^{(1)} = V$
	\While{$V^{(t)} \neq \emptyset$}
		\State $G^{(t)} =$ der durch $V^{(t)}$ induzierte Graph
		\State $U_t = \algo{GreedyIS}(G^{(t)})$
		\State färbe alle Knoten in $U_t$ mit Farbe $t$
		\State $V^{(t+1)} = V^{(t)} - U_t$
		\State $t = t + 1$
	\EndWhile
	\State \Return berechnete Färbung
\end{algorithmic}

\begin{satz}
	Für einen knoten-$k$-färbbaren Graph $G = (V, E)$ mit $n = \abs{V}$ gibt \algo{GreedyCol2} eine Färbung mit höchstens $\frac{3n}{\log_k \left(\frac{n}{16}\right)}$. Die relative Gütegarantie liegt als in $\mathcal{O}\left(\frac{n}{\log n}\right)$.
\end{satz}
\begin{proof}
	Zur Vereinfachung bezeichne $n_t = \abs{V^{(t)}}$. Aus der Analyse von \algo{GreedyIS} folgt $\abs{U_t} \ge \log_k\left(\frac{n_t}{3}\right)$. Es ergibt sich die Rekursion
	\begin{align*}
		n_1 &= n\\
		n_{t + 1} &\le n_t - \log_k\left(\frac{n_t}{3}\right)
	\end{align*}
	
	Nun wird bestimmt, für welches $t$ $n_t < 1$ eintritt, denn dann bricht der Algorithmus ab.
	Behelfsmäßig sei $n_t \ge \frac{n}{\log_k\left(\frac{n}{16}\right)}$. Mit der Beziehung $\frac{n}{\log_k n} \ge \frac{3}{4}\cdot \sqrt{n}$ ergibt sich
	\begin{equation*}
		\log_k\left(\frac{n_t}{3}\right) \ge \log_k \left(\frac{n}{3 \cdot \log_k n}\right) \ge \log_k\left(\sqrt{\frac{n}{16}}\right) = \frac{1}{2} \cdot \log_k\left(\frac{n}{16}\right)
	\end{equation*}
	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:
	\begin{equation*}
	\frac{\algo{GreedyCol2(G)}}{\opt(G)} \le \frac{\frac{3n}{\log_k\left(\frac{n}{16}\right)}}{k} = \mathcal{O}\left(\frac{n}{\log n}\right)
	\end{equation*}
\end{proof}

\subsection{Kantenfärbungsproblem}
\subsubsection{Definition}
\begin{align*}
\mathcal{D} &= \{\langle G\rangle \mid G = (V, E)\,\text{ein ungerichteter Graph mit mindestens einer Kante}\}\\
\mathcal{S}(\langle G \rangle) &= \{ c_\mathrm{E} \mid c_\mathrm{E}\, \text{ist eine Kantenfärbung von}\, G\}\\
f(c_\mathrm{E}) &= \abs{c_\mathrm{E}(E)}\\
\mathrm{ziel} &= \min
\end{align*}
Die Größe der kleinsten möglichen Kantenfärbung ist der chromatische Index $\chi'(G)$.
\subsubsection{Algorithmen}
TODO: Übung

\section{Das metrische Traveling Salesperson Problem $\Delta\problem{TSP}$}
\subsection{Definition}
\begin{align*}
\mathcal{D} &= \{\langle K_n, c\rangle \mid K_n\, \text{vollständiger Graph auf $n$ Knoten}, c: E \mapsto \mathbb{N},\\
	&\underbrace{\forall u, v, w \in V: c(u,v) \le c(u,w) + c(w, v)}_\text{Dreiecksungleichung}\}\\
\mathcal{S}(\langle K_n, c \rangle) &= \{ C \mid C = (v_{i_1}, v_{i_2}, \dots, v_{i_n}, v_{i_i})\,\text{ist ein Hamiltonkreis}\}\\
f(c_\mathrm{E}) &= c(v_{i_n}, v_{i_1}) + \sum_{j=1}^{n-1} c(v_{i_j}, v_{i_{j+1}})\\
\mathrm{ziel} &= \min
\end{align*}

\subsection{Christofides' Algorithmus \algo{CH}}
Ein Matching $M$ eines kantengewichteten Graphen $G$ ist ein Teilgraph von $G$ mit $\Delta(G) \le 1$. 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 $\mathcal{O}(n^{2.5}\cdot (\log n)^4)$ berechnet werden.

Als Multi-Graph wird ein Graph bezeichnet, der um mehrere Kanten zwischen den gleichen Knoten erweitert wurde.

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 $\mathcal{O}(\abs{V} + \abs{E})$ berechnen.

Der Algorithmus von Christofides (\algo{CH}) geht wie folgt vor:
\begin{algorithmic}[1]
	\State berechne einen minimalen Spannbaum $T_\mathrm{CH}$ von $I = \langle K_n, c\rangle$
	\State $S = \{v \in T_\mathrm{CH} \mid \mathrm{deg}_{T_\mathrm{CH}}(v)\, \text{ungerade}\}$ \Comment{$\abs{S}$ ist gerade}
	\State berechne auf dem durch $S$ induzierten Teilgraphen des $K_n$ ein leichtestes Matching $M_\mathrm{CH}$
	\State berechne eine Euler-Tour $E = (u_1, u_2, \dots)$ auf $T_\mathrm{CH} \cupdot M_\mathrm{CH}$ \Comment{$T_\mathrm{CH} \cupdot M_\mathrm{CH}$ kann Multi-Graph sein, alle Knoten haben geraden Grad}
	\State entferne Wiederholungen von Knoten in $E$, sodass man $E'$ erhält
	\State\Return $E'$
\end{algorithmic}

\begin{satz}
	\algo{CH}, gestartet mit einer Eingabe auf $n$ Knoten, garantiert eine relative Güte von $\rho_\mathrm{CH} \le \frac{3}{2} - \frac{1}{n}$ in einer Laufzeit von $\mathcal{O}(n^{2.5}\cdot (\log n)^4)$.
\end{satz}
\begin{proof}
	Sei $R^*$ eine optimale Rundreise für $I$, d.h. $c(R^*) = \opt(I)$. Es gilt $\algo{CH}(I) = c(E') \le (\frac{3}{2} - \frac{1}{n}) \cdot c(R^*)$ zu zeigen.
	\begin{enumerate}
		\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_\mathrm{CH}$ minimal ist, gilt
		\begin{equation*}
			c(T_\mathrm{CH}) \le c(R^*) - \frac{c(R^*)}{n} = \left(1 - \frac{1}{n}\right) \cdot c(R^*)
		\end{equation*}
		\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_\mathrm{CH}$ minimal ist, folgt o.B.d.A. mit $c(M_1) \le c(M_2)$ die Aussage
		\begin{equation*}
			c(M_\mathrm{CH}) \leq c(M_1) \le \frac{1}{2} \cdot (c(M_1) + c(M_2)) = \frac{1}{2} \cdot c(H) \le \frac{1}{2} \cdot c(R^*)
		\end{equation*}
		\item Da jeder Knoten in $T_\mathrm{CH} \cupdot M_\mathrm{CH}$ geraden Grad hat, kann eine Euler-Tour $E$ berechnet werden. Weil diese nur Kanten aus $T_\mathrm{CH} \cupdot M_\mathrm{CH}$ benutzt, kann ihre Länge mit den vorherigen Ergebnissen wie folgt beschränkt werden:
		\begin{equation*}
			c(E) = c(T_\mathrm{CH} \cupdot M_\mathrm{CH}) \le \left(1 - \frac{1}{n}\right)\cdot c(R^*) + \frac{1}{n}\cdot c(R^*) = \left(\frac{3}{2} - \frac{1}{n}\right) \cdot \opt(I)
		\end{equation*}
		\item Durch die Dreiecksungleichung kann $E'$ nicht länger als $E$ werden.
	\end{enumerate}
\end{proof}
\begin{zeuge}
	TODO
\end{zeuge}

\end{document}
