Aufgabe 1: Dijkstras Algorithmus
Aufgabe 1: Dijkstras Algorithmus
Aufgabe 1: Dijkstras Algorithmus
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Christoph Garbe: Algorithmen und Datenstrukturen, SS 09 Übungsblatt 11<br />
Abgabe: bis 25.06.2009, 16:00 Uhr<br />
<strong>Aufgabe</strong> 1: Bipartite Graph-Matchings<br />
20 Punkte<br />
a) Führen Sie den Ford-Fulkerson-<strong>Algorithmus</strong> (FFA) auf dem abgebildeten Graphen aus und zeigen Sie<br />
jeden Zwischenschritt. Wählen Sie in jeder Iteration jenen flussvergrößernden Pfad<br />
(Erweiterungspfad) aus, der lexikographisch der kleinste ist.<br />
(10 Punkte)<br />
1<br />
6<br />
Q<br />
2<br />
3<br />
7<br />
8<br />
S<br />
3<br />
4<br />
9<br />
5<br />
b) Sei G=(V,E) ein bipartiter Graph mit einer Knotenpartitionierung V = L ⋃ R. Sei weiterhin G‘ das<br />
korrespondierende Flussnetzwerk. Geben Sie eine gute obere Schranke für die Länge eines<br />
beliebigen Erweiterungspfades in G‘ an, der während der Ausführung des FFA gefunden wird.<br />
(10 Punkte)<br />
<strong>Aufgabe</strong> 2: Flussgraphen mit mehreren Quellen/Senken<br />
20 Punkte<br />
a) Erweitern Sie die Flusseigenschaften- und Definitionen auf das Problem mehrerer Quellen und<br />
Senken. (Kapazitäts-Bedingung, Versatzsymmetrie, Flusserhaltung, Wert)<br />
(8 Punkte)<br />
b) Zeigen Sie, dass für jeden Fluss in einem Netzwerk mit mehreren Quellen und Senken ein Fluss mit<br />
identischem Wert im Netzwerk mit einer Quelle und einer Senke gefunden werden kann, indem<br />
man eine „Superquelle“ und eine „Supersenke“ einfügt. Zeigen Sie auch, dass der umgekehrte Fall<br />
gilt.<br />
(12 Punkte)
Christoph Garbe: Algorithmen und Datenstrukturen, SS 09 Übungsblatt 11<br />
Abgabe: bis 25.06.2009, 16:00 Uhr<br />
<strong>Aufgabe</strong> 3: Das Flucht-Problem<br />
20 Punkte<br />
Ein n*n-Gitter ist ein ungerichteter Graph bestehend aus n Zeilen und n Spalten:<br />
Der Knoten in Zeile i und Spalte j heiße (i,j). Alle Knoten haben vier Nachbarn, außer jener am Rand.<br />
Gegeben seien m ≤ n 2 Anfangspunkte (x 1 ,y 1 )…(x m ,y m ) (hier schwarz). In dem Flucht-Problem ist zu<br />
bestimmen, ob es m nicht-überlappende Pfade zum Rand gibt (siehe Bild a).<br />
a) Angenommen nicht nur Kanten haben Kapazitäten, sondern auch Knoten. D.h. in einen Knoten darf<br />
nicht mehr hineinfließen, als seine Kapazität zulässt. Zeigen Sie, dass das daraus resultierende<br />
Maximum-Flow-Problem in ein normales Maximum-Flow-Problem (mit vergleichbarer Größe)<br />
umgewandelt werden kann, das lediglich Kanten mit Kapazitäten enthält.<br />
(10 Punkte)<br />
b) Geben Sie einen effizienten <strong>Algorithmus</strong> an (mindestens O(n 6 )), der ein Flucht-Problem löst, d.h. für<br />
ein gegebenes Gitter mit Startpunkten „ja“ oder „nein“ ausgibt. Tipp: Verwenden Sie das Ergebnis<br />
aus Teilaufgabe (a)!<br />
(10 Punkte)<br />
<strong>Aufgabe</strong> 4: Max-Fluss-Aktualisierung<br />
Sei G=(V,E) ein Flussnetzwerk mit Quelle q, Senke s und Integer-Kapazitäten.<br />
20 Punkte<br />
a) Angenommen eine Kantenkapazität wird um 1 erhöht. Geben Sie einen <strong>Algorithmus</strong> an, der mit Zeit-<br />
Komplexität O(V+E) den maximalen Fluss aktualisiert!<br />
(10 Punkte)<br />
b) Angenommen eine Kantenkapazität wird um 1 verringert. Geben Sie einen <strong>Algorithmus</strong> an, der mit<br />
Zeit-Komplexität O(V+E) den maximalen Fluss aktualisiert!<br />
(10 Punkte)