Algorithmus A mit probabilistischer Methode

This commit is contained in:
Marco Ammon 2020-10-15 10:55:47 +02:00
parent 70b26c4291
commit 740223ec7e
2 changed files with 74 additions and 0 deletions

Binary file not shown.

View File

@ -582,4 +582,78 @@ Der Algorithmus \algo{FPASRucksack} verwendet dazu \algo{AR\textsubscript{$k$}}
\begin{satz} \begin{satz}
\algo{FPASRucksack} ist ein FPAS für \problem{Rucksack} mit einer Laufzeit von $\mathcal{O}\left(n \cdot \log \frac{1}{\varepsilon} + \frac{1}{\varepsilon^4}\right)$. \algo{FPASRucksack} ist ein FPAS für \problem{Rucksack} mit einer Laufzeit von $\mathcal{O}\left(n \cdot \log \frac{1}{\varepsilon} + \frac{1}{\varepsilon^4}\right)$.
\end{satz} \end{satz}
\section{Randomisierte Approximationsalgorithmen}
\subsection{Die probabilistische Methode mit Algorithmus $A$}
\begin{satz}
Sei $\Phi$ eine boolesche $(n,m)$-Formel in KNF, dann gilt
\begin{equation*}
\max\{\mathrm{wahr}\left(\textsc{False}, \dots, \textsc{False}, \Phi\right), \mathrm{wahr}\left(\textsc{True}, \dots, \textsc{True}, \Phi\right)\} \ge \frac{1}{2}\cdot m
\end{equation*}
\end{satz}
\begin{proof}
TODO
\end{proof}
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}
\For{$i = 1\dots n$}
\State $x_i = \begin{cases*}
\textsc{True} & mit Wahrscheinlichkeit $\frac{1}{2}$\\
\textsc{False} & mit Wahrscheinlichkeit $\frac{1}{2}$
\end{cases*}$
\EndFor
\State \Return $b_A = (x_1, \dots, x_n)$
\end{algorithmic}
\begin{satz}
Sei $k_j$ die Anzahl der Literale in $C_j$. Es gilt
\begin{equation*}
P\left[C_j\,\text{wird durch den Algorithmus $A$ erfüllt}\right] = 1 - \frac{1}{2^{k_j}}
\end{equation*}
\end{satz}
\begin{proof}
Beweis über Gegenwahrscheinlichkeit, dass alle Literale nicht erfüllt sind (stochastische Unabhängigkeit).
\end{proof}
\begin{satz}
Für jede boolesche $(n, m)$-Formel $\Phi$ in KNF, in der jede Klausel mindestens $k$ Literale hat, gilt:
\begin{equation*}
E\left[A(\Phi)\right] \ge \left(1 - \frac{1}{2^k}\right) \cdot m
\end{equation*}
Des Weiteren existiert eine Belegung $b$ mit $\mathrm{wahr}(b, \Phi) \ge \left(1 - \frac{1}{2^k}\right) \cdot m$.
\end{satz}
\begin{proof}
Für jede Klausel $C_j$ wird eine Indikator-Variable $Z_j$ mit
\begin{equation*}
Z_j = \begin{cases*}
1 & falls $b_A(C_j) = $\textsc{True}\\
0 & sonst
\end{cases*}
\end{equation*}
eingeführt. Da ihr Erwartungswert gleich der Wahrscheinlichkeit, dass sie 1 annimmt, ist, folgt
\begin{equation*}
E\left[A(\Phi)\right] = E\left[\mathrm{wahr}(b_A, \Phi)\right] = E\left[\sum_{j=1}^{m} Z_j\right] = \sum_{j=1}^{m} \left(1 - \frac{1}{2^{k_j}}\right) \ge \left(1 - \frac{1}{2^k}\right) \cdot m
\end{equation*}
Die Existenz einer solchen Belegung folgt aus einem klassischen Durchschnittsargument.
\end{proof}
\begin{satz}
Sei $2^k > m$, dann ist jede boolesche $(n,m)$-Formel $\Phi$ in KNF, in der jede Klausel mindestens $k$ Literale hat, erfüllbar.
\end{satz}
\begin{proof}
Eingesetzt in die vorherige Aussage, erhält man dann $\left(1 - \frac{1}{2^k}\right) \cdot m = m - \overbrace{\frac{m}{2^k}}^{< 1}$. Aus einem Durchschnittsargument folgt auch hier, dass es eine Belegung $b$ mit $m - 1 < \mathrm{wahr}(b, \Phi) \le m$ geben muss, wegen der Ganzzahligkeit von $\mathrm{wahr}$ werden also alle $m$ Klauseln erfüllt.
\end{proof}
\begin{satz}
Algorithmus $A$ hat für jede $(n, m)$-Formel $\Phi$ in KNF, in der jede Klausel mindestens $k$ Literale hat, eine erwartete relative Güte von
\begin{equation*}
E\left[\rho_A(\Phi)\right] = \frac{\opt(\Phi)}{E\left[A(\Phi)\right]} \le \frac{m}{\left(1 - \frac{1}{2^k}\right)\cdot m} = \frac{1}{1 - \frac{1}{2^k}}
\end{equation*}
. Die Laufzeit des Algorithmus ist $\mathcal{O}(n)$. Wenn die kürzeste Klausel mindestens 2 Literale hat, hat $A$ die erwartete relative Güte $\frac{4}{3}$.
\end{satz}
\begin{satz}
Algorithmus $A$ garantiert für jede boolesche $(n,m)$-Formel $\Phi$ in KNF sogar eine erwartete relative Güte von $\frac{3}{2}$.
\end{satz}
\end{document} \end{document}