% !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} \newtheorem*{satz}{Satz} \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 $\phi$} \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{itemize} \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{itemize} 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{itemize} \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}} \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{itemize} \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{Graphfärbbarkeit} \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\\ \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} \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 \end{document}