Compare commits
2 commits
20f6fa52ff
...
e0854b1088
| Author | SHA1 | Date | |
|---|---|---|---|
| e0854b1088 | |||
| f2ee389e5d |
3 changed files with 43 additions and 13 deletions
Binary file not shown.
|
|
@ -4,7 +4,8 @@
|
||||||
$$
|
$$
|
||||||
T(P)=\begin{cases}
|
T(P)=\begin{cases}
|
||||||
0 &\textnormal{falls } P \textnormal{ nur 2 Ecken hat}\\
|
0 &\textnormal{falls } P \textnormal{ nur 2 Ecken hat}\\
|
||||||
\min_{i\in \{2,...,n-1\}} [T(p_{1,i})+T(P_{i,n})+ \textnormal{Diagonalkosten}(i)] &\textnormal{sonst}
|
\min_{i\in \{2,...,n-1\}} [T(p_{1,i})+T(P_{i,n}) \\
|
||||||
|
+ \textnormal{Diagonalkosten}(i)] &\textnormal{sonst}
|
||||||
\end{cases}
|
\end{cases}
|
||||||
$$
|
$$
|
||||||
$$
|
$$
|
||||||
|
|
@ -14,14 +15,18 @@
|
||||||
d(p_1, p_i)+d(p_i, p_{n}) &\textnormal{sonst}
|
d(p_1, p_i)+d(p_i, p_{n}) &\textnormal{sonst}
|
||||||
\end{cases}
|
\end{cases}
|
||||||
$$
|
$$
|
||||||
Die Kosten der minimalen Triangulierung $T(P)$ lassen sich aus der minimalsten Summe der konstenminimalsten Triangulierung der entstehenden Teilpolygone $T(p_{1,i})$ und $T(p_{i,n})$ und den entstehenden Diagonalenkosten berechnen.\\
|
Die Kosten der minimalen Triangulierung $T(P)$ lassen sich aus der minimalsten Summe der konstenminimalsten Triangulierung der entstehenden Teilpolygone $T(p_{1,i})$ und $T(p_{i,n})$ und den entstehenden Diagonalenkosten berechnen.
|
||||||
|
|
||||||
Die Diagonalenkosten unterscheiden sich, je nachdem ob eine oder zwei der drei Kanten Polygonkanten sind. Sobald ein (Teil-)Polygon nur noch zwei Ecken hat bricht die Rekursion ab.
|
Die Diagonalenkosten unterscheiden sich, je nachdem ob eine oder zwei der drei Kanten Polygonkanten sind. Sobald ein (Teil-)Polygon nur noch zwei Ecken hat bricht die Rekursion ab.
|
||||||
\points{2}
|
\points{2}
|
||||||
|
|
||||||
\item
|
\item
|
||||||
Man nutzt die Idee aus a.\\
|
Man nutzt die Idee aus a.
|
||||||
\textbf{Tabelle $A[i,j]$} speichert die kostenminimalen Triangulierung des Teilpolygons mit den Ecken $p_i,...,p_j$\\
|
|
||||||
Für alle $i$ gilt $A[i,i+1]=0$, da diese Teilpolygone mit nur zwei Ecken darstellen, welche keine Triangulierung benötigen.\\
|
\textbf{Tabelle $A[i,j]$} speichert die kostenminimalen Triangulierung des Teilpolygons mit den Ecken $p_i,...,p_j$.
|
||||||
|
|
||||||
|
Für alle $i$ gilt $A[i,i+1]=0$, da diese Teilpolygone mit nur zwei Ecken darstellen, welche keine Triangulierung benötigen.
|
||||||
|
|
||||||
Für $j>i+1$ gilt:
|
Für $j>i+1$ gilt:
|
||||||
$$
|
$$
|
||||||
A[i,j]=\min_{k\in\{i+1,...,j-1\}}[A[i,k]+A[k,j]+\textnormal{Diagonalkosten}(i,k,j)]
|
A[i,j]=\min_{k\in\{i+1,...,j-1\}}[A[i,k]+A[k,j]+\textnormal{Diagonalkosten}(i,k,j)]
|
||||||
|
|
@ -33,21 +38,27 @@
|
||||||
d(p_i, p_k)+d(p_k, p_j) &\textnormal{sonst}
|
d(p_i, p_k)+d(p_k, p_j) &\textnormal{sonst}
|
||||||
\end{cases}
|
\end{cases}
|
||||||
$$
|
$$
|
||||||
Man berechnet dabei die Einträge nach nach wachsendem Abstand $r=j-i$, also von $r=2$ bis $r=n-1$. Dadurch sind die Einträge $A[i,k]$ und $A[k,j]$ immer bereits berechnet wenn man den $A[i,j]$ benötigt, da $k-i<r$ und $j-k<r$ gilt.\\
|
Man berechnet dabei die Einträge nach nach wachsendem Abstand $r=j-i$, also von $r=2$ bis $r=n-1$. Dadurch sind die Einträge $A[i,k]$ und $A[k,j]$ immer bereits berechnet wenn man den $A[i,j]$ benötigt, da $k-i<r$ und $j-k<r$ gilt.
|
||||||
Das Ergebnis steht dann in $A[1,n]$.\\\\
|
|
||||||
|
Das Ergebnis steht dann in $A[1,n]$.
|
||||||
\points{4}
|
\points{4}
|
||||||
|
|
||||||
\item
|
\item
|
||||||
Die polynomielle Laufzeit kann über die Schleifen des DP begründet werden.\\
|
Die polynomielle Laufzeit kann über die Schleifen des DP begründet werden.
|
||||||
Äußere Schleife: $r$ läuft von 1 bis $n-1$ benötigt also $\Oh(n)$ Schritte\\
|
|
||||||
Mittlere Schleife: für jedes $r$ gibt es $\Oh(n)$ Paare $(i,j)$ bei welchen $j-i=r$ gilt.\\
|
Äußere Schleife: $r$ läuft von 1 bis $n-1$ benötigt also $\Oh(n)$ Schritte.
|
||||||
Innere Schleife: Für jedes Paar probiert man alle $k$ zwischen $i$ und $j$ also $\Oh(n)$ Werte.\\
|
|
||||||
Pro Iteration der inneren Schleife benötigt man $\Oh(1)$ um die Einträge zu berechnen.\\
|
Mittlere Schleife: für jedes $r$ gibt es $\Oh(n)$ Paare $(i,j)$ bei welchen $j-i=r$ gilt.
|
||||||
|
|
||||||
|
Innere Schleife: Für jedes Paar probiert man alle $k$ zwischen $i$ und $j$ also $\Oh(n)$ Werte.
|
||||||
|
|
||||||
|
Pro Iteration der inneren Schleife benötigt man $\Oh(1)$ um die Einträge zu berechnen.
|
||||||
|
|
||||||
Daraus folgt:
|
Daraus folgt:
|
||||||
$$
|
$$
|
||||||
T(n)=\Oh(n)\cdot\Oh(n)\cdot\Oh(n)\cdot\Oh(1)=\Oh(n³)
|
T(n)=\Oh(n)\cdot\Oh(n)\cdot\Oh(n)\cdot\Oh(1)=\Oh(n³)
|
||||||
$$
|
$$
|
||||||
Diese Schranke ist auch scharf, da jeder der $\Oh(n²)$ Tabelleneinträgen auch tatsächlich befüllt wird und für jeden der Einträge im Durchschnitt $\Theta(n)$ Werte von $k$ durchprobiert werden. Es gilt also $\Theta(n³)$.\\\\
|
Diese Schranke ist auch scharf, da jeder der $\Oh(n²)$ Tabelleneinträgen auch tatsächlich befüllt wird und für jeden der Einträge im Durchschnitt $\Theta(n)$ Werte von $k$ durchprobiert werden. Es gilt also $\Theta(n³)$.
|
||||||
|
|
||||||
Der Speicherbedarf des Programms ist $\Oh(n²)$, da die Tabelle so viele Einträge für die Paare $(i,j)$ mit $1\leq i<j\leq n$ hat.
|
Der Speicherbedarf des Programms ist $\Oh(n²)$, da die Tabelle so viele Einträge für die Paare $(i,j)$ mit $1\leq i<j\leq n$ hat.
|
||||||
\points{2}
|
\points{2}
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,24 @@
|
||||||
\section{TSP mit Wiederholungen}
|
\section{TSP mit Wiederholungen}
|
||||||
\begin{tasks}
|
\begin{tasks}
|
||||||
\item
|
\item
|
||||||
|
Um TSP mit Wiederholungen auf Metrisches TSP zu reduzieren, müssen wir den zugrundeliegenden Graphen
|
||||||
|
metrisch machen, d. h. die Dreiecksungleichung muss für jede Menge von $3$ Knoten gelten.
|
||||||
|
|
||||||
|
Dazu iterieren wir über alle möglichen Mengen $T = \set{a, b, c}$ mit $a \neq b \neq c$ und $a, b, c \in V$ und $G(T, E)$ ist vollständig.
|
||||||
|
Erfüllt eine Menge die Dreiecksungleichung $c(a,b) \leq c(b,c) + c(a,c)$ nicht, so löschen wir
|
||||||
|
die Kante mit den höchsten Kosten aus dem Graphen.
|
||||||
|
Das dürfen wir, da die TSP-Tour diese Kante nie enthalten wird, weil es einen Weg gibt, der
|
||||||
|
kürzer ist und alle drei Knoten enthält. Der Graph bleibt zusammenhängend, da wir für jede
|
||||||
|
Menge $T$ nur eine Kante löschen.
|
||||||
\item
|
\item
|
||||||
|
Da wir den Graphen jetzt auf einen metrischen reduziert haben, können wir ähnlich wie in
|
||||||
|
der Vorlesung vorgehen.
|
||||||
|
|
||||||
|
Dazu nehmen wir einen Minimalen Spannbaum des Metrischen Graphen. Durch verdoppeln der Kanten
|
||||||
|
entsteht ein Kreis für dessen Kosten gilt (siehe Vorlesung):
|
||||||
|
$$
|
||||||
|
c(Kreis) = 2 \cdotp c(MSB) \leq 2 \cdotp OPT
|
||||||
|
$$
|
||||||
|
Da wir Knoten und Kanten mehrfach benutzen dürfen, ist dieser Kreis eine 2-Approximation für
|
||||||
|
TSP mit Wiederholungen.
|
||||||
\end{tasks}
|
\end{tasks}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue