RandRoundingSC[r]

This commit is contained in:
Marco Ammon 2020-10-15 17:10:56 +02:00
parent 22813a82eb
commit 2237bdd266
2 changed files with 46 additions and 9 deletions

Binary file not shown.

View File

@ -12,10 +12,8 @@
\usepackage[load=named]{siunitx}
\usepackage{csquotes}
\usepackage[hidelinks]{hyperref}
%\usepackage{listings}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
%\usepackage{pgfplots}
\usepackage{tikz}
%\usetikzlibrary{positioning}
%\usetikzlibrary{arrows.meta}
@ -25,6 +23,7 @@
%\usetikzlibrary{fit}
%\usepackage{datetime}
%\usepackage{xcolor}
\usepackage{lmodern}
% Formatierung
\newcommand*{\algo}[1]{\textsc{#1}}
@ -87,6 +86,7 @@
\newcommand{\setcover}{\problem{SetCover}}
\newcommand{\cov}{\mathrm{cov}}
\newcommand{\detroundsc}{\algo{DetRoundSC}}
\newcommand{\randroundingscr}{\algo{RandRoundingSC}[r]}
% Beweisumgebungen
\newtheorem*{satz}{Satz}
@ -452,7 +452,7 @@ Sei $\Pi$ ein Optimierungsproblem und $A$ ein Approximationsalgorithmus für $\P
\ForAll{$u_i \in V$}
\State $c_\vertices(u_i) = \infty$
\EndFor
\ForAll{$i \in [1,\dots, \abs{V}]$}
\ForAll{$i \in \{1,\dots, \abs{V}\}$}
\State $c_\vertices(u_i) = \min\{\naturals\setminus\{c_\vertices(\Gamma(u_i))\}\}$
\EndFor
\State\Return $c_\vertices$
@ -517,7 +517,7 @@ Sei $\Pi$ ein Optimierungsproblem und $A$ ein Approximationsalgorithmus für $\P
TODO: Übung
\section{Christofides' Algorithmus \algo{CH} für das metrische \tsp $\deltatsp$}
\section{Christofides' Algorithmus \algo{CH} für $\deltatsp$}
Ein Matching $M$ eines kantengewichteten Graphen $G$ ist ein Teilgraph von $G$ mit $\Delta(G) \le 1$. Ist $G$ ein vollständiger Graph mit $\abs{V}$ gerade, dann gibt es perfekte Matchings. In einem perfekten Matching haben alle Knoten genau den Grad 1. Ein perfektes Matching mit kleinstmöglichem Gewicht wird als leichtestes Matching bezeichnet. Ein solches leichtestes Matching kann in $\bigO(n^{2.5}\cdot (\log n)^4)$ berechnet werden.
Als Multi-Graph wird ein Graph bezeichnet, der um mehrere Kanten zwischen den gleichen Knoten erweitert wurde.
@ -591,7 +591,7 @@ Der Algorithmus \dynrucksack{} setzt diese durch dynamische Programmierung um:
\State $\alpha = 0$
\Repeat
\State $\alpha = \alpha + 1$
\For{$j = 1$ to $n$}
\For{$i \in \{1,\dots,n\}$}
\State $F_j(\alpha) = \min\{F_{j-1}(\alpha - p_j) + \vol(j), F_{j-1}(\alpha)\}$
\EndFor
\Until{$B < F_n(\alpha)$}
@ -658,7 +658,7 @@ Der Algorithmus \fpasrucksack{} verwendet dazu \algo{AR\textsubscript{$k$}} und
Der folgende Algorithmus $A$ nutzt die sogenannte probabilistische Methode aus, in dem eine Belegung für jede Variable stochastisch unabhängig durchgeführt wird:
\begin{algorithmic}[1]
\For{$i = 1\dots n$}
\For{$i \in \{1,\dots,n\}$}
\State $x_i = \begin{cases*}
\true{} & mit Wahrscheinlichkeit $\frac{1}{2}$\\
\false{} & mit Wahrscheinlichkeit $\frac{1}{2}$
@ -740,7 +740,7 @@ Im Allgemeinen ist die rationale Lösung $\sigma_\rel$ von $B_\rel$ also keine z
Hierzu müssen die $\hat{x}_i$ auf 0 oder 1 (bzw. die $x$ auf \false{} oder \true{}) gerundet müssen.
Eine Möglichkeit hierzu stellt der durch die stochastische Funktion $\phi: \left[0, 1\right] \mapsto \left[0, 1\right]$ parametrisierte Algorithmus $\algo{RandomizedRounding}[\pi]$ dar:
\begin{algorithmic}[1]
\For{$i = 1\dots n$}
\For{$i \in \{1,\dots,n\}$}
\State $x_i = \begin{cases*}
\true{} & mit Wahrscheinlichkeit $\pi(\hat{x}_i)$\\
\false{} & mit Wahrscheinlichkeit $1 - \pi(\hat{x}_i)$\\
@ -842,7 +842,7 @@ Man macht sich hierbei unter anderem die Eigenschaft des randomisierten Algorith
Der Algorithmus \algo{Derand\_$A$} benutzt den Erwartungswert für Algorithmus $A$ um nach und nach alle Variablen $x_i$ zu belegen. Für jede Variable wird einmal \true{} und \false{} eingesetzt, dann mit der resultierenden Formel mit höherem Erwartungswert fortgefahren:
\begin{algorithmic}[1]
\For{$i = 1\dots n(I)$}
\For{$i \in \{1,\dots,n(I)\}$}
\State $W_\false{} = E\left[A(I)\mid x_1,\dots,x_{i-1}, x_i = \false{}\right]$
\State $W_\true{} = E\left[A(I)\mid x_1,\dots,x_{i-1}, x_i = \true{}\right]$
\If{$W_\false{} < W_\true{}$}
@ -914,7 +914,7 @@ Damit lautet das ILP $X$ für \setcover:
\begin{algorithmic}[1]
\State $(x_1, \dots, x_m) = $ löse $X_\rel$
\State $S_\cov = \emptyset$
\For{$I = 1\dots m$}
\For{$i \in \{1,\dots,m\}$}
\If{$x_i \ge \frac{1}{\Delta_S}$}
\State $S_\cov = S_\cov \cup \{S_i\}$
\EndIf
@ -939,4 +939,41 @@ Damit lautet das ILP $X$ für \setcover:
\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}
\subsection{Unzuverlässiges Randomized Rounding mit $\randroundingscr$}
\begin{algorithmic}[1]
\State $(x_1, \dots, x_m) =$ löse $X_\rel$
\State $\chi = \emptyset$
\For{$i \in \{1,\dots,m\}$}
\State mit Wahrscheinlichkeit $1 - e^{-r \cdot x_i}$: $\chi = \chi \cup \{S_i\}$
\EndFor
\State \Return $\chi$
\end{algorithmic}
\randroundingscr{} ist ein sogenannter Monte-Carlo-Algorithmus, weil er auch nicht zulässige Lösungen zurückliefern kann.
\begin{satz}
Für eine Eingabe $S$ von \setcover{} sei $\chi$ die Ausgabe von $\randroundingscr$. Dann gelten
\begin{enumerate}
\item $P\left[\chi\,\text{ist eine Überdeckung}\right] \ge 1 - n \cdot e^{-r}$
\item $E\left[\abs{\chi}\right] \le r \cdot \opt(S)$
\end{enumerate}
\end{satz}
\begin{proof}
\begin{enumerate}
\item Sei $u \in V$, dann gilt:
\begin{align*}
P\left[u \in V(\chi)\right] &= P\left[\forall i\,\text{mit}\, u \in S_i: S_i \notin \chi\right]\\
&= \Pi_{i: u\in S_i} e^{-r \cdot x_i} = \left(\Pi_{i: u\in S_i} e^{-x_i}\right)^r = \left(e^{- \sum_{i: u \in S_i} x_i}\right)^r\\
&\le e^{-r}
\end{align*}
Die Wahrscheinlichkeit, dass es ein nicht überdecktes Objekt gibt, ist folglich
\begin{equation*}
P\left[\exists U \in V: u \notin V(\chi)\right] \le n \cdot e^{-r}
\end{equation*}
\item Für $\abs{\chi}$ folgt
\begin{equation*}
E\left[\abs{\chi}\right] = \sum_{i=1}^{m} P\left[S_i \in \chi\right] = \sum_{i=1}^{m} \left(1 - e^{-r\cdot x_i}\right) \le r\cdot \sum_{i=1}^{m} x_i = r\cdot \opt(X_\rel) \le r \cdot\opt(S)
\end{equation*}
\end{enumerate}
\end{proof}
\end{document}