177 lines
7.0 KiB
TeX
177 lines
7.0 KiB
TeX
% !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}
|