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.