agt_exercise/übung_2/aufgabe_2.tex
2026-05-02 00:33:07 +02:00

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}