% 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}