Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 8, 4.11.08
Am Dienstag, 11.11., fällt die Vorlesung aus. Organisatorisches Am Dienstag, 11.11., fällt die Vorlesung aus. Wirtschaftinformatik-Studierende melden sich in der WINF an, und senden Ralf Petring per email den gewünschten Prüfungszeitraum.
Flüsse in Netzwerken
Definition von (Transport)netzwerken
Definition von Flüssen; Beispiel Ein Beispiel
Das Flussproblem Finde in einem Transportnetzwerk eine maximalen Fluss, d.h. einen Fluss mit maximalem Wert. Maximal? Nein, denn Flusswert 23 ist möglich! Flusswert 23 ist bestmöglich!
erhöhe f(e) für alle e 2 W um min{c(e)-f(e), e2W} Erste Eigenschaften von Flüssen, ein naiver, nicht-optimaler Algorithmus. Naiver Algorithmus: (Eingabe: Netzwerk N) Starte mit Fluss f ´ 0. Solange ein gerichteter s-t-Weg W existiert mit f(e) < c(e) für alle e auf W: erhöhe f(e) für alle e 2 W um min{c(e)-f(e), e2W} Gebe f aus Bem: Nach jedem Schleifendurchlauf ist f ein Fluss in N. Ist f immer optimal? Nein! Beispiel: Starte mit Weg s - a - d - t
Vergrößernde Wege Restkapazität ist 4
Vergrößernde Wege Restkapazität ist 4
Der Basisalgorithmus von Ford/Fulkerson Satz: Der Algorithmus von Ford/Fulkerson berechnet einen maximalen Fluss.
Analyse des Basisalgorithmus von Ford/Fulkerson Ein Schnitt in N ist ein disjunkte Zerlegung von V in Mengen S und T mit s 2 S, t2 T. Die Kapazität des Schnittes ist Die Kapazität eines minimalem Schnittes ist Der Flusswert eines Schnittes ist Mit fmax bezeichnem wir den Wert eines maximalen Flusses.
Flüsse und Schnitte, Beispiele
Flüsse und Schnitte Lemma: In jedem Netzwerk N gilt: Der Wert eines jeden Flusses ist kleiner oder gleich der Kapazität eines jeden Schnittes. Insbesondere: fmax · cmin . Beweis:
Flüsse und Schnitte Lemma: In jedem Netzwerk N gilt: Der Wert eines jeden Flusses ist kleiner oder gleich der Kapazität eines jeden Schnittes. Insbesondere: fmax · cmin . Beweis: Also: val(f) =f(S,T) · c(S,T).
Schnitte und der Fluss von Ford/Fulkerson Betrachte den von F.F. berechneten Fluss f in N. Sei S:= {v2 V, es gibt vergrößernden Weg für f von s nach v}. Beachte: t S, da es keinen vergrößernden Weg nach t gibt. Sei T:= V\S. S = {s, u, v, y}, T = {x, t}
Schnitte und der Fluss von Ford/Fulkerson Betrachte den von F.F. berechneten Fluss f in N. Sei S:= {v2 V, es gibt vergrößernden Weg für f von s nach v}. Beachte: t S, da es keinen vergrößernden Weg nach t gibt. Sei T:= V\S. Es gilt: Somit folgt: Lemma: Sei f der von F.F. berechnete Fluss. Dann gibt es einen Schnitt (S,T) in N mit val(f) = C(S,T).
Korrektheit des Algorithmus von F.F., und das Max Flow-Min Cut Theorem Lemma: In jedem Netzwerk N gilt: Der Wert eines jeden Flusses ist kleiner oder gleich der Kapazität eines jeden Schnittes. Insbesondere: fmax · cmin . Lemma: Sei f der von F.F. berechnete Fluss. Dann gibt es einen Schnitt (S,T) in N mit val(f) = C(S,T). Satz: Der Algorithmus von Ford/Fulkerson berechnet einen maximalen Fluss. Satz: (Max Flow-Min Cut Theorem; Satz von Ford/Fulkerson) In jedem Netzwerk gilt fmax = cmin. Der Wert eines maximalen Flusses ist gleich der Kapazität eines minimalen Schnittes.
Thank you for your attention! Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department University of Paderborn Fürstenallee 11 33102 Paderborn, Germany Tel.: +49 (0) 52 51/60 64 80 Fax: +49 (0) 52 51/62 64 82 E-Mail: fmadh@upb.de http://www.upb.de/cs/ag-madh