Formatierung aufhübschen
This commit is contained in:
parent
a19857c2b7
commit
5386ff8b91
3 changed files with 47 additions and 36 deletions
Binary file not shown.
|
|
@ -18,6 +18,7 @@
|
|||
\points{1}
|
||||
\end{tasks}
|
||||
|
||||
{
|
||||
\newpage
|
||||
\KOMAoptions{mpinclude=false}
|
||||
\recalctypearea
|
||||
|
|
@ -71,5 +72,4 @@
|
|||
\caption{Cristofides' Algorithmus}
|
||||
\label{fig:christofides}
|
||||
\end{figure}
|
||||
\KOMAoptions{mpinclude=true}
|
||||
\recalctypearea
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,59 +3,70 @@
|
|||
\item
|
||||
|
||||
\begin{pseudocode}
|
||||
M = $\emptyset$
|
||||
visited = Array von False der Größe $|V|$ // Markiert gematchte Knoten
|
||||
Matchings($G = \tup(V, E)$)
|
||||
$M = \emptyset$
|
||||
$visited =$ |Array von $False$ der Größe| $|V|$ // Markiert gematchte Knoten
|
||||
|
||||
for e in E do
|
||||
if nicht visited[u] und nicht visited[v] then
|
||||
M = $M \cup \{e\}$
|
||||
visited[u] = True
|
||||
visited[v] = True
|
||||
|
||||
return M
|
||||
for $e$ in $E$ do
|
||||
if $\neg visited[u] \wedge \neg visited[v]$ then
|
||||
$M = M \cup \{e\}$
|
||||
$visited[u] = True$
|
||||
$visited[v] = True$
|
||||
return $M$
|
||||
\end{pseudocode}
|
||||
|
||||
Angenommen M wäre erweiterbar (d.h. es gibt eine Kante \{u,v\} mit u,v $\notin$ V(M)). Dann wurden sowohl u als auch v während des Algorithmus beim Durchlaufen der Kante \{u,v\} als frei angesehen und wäre somit der Menge M hinzugefügt worden. Das ist eine Widerspruch. \\\\
|
||||
\textbf{Laufzeit:} \\
|
||||
Initialisierung des Arrays: $\Oh(V)$\\
|
||||
Schleife: Jede Kante wird genau einmal betrachtet ($\Oh(V)$) und die Überprüfung und Markierung passieren in $\Oh(1)$. Also insgesamt $\Oh(E)$\\
|
||||
Das ergibt eine Gesamtlaufzeit von $\Oh(V+E)$
|
||||
Angenommen $M$ wäre erweiterbar (d.h. es gibt eine Kante $\{u,v\}$ mit $u,v \notin V(M)$). Dann wurden sowohl $u$ als auch $v$ während des Algorithmus beim Durchlaufen der Kante $\{u,v\}$ als frei angesehen und wäre somit der Menge $M$ hinzugefügt worden. Das ist eine Widerspruch.
|
||||
|
||||
\textbf{Laufzeit:}
|
||||
|
||||
Initialisierung des Arrays: $\Oh(V)$
|
||||
|
||||
Schleife: Jede Kante wird genau einmal betrachtet ($\Oh(V)$) und die Überprüfung und Markierung passieren in $\Oh(1)$. Also insgesamt $\Oh(E)$
|
||||
|
||||
Das ergibt eine Gesamtlaufzeit von $\Oh(V+E)$
|
||||
\points{3}
|
||||
\item
|
||||
|
||||
\points{2}
|
||||
\item
|
||||
|
||||
Sei M das vom Algorithmus berechnete maximale Matching und M* das optimale maximale Matching. \\
|
||||
Für jede Kante $e*=\{u,v\}\in$ M* gilt: mindestens einer der beiden Knoten $u$ oder $v$ muss über eine Kante aus M abgedeckt werden, sonst wäre der M nicht nicht-erweiterbar. \\
|
||||
Eine Kante aus M hat genau zwei Endknoten und kann daher höchstens zwei verschiedene Kanten aus M* ''blockieren''. Da alle Kanten in M* disjunt sind kann man daraus folgern:
|
||||
$$ |M*|\leq 2\cdot |M|\quad \Rightarrow\quad |M|\geq \frac{1}{2}|M*|$$
|
||||
\item
|
||||
Sei $M$ das vom Algorithmus berechnete maximale Matching und $M^*$ das optimale maximale Matching.
|
||||
|
||||
Für jede Kante $e^*=\{u,v\}\in M^*$ gilt: mindestens einer der beiden Knoten $u$ oder $v$ muss über eine Kante aus $M$ abgedeckt werden, sonst wäre der $M$ nicht nicht-erweiterbar.
|
||||
|
||||
Eine Kante aus $M$ hat genau zwei Endknoten und kann daher höchstens zwei verschiedene Kanten aus $M^*$ ,,blockieren``. Da alle Kanten in $M^*$ disjunkt sind kann man daraus folgern:
|
||||
\[
|
||||
\abs{M^*} \leq 2\cdot \abs{M} \implies \abs{M} \geq \frac{1}{2} \abs{M^*}
|
||||
\]
|
||||
Somit ist der Algorithmus aus der Teilaufgabe a) eine 1/2 Approximation für ein optimales Matching.
|
||||
|
||||
\points{3}
|
||||
\item
|
||||
|
||||
Zielfunktion:
|
||||
$$ \arg\min \sum_{e\in E} x_e \geq 1$$
|
||||
\[
|
||||
\arg\min \sum_{e\in E} x_e \geq 1
|
||||
\]
|
||||
Entscheidungsvariablen: für jede Kante $e\in E$:
|
||||
$$x_e\in\{0,1\}\quad \forall e\in E$$
|
||||
Die Variable nimmt den Wert 1 an, wenn die Kante im Matching M ist und 0 falls sie das nicht ist.\\
|
||||
\[
|
||||
x_e\in\{0,1\}\quad \forall e\in E
|
||||
\]
|
||||
Die Variable nimmt den Wert 1 an, wenn die Kante im Matching M ist und 0 falls sie das nicht ist.
|
||||
|
||||
Nebenbedingungen:
|
||||
\begin{enumerate}
|
||||
\item Matching: Jeder Knoten darf von maximal einer Matching-Kante berührt werden
|
||||
$$\forall v\in V \colon \sum_{e\in \delta(v)}x_e\leq1$$
|
||||
\item
|
||||
Matching: Jeder Knoten darf von maximal einer Matching-Kante berührt werden
|
||||
\[
|
||||
\forall v\in V \colon \sum_{e\in \delta(v)}x_e\leq1
|
||||
\]
|
||||
$\delta(v)$ ist die Menge aller Kanten welche an $v$ anliegen
|
||||
\item Nicht-Erweiterbarkeit: Für jede Kante $\{u,v\}$ muss die Summe der Matching-Kanten an $u$ und $v$ mindestens 1 sein
|
||||
$$ \forall \{u,v\}\in E \colon \sum_{e\in\delta(u)}x_e+\sum_{e'\in\delta(v)}x_e'\geq 1$$
|
||||
\[
|
||||
\forall \{u,v\} \in E \colon \sum_{e \in \delta(u)} x_e + \sum_{e' \in \delta(v)} x_e' \geq 1
|
||||
\]
|
||||
$\delta(v)$ ist die Menge aller Kanten welche an $v$ anliegen. Äquivalent für $\delta(u)$.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\points{3}
|
||||
\item
|
||||
|
||||
\points{2}
|
||||
|
||||
|
||||
\end{tasks}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue