96 lines
3.3 KiB
TeX
96 lines
3.3 KiB
TeX
% vim: ft=tex
|
|
\section{Straßenreparatur mittels Linearer Programmierung und Flüssen}
|
|
\begin{quote}
|
|
Gegeben sei ein ungerichteter Graph $G = \tup{V, E}$, der ein Verkehrsnetzwerk darstellt,
|
|
wobei jeder Knoten $v \in V$ eine Stadt repräsentiert und jede Kante $e = \set{u, v}$ eine Straße
|
|
zwischen den Städten $u$ und $v$.
|
|
|
|
Die Straßen müssen erneuert werden. Dabei sind für jede Straße $e \in E$ Reparaturkosten
|
|
nötig, die durch eine Funktion $r: E \to~\RR_{\geq 0}$ gegeben sind. Zusätzlich hat jede Stadt $v \in V$
|
|
nur ein begrenztes Budget, das durch eine Funktion $B: V \to \RR_{\geq 0}$ gegeben ist.
|
|
\end{quote}
|
|
\begin{tasks}
|
|
\item Seien $u_e, v_e \in \RR_{\geq 0}$ die Reparaturbeträge, die Stadt $u$ und $v$ für eine inzidente Straße
|
|
$e$ zahlen. Um $u_e, v_e$ zu erhalten gehen wir durch die Adjazenzliste und vermerken pro Kante die inzidenten Knoten.
|
|
Dann müssen wir folgendes lineares Programm lösen.
|
|
|
|
Zielfunktion:
|
|
$$
|
|
\argmax \sum_{e \in E} u_e + v_e
|
|
$$
|
|
|
|
Für alle $e \in E$ gilt
|
|
$$
|
|
r(e) - (u_e + v_e) \leq 0
|
|
$$
|
|
Damit stellen wir sicher, dass die vollen Reparaturkosten bezahlt werden.
|
|
|
|
Für alle $u \in V$ und zu $u$ inzidente Kanten $I$ gilt
|
|
$$
|
|
\sum_{e \in I} u_e \leq B(u)
|
|
$$
|
|
Damit stellen wir sicher, dass das Budget einer Stadt nicht überschritten wird.
|
|
|
|
Wenn die Zielfunktion den Wert der Summe aller Reparaturkosten hat, haben
|
|
wir eine Lösung gefunden.
|
|
\points{3}
|
|
|
|
\item Sei $x_e \in \set{0, 1}$ der Indikator, ob Stadt $x$ die Reparaturkosten der inzidenten Straße $e$ trägt. Dann müssen wir folgendes ganzahlig lineares Programm lösen.
|
|
|
|
Zielfunktion:
|
|
$$
|
|
\argmax \sum_{e \in E} x_e
|
|
$$
|
|
|
|
Für alle $e \in E$ und deren inzidente Knoten $x, y$ gilt
|
|
$$
|
|
x_e + y_e \leq 1
|
|
$$
|
|
Damit Stellen wir sicher, dass nur eine Stadt die Reparaturkosten einer Staße trägt.
|
|
|
|
Für alle $x \in V$ und zu $x$ inzidente Kanten $I$ gilt
|
|
$$
|
|
\sum_{e \in I} x_e \cdotp r(x) \leq B(x)
|
|
$$
|
|
Damit stellen wir sicher, dass das Budget einer Stadt nicht überschritten wird.
|
|
|
|
Wenn die Zielfunktion den Wert der Anzahl an Knoten hat, haben wir eine
|
|
Lösung gefunden.
|
|
\points{2}
|
|
|
|
\item
|
|
Das Problem kann wie in \autoref{fig:flow} als Fluss modelliert werden.
|
|
|
|
\begin{itemize}
|
|
\item Dabei ist $s$ der Startknoten und $t$ der Zielknoten.
|
|
|
|
\item Die Kantenkapazitäten von $s$ zu den Städten $v_i \in V$ ist das Budget $B(v_i)$.
|
|
|
|
\item Die Kantenkapazitäten von $v_i$ zu den Straßen $e_j \in E$ müssen jeweils
|
|
größer als $r(e_j)$ sein. Jede Straße $e_j$ hat genau zwei eingehende Kanten von
|
|
den beiden inzidenten Städten.
|
|
|
|
\item Die Kantenkapazitäten von $e_j$ zu $t$ sind die Reparaturkosten $r(e_j)$
|
|
\end{itemize}
|
|
Wenn ein zulässiger Fluss alle in $t$ eingehenden Kanten füllt, dann gibt es
|
|
eine Lösung für das Problem.
|
|
|
|
Das Modell ist korrekt, da
|
|
\begin{itemize}
|
|
\item Die Beiträge, die eine Stadt $v_i$ leisten kann von den
|
|
eingehenden Kantenkapazitäten limitiert werden.
|
|
\item Die Straßen $e_j$ genau zwei eingehende Kanten haben.
|
|
\item Die Reparaturkosten einer Straße $e_j$ von den ausgehenden Kantenkapazitäten
|
|
limitiert werden.
|
|
\end{itemize}
|
|
|
|
\points{4}
|
|
\begin{figure}[h]
|
|
\centering
|
|
\includegraphics[page=2, width=0.8\textwidth]{figures.pdf}
|
|
\caption{Das Problem als Flussproblem. Die blauen Knoten sind Städte und die orangenen Straßen.}
|
|
\label{fig:flow}
|
|
\end{figure}
|
|
|
|
|
|
\end{tasks}
|