diff --git a/übung_6/agt_übung_6.pdf b/übung_6/agt_übung_6.pdf new file mode 100644 index 0000000..e725206 Binary files /dev/null and b/übung_6/agt_übung_6.pdf differ diff --git a/übung_6/agt_übung_6.tex b/übung_6/agt_übung_6.tex index d678bc4..ecbdeda 100644 --- a/übung_6/agt_übung_6.tex +++ b/übung_6/agt_übung_6.tex @@ -1,5 +1,6 @@ \documentclass[parskip=half]{ngexrcs} \usepackage{hyperref} +\usepackage{subcaption} \setkeys{Gin}{pagebox=artbox, width=0.2\textwidth} \subject{Algorithmische Graphentheorie} diff --git a/übung_6/aufgabe_1.tex b/übung_6/aufgabe_1.tex index 665e6d9..9219722 100644 --- a/übung_6/aufgabe_1.tex +++ b/übung_6/aufgabe_1.tex @@ -1,82 +1,6 @@ -\newcommand{\OPT}{\mathrm{OPT}} - -\section{Paarungen (Matchings) in Bäumen} +\section{LP-Runden} \begin{tasks} -\item - \label{1a} - Ein Baum ist ein kreisfreier, zusammenhängender Graph. Ein Baum besitzt ein - perfektes Matching genau dann, wenn die Anzahl der Knoten gerade ist und - jedes Blatt keine Geschwisterknoten hat. - - Die Anzahl der Knoten muss gerade sein, da in einem perfekten Match\-ing jeder - Knoten mit einem anderen gematcht wird. - - Jedes Blatt muss Einzelblatt sein, da der Elternknoten nur mit einem Blatt - gematcht werden kann. - - Also ist ein perfektes Matching im Baum eindeutig, da jedes Blatt mit seinem - Elternknoten gematcht werden muss. Diese Kante $uv$ ist sicher im Matching enthalten und alle zu $u$ oder $v$ inzidenten Kanten können aus dem Baum gelöscht werden. So entsteht ein neues Blatt, für das - die selbe Regel gilt. - \points{3} -\item - Der \autoref{alg:treematching} berechnet ein größtes Matching. - - Der Algorithmus ist korrekt, da der Baum $T$ entweder ein perfektes Matching - enthält und somit ein perfektes Matching berechnet (Siehe \autoref{1a}), - oder I dont fucking know. - - Die Laufzeit für \algt{Initialize} liegt in $\Oh(V)$, da sich der Baum in linearer Zeit augmentieren lässt und es $\abs{V} - 1$ viele Kanten gibt. - - Die Laufzeit für \algt{MatchaTeeRec} liegt in $\Oh(V)$. Der Algorithmus wird genau - einmal für jeden Knoten aufgerufen. Wenn eine Kante zum - Match\-ing hinzugefügt wird, werden die Knoten und Kanten aus dem Baum gelöscht - die nicht mehr zum Matching hinzugefügt werden können und somit - nicht mehr bearbeitet werden. - - Also liegt auch \algt{MatchaTee} in $\Oh(V)$. - \begin{algorithm} - \centering - \caption{Größtes Matching in Bäumen} - \label{alg:treematching} - \begin{algorithmic} - \alg{MatchaTee}{$T = \tup{V, E}$} \+ \\ - \com{Den ungerichten Baum zu einem gerichteten Baum mit $parent$ und} \\ - \com{$children$ pro Knoten und einer Wurzel $root$ augmentieren.} \\ - \alg{Initialize}{$T$} \\ - return \alg{MatchaTeeRec}{$T$, $T.root$} \- \\ - \\ - \alg{MatchaTeeRec}{$T$, $r$} \+ \\ - \com{Rekursiv für die Kinder aufrufen} \\ - $m \gets \emptyset$ \\ - foreach $v \in r.children$ do \+ \\ - $m \gets m \cup \text{\alg{MatchaTeeRec}{T, v}}$ \- \\ - \com{Wenn Knoten Blatt ist, dann die Kante zum Elternknoten hinzufügen.} \\ - if $r \neq nil$ and $deg(r) = 1$ then \+ \\ - \com{Die Knoten und inzidente Kanten aus dem Baum entfernen.} \\ - $T \gets T \setminus \set{r.parent, r.parent.children}$ \\ - $m \gets m \cup \set{\set{r, r.parent}}$ \- \\ - return $m$ - \end{algorithmic} - \end{algorithm} - \points{5} -\item - Wenn eine Kante $rv$ zu einem Matching hinzugefügt wird, kann keine zu $v$ - inzidente Kante hinzugefügt werden. Das müssen wir auch bei unserem dynamischen - Programm beachten. - \[ - \OPT(r) = \max_{v \in r.children} - \begin{cases} - rv + \sum_{i \in v.children} \OPT(i) + \sum_{j \in r.children \setminus v} \OPT(j) \\ - \sum_{k \in r.children} \OPT(k) - \end{cases} - \] - - Der Algorithmus hält sich an die Eigenschaften eines Matchings, also ist - er korrekt. - - Der Algorithmus probiert alle Kindknoten von $r$ aus. Geht man mit $r$ im Baum von - unten nach oben sind das also höchstens so viele Iterationen wie, Knoten im Baum - existieren (ohne die Blätter). Also läuft das Dynamische Programm in $\Oh(V)$. - - \points{5} + \item + \item + \item \end{tasks} diff --git a/übung_6/aufgabe_2.tex b/übung_6/aufgabe_2.tex index 872c2fd..ef0c3f1 100644 --- a/übung_6/aufgabe_2.tex +++ b/übung_6/aufgabe_2.tex @@ -1,24 +1,75 @@ -\section{Hamiltonkreise} +\section{Christofides’ Algorithmus} \begin{tasks} \item - Ein Kreis hat im allgemeinen mindestens die Länge 3. Da der Turniergraph mindestens - 3 Knoten enthält und stark zusammenhängend ist, liegt jeder Knoten auf einem Kreis - mit Länge $\geq 3$. - \points{1} -\item - Gegeben ist ein Kreis $K$ mit Länge $\geq 3$. - Um $K$ zu verkleinern wählen wir uns drei aufeinanderfolgende Knoten $a, b, c$ aus. - Nach Definition gibt es für jedes Knotenpaar eine gerichtete Kante. Wir ersetzen - jetzt einen Weg der Länge 2 durch eine Kante die nach Annahme existieren muss. Das - machen wir solange, bis der Kreis die Länge 3 hat. - - \points{2} -\item - \points{1} -\item - \points{1} -\item - \points{1} + Siehe \autoref{fig:christofides}. + \points{4} \item + Siehe \autoref{fig:checkmate}. Diese Tour kann nicht von \algt{Christofides} + berechnet werden, denn egal mit welcher Kante in welche Richtung gestartet + wird, nimmt \algt{Cristofides} immer eine Kante in die Tour, die nicht in + \autoref{fig:checkmate} ist. + + \begin{figure} + \centering + \includegraphics[page=10, width=0.5\textwidth]{figures.pdf} + \caption{Eine kleinere TSP-Tour, die von \algt{Cristofides} nicht berechnet werden kann.} + \label{fig:checkmate} + \end{figure} \points{1} \end{tasks} + +\newpage +\KOMAoptions{mpinclude=false} +\recalctypearea +\begin{figure} + \centering + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=1, width=0.9\textwidth]{figures.pdf} + \caption{Der gewichtete, vollständige Graph $G$.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=2, width=0.9\textwidth]{figures.pdf} + \caption{Minimalen Spannbaum finden.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=3, width=0.9\textwidth]{figures.pdf} + \caption{Knoten $U$ mit ungeraden Graden finden.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=4, width=0.9\textwidth]{figures.pdf} + \caption{Minimales, perfektes Matching auf $G[U]$ finden.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=5, width=0.9\textwidth]{figures.pdf} + \caption{Eulertour konstruieren.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=6, width=0.9\textwidth]{figures.pdf} + \caption{Eulertour konstruieren.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=7, width=0.9\textwidth]{figures.pdf} + \caption{Eulertour konstruieren.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=8, width=0.9\textwidth]{figures.pdf} + \caption{Eulertour konstruieren.} + \end{subfigure} + \begin{subfigure}{.3\linewidth} + \centering + \includegraphics[page=9, width=0.9\textwidth]{figures.pdf} + \caption{Schon besuchte Knoten überspringen. TSP vollständig.} + \end{subfigure} + \caption{Cristofides' Algorithmus} + \label{fig:christofides} +\end{figure} +\KOMAoptions{mpinclude=true} +\recalctypearea diff --git a/übung_6/aufgabe_3.tex b/übung_6/aufgabe_3.tex index 33b6aed..d525d63 100644 --- a/übung_6/aufgabe_3.tex +++ b/übung_6/aufgabe_3.tex @@ -1,24 +1,8 @@ -% vim: ft=tex -\section{Perfekte Matchings in bipartiten Graphen} -\begin{quote} - Ein bipartiter Graph $G = \tup{A \cupdot B, E}$ mit $\abs{A} = \abs{B} = k$ - und jeder Knoten hat mindestens Grad $\frac{k}{2}$ $\iff$ $G$ enthält - perfektes Matching. -\end{quote} -\begin{itemize} - \item[$\seilpmi$] Wenn $G$ ein perfektes Matching enthält, dann muss - $\abs{A} = \abs{B}$, sonst würden Knoten übrig bleiben. - - Außerdem muss jeder Knoten mindestens Grad $1$ haben, da sonst Knoten - nicht gematcht werden könnten. - \item[$\implies$] Man kann jeden Knoten in $A$ einem - Knoten in $B$ zuordnen, da $\abs{A} = \abs{B}$. - - Alle Knoten sind im Matching enthalten. Wenn wir eine Kante zum Matching - hinzufügen, verringert sich die Anzahl der offenen Knoten um $2$. - Insbesondere verringert sich auch der Grad von $\frac{k}{2} - 1$ - Knoten um $1$ in $A$ und $B$. Da jeder Knoten mindestens Grad $\frac{k}{2}$ hat und jedes mal - ein offenes Knotenpaar entfernt wird. - $k$ mal eine Kante zum Matching hinzufügen. Also wird jeder Knoten gematcht. -\end{itemize} -\points{5} +\section{Matchings in allgemeinen Graphen} +\begin{tasks} + \item + \item + \item + \item + \item +\end{tasks} diff --git a/übung_6/figures.pdf b/übung_6/figures.pdf index dac87d0..a723839 100644 Binary files a/übung_6/figures.pdf and b/übung_6/figures.pdf differ diff --git a/übung_6/figures.pdf.autosave.ipe b/übung_6/figures.pdf.autosave.ipe new file mode 100644 index 0000000..6cfb8ff --- /dev/null +++ b/übung_6/figures.pdf.autosave.ipe @@ -0,0 +1,903 @@ + + + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + +0.6 0 0 0.6 0 0 e + + + + + +0.5 0 0 0.5 0 0 e + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h + + + + + +-0.5 -0.5 m +0.5 -0.5 l +0.5 0.5 l +-0.5 0.5 l +h + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + + + +-0.43 -0.57 m +0.57 0.43 l +0.43 0.57 l +-0.57 -0.43 l +h + + +-0.43 0.57 m +0.57 -0.43 l +0.43 -0.57 l +-0.57 0.43 l +h + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +-1 0.333 m +0 0 l +-1 -0.333 l + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.5 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.5 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.3 0 l +-0.5 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.3 0 l +-0.5 -0.333 l +h + + + + +1 0 m +0 0.333 l +0 -0.333 l +h +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +1 0 m +0 0.333 l +0 -0.333 l +h +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-0.7 0 m +-1.7 0.333 l +-1.7 -0.333 l +h + + + + +-0.7 0 m +-1.7 0.333 l +-1.7 -0.333 l +h + + + + +-0.7 0 m +-1.7 0.333 l +-0.8 0 l +-1.7 -0.333 l +h + + + + +-0.7 0 m +-1.7 0.333 l +-0.8 0 l +-1.7 -0.333 l +h + + + + +-1.7 0.333 m +-0.7 0 l +-1.7 -0.333 l + + + + +-0.7 0 m +-1.7 0.333 l +-1.7 -0.333 l +h +-1.7 0 m +-2.7 0.333 l +-2.7 -0.333 l +h + + + + +-0.7 0 m +-1.7 0.333 l +-1.7 -0.333 l +h +-1.7 0 m +-2.7 0.333 l +-2.7 -0.333 l +h + + + + +100 204 m +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +h + + + + +100 204 m +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +h + + + + +100 204 m +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +h + + + + +96 96 m +304 96 l +304 204 l +96 204 l +h + + + + +96 96 m +304 96 l +304 204 l +96 204 l +h + + + + +92 92 m +308 92 l +308 208 l +92 208 l +h + + + + +100 96 m +110 96 s +110 92 +106 88 s +116 92 +118 96 s +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +100 204 l +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +h + + + + +100 96 m +186 96 s +186 92 +182 88 s +192 92 +194 96 s +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +100 204 l +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +h + + + + +100 96 m +110 96 s +110 92 +106 88 s +116 92 +118 96 s +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +100 204 l +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +h + + + + +100 96 m +110 96 s +110 92 +106 88 s +116 92 +118 96 s +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +100 204 l +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +h + + + + +100 96 m +186 96 s +186 92 +182 88 s +192 92 +194 96 s +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +100 204 l +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +h + + + + +100 96 m +110 96 s +110 92 +106 88 s +116 92 +118 96 s +300 96 l +4 0 0 4 300 100 304 100 a +304 200 l +4 0 0 4 300 200 300 204 a +100 204 l +4 0 0 4 100 200 96 200 a +96 100 l +4 0 0 4 100 100 100 96 a +h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\usepackage[ngerman]{babel} +\usepackage[sansdefault]{fontsetup} +\usepackage{ngutils} + +\renewcommand{\theoremfont}{\normalfont\bfseries\color{dark blue}} +\renewcommand{\definitionfont}{\normalfont\bfseries\color{dark gray}} + +\newcommand{\labelfont}{\normalfont\bfseries\color{dark blue}} + +%\setlength{\leftmargini}{1.33em} +%\setlength{\leftmarginii}{1.33em} +%\setlength{\leftmarginiii}{1.33em} +%\setlength{\leftmarginvi}{1.33em} + +\renewcommand{\labelenumi}{\labelfont\arabic{enumi}.} +\renewcommand{\labelenumii}{\labelfont\alph{enumii})} +\renewcommand{\labelenumiii}{\labelfont\roman{enumiii}.} +\renewcommand{\labelenumiv}{\labelfont\Alph{enumiv}.} + +\renewcommand{\labelitemi}{\labelfont $\blockfull$} +\renewcommand{\labelitemii}{\labelfont $\blackpointerright$} +\renewcommand{\labelitemiii}{\labelfont $\bullet$} +\renewcommand{\labelitemiv}{\labelfont $\bullet$} + +\setlength{\fboxsep}{1pt} + +\newcommand{\bk}{\color{black}} +\newcommand{\wt}{\color{white}} +\newcommand{\bu}{\color{dark blue}} +\newcommand{\bn}{\color{dark brown}} +\newcommand{\cn}{\color{dark cyan}} +\newcommand{\gy}{\color{dark gray}} +\newcommand{\gn}{\color{dark green}} +\newcommand{\og}{\color{dark orange}} +\newcommand{\pk}{\color{dark pink}} +\newcommand{\pl}{\color{dark purple}} +\newcommand{\rd}{\color{dark red}} +\newcommand{\yo}{\color{dark yellow}} +\newcommand{\tl}{\color{title}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +688 448 m +48 0 0 48 640 448 640 496 a +256 448 m +48 0 0 -48 304 448 304 496 a +304 496 m +640 496 l +688 448 m +688 256 +640 64 c + + +640 448 m +448 256 l + + +640 64 m +448 256 l + + +640 448 m +448 256 l + + +640 64 m +448 256 l + + +256 448 m +352 160 +640 64 c + + +640 448 m +352 352 +256 64 c + + +448 256 m +640 448 l + + +640 64 m +448 256 l + + +688 64 m +48 0 0 -48 640 64 640 16 a +256 64 m +48 0 0 48 304 64 304 16 a +304 16 m +640 16 l +688 64 m +688 256 +640 448 c + + +256 448 m +256 64 l + + +256 64 m +256 448 l + + +256 64 m +640 64 l + + +640 64 m +640 448 l + + +640 448 m +256 448 l + + +256 448 m +448 256 l + + +256 64 m +448 256 l + + +640 448 m +352 352 +256 64 c + +3,5 +4 +4 +2 +4,5 +3 +3 +4 +1 +6 + +640 448 m +256 448 l + + +256 448 m +352 160 +640 64 c + + +688 448 m +48 0 0 48 640 448 640 496 a +256 448 m +48 0 0 -48 304 448 304 496 a +304 496 m +640 496 l +688 448 m +688 256 +640 64 c + + + +688 64 m +48 0 0 -48 640 64 640 16 a +256 64 m +48 0 0 48 304 64 304 16 a +304 16 m +640 16 l +688 64 m +688 256 +640 448 c + + +688 64 m +48 0 0 -48 640 64 640 16 a +256 64 m +48 0 0 48 304 64 304 16 a +304 16 m +640 16 l +688 64 m +688 256 +640 448 c + + + + + + + + + + + + + + +688 448 m +48 0 0 48 640 448 640 496 a +256 448 m +48 0 0 -48 304 448 304 496 a +304 496 m +640 496 l +688 448 m +688 256 +640 64 c + + +640 448 m +448 256 l + + +640 64 m +448 256 l + + +688 64 m +48 0 0 -48 640 64 640 16 a +256 64 m +48 0 0 48 304 64 304 16 a +304 16 m +640 16 l +688 64 m +688 256 +640 448 c + + +256 448 m +256 64 l + + +256 64 m +640 64 l + + +640 64 m +640 448 l + + +640 448 m +256 448 l + + +256 448 m +448 256 l + + +256 64 m +448 256 l + +3,5 +4 +4 +2 +4,5 +3 +3 +4 +1 +6 + + + + + + +640 448 m +256 448 l + + +