This commit is contained in:
Marco Ammon 2020-10-16 20:42:19 +02:00
parent 5304c6547d
commit fc38c96dac
2 changed files with 31 additions and 0 deletions

Binary file not shown.

View File

@ -102,6 +102,10 @@
\newcommand{\primaldualscone}{\algo{PrimalDualSC\_1}} \newcommand{\primaldualscone}{\algo{PrimalDualSC\_1}}
\newcommand{\primaldualsctwo}{\algo{PrimalDualSC\_2}} \newcommand{\primaldualsctwo}{\algo{PrimalDualSC\_2}}
% Vertex-Cover
\newcommand{\vertexcover}{\problem{VertexCover}}
\newcommand{\greedyvc}{\algo{GreedyVC}}
% Beweisumgebungen % Beweisumgebungen
\newtheorem*{satz}{Satz} \newtheorem*{satz}{Satz}
\newtheorem*{lemma}{Lemma} \newtheorem*{lemma}{Lemma}
@ -224,6 +228,15 @@ Eine Boolesche $(n, m)$-Formel $\Phi = C_1 \land \dots \land C_m$ in konjunktive
\ziel &= \min \ziel &= \min
\end{align*} \end{align*}
\subsubsection{Das Knotenüberdeckungsproblem \vertexcover}
Spezialfall von \setcover:
\begin{align*}
\domain &= \{\encoded{G} \mid \text{$G = (E, V)$ ein Graph}\}\\
\solution(\encoded{G}) &= \{ C \mid C \subset V, \forall e \in E: e \cap C \neq \emptyset\}\\
f(C) &= \abs{C}\\
\ziel &= \min
\end{align*}
\subsection{$t(n)$-Zeit-Approximationsalgorithmus} \subsection{$t(n)$-Zeit-Approximationsalgorithmus}
Berechnet ein Algorithmus $A$ in Zeit $t(\abs{I})$ eine Ausgabe $\sigma_I^A \in \solution(I)$ für Eingabe $I \in \domain$, wird er als $t(n)$-Zeit-Approximationsalgorithmus bezeichnet. Es gilt die Schreibweise $A(I) = f(\sigma_I^A)$. Berechnet ein Algorithmus $A$ in Zeit $t(\abs{I})$ eine Ausgabe $\sigma_I^A \in \solution(I)$ für Eingabe $I \in \domain$, wird er als $t(n)$-Zeit-Approximationsalgorithmus bezeichnet. Es gilt die Schreibweise $A(I) = f(\sigma_I^A)$.
@ -618,6 +631,24 @@ Sei $\Pi$ ein Optimierungsproblem und $A$ ein Approximationsalgorithmus für $\P
\end{equation*} \end{equation*}
\end{proof} \end{proof}
\section{\greedyvc{} für \vertexcover}
\begin{algorithmic}[1]
\State $C = \emptyset$
\While{$E \neq \emptyset$}
\State wähle beliebige Kante $\{u, v\} \in E$
\State $C = C \cup \{u,v\}$
\State lösche $u,v$ und die dazu adjazenten Kanten aus $G$
\EndWhile
\State\Return $C$
\end{algorithmic}
\begin{satz}
\greedyvc{} liefert eine Knotenüberdeckung mit relativer Güte $2$.
\end{satz}
\begin{proof}
Wenn \greedyvc{} zwei Knoten hinzufügt, könnte es auch ausreichen, nur eine einzelne Kante aufzunehmen.
\end{proof}
\section{Christofides' Algorithmus \algo{CH} für $\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. 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.