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