Metrisches TSP und Christofides' Algorithmus

This commit is contained in:
Marco Ammon 2020-10-14 12:23:04 +02:00
parent f868db6427
commit c97b71f070
2 changed files with 61 additions and 0 deletions

Binary file not shown.

View File

@ -29,6 +29,8 @@
\DeclareMathOperator{\opt}{OPT} \DeclareMathOperator{\opt}{OPT}
\DeclarePairedDelimiter\abs{\lvert}{\rvert} \DeclarePairedDelimiter\abs{\lvert}{\rvert}
\newcommand{\cupdot}{\mathbin{\mathaccent\cdot\cup}}
\newtheorem*{satz}{Satz} \newtheorem*{satz}{Satz}
\newtheorem*{zeuge}{Zeuge} \newtheorem*{zeuge}{Zeuge}
@ -234,4 +236,63 @@ Weiter lassen sich damit obere bzw. untere Schranken der Optimallösung aus eine
(1 - \varepsilon_A(\abs{I})) \cdot \opt(I) \le A(I) \le (1 + \varepsilon_A(\abs{I})) \cdot \opt(I) (1 - \varepsilon_A(\abs{I})) \cdot \opt(I) \le A(I) \le (1 + \varepsilon_A(\abs{I})) \cdot \opt(I)
\end{equation*} \end{equation*}
\end{enumerate} \end{enumerate}
\section{Das metrische Traveling Salesperson Problem $\Delta\problem{TSP}$}
\subsection{Definition}
\begin{align*}
\mathcal{D} &= \{\langle K_n, c\rangle \mid K_n\, \text{vollständiger Graph auf $n$ Knoten}, c: E \mapsto \mathbb{N},\\
&\underbrace{\forall u, v, w \in V: c(u,v) \le c(u,w) + c(w, v)}_\text{Dreiecksungleichung}\}\\
\mathcal{S}(\langle K_n, c \rangle) &= \{ C \mid C = (v_{i_1}, v_{i_2}, \dots, v_{i_n}, v_{i_i})\,\text{ist ein Hamiltonkreis}\}\\
f(c_\mathrm{E}) &= c(v_{i_n}, v_{i_1}) + \sum_{j=1}^{n-1} c(v_{i_j}, v_{i_{j+1}})\\
\mathrm{ziel} &= \min
\end{align*}
\subsection{Christofides' Algorithmus \algo{CH}}
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 $\mathcal{O}(n^{2.5}\cdot (\log n)^4)$ berechnet werden.
Als Multi-Graph wird ein Graph bezeichnet, der um mehrere Kanten zwischen den gleichen Knoten erweitert wurde.
Wird in einem Pfad jede Kante des (Multi-)Graph genau einmal besucht, so spricht man von einem Euler-Pfad. Bildet der Pfad einen Kreis, so nennt man ihn Euler-Kreis oder Euler-Tour. Haben alle Knoten von $G$ geraden Grad, so existiert eine Euler-Tour in $G$. Diese lässt sich in $\mathcal{O}(\abs{V} + \abs{E})$ berechnen.
Der Algorithmus von Christofides (\algo{CH}) geht wie folgt vor:
\begin{algorithmic}[1]
\State berechne einen minimalen Spannbaum $T_\mathrm{CH}$ von $I = \langle K_n, c\rangle$
\State $S = \{v \in T_\mathrm{CH} \mid \mathrm{deg}_{T_\mathrm{CH}}(v)\, \text{ungerade}\}$ \Comment{$\abs{S}$ ist gerade}
\State berechne auf dem durch $S$ induzierten Teilgraphen des $K_n$ ein leichtestes Matching $M_\mathrm{CH}$
\State berechne eine Euler-Tour $E = (u_1, u_2, \dots)$ auf $T_\mathrm{CH} \cupdot M_\mathrm{CH}$ \Comment{$T_\mathrm{CH} \cupdot M_\mathrm{CH}$ kann Multi-Graph sein, alle Knoten haben geraden Grad}
\State entferne Wiederholungen von Knoten in $E$, sodass man $E'$ erhält\\
\Return $E'$
\end{algorithmic}
\begin{satz}
\algo{CH}, gestartet mit einer Eingabe auf $n$ Knoten, garantiert eine relative Güte von $\rho_\mathrm{CH} \le \frac{3}{2} - \frac{1}{n}$ in einer Laufzeit von $\mathcal{O}(n^{2.5}\cdot (\log n)^4)$.
\end{satz}
\begin{proof}
Sei $R^*$ eine optimale Rundreise für $I$, d.h. $c(R^*) = \opt(I)$. Es gilt $\algo{CH}(I) = c(E') \le (\frac{3}{2} - \frac{1}{n}) \cdot c(R^*)$ zu zeigen.
\begin{enumerate}
\item Da $R^*$ aus $n$ Kanten besteht, muss durch ein Durchschnittsargument mindestens eine Kante $e$ mit $c(e) \ge \frac{c(R^*)}{n}$ existieren. Wird diese aus $R^*$ entfernt, so enthält man einen Spannbaum des $K_n$. Da $T_\mathrm{CH}$ minimal ist, gilt
\begin{equation*}
c(T_\mathrm{CH}) \le c(R^*) - \frac{c(R^*)}{n} = \left(1 - \frac{1}{n}\right) \cdot c(R^*)
\end{equation*}
\item In beliebigen Bäumen ist die Anzahl der Knoten mit ungeradem Grad gerade.
\item Zur Vereinfachung werden die Knoten so umbenannt, dass $R^* = (u_1, u_2, \dots, u_n, u_1)$ ist.
$S$ kann dann als $S = \{u_{i_1}, \dots, u_{i_{\abs{S}}}\}$ mit $i_1 < \dots < i_{\abs{S}}$ geschrieben werden.
Aus $S$ kann ein Kreis $H = (u_{i_1}, \dots, u_{i_{\abs{S}}}, u_{i_1})$ gebildet werden. Durch die Dreiecksungleichung ($\abs{H} \le n$ und jede \enquote{Abkürzung} ist maximal gleich lang wie der Weg in $R^*$) gilt $c(H) \le c(R^*)$.
Es können zwei perfekte Matching $M_1$ und $M_2$ auf $H$ berechnet werden, denn $\abs{S}$ ist gerade. Weil $M_\mathrm{CH}$ minimal ist, folgt o.B.d.A. mit $c(M_1) \le c(M_2)$ die Aussage
\begin{equation*}
c(M_\mathrm{CH}) \leq c(M_1) \le \frac{1}{2} \cdot (c(M_1) + c(M_2)) = \frac{1}{2} \cdot c(H) \le \frac{1}{2} \cdot c(R^*)
\end{equation*}
\item Da jeder Knoten in $T_\mathrm{CH} \cupdot M_\mathrm{CH}$ geraden Grad hat, kann eine Euler-Tour $E$ berechnet werden. Weil diese nur Kanten aus $T_\mathrm{CH} \cupdot M_\mathrm{CH}$ benutzt, kann ihre Länge mit den vorherigen Ergebnissen wie folgt beschränkt werden:
\begin{equation*}
c(E) = c(T_\mathrm{CH} \cupdot M_\mathrm{CH}) \le \left(1 - \frac{1}{n}\right)\cdot c(R^*) + \frac{1}{n}\cdot c(R^*) = \left(\frac{3}{2} - \frac{1}{n}\right) \cdot \opt(I)
\end{equation*}
\item Durch die Dreiecksungleichung kann $E'$ nicht länger als $E$ werden.
\end{enumerate}
\end{proof}
\begin{zeuge}
TODO
\end{zeuge}
\end{document} \end{document}