3. Übungsblatt

Werbung
Lehrstuhl für Informatik I
Effiziente Algorithmen und
wissensbasierte Systeme
Universität Würzburg
Würzburg, 28. April 2015
Prof. Dr. Alexander Wolff
Dipl.-Inform. Philipp Kindermann
3. Übungsblatt zur Vorlesung
Algorithmische Graphentheorie (Sommersemester 2015)
Aufgabe 1 – Lineare Programmierung und Flüsse
Gegeben sei ein ungerichteter Graph G = (V, E), der ein Verkehrsnetzwerk darstellt, wobei
jeder Knoten v ∈ V eine Stadt repräsentiert und jede Kante e = {u, v} eine Straße zwischen den
Städten u und v.
Die Straßen müssen repariert werden. Dabei sind für jede Straße e ∈ E Reparaturkosten nötig,
die durch eine Funktion r : E → R≥0 gegeben sind. Zusätzlich hat jede Stadt v ∈ V nur ein
begrenztes Budget, das durch eine Funktion B : V → R≥0 gegeben ist.
a) Für jede Straße e = {u, v} ∈ E dürfen sich die beiden Städte u und v die Kosten r(e) in
beliebigem Verhältnis teilen, wobei natürlich keine negativen Zahlungen möglich sind.
Wir wollen entscheiden, ob es eine zulässige Verteilung der Zahlungen gibt, so dass alle
Renovierungen bezahlt werden, aber keine Stadt ihr Budget überschreitet.
Lösen Sie dieses Problem mit Hilfe von linearer Programmierung. Argumentieren Sie, dass
Ihre Lösung korrekt ist.
4 Punkte
b) Wir wollen erneut die Renovierungskosten verteilen, lassen jetzt aber keine Aufteilung
von Einzelkosten auf die Städte mehr zu; das heißt, für jede Straße e = {u, v} ∈ E muss
jetzt entweder die Stadt u oder die Stadt v den Gesamtbetrag r(e) zahlen. Wir wollen
wieder entscheiden, ob es eine zulässige Verteilung unter dieser Zusatzbedingung gibt.
Lösen Sie dieses Problem mit Hilfe von ganzzahliger linearer Programmierung. Argumentieren Sie, dass Ihre Lösung korrekt ist.
4 Punkte
c) Lösen Sie das Problem aus Teilaufgabe a) erneut, verwenden Sie jetzt aber keine lineare
Programmierung, sondern eine Modellierung als Flussnetzwerk. Argumentieren Sie wieder, dass Ihre Lösung korrekt ist.
4 Punkte
Aufgabe 2 – b-Flüsse
Es sei G = (V, E) ein gerichteter Graph, für den Kantenkapazitäten durch eine Funktion
c : E → R≥0 gegeben sind. Zusätzlich sei b : V → R eine Funktion, die jedem Knoten v ∈ V
einen Bedarfswert b(v) ∈ R zuordnet.
Eine Funktion f : E → R≥0 mit 0 ≤ f(e) ≤ c(E) für jede Kante e ∈ E ist ein zulässiger b-Fluss falls
Nettozuflussf (v) = b(v) für jeden Knoten v ∈ V.
Für Knoten mit b(v) = 0 entspricht das der Flusserhaltung. Es gibt allerdings keine ausgezeichneten Knoten s und t mehr, dafür aber Knoten mit b(v) 6= 0.
Lösen Sie das Problem zu entscheiden, ob ob es einen zulässigen b-Fluss gibt, indem Sie es als
s-t-Fluss-Problem modellieren. Zeigen Sie, dass Ihre Lösung korrekt ist. Was ist die Laufzeit des
resultierenden Algorithmus zur Berechnung eines zulässigen b-Flusses?
Hinweis: Fügen Sie Knoten und Kanten zum Graph hinzu und wählen Sie dabei geeignete Kapazitäten der Kanten.
8 Punkte
Aufgabe 3 – Modellierung als Flussproblem
Wir betrachten folgendes Problem: Es gebe k Arten von Geschenken sowie ` Geschenkkörbe.
Für 1 ≤ i ≤ k gebe es xi Exemplare von Geschenk i, für 1 ≤ j ≤ ` kann der Geschenkkorb j
höchstens yj Geschenke aufnehmen. Gesucht ist eine Aufteilung von Geschenken auf die Geschenkkörbe, so dass kein Korb übervoll ist und möglichst wenig Geschenke übrigbleiben. Dabei darf jeder Geschenkkorb nicht mehr als ein Exemplar je Geschenktyp aufnehmen.
Modellieren Sie dieses Problem als Maximalflussproblem. Zeigen Sie, dass Ihr Modell korrekt
ist.
5 Sonderpunkte
Abgabe der Lösungen bis Dienstag, 05. Mai 2015, 10:15 Uhr zu Beginn der Vorlesung oder in
WueCampus. Die Besprechung erfolgt in der Übung am Freitag, 08. Mai 2015.
Herunterladen