DualPurSC

This commit is contained in:
Marco Ammon 2020-10-15 19:32:02 +02:00
parent 92e245e9a6
commit e89c61c98d
2 changed files with 53 additions and 8 deletions

Binary file not shown.

View File

@ -93,6 +93,7 @@
\newcommand{\randroundscr}{\algo{RandRoundSC}[r]}
\newcommand{\lasvegassc}{\algo{LasVegasSC}}
\newcommand{\lasvegasscr}{\lasvegassc[r]}
\newcommand{\dualpursc}{\algo{DualPurSC}}
% Beweisumgebungen
\newtheorem*{satz}{Satz}
@ -404,7 +405,7 @@ Sei $\Pi$ ein Optimierungsproblem und $A$ ein Approximationsalgorithmus für $\P
Wenn es für eine Optimierungsvariante eines stark NP-vollständigen Problems ein FPAS gibt, dann folgt $P = NP$.
\end{satz}
\section{\greedyis für \is}
\section{\greedyis{} für \is}
\begin{algorithmic}[1]
\State $U = \emptyset, t = 0, V^{(0)} = V$
\While{$V^{(t)} \neq \emptyset$}
@ -940,9 +941,9 @@ Damit lautet das ILP $X$ für \setcover:
\end{equation*}
Damit wird für jedes $u$ mindestens ein überdeckendes $S_i$ aufgenommen, also stellt die Ausgabe eine Überdeckung dar.
Weil für jede Gruppe $S_i \in S_\cov$ $\Delta_s \cdot x_i \ge 1$ gilt, folgt für die Qualität der Ausgabe
Weil für jede Gruppe $S_i \in S_\cov$ $\Delta_S \cdot x_i \ge 1$ gilt, folgt für die Qualität der Ausgabe
\begin{equation*}
\detroundsc(S) = \abs{S_\cov} \le \sum_{i=1}^{m} \Delta_s \cdot x_i =\Delta_S \cdot \sum_{i=1}^{m} x_i = \Delta_S \cdot \opt(X_\rel) \le \Delta_S \cdot \opt(S)
\detroundsc(S) = \abs{S_\cov} \le \sum_{i=1}^{m} \Delta_S \cdot x_i =\Delta_S \cdot \sum_{i=1}^{m} x_i = \Delta_S \cdot \opt(X_\rel) \le \Delta_S \cdot \opt(S)
\end{equation*}
\end{proof}
@ -1019,7 +1020,8 @@ $\lasvegasscr$ ist ein sogenannter Las-Vegas-Algorithmus, weil er immer eine zul
\end{satz}
% TODO: Umorganisieren: (I)LP sowie Arithmetisierungen in Allgemeine Definitionen, Dualität als eigene section?
\subsection{Dualität von LP}
\section{Ausnutzen der Dualität von Linearen Programmen}
\subsection{Herleitung der Dualität}
Ein LP für ein o.B.d.A. Minimierungsproblem kann wie folgt geschrieben werden:
\begin{align*}
\min &\quad z(\vec{x}) = \transposed{\vec{c}} \cdot \vec{x}\\
@ -1074,15 +1076,58 @@ Beträgt der Schlupf 0, so ist die Nebenbedingung scharf.
\end{equation*}
\end{satz}
\subsection{Verwendung der Dualität für Approximationsalgorithmen}
\subsubsection{Entwurf neuer Algorithmen mittels Dual Fitting}
\subsection{Lineare Programme für \setcover}
\subsubsection{Primal $X$}
\begin{align*}
\min &\quad \sum_{i=1}^{m} x_i\\
\text{gemäß} &\quad \sum_{i: u_j \in S_i} x_i \ge 1 &\forall u_j \in V\\
&\quad x_i \in \{0,1\} &\forall i \in \{1,\dots, m\}
\end{align*}
\subsubsection{Relaxiertes Dual $Y_\rel$}
\begin{align*}
\max &\quad \sum_{j=1}^{n} y_j\\
\text{gemäß} &\quad \sum_{j: u_j \in S_i} y_j \le 1 &\forall S_i \in S\\
&\quad 0 \le y_j \le 1 &\forall j \in \{1,\dots, n\}
\end{align*}
\subsection{Entwurf neuer Algorithmen für \setcover{} mittels Dual Fitting}
Beim Dual-Fitting wird allgemein versucht, \Cref{eq:dualer-schlupf} zu erfüllen.
Zunächst wird dazu eine zulässige Lösung $\vec{y}$ des Duals bestimmt, bei der einige Nebenbedingungen scharf sind.
Die den scharfen Nebenbedingungen entsprechenden Variablen $x_i$ des Primals werden dann als Approximation auf 1 gesetzt, die anderen auf 0.
Das so entstandene $\vec{x}$ gibt mit $z(\vec{x})$ eine obere Schranke an.
Die Qualität der Lösung hängt dabei stark von der Qualität des ursprünglich bestimmten $\vec{y}$ ab.
Die Qualität der Lösung hängt dabei stark vom ursprünglich bestimmten $\vec{y}$ ab.
\subsubsection{Analyse bestehender Algorithmen}
\subsubsection{\dualpursc}
\dualpursc{} löst das relaxierte Dual optimal und baut damit eine zulässige 0-1-Lösung für $X$:
\begin{algorithmic}[1]
\State bestimme optimale Lösung $\vec{y}$ des relaxierten Duals $Y_\rel$
\For{$i \in \{1,\dots,m\}$}
\If{$i$. Nebenbedingung von $Y_\rel$ ist scharf}
\State $x_i = 1$ \Comment{mit erfüllter Nebenbedingung folgt $\sum_{j: u_j \in S_i} y_j = x_i$}
\Else
\State $x_i = 0$
\EndIf
\EndFor
\State \Return $(x_1,\dots, x_m)$
\end{algorithmic}
\begin{satz}
\dualpursc{} liefert eine Überdeckung der relativen Güte $\Delta_S$ in Zeit $\bigO(m + L(mn, n))$.
\end{satz}
\begin{proof}
Die Ausgabe ist eine Überdeckung, weil bei einer Nichtüberdeckung eines Objekts $u_i$ alle $x_i$ für $S_i \in S$ mit $u_j \in S_i$ gleich 0 wären.
Dann wäre auch der duale Schlupf der zugehörigen $i$. Nebenbedingung nicht 0 und $y_j$ könnte vergrößert werden.
Damit ist die ursprüngliche Lösung $\vec{y}$ aber nicht optimal gewesen.
Da für jedes $i$ mit $x_i = 1$ gilt $\sum_{j: u_j \in S_i} y_j = 1$, folgt für die Qualität der Lösung:
\begin{align*}
\dualpursc(S) &= \sum_{i=1}^{m} x_i = \sum_{i: x_i = 1} 1 = \sum_{i: x_i = 1} \sum_{j: u_j \in S_i} y_j \le \Delta_S \cdot \sum_{j=1}^{n} y_j\\
&= \Delta_S \cdot \opt(Y_\rel) \le \Delta_S \cdot \opt(S)
\end{align*}
\end{proof}
\subsection{Analyse bestehender Algorithmen für \setcover}
Ein bestehender Algorithmus, der eine 0-1-Lösung des ursprünglichen ILPs $X$ berechnet, wird so erweitert, dass er gleichzeitig eine zulässige Lösung $\vec{y}$ für $Y_\rel$ konstruiert.
Da $\vec{x}$ und $\vec{y}$ von einander abhängen, hängt auch $z(\vec{x})$ von $\vec{y}$ ab.
Kann daraus der Wert $\zeta(\vec{y})$ isoliert werden, kann eine obere Schranke des Wertes der Lösung zu $I$ berechnet werden.