3.4 Maximale Flüsse und der Algorithmus von Ford Fulkerson



Ähnliche Dokumente
6. Flüsse und Zuordnungen

8 Das Flussproblem für Netzwerke

Flüsse, Schnitte, bipartite Graphen

Netzwerkfluß. Gegeben ist ein System von Wasserrohren: Die Kapazität jedes Rohres ist 3, 5 oder 8 l/s.

Flüsse in Netzwerken. Seminar über Algorithmen SoSe Mike Rohland & Julia Schenk

6 Flüsse und Matchings

6. Flüsse und Zuordnungen

3.6 Branch-and-Bound-Verfahren

Vorlesung Diskrete Strukturen Transportnetze

Operations Research. Flüsse in Netzwerken. Flüsse in Netzwerken. Unimodularität. Rainer Schrader. 2. Juli Gliederung.

Wiederholung zu Flüssen

Algorithmentheorie Maximale Flüsse

Laufzeit. Finden eines Matchings maximaler Kardinalität dauert nur O( E min{ V 1, V 2 }) mit der Ford Fulkerson Methode.

6. Übung zur Linearen Optimierung SS08

Flüsse und Zuordnungen. Kapitel 6. Peter Becker (H-BRS) Graphentheorie Wintersemester 2018/ / 296

Inhalt. 1. Flußprobleme. 2. Matching. 3. Lineares Programmieren. 4. Ganzzahliges Programmieren. 5. NP-Vollständigkeit. 6. Approximationsalgorithmen

KAPITEL 4 FLÜSSE IN NETZWERKEN

4.7 Der Algorithmus von Dinic für maximalen Fluss

Algorithmische Graphentheorie

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Flüsse in Netzwerken

Maximale s t-flüsse in Planaren Graphen

Vorlesung Datenstrukturen

VU Algorithmen auf Graphen Übungsblatt 2 - Aufgabe 2 Transformation einer MaxFlow- in eine MinCost Circulation Instanz

EDM, Algorithmen und Graphenspeicherung

Flüsse, Schnitte, bipartite Graphen

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck. 10 Matching-Probleme

KAPITEL 6 GANZZAHLIGE OPTIMIERUNG UND VOLLSTÄNDIG UNIMODULARE MATRIZEN

Datenstrukturen & Algorithmen

ij. , d (k 1) + d (k 1)

Graphentheorie. Maximale Flüsse. Maximale Flüsse. Maximale Flüsse. Rainer Schrader. 31. Oktober Gliederung. sei G = (V, A) ein gerichteter Graph

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 4: Flüsse

Algorithmen und Datenstrukturen 2-2. Seminar -

8 Diskrete Optimierung

Berechnung von Abständen

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Flüsse in Netzwerken

Algorithmen und Datenstrukturen Kapitel 10

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

4. Kreis- und Wegeprobleme Abstände in Graphen

Bipartite Graphen. Beispiele

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren.

5. Bäume und Minimalgerüste

Der Preow-push-Algorithmus

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 6: Matchings und TSP-Problem

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

ADS: Algorithmen und Datenstrukturen 2

Klausur zum Modul Einführung in die Diskrete Mathematik

Fortgeschrittene Netzwerk- und Graph-Algorithmen

2 Rationale und reelle Zahlen

Kapitel 3. Kombinatorische Optimierung. 3.1 Begriffe aus der Graphentheorie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Mathematische Modelle in den Naturwissenschaften Proseminar

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Datenstrukturen und Algorithmen (SS 2013)

Teil 2: Graphenalgorithmen

Das Heiratsproblem. Definition Matching

Effiziente Algorithmen und Datenstrukturen II

5. Musterlösung. Problem 1: Vitale Kanten * ω(f) > ω(f ). (a) Untersuchen Sie, ob es in jedem Netzwerk vitale Kanten gibt.

Grundlagen: Algorithmen und Datenstrukturen

Kombinatorische Optimierung

2 Eulersche Polyederformel und reguläre Polyeder

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

Algorithmen II Vorlesung am

Effiziente Algorithmen I

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin

Kombinatorische Optimierung

Vorlesung Kombinatorische Optimierung (Wintersemester 2016/17)

Algorithmen II Vorlesung am

λ(a n ) n 1 = (λa n ) n 1. Abbildung 1: Graph einer Folge. b n = arctan(n), f n = cos(nπ), g n = n 2, h n = ( 1) n n.

Algorithmen und Datenstrukturen 2

Effiziente Algorithmen

Vorlesung Lineare Optimierung (Sommersemester 2007)

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

74 Gewöhnliche Differentialgleichungen / Sommersemester 2008

Kürzeste-Wege-Algorithmen und Datenstrukturen

Kapitel 1: Flussalgorithmen

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Algorithmen und Datenstrukturen

Bipartites Matching. Gegeben: Ein bipartiter, ungerichteter Graph (V 1, V 2, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität.

15. Elementare Graphalgorithmen

Systems of Distinct Representatives

Maximale s t-flüsse in Planaren Graphen

ADS: Algorithmen und Datenstrukturen 2

Lineare Algebra II 5. Übungsblatt

Folien aus der Vorlesung Optimierung I SS2013

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Teil 2: Graphenalgorithmen

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Effiziente Algorithmen (SS2014)

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Mustererkennung: Graphentheorie

Statistik und Graphentheorie

Gemischt-ganzzahlige und Kombinatorische Optimierung

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

2.6.1 Definition und Darstellung Ausspähen von Graphen Minimal spannende Bäume Kürzeste Pfade 2.6.

Transkript:

3.4 Maximale Flüsse und der Algorithmus von Ford Fulkerson Definition 3.4.1 Die Aufgabe, zu jedem Netzwerk N = (s, t, V, E, c o ) mit n = V Knoten und m = E Kanten den Fluß f IR m mit maximalem Wert zu finden, heißt Problem des größten Flusses (max flow problem, MFP). Beispiel 3.4.2 Netzwerk mit n = 4 Knoten, m = 5 Kanten und c o (e i ) = 1, i = 1,...,5. Ein maximaler Fluß hat den Wert 2. s e 1 e 2 e 5 e 3 e 4 t Wir haben bei der Behandlung von Beispiel 3.2.2 das Problem des kürzesten Weges mit Hilfe der Inzidenzmatrix in ein Fluß-Problem umgewandelt und dieses als LP-Problem gelöst. Analog ergibt sich die Formulierung des Maximalflußproblems als LP: Gegeben sei das Netzwerk N = (s, t, V, E, c o ). A sei die Inzidenzmatrix des Graphen. Dann ist ein s t Fluß f mit Wert v = f gegeben durch die Restriktionen 1, i = s Af + dv = 0, 0 f c o, mit d IR n, d i = +1, i = t. 0, sonst v ist zu maximieren. Entfernt man aus einem Fluß-Netzwerk genügend viele Kanten, dann liegen Quelle und Senke in verschiedenen Zusammenhangskomponenten, ein Fluß von der Quelle zur Senke ist also nicht mehr möglich. Existierte vorher ein Fluß, dann mußte sein Wert vollständig durch die entfernten Kanten geflossen sein, er kann also nicht größer als die Gesamt Kapazität der entfernten Kanten sein. Definition 3.4.3 (a) Sei V eine beliebige nichtleere Menge. (S, T) heißt Partition von V, wenn S, T V, S T = V und S T =. (b) Sei (s, t, V, E, c 0 ) ein Netzwerk. Eine Partition (S, T) von V heißt (s t )Schnitt des Netzwerks, wenn s S und t T. (c) C(S, T) = c o (v i, v j ) heißt Kapazität des Schnittes (S, T). (v i,v j ) E, v i S, v j T 20

Lemma 3.4.4 Sei N = (s, t, V, E, c o ) ein Netzwerk, (S, T) ein Schnitt und f ein Fluß. Dann gilt f = f(v i, v j ) f(v i, v j ). Insbesondere ist f C(S, T). (v i,v j ) E, v i S, v j T (v i,v j ) E, v i T, v j S Wir wollen nun Kriterien für einen maximalen Fluß entwickeln. Definition 3.4.5 Gegeben sei ein Netzwerk N = (s, t, V, E, c o ) und ein (zulässiger) s t Fluß f. Weiter sei ω = (s = v 0, v 1,..., v n = t) ein ungerichteter s t Weg. (a) Eine Kante (v i 1, v i ) von ω mit (v i 1, v i ) E heißt Vorwärtskante von ω, eine Kante (v i 1, v i ) von ω mit (v i, v i 1 ) E heißt Rückwärtskante von ω. (b) Gilt für jede Vorwärtskante e von ω f(e) < c o (e) und für jede Rückwärtskante f(e) > 0, dann heißt ω zunehmender Weg (bezüglich f). Beispiel 3.4.6 Bei jeder Kante e wird durch x y die (obere) Kapazität c o (e) = x und der Fluß f(e) = y bezeichnet. a d 1 0 2 1 1 0 2 1 2 0 2 0 s 2 0 b 1 0 e t 2 1 2 0 1 0 1 0 c 1 0 2 0 1 0 f Ein zunehmender Weg ist (s, c, e, a, d, t). Satz 3.4.7 Ein Fluß f auf einem Netzwerk N = (s, t, V, E, b) ist genau dann maximal, wenn es keinen bzgl. f zunehmenden Weg gibt. Beispiel 3.4.6 (Fortsetzung) Für das angegebene Beispiel ist d = 1. Korollar 3.4.8 Ein Fluß f auf einem Netzwerk N ist genau dann maximal, wenn f = C(S, T) gilt, wobei S die Menge aller von s aus auf einem zunehmenden Weg erreichbaren Punkte sei. Bei Beispiel 3.2.2 waren die Kapazitäten ganzzahlig, nämlich 1, und es wurde ein optimaler Fluß gesucht. Dieser muß nicht unbedingt ganzzahlig sein. Es gilt aber 21

Satz 3.4.9 Ist N ein Netzwerk mit nur ganzzahligen Kapazitäten, dann gibt es einen ganzzahligen maximalen Fluß auf N. Für den Zusammenhang zwischen den Schnitten und den Flüssen ergibt sich Satz 3.4.10 (Maximalfluß Minimalschnitt) Der maximale Wert der Flüsse auf einem Netzwerk N ist gleich der minimalen Kapazität der Schnitte in N. Beispiel 3.4.6 (Forts.) a 1 1 d 2 2. 1 0 2 1 2 1 2 2. s 2 2 b 1 1 e 2 2 t 2 1 1 1 1 1 1 0 2 1 c 1 1 f Ein minimaler Schnitt ist z.b. (S, T) mit S = {s, b, c}. Die Kapazität des Schnitts und der Wert des angegebenen Maximalflusses ist 5. Anmerkungen: (1) In der Praxis spielen irrationale Kapazitäten in Netzwerken keine Rolle, da im Computer nur rationale Zahlen darstellbar sind. (2) Die Sätze 3.4.9 und 3.4.10 liefern einen Algorithmus, der einen Fluß mit maximalem Wert findet. Für ganzzahliges c o ist dieser Fluß (und natürlich sein Wert) sogar ganzzahlig. (3) Die Sätze machen keine Eindeutigkeitsaussage, d.h. es kann mehrere Flüsse mit maximalem Wert geben. Für ganzzahliges c o ist mindestens einer von ihnen ganzzahlig. Satz 3.4.7 legt folgenden Algorithmus nahe, bei dem für einen vorliegenden Fluß entweder gezeigt wird, daß er maximal ist, oder ein zunehmender Weg konstruiert wird, mit dessen Hilfe ein größerer Fluß gefunden werden kann. Dazu werden die Ecken sukzessive, nend mit s, mit einer dreistelligen Markierung versehen: Die erste Markierung m 1 (w) gibt die Vorgängerecke auf einem möglichen zunehmenden ungerichteten Weg an, die zweite Markierung m 2 (w) {+, }, ob die Kante (w, m 1 (w)) eine Vorwärts- oder Rückwärtskante ist, und die dritte Markierung d(w), um welchen Anteil der Fluß entlang dieser Kante verändert werden kann, um den Gesamtfluß zu verbessern. Weiter werden in einer LISTE die Ecken aufgeführt, die selbst schon markiert wurden, aber nicht schon zur Markierung weiterer Ecken benutzt wurden. 22

Es ergibt sich folgende Grobstruktur: Initialisierung mit f 0. Markiere s durch m 1 (s) = s, m 2 (s) =, d(s) =, LISTE= {s}. Lösche die Markierungen aller Ecken aus V \ {s}. Markiere alle möglichen Ecken, ausgehend von s. Lösche dabei jeweils die Ecke aus LI- STE, von der aus markiert wird, und erweitere LISTE um die Ecken, die neu markiert wurden. Kann keine weitere Ecke mehr markiert werden und ist t nicht markiert, dann gibt es keinen zunehmenden Weg von s nach t, d.h. der Fluß ist maximal, und der Algorithmus bricht ab. Rekonstruiere den zunehmenden Weg. Erhöhe den Fluß entlang des zunehmenden Weges und fahre mit Schritt (2) fort. Algorithmus 3.4.11 (Ford Fulkerson) Eingabe: Ein Netzwerk N = (s,t,v,e,c o ) Ausgabe: Ein maximaler Fluß f in N f := 0; (* Fluß initialisieren *) m 1 (s) := s; m 2 (s) := ; d(s) := ; LISTE= {s}; (* Quelle initialisieren *) for v V \ {s} do (* Suche für zunehmenden Weg initialisieren *) m 1 (v) := 0; m 2 (v) := 0; d(v) := ; repeat (* Markierung der Ecken *) for v LISTE do (* Ecke markiert, aber noch nicht zur Markierung weiterer Ecken verwendet *) LISTE = LISTE \{v}; for w V mit m 1 (w) = 0 do (* Suche nach neu zu markierenden Ecken *) if (v,w) E und f(v,w) < c 0 (v,w) then (* Vorwärtskante *) d(w) := min{c o (v,w) f(v,w),d(v)}; m 1 (w) := v; m 2 (w) := +; LISTE = LISTE {w}; else if (w,v) E und f(v,w) > 0 then (* Rückwärtskante *) 23

d(w) := min{f(w,v),d(v)}; m 1 (w) := v; m 2 (w) := ; LISTE = LISTE {w}; if m 1 (t) 0 then (* Rekonstruktion des zunehmenden Weges und Vergrößerung des Flusses *) w := t; d := d(t); while w s do v := m 1 (w); if m 2 (w) = + then f(v,w) := f(v,w) + d else f(w,v) := f(w,v) d; w := v; for v V \ {s} do (* Suche für zunehmenden Weg initialisieren *) m 1 (v) := 0; m 2 (v) := 0; d(v) := ; LISTE = {s}; until LISTE = ; Beispiel 3.4.12 Für das Netzwerk a 6 0 c 5 0 s 6 0 3 0 t 3 0 5 0 6 0 b 1 0 d ergibt sich als maximaler Fluß a 6 3 c 5 5 s 3 3 6 6 t 3 2 5 4 6 3 b 1 1 d Aus dem Beweis für Satz 3.4.7 folgt Satz 3.4.13 Für ein Netzwerk mit rationalen Kapazitäten bricht der Ford Fulkerson Algorithmus mit einem zugehörigen optimalen Fluß ab. 24

Der Algorithmus von Ford Fulkerson hat in seiner ursprünglichen Version Nachteile: Im Falle irrationaler Kapazitäten kann er bei ungeschickter Auswahl der Knoten aus LISTE versagen. Es gibt ein Beispiel (ohne Beweis), daß das Verfahren nicht nur nicht abbricht, sondern gegen einen Wert konvergiert, der nur 1/4 des maximal möglichen Flußwertes beträgt. Selbst im Fall ganzzahliger Kapazitäten ist der Algorithmus nicht polynomial, da die Anzahl der vorzunehmenden Änderungen des Flusses nicht nur von V und E, sondern auch von c o abhängen kann: Beispiel 3.4.14 Wählt man in dem Netzwerk a n s n d n n b 1 e n c n t n n f abwechselnd als zunehmende Wege (s, a, b, e, f, t) und (s, d, e, b, c, t), (was bei geeigneter Anordnung der Ecken bei der Auswahl aus LISTE möglich ist,) so wird der Flußwert in jedem Schritt nur um 1 erhöht und man benötigt insgesamt 2n Iterationen. Andererseits erhält man bei geschickter Wahl der Wege, z.b. mit (s, a, b, c, t) und (s, d, e, f, t), den maximalen Fluß in nur zwei Durchläufen. Betrachtet man aber LISTE nicht als Menge, sondern als Warteschlange, d.h. es wird die Ecke v ausgewählt, die als erste aufgeführt ist, und die neuen Ecken werden am Schluß angefügt, dann wird immer ein Vergrößerungsweg minimaler Länge ausgewählt und der Algorithmus ist auch für irrationale Kapazitäten polynomial: Satz 3.4.15 (Edmonds, Karp) Betrachtet man LISTE im Algorithmus von Ford Fulkerson als Warteschlange, dann hat der Algorithmus 3.4.11 Komplexität O( V E 2 ). Bemerkung: Für Netzwerke mit n Ecken und m Kanten, die dicht sind, d.h. für die m = O(n 2 ) gilt, hat der Algorithmus Komplexität O(n 5 ). Ein von Dinic eingeführter und weiterentwickelter Algorithmus betrachtet geeignete Hilfsnetzwerke und vergrößert die Flüsse nicht nur auf einzelnen Wegen, sondern auf dem gesamten Netzwerk, und hat Komplexität O(n 3 ), ist also für dichte Netzwerke effizienter. 25

3.5 Kostenminimale Flüsse Wir betrachten nun allgemeinere Netzwerke N = (s, t, V, E, c u, c o ) mit zusätzlicher unterer Kapazitätsfunktion c u c o und einer weiteren Kostenfunktion γ : E IR und suchen optimale Flüsse. Definition 3.5.1 Die Aufgabe, zu jedem Netzwerk N = (s, t, V, E, c u, c o ) mit c u c o und einer Kostenfunktion γ : E IR einen Fluß f mit Wert w und minimalen Kosten γ(f) := e E γ(e)f(e) (d.h. mit γ(f) γ(f ) für alle anderen Flüsse mit Wert w,) zu finden, heißt Problem der Bestimmung eines kostenminimalen Flusses (min cost flow problem). Als LP-Problem formuliert, ergibt sich mit der Inzidenzmatrix A und der üblichen Funktion d IR n 1, i = s min γ f, Af + wd = 0, c u f c o, mit d i = +1, i = t. 0, sonst Quelle und Senke hatten bei einem Fluß eine Sonderrolle, da für diese Ecken die Durchlaufbedingung i.a. nicht erfüllt war. Wir verallgemeinern: Definition 3.5.2 Sei G = (V, E) ein gerichteter Graph mit Kapazitätsfunktionen c u und c o, c u c o. Eine Abbildung f : E IR heißt Zirkulation, wenn sie der Erhaltungsbedingung f(v, u) = f(u, v) für alle v V (v,u) E genügt. Die Zirkulation heißt zulässig, wenn gilt c u (e) f(e) c o (e) für alle e E. Ist durch γ : E IR eine Kostenfunktion gegeben, dann heißt die Zirkulation optimal oder kostenminimal, wenn γ(f) γ(f ) für alle zulässigen Zirkulationen f gilt. Beispiele 3.5.3 (1) Wir betrachten das Problem des maximalen Flusses und ein Netzwerk N = (s, t, V, E, c o ) mit einem Fluß vom Wert w(f). Wir erweitern G durch die gerichtete Kante (t, s) ( Rückkehrkante ) zum gerichteten Graphen G = (V, E ) und setzen c o und f durch c u := 0 in G, c o (t, s) :=, f(t, s) := w(f) auf G fort. Mit der Kostenfunktion γ : E IR mit γ(t, s) := 1, γ(e) := 0 sonst ist f genau dann eine kostenminimale zulässige Zirkulation auf G, wenn der ursprüngliche Fluß auf G maximal ist. 26

(2) Für Netzwerke mit unterer Kapazitätsfunktion setzt wir c u durch c u (t, s) := 0 auf G fort. (3) Beim Problem der Bestimmung eines kostenminimalen Flusses mit Wert w setzt man c u (t, s) := c o (t, s) := w und γ(t, s) := 0. Eine zulässige Zirkulation entspricht dann einem Fluß mit Wert w und eine optimale Zirkulation ist Fortsetzung eines kostenminimalen Flusses. (4) Es muß nicht unbedingt eine zulässige Zirkulation existieren, wie folgendes Beispiel zeigt. Bei jeder Kante sind durch c u c o die Kapazitäten angegeben. a b 2 3 0 1 c 1 2 Für ein Existenzkriterium für zulässige Zirkulationen erweitern wir den zugrundeliegenden Graphen zu einem Netzwerk: Satz 3.5.4 Sei G = (V, E) ein gerichteter Graph mit nichtnegativen Kapazitätsfunktionen c u und c o, c u c o. Sei N := (s, t, V, E, c ) folgendes Netzwerk: V := V {s, t}, E := E {(s, v); v V } {(v, t); v V }, c (s, v) := c (e) := c o (e) c u (e) für alle e E, c u (u, v) und c (v, t) := c u (v, u) für alle v V. (v,u) E Weiter sei w := c u (e). Dann gilt: Es gibt auf G eine zulässige Zirkulation genau dann, wenn e E ein maximaler Fluß auf N den Wert w hat. Wir verallgemeinern die Begriffe Schnitt und Kapazität eines Schnittes auf beliebige gerichtete Graphen: Definition 3.5.5 Sei G = (V, E) ein gerichteter Graph mit nichtnegativen Kapazitäten c u und c o, c u c o. Eine Partition (S, T) von V heißt Schnitt und c(s, T) := c o (u, v) c u (u, v) Kapazität des Schnittes. u S,v T u T,v S Analog zu Satz 3.4.10 ergibt sich 27

Satz 3.5.6 Sei G = (V, E) ein gerichteter Graph mit nichtnegativen Kapazitäten c u und c o, c u c o. Es gibt eine zulässige Zirkulation auf G genau dann, wenn jeder Schnitt (S, T) von G nichtnegative Kapazität hat, d.h. wenn stets u S,v T c o (u, v) u T,v S c u (u, v). Zur Konstruktion einer kostenminimalen zulässigen Zirkulation benötigen wir folgende Hilfskonstruktion. Definition 3.5.7 Sei G = (V, E) ein gewichteter Graph, c u und c o mit c u c o Kapazitätsfunktionen, γ eine Kostenfunktion und f eine zulässige Zirkulation f in G. Eine Kante (u, v) E mit f(u, v) < c o (u, v) heißt Vorwärtskante, eine Kante (u, v) E mit f(u, v) > c u (u, v) heißt Rückwärtskante. Dann heißt G (f) = (V, E ) mit E := {(u, v); (u, v)vorwärtskante} {(v, u); (u, v) Rückwärtskante} heißt Vergrößerungsgraph. Kostenfunktion und Kapazitätsfunktionen werden definiert durch { { γ γ(u, v) (u, v) := γ(v, u), c u 0, c o (u, v) f(u, v) (u, v) Vorwärtskante c o (u, v) := f(v, u) c u (v, u) (u, v) Rückwärtskante. Damit ergibt sich Satz 3.5.8 Eine zulässige Zirkulation f in einem Graphen G ist genau dann kostenoptimal, wenn in dem zugehörigen Vergrößerungsgraphen G (f) keine Kreise mit negativen Kosten existieren. Kreise negativer Kosten lassen sich mit dem Floyd Warshall Algorithmus bestimmen, so daß sich folgender Algorithmus für kostenminimale Flüsse ergibt: Algorithmus 3.5.9 Finde einen Fluß f mit Wert w mit dem Maxflußalgorithmus while Es gibt einen Kreis C negativer Kosten in (V,E ) do Vergrößere f längs C end. 28

Beispiel 3.5.10 Gesucht ist eine kostenminimale zulässige Zirkulation in folgendem Netzwerk, in dem für jede Kante e die Kosten γ(e), die obere Kapazität c 0 (e) und die Zirkulation f(e) durch γ(e), c o (e), f(e) angegeben sind (mit c u = 0.) a 4,2 5,1 s 2,1 3,1 t 1,2 2,1 b Eine zulässige Zirkulation f ist gegeben durch f(s, a) = 2, f(a, b) = f(a, t) = f(b, t) = 1, f(b, a) = f(s, b) = 0. Das zugehörige Vergrößerungsnetzwerk N (mit γ (e), c o (e) an jeder Kante) ist a -4,2 s -5,1-2,1 3,1 t 1,2-2,1 b Dieses Netzwerk enthält den Kreis (s, b, a, s) mit Kosten 5 und einer zugehörigen Zirkulation f vom Wert 1. Addition dieser Zirkulation ergibt eine neue Zirkulation f(s, a) = f(a, t) = f(s, b) = f(b, t) = 1, f(a, b) = f(b, a) = 0. Das zugehörige Vergrößerungsnetzwerk N ist jetzt -4,1. a 4,1-5,1 s 2,1 3,1 t 1,1-2,1-1,1. b Dieses Netzwerk hat keine Kreise negativer Kosten, so daß die optimale Lösung gefunden ist. 29