12.04.2015 Aufrufe

Aufgabe 1: Dijkstras Algorithmus

Aufgabe 1: Dijkstras Algorithmus

Aufgabe 1: Dijkstras Algorithmus

MEHR ANZEIGEN
WENIGER ANZEIGEN

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)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!