diff --git a/übung_7/agt_übung_7.pdf b/übung_7/agt_übung_7.pdf index cc93346..b80a6a7 100644 Binary files a/übung_7/agt_übung_7.pdf and b/übung_7/agt_übung_7.pdf differ diff --git a/übung_7/aufgabe_2.tex b/übung_7/aufgabe_2.tex index bbac169..3b58b67 100644 --- a/übung_7/aufgabe_2.tex +++ b/übung_7/aufgabe_2.tex @@ -2,13 +2,14 @@ \begin{quote} Sei $G = (V, E)$ ein gerichteter Graph und $s \in V$ ein ausgezeichneter Knoten. -Ein Knoten $w$ ist von einem Knoten $v$ erreichbar, wenn es einen $v–w$-Weg gibt. Die Erreichbarkeitsmenge $E(v)$ eines Knotens $v$ ist die Menge aller Knoten, die von $v$ erreichbar + Ein Knoten $w$ ist von einem Knoten $v$ erreichbar, wenn es einen $v–w$-Weg (\autoref{fig:1}) gibt. Die Erreichbarkeitsmenge $E(v)$ eines Knotens $v$ ist die Menge aller Knoten, die von $v$ erreichbar sind. Insbesondere ist $v \in E(v)$. \end{quote} \begin{figure} \centering \includegraphics[width=0.5\textwidth]{vw.jpg} \caption{Volkswagen für den Raupengott!} + \label{fig:1} \end{figure} \begin{tasks} \item @@ -26,7 +27,8 @@ sind. Insbesondere ist $v \in E(v)$. und $\indeg(s) = 0$ gilt. Da jeder Knoten erreicht werden kann und der induzierte Graph die - $s$-Wurzelbaum-Eigenschaften erfüllt, besitzt $G$ einen $s$-Wurzelspannbaum. + $s$-Wurzelbaum-Eigenschaften erfüllt, muss $G$ einen $s$-Wurzelspannbaum + besitzen. \points{3} \item \begin{quote} @@ -36,9 +38,9 @@ und $\indeg(s) = 0$ gilt. Siehe \autoref{fig:2a}. \points{2} - \begin{figure} + \begin{figure}[h] \centering - \includegraphics[page=1, width=0.2\textwidth]{figures.pdf} + \includegraphics[page=1, width=0.27\textwidth]{figures.pdf} \caption{Gegenbeispiel mit zwei möglichen Wurzelspannbäumen.} \label{fig:2a} \end{figure} diff --git a/übung_7/aufgabe_3.tex b/übung_7/aufgabe_3.tex index 1a11ee7..84e32c2 100644 --- a/übung_7/aufgabe_3.tex +++ b/übung_7/aufgabe_3.tex @@ -1,72 +1,66 @@ -\section{Matchings in allgemeinen Graphen} +\section{Wurzelspannbäume in azyklischen Graphen} \begin{tasks} \item - -\begin{pseudocode} -Matchings($G = \tup(V, E)$) - $M = \emptyset$ - $visited =$ |Array von $False$ der Größe| $|V|$ // Markiert gematchte Knoten - - 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} + Siehe \autoref{fig:3a}. + \points{2} + \begin{figure} + \centering + \begin{subfigure}{0.3\linewidth} + \centering + \includegraphics[page=2, width = 0.5\textwidth]{figures.pdf} + \end{subfigure} + \begin{subfigure}{0.3\linewidth} + \centering + \includegraphics[page=3, width = 0.5\textwidth]{figures.pdf} + \end{subfigure} + \begin{subfigure}{0.3\linewidth} + \centering + \includegraphics[page=4, width = 0.5\textwidth]{figures.pdf} + \end{subfigure} + \caption{Gegenbeispiel: Jarnik-Prim in orange und Optimale Lösung in blau.} + \label{fig:3a} + \end{figure} + \item + Siehe \autoref{fig:3b}. + \points{2} + \begin{figure} + \centering + \begin{subfigure}{0.3\linewidth} + \centering + \includegraphics[page=5, width = 0.5\textwidth]{figures.pdf} + \end{subfigure} + \begin{subfigure}{0.3\linewidth} + \centering + \includegraphics[page=6, width = 0.5\textwidth]{figures.pdf} + \end{subfigure} + \begin{subfigure}{0.3\linewidth} + \centering + \includegraphics[page=7, width = 0.5\textwidth]{figures.pdf} + \end{subfigure} + \caption{Gegenbeispiel: Kruskal in orange und Optimale Lösung in blau.} + \label{fig:3b} + \end{figure} + \item + \alg*{DagMst} nimmt für jeden Knoten $v \in V \setminus \set{s}$ die + Kante $\tup{u, v}$ mit minimalen Kosten in den $s$-Wurzelspannbaum. - 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. + Dadurch, dass genau eine Kante $\tup{u, v}$ für jeden Knoten $v$ ausgewählt + wird, hat jeder Knoten $\indeg(v) = 1$ und $\indeg(s) = 0$. - \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} + Insbesondere ist auch jede Kante + eine ausgehende Kante eines anderen Knotens, und weil genau $n-1$ Kanten ausgewählt werden, muss der Graph $T$ zusammenhängend sein. + + Da $G$ azyklisch ist, muss auch $T$ azyklisch sein. Also berechnet \alg*{DagMst} einen $s$-Wurzelspannbaum. + \points{3} \item - Sei $M$ das vom Algorithmus berechnete maximale Matching und $M^*$ das optimale maximale Matching. + Sei $T$ ein Wurzelspannbaum der von \alg*{DagMst} berechnet wurde. - 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 - \] - 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. - - Nebenbedingungen: - \begin{enumerate} - \item - Matching: Jeder Knoten darf von maximal einer Matching-Kante berührt werden + Angenommen es gibt einen Wurzelspannbaum $T'$ der kleiner als $T$ ist, + dann muss es einen Knoten $v$ geben mit Eingangskantenkosten \[ - \forall v\in V \colon \sum_{e\in \delta(v)}x_e\leq1 + c(\tup{u', v}) < c(\tup{u, v}) \] - $\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 - \] - $\delta(v)$ ist die Menge aller Kanten welche an $v$ anliegen. Äquivalent für $\delta(u)$. - \end{enumerate} - \points{3} - \item - \points{2} + Das ist ein Widerspruch, da \alg*{DagMst} immer die minimale Kante $\tup{u, v}$ nimmt. + \points{2} \end{tasks} diff --git a/übung_7/figures.pdf b/übung_7/figures.pdf index b3cfc44..404685f 100644 Binary files a/übung_7/figures.pdf and b/übung_7/figures.pdf differ