PrimalDualSC_2

This commit is contained in:
Marco Ammon 2020-10-15 20:11:21 +02:00
parent e89c61c98d
commit 91dacf4cdc
2 changed files with 81 additions and 0 deletions

Binary file not shown.

View File

@ -94,6 +94,8 @@
\newcommand{\lasvegassc}{\algo{LasVegasSC}} \newcommand{\lasvegassc}{\algo{LasVegasSC}}
\newcommand{\lasvegasscr}{\lasvegassc[r]} \newcommand{\lasvegasscr}{\lasvegassc[r]}
\newcommand{\dualpursc}{\algo{DualPurSC}} \newcommand{\dualpursc}{\algo{DualPurSC}}
\newcommand{\primaldualscone}{\algo{PrimalDualSC\_1}}
\newcommand{\primaldualsctwo}{\algo{PrimalDualSC\_2}}
% Beweisumgebungen % Beweisumgebungen
\newtheorem*{satz}{Satz} \newtheorem*{satz}{Satz}
@ -1127,9 +1129,88 @@ Die Qualität der Lösung hängt dabei stark vom ursprünglich bestimmten $\vec{
\end{align*} \end{align*}
\end{proof} \end{proof}
\subsubsection{\primaldualscone}
\primaldualscone{} berechnet jetzt keine optimale Lösung von $Y_\rel$ mehr:
\begin{algorithmic}[1]
\ForAll{$y_j$}
\State $y_j = 1$
\EndFor
\For{$i \in \{1,\dots,m\}$}
\State $x_i = 0$
\State $\mathrm{dualer\_schlupf}[i] = 1$
\EndFor
\While{es ein nicht überdecktes Objekt $u_j$ gibt}
\State bestimme eine Gruppe $S_i$ mit $u_j \in S_i$ mit minimalem $\mathrm{dualer\_schlupf}[i]$
\State $x_i = 1$
\State $y_j = \mathrm{dualer\_schlupf}[i]$ \Comment{$i$. Nebenbedingung scharf: $x_i = \sum_{j: u_j \in S_i} y_j$}
\ForAll{$i'$ mit $u_j \in S_{i'}$}
\State $\mathrm{dualer\_schlupf}[i'] = \mathrm{dualer\_schlupf}[i'] - y_j$ \Comment{Aktualisieren des dualen Schlupfs}
\EndFor
\EndWhile
\State \Return $(x_1, \dots, x_m)$
\end{algorithmic}
\begin{satz}
\primaldualscone{} gibt eine Überdeckung der relativen Güte $\Delta_S$ nach Zeit $\bigO(n\cdot m)$ aus.
\end{satz}
\begin{proof}
Die While-Schleife kann bis zu $n$ mal durchlaufen werden, wobei für die Bestimmung der Gruppe mit minimalem dualen Schlupf jeweils $\bigO(m)$ Schritte benötigt werden.
$\vec{y}$ ist zu Beginn eine zulässige Lösung und jeder Eintrag wird nur maximal einmal verändert, also ist auch $\vec{y}$ auch am Ende eine zulässige Lösung. Für die Qualität kann die Rechnung für \dualpursc{} erneut verwendet werden.
\end{proof}
\subsection{Analyse bestehender Algorithmen für \setcover} \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. 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. 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. Kann daraus der Wert $\zeta(\vec{y})$ isoliert werden, kann eine obere Schranke des Wertes der Lösung zu $I$ berechnet werden.
\subsubsection{\primaldualsctwo}
Ein bestehender gieriger Algorithmus, der immer die Gruppe wählt, die am meisten noch nicht überdeckte Objekte überdeckt, wird so erweitert, dass man die Dualität der LP zur Analyse verwenden kann.
Es sei $\mathcal{H}(n) = \sum_{i=1}^{n} \frac{1}{i}$ die $n$. harmonische Zahl.
Für sie gilt die Ungleichung $\mathcal{H}(n) \leq \ln n + 1$.
\begin{algorithmic}[1]
\ForAll{$i\in \{1,\dots, m\}$}
\State $x_i = 0$
\EndFor
\State $C = \emptyset$ \Comment{$C$ enthält die schon überdeckten Objekte}
\While{$C\neq V$}
\State bestimme einen Index $i$ mit maximalem $\abs{S_i \setminus C}$
\State $x_i = 1$
\ForAll{$u_j\in S_i \setminus C$}
\State $p[u_j] = \frac{1}{\abs{S_i \setminus C}}$ \Comment{$x_i = 1$ und $\sum_{u_j\in S_i \setminus C} p[u_j] = 1$}
\State $y_j = \frac{1}{\mathcal{H}(G_S)} \cdot p[u_j]$ \Comment{$\mathcal{H}(G_S) \cdot y_j = p[u_j]$}
\EndFor
\State $C = C \cup S_i$
\EndWhile
\State\Return $(x_1, \dots, x_m)$
\end{algorithmic}
\begin{satz}
\primaldualsctwo{} liefert eine Überdeckung der relativen Güte $\mathcal{H}(G_S)$ in Zeit $\bigO(n\cdot m)$.
\end{satz}
\begin{proof}
Erneut kann die While-Schleife maximal $n$ Mal durchlaufen werden, und die Bestimmung des Index $i$ kann $\bigO(m)$ Schritte dauern.
Zunächst ist zu zeigen, dass $\vec{y}$ eine zulässige Lösung von $Y_\rel$ bildet:
Betrachte die $i$. Nebenbedingung und die zugehörige Gruppe $S_i = \{u_{j_1},\dots,u_{j_k}\}$, wobei die Objekte in o.B.d.A. genau dieser Reihenfolge durch den Algorithmus überdeckt worden sein sollen.
Es gilt $k \le G_S$.
Nun wird die Runde betrachtet, in der $u_{j_l}$ überdeckt wurde.
Wäre $S_i$ in dieser Runde gewählt worden, wären neben $u_{j_1}$ noch $k - l$ weitere Objekte unüberdeckt.
Die tatsächlich gewählte Gruppe trifft also noch mindestens $k - l + 1$ Objekte inklusive $u_{j_l}$.
Damit gilt $p[u_{j_l}] \le \frac{1}{k - l + 1}$ und
\begin{equation*}
y_{j_l} \le \frac{1}{\mathcal{H}(G_S)}\cdot \frac{1}{k - l + 1}
\end{equation*}
Folglich ist die $i$. Nebenbedingung des Duals erfüllt mit
\begin{equation*}
\sum_{l=1}^{k} y_{j_l} \le \frac{1}{\mathcal{H}(G_S)} \cdot \sum_{l=1}^{k} \frac{1}{k - l + 1} = \frac{\mathcal{H}(k)}{\mathcal{H}(G_S)} \le 1
\end{equation*}
Für die ausgegebene Überdeckung gilt
\begin{equation*}
\primaldualsctwo(S) = \sum_{i=1}^{m} x_i = \sum_{j=1}^{n}p[u_j] = \mathcal{H}(G_S) \cdot \sum_{j=1}^{n} y_j \le \mathcal{H}(G_S) \cdot \opt(S)
\end{equation*}
\end{proof}
Mit $G_S \le n$ folgt unmittelbar, die relative Gütegarantie von $\ln n + 1$ von \primaldualsctwo{}.
\end{document} \end{document}