2020-10-13 15:31:09 +02:00
% !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}
2020-10-14 10:10:29 +02:00
\usepackage { amsthm}
2020-10-13 15:31:09 +02:00
\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}
2020-10-13 15:55:22 +02:00
\DeclareMathOperator { \opt } { OPT}
\DeclarePairedDelimiter \abs { \lvert } { \rvert }
2020-10-13 15:31:09 +02:00
2020-10-14 10:10:29 +02:00
\newtheorem * { satz} { Satz}
\newtheorem * { zeuge} { Zeuge}
\newcommand * { \algo } [1]{ \textsc { #1} }
2020-10-14 10:32:30 +02:00
\newcommand * { \problem } [1]{ \textsc { #1} }
2020-10-14 10:10:29 +02:00
2020-10-13 15:31:09 +02:00
\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
2020-10-14 11:14:27 +02:00
\section { Kombinatorisches Optimierungsproblem $ \Pi $ }
2020-10-13 15:55:22 +02:00
\subsection { Definition}
2020-10-13 15:31:09 +02:00
\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*}
2020-10-14 11:14:27 +02:00
\begin { enumerate}
2020-10-13 15:31:09 +02:00
\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)
2020-10-14 11:14:27 +02:00
\end { enumerate}
2020-10-13 15:31:09 +02:00
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*}
2020-10-13 15:55:22 +02:00
\subsection { Beispiele}
2020-10-13 15:31:09 +02:00
TODO: TSP, Rucksackproblem, etc.
2020-10-13 15:55:22 +02:00
\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 ) $ .
2020-10-13 15:31:09 +02:00
2020-10-13 15:55:22 +02:00
\section { Konstante Gütegarantie}
\subsection { Definition}
2020-10-14 11:14:27 +02:00
\begin { enumerate}
2020-10-13 15:55:22 +02:00
\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*}
2020-10-14 11:14:27 +02:00
\kappa _ A^ { \mathrm { wc} } (n) \le \kappa _ A(n)
2020-10-13 15:55:22 +02:00
\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*}
2020-10-14 11:14:27 +02:00
\end { enumerate}
2020-10-14 10:10:29 +02:00
2020-10-14 10:32:30 +02:00
\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.
2020-10-14 10:10:29 +02:00
\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
2020-10-14 11:14:27 +02:00
\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}
2020-10-13 15:31:09 +02:00
\end { document}