Institut für Computergraphik und Algorithmen Abteilung für Algorithmen und Datenstrukturen Sommersemester 2003 Übungen zur Lehrveranstaltung Algorithmen und Datenstrukturen 2 4. Übungsblatt Abgabe persönlich in der 4. Übung am 17.06.2003 Kreuzen Sie bitte in den Kästchen diejenigen Aufgaben an, bei denen Sie sich sicher sind, dass Sie die richtige Lösung präsentieren können. A1 A2 A3 A4 A5 A6 A7 A8 A9 A 10 kann präsentieren Aufgabe 1 Maximale Flüsse – Ford-Fulkerson Finden Sie zu dem nachfolgenden Flussnetzwerk N den maximalen Fluss f ∗ , indem Sie den Algorithmus von Ford-Fulkerson verwenden: 5 B D 3 3 4 s A G t 3 6 7 C E 2 4 F a) Visualisieren Sie dazu die einzelnen Schritte des Algorithmus, d.h. Flüsse und Restgraphen. b) Geben Sie anschließend einen Schnitt in N an, der von f ∗ saturiert wird. Aufgabe 2 Maximale Flüsse – Edmond-Karp Eine Variation des Algorithmus von Ford-Fulkerson verwendet augmentierende Pfade mit möglichst wenig Kanten, d.h. zuerst werden die augmentierenden Pfade gesucht und anschließend wird entlang desjenigen Pfades mit minimaler Kantenzahl augmentiert. Diese Variation ist als Edmond-Karp-Algorithmus bekannt. a) Geben Sie den Edmond-Karp-Algorithmus in Pseudocode an. b) Berechnen Sie den maximalen Fluss des Netzwerks N aus Aufgabe 1 und visualisieren Sie die einzelnen Schritte in analoger Art und Weise. Aufgabe 3 Maximale Flüsse Welche der folgenden Behauptungen sind wahr und welche sind falsch? Belegen Sie Ihre Antwort entweder durch ein Gegenbeispiel oder einen kurzen Beweis: a) Falls alle Kanten in einem Flussnetzwerk N verschiedene Kapazitäten haben, dann existiert ein eindeutiger maximaler Fluss. 1 b) Seien v und w zwei Knoten in einem Flussnetzwerk N . Dann gibt es immer einen maximalen Fluss f ∗ mit f ∗ (v, w) = 0 oder f ∗ (w, v) = 0 c) Wenn alle Kantenkapazitäten mit einer beliebigen positiven Zahl multipliziert werden, dann ändert sich der minimale Schnitt nicht. d) Wenn zu allen Kantenkapazitäten eine beliebige positive Zahl addiert wird, dann ändert sich der minimale Schnitt nicht. Aufgabe 4 Maximale Flüsse – Separationsproblem Beschreiben Sie ein Schnittebenenverfahren zur Lösung der LP-Relaxierung des TSP’s (Handlungsreisendenproblems, s. Skript), das zu Beginn nur die Gradungleichungen und die 0/1-Schranken enthält. Beschreiben Sie genau, wie Sie das Separationsproblem für die Menge der Subtour-Ungleichungen X xe ≥ 2 für alle Mengen W ⊆ V, W 6= ∅, W 6= V e∈δ(W ) mit Hilfe des Algorithmus von Ford-Fulkerson in polynomieller Zeit lösen. Aufgabe 5 Maximale Flüsse – Maximales bipartites Matching Gegeben sei ein bipartiter ungerichteter Graph G = (V, E) mit einer Knotenpartition V = L ∪ R und L, R ⊆ V disjunkt. Alle Kanten in E liegen zwischen Knoten aus L und R. Ein Matching M ⊆ E ist eine Teilmenge von Kanten aus E, so dass für alle Knoten v ∈ V höchstens eine Kante im Matching M inzident zu v ist, d.h. keine zwei Kanten besitzen einen gemeinsamen Knoten. Ein maximales Matching M ∗ ist ein Matching maximaler Kardinalität: es gilt also |M ∗ | ≥ |M | für jedes andere Matching M . Finden Sie eine Lösung des maximalen Matching-Problems für einen gegebenen bipartiten ungerichteten Graphen, indem Sie es auf das Problem der maximalen Flüsse in Netzwerken zurückführen und dieses Problem mit Hilfe der Methode von Ford-Fulkerson lösen. Aufgabe 6 Maximale Flüsse – Maximales bipartites Matching Eine Gruppe von Studenten möchte ihre Vorlesungsbesuche dadurch minimieren, dass sie am liebsten nur eine/n aus ihrer Gruppe zu jeder der n Vorlesungen schicken. Vorlesung i beginnt zum Zeitpunkt ai und endet zum Zeitpunkt bi . Die Zeit für das Pendeln von einer Vorlesung i zu einer anderen Vorlesung j dauert rij Zeit. Wieviele Studenten sind minimal nötig, um alle n Vorlesungen abzudecken? Formulieren Sie diese Problem als maximales bipartites Matching-Problem. Verwenden Sie dazu einen bipartiten ungerichteten Graphen G = (V, E) mit den beiden Knotenpartitionen L und R wobei |L| = |R| = n. Aufgabe 7 Scan-Line Prinzip Geben Sie an, in welcher Reihenfolge die Schnittpunkte in der folgenden Menge von Liniensegmenten in der Ebene berichtet werden, wenn Sie einen Scan-Line-Algorithmus verwenden und die Scan-Line von links nach rechts über die Ebene schwenken. A E C B F D Aufgabe 8 Scan-Line Prinzip Geben Sie ein Beispiel mit der kleinstmöglichen Anzahl von Liniensegmenten an, so dass der erste durch das Scan-Line-Verfahren gefundene Schnittpunkt nicht der am weitesten links liegende ist. 2 Aufgabe 9 Bereichssuche – 2D-Bäume Gegeben sei eine Menge von zehn Punkten im zweidimensionalen Raum: A = (7, 9), B = (15, 14), C = (10, 5), D = (3, 13), E = (13, 6), F = (17, 2), G = (3, 2), H = (4, 8), I = (15, 11), J = (8, 3) Bauen Sie, wie in der Vorlesung gezeigt, einen balancierten 2D-Baum auf und zeichnen Sie sowohl den Baum als auch die entsprechende Zerlegung der Ebene. Aufgabe 10 Bereichssuche – Quadranten-Bäume Eine zu 2D-Bäumen ähnliche Struktur sind Quadranten-Bäume. Seien n Punkte in der Ebene gegeben. Dann lassen sie sich in einen Quadranten-Baum der Ordnung 4 einfügen, indem man den ersten Punkt in der Wurzel speichert und durch diesen ersten Punkt ein Koordinatenkreuz legt. Es entsteht so eine Zerlegung der Ebene in vier Quadranten. Die Wurzel erhält vier Zeiger auf die Kinder, einen für jeden Quadranten. Der nächste Punkt wird als i-tes Kind von der Wurzel eingefügt, wenn er in den i-ten Quadranten bzgl. der Wurzel fällt. Analog wird mit den restlichen Punkten verfahren. Hat ein Elternknoten bereits ein i-tes Kind, dann wird das Einfügen bei diesem Kind fortgesetzt. a) Nehmen Sie die Punkte aus Aufgabe 9, bauen Sie einen Quadranten-Baum auf, zeichnen Sie den Baum und ebenfalls die Zerlegung der Ebene. b) Geben Sie einen Algorithmus in Pseudocode an, der nach Punkten in einem Quadranten-Baum sucht. 3