Kap1
-
Upload
nitesh -
Category
Technology
-
view
574 -
download
0
Transcript of Kap1
Berthold Vocking, RWTH Aachen, 23. April 2008
Kapitel 1: Flussalgorithmen
Hilfreiche Literatur:
• Ahuja, Magnanti, Orlin: Network Flows: Theory, Algo-
rithms, and Applications, Prentice Hall, 1993.
• Cormen, Leiserson, Rivest: Introduction to Algorithms,
First Edition. MIT Press, 1990.
• Cormen, Leiserson, Rivest, Stein: Introduction to Algo-
rithms, Second Edition. MIT Press, 2001.
• Ottmann, Widmayer: Algorithmen und Datenstrukturen.
BI-Wiss.-Verl. 1990.
1
Berthold Vocking, RWTH Aachen, 23. April 2008
Netzwerke und Flusse
EinFlussnetzwerk ist ein gerichteter GraphG = (V,E, q, s, c)
mit zwei ausgewahlten Knotenq, s ∈ V und einer Kapazitats-
funktion c : E → N. Die Quelleq hat Eingangsgrad 0 und die
Senkes hat Ausgangsgrad 0.
Wir definierenn = |V |, m = |E| und nehmen an, jeder
Knoten ist vonq erreichbar. Es giltn− 1 ≤ m ≤ n(n− 1).
Ein Fluss in einem NetzwerkG ist eine realwertige Funktion
f : E → R+0 mit den Eigenschaften
a) Flusserhaltung:∀u ∈ V \ {q, s} :
∑
v : (v,u)∈E
f(v, u)
︸ ︷︷ ︸
fin(u)
=∑
v : (u,v)∈E
f(u, v)
︸ ︷︷ ︸
fout(u)
.
b) Kapazitatsbeschrankung:∀e ∈ E : f(e) ≤ c(e).
DerWert des Flussesf ist definiert alsw(f) = fout(q). Wegen
der Flusserhaltung gilt somit auchw(f) = fin(s).
2
Berthold Vocking, RWTH Aachen, 23. April 2008
Problem 1 (Maximaler Fluss) Gegeben sei ein Flussnetz-
werkG. Berechne einen maximalen Fluss aufG, d.h. einen
Fluss mit großtmoglichem Wert.
Beachte, wir haben angenommen, dass die Kantenkapazitaten
ganzzahlig sind. Das ist keine besondere Einschrankung, denn
bei rationalen Kapazitaten konnen wir immer alle Zahlen mit
dem Hauptnenner multiplizieren und somit ein Flussproblem
mit rationalen Kapazitaten in ein Problem mit ganzzahligen
Kapazitaten transformieren.
Die Algorithmen zur Berechnung von maximalen Flussen,
die wir im Folgenden vorstellen werden, haben zahlreiche
praktische Anwendungen, die auf den ersten Blick nicht im-
mer unbedingt unmittelbar an Flussprobleme erinnern. In den
Ubungen prasentieren wir dazu einige, teilweiseuberraschen-
de Beispiele, wie z.B. das Meisterschaftsproblem.
3
Berthold Vocking, RWTH Aachen, 23. April 2008
Die Ford-Fulkerson-Methode
Der folgende algorithmische Rahmen zur Berechnung ei-
nes maximalen Flussesf auf einem FlussnetzwerkG =
(V,E, q, s, c) geht zuruck auf Ford und Fulkerson, 1957.
Ford-Fulkerson-Methode:1 ∀e ∈ E : f(e) = 0;
2 Solange es einen fv-WegW gibt
3 erhohe den Flussf entlang vonW maximal;
4 Ausgabe vonf .
”fv-Weg“ steht fur
”flussvergroßernder Weg“. Dabei handelt
es sich um Wege im sogenannten”Restnetzwerk“.
4
Berthold Vocking, RWTH Aachen, 23. April 2008
DasRestnetzwerkGf zu einem NetzwerkG = (V,E, q, s, c)
und einem Flussf ist wie folgt definiert.
• O.B.d.A. nehmen wir an, dass das NetzwerkG keineentgegengesetzten Kanten hat, d.h.
(u, v) ∈ E ⇒ (v, u) 6∈ E .
• Fur alle Paare(u, v) ∈ V 2 setze
restf (u, v) =
c(u, v) − f(u, v) (u, v) ∈ E
f(v, u) (v, u) ∈ E
0 sonst
• Gf hat die KnotenmengeV und die Kantenmenge
Ef = {(u, v) ∈ V 2 | restf (u, v) > 0} .
Ein fv-Weg ist ein einfacher Weg vonq nachs im Rest-netzwerkGf . (einfacher Weg = Weg auf dem jede Kantehochstens einmal vorkommt)
5
Berthold Vocking, RWTH Aachen, 23. April 2008
Max-Flow = Min-Cut
Die Korrektheit der Ford-Fulkerson-Methode beruht auf dem
”Max-Flow=Min-Cut“-Theorem.
Ein Cut oderSchnitt(Q,S) in einem FlussnetzwerkG isteine Partionierung der KnotenmengeV = Q ∪S mit q ∈ Q,s ∈ S.
• Die Kapazitat des Schnitts(Q,S) ist definiert durch
c(Q,S) =∑
(u,v)∈Eu∈Q,v∈S
c(u, v) .
• Der Flussuber den Schnitt(Q,S) ist definiert durch
f(Q,S) =∑
(u,v)∈Eu∈Q,v∈S
f(u, v) −∑
(v,u)∈Ev∈S,u∈Q
f(v, u) .
Lemma 2 [Max-Flow≤Min-Cut]Fur jeden Flussf und jeden Schnitt(Q,S) gilt w(f) =
f(Q,S) ≤ c(Q,S). ⊓⊔
Dieses Lemma folgt direkt aus der Flusserhaltung. Formalzeigt manw(f) = f(Q,S) per Induktionuber die Große derMengeQ (vgl. Ubungen).
6
Berthold Vocking, RWTH Aachen, 23. April 2008
Satz 3 (Max-Flow=Min-Cut)Die folgenden Aussagen sindaquivalent.
a) f ist ein maximaler Fluss.
b) Das RestnetzwerkGf enthalt keinen fv-Weg.
c) Es gibt einen Schnitt(Q,S) mit w(f) = c(Q,S).
Beweis von Satz 3:
aus a) folgt b):
• Zum Zwecke des Widerspruchs, seif ein maximaler
Fluss undW ein fv-Weg inGf .
• Dann kannf entlang vonW vergroßert werden. Dies ist
ein Widerspruch zur Maximalitat vonf .
aus c) folgt a):
Aus Lemma 2 folgt
w(f) = c(Q,S) ≥ Min-Cut ≥ Max-Flow ,
und somit giltw(f) = Max-Flow.
7
Berthold Vocking, RWTH Aachen, 23. April 2008
aus b) folgt c):
• Aussage b) sagt, dassGf keinen fv-Weg hat
• DefiniereQ = {v ∈ V | ∃ Weg vonq nachv in Gf}
undS = V \Q.
• DaGf keinen fv-Weg hat, folgts ∈ S. Also ist (Q,S)
ein wohldefinierter Schnitt mitq ∈ Q unds ∈ S.
• Fur jede Kante(u, v) ∈ E mit u ∈ Q undv ∈ S giltf(u, v) = c(u, v), weil sonstrestf (u, v) > 0 und somitv ∈ Q ware.
• Fur jede Kante(v, u) ∈ E mit v ∈ S undu ∈ Q giltf(v, u) = 0, weil sonstrestf (u, v) > 0 und somitwiederumv ∈ Q ware.
• Wir erinnern uns an die Definitionen vonc(Q,S) undf(Q,S) und erhalten Aussage c), weil
c(Q,S) =∑
(u,v)∈Eu∈Q,v ∈S
c(u, v)
=∑
(u,v)∈Eu∈Q,v∈S
f(u, v) −∑
(v,u)∈Ev∈S,u∈Q
f(v, u)
= f(Q,S)Lemma 2
= w(f) .
⊓⊔ Satz 3
8
Berthold Vocking, RWTH Aachen, 23. April 2008
Die Ford-Fulkerson-Methode terminiert, sobald kein fv-Weg
mehr vorhanden ist. Aus derAquivalenz der Aussagen in
Satz 3a) und b) folgt somit, dass der berechnete Flussf
maximal ist.
Satz 4 (Korrektheit) Die Ford-Fulkerson-Methode berech-
net einen maximalen Fluss.
Wir haben angenommen, dass die Kantenkapazitaten naturli-
che Zahlen sind. Unter dieser Annahme ist auch der durch
die Ford-Fulkerson-Methode berechnete Fluss ganzzahlig,
d.h. auf jeder Kante wird der Wert des Flusses durch eine
naturliche Zahl beschrieben.
Korollar 5 (Ganzzahligkeit) Fur jeden maximalen Fluss
gibt es einen ganzzahligen Fluss mit gleichem Wert, und die
Ford-Fulkerson-Methode berechnet einen derartigen ganzzah-
ligen maximalen Fluss.
Diese bemerkenswerte Eigenschaft ist nutzlich fur vielerlei
Anwendungen (vgl.Ubungen).
9
Berthold Vocking, RWTH Aachen, 23. April 2008
Laufzeit der Ford-Fulkerson-Methode
fv-Wege konnen beispielsweise durch Tiefen- oder Breiten-suche im Restnetzwerk gefunden werden. Damit dauert eineIteration der Ford-Fulkerson-Methode nur ZeitO(m). SeiC =
∑
e∈E c(e). Da der Fluss in jeder Iteration um mindes-tens eine Einheit erhoht wird undC eine obere Schranke furden Wert des maximalen Flusses ist, konnen wir die Laufzeitder Ford-Fulkerson-Methode durchO(mC) abschatzen underhalten damit einepseudopolynomielleLaufzeitschranke.
Im Allgemeinen hat die Ford-Fulkerson-Methode keine po-lynomielle Laufzeit. Im Folgenden werden wir jedoch sehen,dass die Berechnung der fv-Wege mittels einer Breitensucheeine polynomielle Laufzeit garantiert. Eine Breitensuchefin-det kurzeste fv-Wege, d.h. solche Wege zwischenq unds imRestnetzwerk, die eine minimale Anzahl Kanten enthalten.
Satz 6 (Edmonds und Karp, 1969)Die Laufzeit der Ford-Fulkerson-Methode mit Breitensuche istO(m2n) = O(n5).
Zum Beweis dieses Satzes mussen wir zeigen, dass derAlgorithmus nachO(mn) Iterationen terminiert.
10
Berthold Vocking, RWTH Aachen, 23. April 2008
Lemma 7 Von Iteration zu Iteration verringert sich die Di-
stanz vonq zu einem Knotenv ∈ V im Restnetzwerk nicht.
Beweis:Entlang des fv-Weges konnen durch die Erhohung
des Flusses Kanten verschwinden und entstehen. Es gibt zwei
Arten von Veranderungen.
• Fur jede Kante(u, v) auf dem fv-Weg verringert sich
restf (u, v). Kanten mit minimaler Restkapazitat auf dem
fv-Weg, sogenannteFlaschenhalskanten, verschwinden
aus dem Restnetzwerk, denn ihre Restkapazitat wird auf
0 gesetzt.
• Gleichzeitig erhoht sich fur jede Kante(u, v) auf dem
fv-Weg die entgegengesetzte Restkapazitat restf (v, u).
Falls restf (v, u) zuvor den Wert 0 hatte entsteht eine
neueKante im Restnetzwerk.
Zum Zwecke des Beweises, verandern wir das Restnetzwerk
in zwei Schritten und fugen zunachst nacheinander alle neuen
Kanten hinzu und entfernen erst dann die Flaschenhalskanten.
11
Berthold Vocking, RWTH Aachen, 23. April 2008
Hinzufugen von neuen Kanten:Kann das Hinzufugen der neuen Kanten Distanzen von
der Quelle zu anderen Knoten verringern? – Nein!
Begrundung:Eine Kante(v, u) wird nur dann eingefugt,
wenn die Kante in umgekehrter Richtung – also die
Kante(u, v) – auf einem flussvergroßerndem Weg liegt.
Flussvergroßernde Wege sind aber kurzeste Weg im
Restnetzwerk. Wennu also die Distanzℓ von der Quelle
hat, so hatv die Distanzℓ + 1 von der Quelle. Die neue
Kante verbindet also einen Knoten mit Distanzℓ + 1
von der Quelle mit einem Knoten mit Distanzℓ. Um
aber die Distanz von der Quelle zu irgendeinem Knoten
zu verringern, musste man eine gerichtetete Kante von
einem Knoten mit Distanzk, fur irgendeink ≥ 0, zu
einem Knoten mit Distanzk + i, fur irgendeini > 1,
einfugen.
Entfernen von Flaschenhalskanten:Offensichtlich konnen Kantenloschungen keine Distan-
zen verringern.
⊓⊔ Lemma 7
12
Berthold Vocking, RWTH Aachen, 23. April 2008
Beweis von Satz 6:
• Wenn eine Kante(u, v) zur Flaschenhalskante wird,
verschwindet sie aus dem Restnetzwerk. Seiℓ die Distanz
von q zu u vor der Entfernung von(u, v). Die Distanz
von q zuv ist somitℓ+ 1.
• Die Kante(u, v) kann in einer spateren Iteration wieder
in das Restnetzwerk eingefugt werden und zwar wenn
der Fluss auf Kante(v, u) erhoht wird. Dazu muss(v, u)
auf einem kurzesten Weg liegen. Da die Distanz vonq zu
v sich aber nicht verringert hat, muss die Distanz vonq
zuu dann mindestensℓ+ 2 sein.
• Zwischen jedem Entfernen und Wiedereinfugen einer
Kante(u, v) erhoht sich die Distanz von der Quelleq
zum Knotenu also um den additiven Wert 2. Da die
maximale Distanzn − 1 ist, kann eine Kante also nicht
ofter als12n mal entfernt werden.
• In jeder Iteration wird mindestens eine Kante entfernt.
Es gibt bis zu2m Kanten im Restnetzwerk. Also ist die
Anzahl der Iterationen hochstens12n · 2m = nm.
⊓⊔ Satz 6
13
Berthold Vocking, RWTH Aachen, 23. April 2008
Der Algorithmus von Dinitz, 1970
Idee: In jeder Iteration erhohe den Fluss entlang von mehreren
kurzesten fv-Wegen.
Zu einem gegebenen RestnetzwerkGf = (V,Ef ) ist das
NiveaunetzwerkG′
f = (V,E′
f ) wie folgt definiert. Fur i ∈ N0
sei
Vi = {v ∈ V | die Distanz vonq nachv in Gf ist i} .
G′
f enthalt nur die Kanten von Niveaui zu Niveaui+ 1, d.h,
E′
f = {(u, v) ∈ Ef | ∃i : u ∈ Vi, v ∈ Vi+1} .
Als Kapazitaten fur diese Kanten verwenden wir die Restka-
pazitaten des RestnetzwerkesGf .
G′
f kann ausGf durch Breitensuche in ZeitO(m) berechnet
werden.
14
Berthold Vocking, RWTH Aachen, 23. April 2008
Statt eines fv-Weges im RestnetzwerkGf berechnet Dinitzs
Algorithmus einen sogenannten”Sperrfluss“ im Niveaunetz-
werkG′
f . Dieser Begriff ist folgendermaßen definiert:
• Seiφ ein Fluss im NiveaunetzwerkG′
f .
• Eine Kantee ∈ E′
f heisstsaturiert, wennφ(e) =
restf (e).
• φ heisstSperrfluss wenn jederq-s-Weg inG′
f mindestens
eine saturierte Kante enthalt.
Intuitiv ist ein Sperrfluss also ein Fluss im Niveaunetzwerk,
der alle Wege verstopft.
(In denUbungen zeigen wir, dass der Sperrfluss nicht notwen-
digerweise ein maximaler Fluss im Niveaunetzwerk ist.)
15
Berthold Vocking, RWTH Aachen, 23. April 2008
Dinitzs Maximaler-Fluss-Algorithmus1 ∀e ∈ E : f(e) = 0;
2 Solange es einenq-s Weg im Restnetzwerk gibt
3 berechne das NiveaunetzwerkG′
f ;
4 berechne einen Sperrflussφ in G′
f ;
5”addiere“φ zuf ;
6 Ausgabe vonf .
• Beim Addieren der Flusse in Schritt 5 ist zu beachten,
dass Flusse auf entgegengesetzten Kanten subtrahiert
werden mussen.
• Die Korrektheit des Algorithmus folgt mittels des”Min-
Cut=Max-Flow“-Theorems analog zur Ford-Fulkerson-
Methode.
16
Berthold Vocking, RWTH Aachen, 23. April 2008
Lemma 8 Dinitzs Algorithmus terminiert nach spatestens
n− 1 Sperrflussberechnungen.
Beweis:Behauptung:Die Lange des kurzesten Weges im
Restnetzwerk wachst von Iteration zu Iteration um mindestens
eine Kante.
• Sei ℓ die Entfernung zwischenq und s zu Beginn der
Iteration.
• Alle ursprunglichen Wege der Langeℓ werden durch den
Sperrfluss zerstort. Aber es konnen neue Wege durch
neue erzeugte Kanten entstehen.
• Neue Kanten laufen jedoch entgegengesetzt zum Sperr-
fluss, also fuhren sie von Niveaui zu Niveaui − 1 fur
irgendeini ≥ 1. Wegeuber solche Kanten haben Lange
mindestensℓ+ 2.
Somit gilt die Behauptung und der Satz folgt, weil die Lange
einesq-s-Weges mindestens 1 und hochstensn− 1 ist. ⊓⊔
17
Berthold Vocking, RWTH Aachen, 23. April 2008
Wir mussen uns nun nur nochuberlegen, wie man eine Sperr-
flussberechnung effizient durchfuhren kann. Dazu greifen wir
auf ein Verfahren zuruck, das ein wenig effizienter ist als das
ursprunglich von Dinitz vorgeschlagene Verfahren zur Sperr-
flussberechnung. Wir verwenden zur Sperrflussberechung
die sogenannte”Forward-Backward-Propagation“, die von
Malhotra, Kumar und Maheshwari im Jahr 1978 vorgestellt
wurde. Dieses Verfahren berechnet einen Sperrfluss in Zeit
O(n2), so dass sich insgesamt eine Laufzeit vonO(n3) ergibt.
Gegeben sei ein NiveaunetzwerkG′
f mit Restkapazitaten
restf (e). Wir beschreiben nun einen Algorithmus zur Be-
rechnung eines Sperrflussesφ auf G′
f . Fur einen Knoten
v ∈ V bezeichne
• A(v) = {(v, u) ∈ E′
f} die vonv ausgehenden Kanten,
• E(v) = {(u, v) ∈ E′
f} die inv eingehenden Kanten.
Wir starten mitφ = 0 und erhohen den Flussφ nach und
nach durch sogenannte”Forward-Backward-Propagationen“
bis wir einen Sperrfluss im Niveaunetzwerk berechnet haben.
18
Berthold Vocking, RWTH Aachen, 23. April 2008
Eine Propagationsphase besteht aus einer”Forward-“ und
einer”Backward-Propagation“.
• Seiφ der berechnete Fluss zu Beginn einer solchen Pro-
pagationsphase.
• DasPotentialeinerKantee ist definiert als
pot(e) = restf (e) − φ(e) ,
entspricht also der noch ungenutzten Restkapazitat der
Kantee im Niveaunetzwerk.
• DasPotentialeinesKnotensv ist definiert als
pot(v) = min
∑
e∈E(v)
pot(e),∑
e∈A(v)
pot(e)
.
19
Berthold Vocking, RWTH Aachen, 23. April 2008
Forward-Propagation:
• Sei v∗ der Knoten mit kleinstem, positivem Potential.
Seii das Niveau vonv∗. Wir erzeugenpot(v∗) Einheiten
zusatzlichen Flusses am Knotenv∗.
• Dadurch erhalten wir einenUberschuss vonpot(v∗)
Flusseinheiten am Knotenv∗. DiesenUberschuss schie-
ben wir vorwarts entlang der Kanten inA(v∗).
• Jetzt erhalten wir einenUberschuss auf einigen der
Knoten auf Niveaui+ 1. DiesenUberschuss verschieben
wir wiederum zu Knoten auf Niveaui + 2, usw. bis wir
die Senke erreichen.
• Da v∗ der Knoten mit kleinstem Potential war, ist die
Entsorgung desUberschussflusses sichergestellt, weil
jeder Knoten genugend Potential hat, um denUberschuss
weiterzuleiten.
Backward Propagation: analog – ausgehend vom selben
Knotenv∗ wird derUberschuss zur Quelle propagiert.
20
Berthold Vocking, RWTH Aachen, 23. April 2008
Forward-Propagation im Detail:
Wir benutzen eine FIFO-QueueQ zur Verwaltung der Knoten
mit positivemUberschuss. Die MengeA(v) der vonv ausge-
henden Kanten im Niveaunetzwerk wird als Liste verwaltet.
next(A(v)) bezeichnet jeweils die nachste bisher noch nicht
betrachtete Kante. Ziel ist die Berechnung eines Flussesψ mit
Wertpot(v∗) vom Knotenv∗ zur Senkes.
Algorithmus Forward-Propagation(v∗):01 setzeU(v∗) = pot(v∗); /* initialer Uberschuss */
02 fur allev 6= v∗ setzeU(v) = 0;
03 fugev∗ in Q ein;
04 while Q 6= ∅ do05 nimm Element ausQ und nenne esv;
06 while U(v) > 0 do07 seie = (v, u) = next(A(v));
08 setzeψ(e) = min{pot(e), U(v)};
09 setzeU(v) = U(v) − ψ(e);
10 setzeU(u) = U(u) + ψ(e);
11 fallsu 6= s undu 6∈ Q fugeu in Q ein;
12 Ausgabe vonψ.
Der Flussψ wird dann zum Flussφ addiert.
21
Berthold Vocking, RWTH Aachen, 23. April 2008
Die Propagationsphasen werden solange wiederholt bis ein
Sperrfluss berechnet ist. Die Kanten- und Knotenpotentiale
werden dabei nach jeder Propagationsphase angepasst. Kno-
ten und Kanten mit Potential 0 werden alssaturiert bezeichnet
und werden in den kommenden Propagationsphasen nicht
mehr betrachtet, also aus dem Niveaunetzwerk entfernt. Die
Sperrflussberechnung terminiert, sobald alle Knoten entfernt
sind.
Beobachtung 9 Nach spatestensn − 1 Propagationsphasen
ist ein Sperrfluss berechnet, weil in jeder Phase mindestens
ein Knoten saturiert wird.
22
Berthold Vocking, RWTH Aachen, 23. April 2008
Lemma 10 Eine Forward-Propagation kann in ZeitO(n+ ℓ)
durchgefuhrt werden, wobeiℓ die Anzahl der neu saturierten
Kanten ist. (Backward-Propagation analog.)
Beweis:Die Verwendung der FIFO-QueueQ garantiert die
folgenden Eigenschaften.
1) Die Niveaus werden strikt nacheinander abgearbeitet.
2) Dadurch wird jeder Knoten hochstens einmal aus der
QueueQ entnommen.
3) Fur jeden entnommenen Knoten werden alle bis auf
maximal eine derbetrachteten Kanten saturiert.
Pro Knotenv gibt es somit maximal eine Kante inA(v), die
betrachtet aber nicht saturiert wird.
Die Laufzeitkostenwerden auf die Kanten umgelegt:
• Fur jede betrachtete Kante entstehen KostenO(1).
• Die Anzahl betrachteter, saturierter Kanten istℓ.
• Die Anzahl betrachteter, nicht saturierter Kanten ist
hochstensn.
Damit sind die GesamtkostenO(n+ ℓ). ⊓⊔
23
Berthold Vocking, RWTH Aachen, 23. April 2008
Satz 11 Durch Forward-Backward-Propagation kann man
einen Sperrfluss in ZeitO(m + n2) = O(n2) berechnen.
Dadurch erhalt man einen Algorithmus zur Berechnung eines
maximalen Flusses mit LaufzeitO(n3).
Beweis von Satz 11
• Beobachtung 9 liefert, dass nur hochstensn− 1 Propaga-
tionsphasen zur Sperrflussberechnung notig sind. Seiℓidie Anzahl der in deri-ten Propagationsphase geloschten
Kanten,1 ≤ i ≤ n− 1.
• Dann ergibt sich aus Lemma 10 die folgende Laufzeit-
abschatzung fur die Sperrflussberechnung:
n−1∑
i=1
O(n+ ℓi) = O
(
n2 +n−1∑
i=1
ℓi
)
= O(n2 +m) .
• Dan− 1 Sperrflussberechnungen einen maximalen Fluss
liefern, folgt der Satz.
⊓⊔
24
Berthold Vocking, RWTH Aachen, 23. April 2008
Das Min-Cost-Flow-Problem
Beim Min-Cost-Flow-Problem ist jeder Kantee ∈ E im
Flussnetzwerk neben der Kapazitatsfunktionc : E → N
zusatzlich eineKostenfunktionℓ : E → Z zugeordnet. Das
Netzwerk darf keine Kreise mit negativer Gewichtssumme
enthalten.
Seif ein Fluss inG. Die Kostenvon f sind definiert als
ℓ(f) =∑
e∈E
ℓ(e) f(e) .
Gegeben sei ein FlussnetzwerkG = (V,E, q, s, c, ℓ) und eine
ZahlW ∈ N, wobeiW nicht großer als der maximale Fluss
inG ist. Wir suchen einenkostenminimalerFlussf∗ mit Wert
W , d.h. es soll geltenw(f∗) = W und
ℓ(f∗) = min{ℓ(f) | f ist Fluss inG mit w(f) = W} .
25
Berthold Vocking, RWTH Aachen, 23. April 2008
Wir greifen unserer Analyse vorweg und merken an, dass –
wie schon beim Max-Flow-Problem – fur jede Instanz des
Min-Cost-Flow-Problems eine ganzzahlige optimale Losung
existiert und unsere Algorithmen ohne weiteres Zutun eine
solche Losung berechnen werden.
Fur W = 1 entspricht das Min-Cost-Flow-Problem wegen
der Ganzzahligkeit dem Kurzeste-Wege-Problem.
Im Falleℓ(e) = 0, fur allee ∈ E, ist ein beliebiger Fluss mit
WertW gesucht. Dieses Problem kann ohne nennenswerten
Zeitverlust auf das Max-Flow-Problem reduziert werden.
(Wie?)
26
Berthold Vocking, RWTH Aachen, 23. April 2008
Der Cycle-Canceling-Algorithmus
Wir beschreiben einen Algorithmus fur das Min-Cost-Flow-
Problem.
Gf = (V,Ef ) bezeichne wie schon zuvor das Restnetzwerk
bezuglich eines Flussesf . Die Kosten fur eine Kante(u, v) ∈
Ef \E seien durchℓ((u, v)) = −ℓ((v, u)) definiert.
EineZirkulation f ′ in Gf ist eine Funktionf ′ : Ef → R+0 ,
die die Flusserhaltung auf jedem Knoten ausV einhalt und
die Restkapazitaten nichtubersteigt.
Somit entspricht eine Zirkulation einem Fluss, der im Gegen-
satz zu einem”herkommlichen Fluss“ auch auf Quelle und
Senke die Flusserhaltung einhalt.
Analog zur Definition bei herkommlichen Flussen, sei der
WertderZirkulation ubereinenSchnitt(Q,S) definiert als
f ′(Q,S) =∑
(u,v)∈Eu∈Q,v∈S
f ′(u, v) −∑
(v,u)∈Ev∈S,u∈Q
f ′(v, u) .
Der Wert der Zirkulation ist ebenfalls analog definiert als
w(f ′) = f(q, V \ {q}). Aufgrund der Flusserhaltung an der
Quelle giltw(f ′) = 0. Per Induktion folgt: Fur jeden Schnitt
(Q,S) gilt f ′(Q,S) = w(f ′) = 0.
27
Berthold Vocking, RWTH Aachen, 23. April 2008
Eine Zirkulation, die nur entlang eines einfachen Kreises im
Restnetzwerk fließt, wird alsKreisfluss bezeichnet. Fur einen
KreisK in Gf , seif ′(K) der großtmogliche Kreisfluss auf
K, der die Restkapazitaten nichtuberschreitet. Wir sagen ein
KreisK hatnegativeKosten, wenn gilt∑
e∈K ℓ(e) < 0.
Cycle-Canceling-Algorithmus:1 Berechne einen beliebigen Flussf mit WertW ;
2 SolangeGf einen KreisK mit neg. Kosten enthalt
3 setzef := f + f ′(K);
4 Ausgabe vonf .
Daf ′(K) eine Zirkulation ist, erhoht sich durch die Addition
vonf ′(K) der Wert des Flusses nicht, denn
w(f + f ′(K)) = w(f) + w(f ′(K)) = w(f) = W .
Andererseits verringern sich aber die Kosten, denn es gilt
ℓ(f + f ′(K)) = ℓ(f) + ℓ(f ′(K)) < ℓ(f) ,
daℓ(f ′(K)) = f ′(a) ·∑
e∈K ℓ(e) < 0, wobeia eine beliebige
Kante ausK bezeichnet.
28
Berthold Vocking, RWTH Aachen, 23. April 2008
Lemma 12 Wennf nicht kostenminimal ist, dann gibt es
einen KreisK mit negativen Kosten inGf .
Beweis:
Ubungsaufgabe:Zeige, dass jede Zirkulationf ′, dieM viele
Kanten benutzt, in hochstensM viele Kreisflusse zerlegt
werden kann, d.h.f ′ besteht aus der Addition von hochstens
M Kreisflussen.
Sei f ein Fluss, der nicht kostenminimal ist, und seif∗
ein kostenminimimaler Fluss, d.h.ℓ(f∗) < ℓ(f). Der Fluss
f∗−f erfullt die Flusserhaltung auf allen Knoten, ist also eine
Zirkulation auf den maximal2m Kanten des Restnetzwerkes
Gf und kann somit inM ≤ 2m viele Kreisflussef1, . . . , fM
zerlegt werden. Es giltf∗ − f = f1 + · · · + fM und somit
ℓ(f∗) − ℓ(f) = ℓ(f1) + · · · + ℓ(fM ). Aus ℓ(f∗) − ℓ(f) < 0
folgt nun
ℓ(f1) + · · · + ℓ(fM ) < 0 .
Wenn nun keiner der diesenM Kreisflussen zugrunde liegen-
den Kreise negative Kosten hatte, so ware aberℓ(f1) + · · · +
ℓ(fM ) ≥ 0. Also gibt es mindestens einen Kreis inGf mit
negativen Kosten. ⊓⊔
29
Berthold Vocking, RWTH Aachen, 23. April 2008
Aus dem Lemma und den vorhergehendenUberlegungen
folgt
Satz 13 Ein Flussf ist kostenminimal genau dann, wennGf
keinen Kreis mit negativen Kosten enthalt.
Damit ist die Korrektheit des Cycle-Canceling-Algorithmus
nachgewiesen. Die Laufzeit des Cycle-Canceling-Algorithmus
lasst sich im Allgemeinen wieder nur pseudopolynomiell in
C, der Summe der Kapazitaten, beschranken.
Wie schon bei der Ford-Fulkerson-Methode kann man aber
eine polynomielle Laufzeitschranke erhalten, wenn man die
aufzuaddierenden Flusse – in diesem Fall die Kreise mit
negativen Kosten – geschickt wahlt.
30
Berthold Vocking, RWTH Aachen, 23. April 2008
Der Min-Mean-Cycle-Canceling-Algorithmus
Der Min-Mean-Cycle-Canceling-Algorithmus wahlt in jeder
Iteration einen KreisK ausGf , der die durchschnittlichen
Kantenkosten (mean cost)
ℓ(K) =ℓ(K)
|K|=
∑
e∈K ℓ(e)
|K|
minimiert.
K wird alsMin-Mean-Cycle bezeichnet. Seiµ(f) = −ℓ(K).
Beachte, wennK ein Kreis mit negativen Kosten ist, so ist
ℓ(K) negativ und somitµ(f) positiv.
Fur die Laufzeitanalyse zerlegen wir die Folge der Iterationen
des Algorithmus inPhasen. Seif der Fluss zu Beginn einer
Phase. Die Phase endet nach der ersten Iteration in der ein
Flussg mit µ(g) ≤ (1 − 1n )µ(f) oderµ(g) ≤ 0 berechnet
wird. Im letzteren Fall enthaltGg keinen Kreis mit negativen
Kosten und die Berechnung terminiert. Ansonsten folgt die
nachste Phase.
31
Berthold Vocking, RWTH Aachen, 23. April 2008
Anzahl der Phasen:
SeiT die Anzahl der Phasen. Seiµ0 der Wert vonµ zu Beginnder ersten Phase und, fur 1 ≤ t ≤ T , seiµt der Wert vonµ zuEnde dert-ten Phase.
Fur 1 ≤ t ≤ T − 1 folgt aus der Definition der Phasen
µt ≤
(
1 −1
n
)
µt−1 ≤µt−1
e1/n. (1)
Die letzte Abschatzung erfolgt dabei aus der allgemeingulti-gen Ungleichung1 − x ≤ e−x mit x = 1
n .
Zu Beginn des Algorithmus istµ durch den maximalenAbsolutbetrag aller Kantenkosten, das wir mitL bezeichnen,nach oben beschrankt. Es gilt somitµ0 ≤ L. (2)
Der Algorithmus terminiert, wenn zum Ende einer Phase dieBedingungµ ≤ 0 erfullt ist. Am Ende von PhaseT − 1 giltsomit nochµ > 0. Aufgrund der Ganzzahligkeit der Kostenkannµ nicht im Interval(0, 1
n ) liegen. (Warum?) Am Endevon PhaseT − 1 gilt somitµ ≥ 1
n , d.h.µT−1 ≥ 1n . (3)
Aus den Ungleichungen(1), (2) und(3) folgt
T − 1 ≤ loge1/n(nL) =ln(nL)
ln(e1/n)= n ln(nL) ,
und somit terminiert der Algorithmus nachT ≤ n ln(nL) + 1
Phasen.
32
Berthold Vocking, RWTH Aachen, 23. April 2008
Anzahl der Iterationen je Phase:
Sei f der initiale Fluss zu Beginn einer Phase. Wir zeigen,
dass der Algorithmus nachm Iterationen terminiert oder
nach spatestensm − 1 Iterationen wird ein Flussg mit
µ(g) ≤ (1 − 1n)µ(f) berechnet. Eine Phase dauert somit
hochstensm Iterationen. Wir treffen zunachst die folgende
vereinfachende Annahme.
Annahme 14 Fur alle Kantene ∈ Gf gelteℓ(e) ≥ −µ(f).
Wir unterscheiden Iterationen vomTyp 1 in denen der Min-
Mean-Cycle jeweils nur Kanten mit negativen Kosten enthalt
und Iterationen vomTyp 2 in denen der Min-Mean-Cycle
mindestens eine Kante mit positiven Kosten enthalt.
In jeder Typ-1-Iteration wird mindestens eine Kante mit ne-
gativen Kosten saturiert und aus dem Restnetzwerk entfernt.
Ferner verlaufen alle moglicherweise neu entstehenden Kan-
ten entgegengesetzt zu den Kanten mit negativen Kosten und
haben somit selbst positive Kosten. Spatestens nachm konse-
kutiven Typ-1-Iterationen terminiert der Algorithmus somit,
weil das Restnetzwerk dann nur noch Kreise mit positiven
Kosten enthalt.
33
Berthold Vocking, RWTH Aachen, 23. April 2008
Wenn die Phase langer alsm Iterationen dauert, folgt nach
spatestensm− 1 Typ-1-Iterationen eine Typ-2-Iteration.
Sei g der Fluss zu Beginn der ersten Typ-2-Iteration. Da
die Typ-1-Iterationen keine Kanten mit negativen Kosten
hinzugefugt haben, gilt weiterhin unsere Annahme, d.h.
ℓ(e) ≥ −µ(f) bzw.−ℓ(e) ≤ µ(f) fur alle Kantene ∈ Gg.
SeiK der Min-Mean-Cycle ing undH ⊆ K die Menge der
Kanten mit negativen Kosten ausK. Es gilt
µ(g) =∑
e∈K
−ℓ(e)
|K|≤∑
e∈H
−ℓ(e)
|K|≤ |H| ·
µ(f)
|K|,
weibei die letzte Abschatzung aus Annahme 14 folgt. Aus
|H| ≤ |K| − 1 folgt nun |H|/|K| ≤ 1 − 1/|K| ≤ 1 − 1/n
und somitµ(g) ≤ (1 − 1n )µ(f).
Die Phase endet also sobald der Flussg berechnet ist und
damit noch vor der ersten Typ-2-Iteration!
Wenn Annahme 14 zu Beginn einer Phase halt, so gibt es also
keine Typ-2-Iterationen in der Phase und die Phase endet nach
spatestensm vielen Typ-1-Iterationen.
34
Berthold Vocking, RWTH Aachen, 23. April 2008
Annahme 14 sieht sehr restriktiv aus, insbesondere vor demHintergrund der vorhergehenden Analyse. Wir zeigen abernun, dass wir diese Annahme erreichen konnen, indem wirdie Kostenfunktionℓ auf geeignete Art und Weise verandern,ohne dabei den Ablauf des Algorithmus zu beeinflussen.
Seip : V → Z eine beliebige Funktion, die jedem Knoteneinen Wert zuweist, ein sogenanntesPotential. Wir setzenℓ′(e) = ℓ(e) − p(v) + p(u) fur jede Kantee = (u, v).Beachte, fur e = (v, u) gilt
ℓ′(e) = ℓ(e) − p(u) + p(v)
= −ℓ(e) − p(u) + p(v) = −ℓ′(e) .
Wir beobachten, dass die Potentiale die Kostensumme aufKreisen nicht beeinflussen, da jeder Potentialwert einmal mitpositivem und einmal mit negativem Vorzeichen aufsummiertwird, d.h. fur jeden KreisK gilt ℓ(K) = ℓ′(K).
Die Potentiale haben somit keine Auswirkungen auf den Ab-lauf des Algorithmus. Um Annahme 14 in der vorhergendenAnalyse zu erreichen, konnen wir also beliebige Potentialeverwenden, um die Kostenfunktion zu Beginn einer Phasegeeignet zu manipulieren.
Das folgende Lemma besagt, dass es tatsachlich Potentialegibt, die es erlauben, Annahme 14 zu erreichen.
35
Berthold Vocking, RWTH Aachen, 23. April 2008
Lemma 15 Im RestnetzwerkGf = (V,Ef ) gelte ℓ(K) ≥
−µ fur jeden KreisK. Dann gibt es eine Funktionp : V → Z
mit der Eigenschaftℓ′(e) = ℓ(e)−p(v)+p(u) ≥ −µ fur jedeKantee ∈ Ef .
Beweis:
Fur jede Kantee ∈ Ef definiere ein Kantengewichtw(e) =
ℓ(e) + µ. Fur jeden Knotenv ∈ V definiere nunp(v) als dieLange (= Gewicht) eines kurzesten Kantenzuges (d.h. Pfades
mit beliebigen Wiederholungen von Knoten und Kanten) inGf , der von einem beliebigen Knoten zum Knotenv in Gf
fuhrt. Dieser Wert ist wohldefiniert, weil keine Kreise mitnegativem Gewicht inGf existieren, denn ausℓ(K) ≥ −µ
folgt w(K) ≥ 0 fur jeden KreisK.
Die Definition der Potentiale garantiert uns die folgendeEigenschaft: Fur jede Kantee = (u, v) gilt p(v) ≤ p(u) +
w(u, v), denn der kurzeste Weg, der inv endet, kann nicht
langer als der kurzeste Weg sein, der zuu fuhrt unduber dieKante(u, v) fortgesetzt wird. Es folgt
ℓ′(e) = ℓ(e) − p(v) + p(u)
= w(e) − p(v) + p(u) − µ ≥ −µ .
⊓⊔
36
Berthold Vocking, RWTH Aachen, 23. April 2008
Laufzeit pro Iteration:
Wir zeigen nun wie man einen Min-Mean-Cycle im Restnetz-
werk in ZeitO(nm) berechnen kann (Karp, 1978).
Fur k = 0, 1, . . . , n undv ∈ V seidk(v) die Lange (=Kosten)
eines kurzesten Kantenzuges mit genauk Kanten, der beiv
endet. Es giltd0(v) = 0 und
dk+1(v) = mine=(u,v)∈E
(dk(u) + ℓ(e)) .
Alle dk(v)-Werte konnen somit durch dynamische Program-
mieren in ZeitO(nm) berechnet werden.
Lemma 16 Der Wertℓ(K) des Min-Mean-Cycles inG ist
α = minv∈V
n−1maxj=0
(dn(v) − dj(v)
n− j
)
37
Berthold Vocking, RWTH Aachen, 23. April 2008
Beweis von Lemma 16
SeiK ein Min-Mean-Cycle. Wenn wir alle Kantenkosten
um den gleichen additiven Betrag∆ erhohen, so istK un-
verandert ein Min-Mean-Cycle aber sein Wert wurde sich um
∆ erhohen. Beachte, dass auchα sich genau um∆ erhohen
wurde. (Warum?) Deshalb konnen wir die Kantenkosten um
einen beliebigen additiven Betrag∆ verschieben und so-
mit o.B.d.A. annehmen, dassℓ(K) = 0 gilt. Unter dieser
Annahme mussen wir zeigen, es gilt auchα = 0.
Betrachte dazu einen beliebigen Knotenv. SeiP ein Kanten-
zug ausn Kanten, der beiv endet und die Langedn(v) hat.
Weil das Netzwerk nurn Knoten enthalt, mussP einen Kreis
enthalten. SeiC dieser Kreis undP ′ der Kantenzug, den wir
enthalten, wenn wirC ausP entfernen. Seij die Anzahl
Kanten inP ′ undn− j die Anzahl Kanten inC. Es gilt nun
dn(v) = ℓ(P ) = ℓ(C) + ℓ(P ′) ≥ ℓ(P ′) ≥ dj(v) ,
da ℓ(C) ≥ 0. Somit existiert fur jeden Knotenv ein j ∈
{1, . . . , n − 1} mit der Eigenschaftdn(v) ≥ dj(v). Hieraus
folgt α ≥ 0.
38
Berthold Vocking, RWTH Aachen, 23. April 2008
Wir mussen nun also nur noch zeigen, dass auchα ≤ 0 gilt.
Dazu werden wir zeigen, dass es einen Knotenw mit der
Eigenschaftdn(w) ≤ dj(w) fur allej ∈ {0, . . . , n− 1} gibt.
Zu diesem Zweck betrachte die folgende Situation:
• Seiv ein Knoten des Min-Mean-CycleK.
• SeiP ein kurzester unter allen Kantenzugen beliebiger
Lange, die am Knotenv enden. O.B.d.A. enthaltP keinen
Kreis, da es keine Kreise negativer Lange gibt. Seip < n
die Anzahl Kanten inP .
• Seiw derjenige Knoten, den wir erreichen, wenn wirK
vonv ausgehend entlang vonn−p Kanten folgen. Diesen
Kantenzug bezeichnen wir mitQ.
• SeiR der Weg vonw zu v entlang vonK, und seir die
Anzahl Kanten dieses Weges.
• Sei nunj ∈ {0, . . . , n − 1} beliebig gewahlt undS
ein Kantenzug minimaler Lange ausj Kanten, der am
Knotenw endet.
39
Berthold Vocking, RWTH Aachen, 23. April 2008
Tafelbild:
Aus der Definition der Kantenzuge folgt
dn(w) ≤ ℓ(P ) + ℓ(Q) = dp(v) + ℓ(Q) ,
und
dp(v) ≤ dj+r(v) ≤ dj(w) + ℓ(R) .
Es folgt
dn(w) ≤ dj(w) + ℓ(R) + ℓ(Q) .
Nun hat aber der KantenzugQ ◦ R die Lange 0, da erK
(moglicherweise mehrfach) umlauft undℓ(K) = 0 gilt.
Somit gilt, wie gefordert,dn(w) ≤ dj(w). ⊓⊔
40
Berthold Vocking, RWTH Aachen, 23. April 2008
Der Algorihmus zur Bestimmung des Min-Mean-Cycles
arbeitet nun folgendermaßen:
• Berechne diedk(v)-Werte und bestimmeα, also den
Wert des Min-Mean-Cycles.
• Erhohe alle Kantenkosten um den additiven Termα, so
dass der Wert des Min-Mean-Cycles nun gleich 0 ist.
• Transformiere die Kantenkosten wie in Lemma 15 be-
schrieben. Die benotigten Potentiale lassen sich aus den
dk(v)-Werten bestimmen. Nun sind alle Kantenkosten
nicht-negativ und alle Kanten auf dem Min-Mean-Cycle
haben somit den Wert 0.
• Streiche alle Kanten mit Kosten großer als 0 aus dem
Graphen und suche den Min-Mean-Cycle mittels Tiefen-
suche unter den verbleibenden Kanten.
41
Berthold Vocking, RWTH Aachen, 23. April 2008
Gesamtlaufzeit:
Der Algorithmus benotigt hochstensn log(nL) + 1 Phasen,
die jeweils hochstensm Iterationen benotigen, die jeweils
LaufzeitO(mn) haben.L bezeichnet dabei das Maximum der
Absolutwerte der Kantenkosten. Es folgt
Satz 17 Der Mean-Cycle-Canceling-Algorithmus hat eine
Laufzeit vonO(m2n2 log(nL)).
Diese Abschatzung der Laufzeit ist zwar polynomiell in der
Eingabelange beschrankt, aber man spricht von einerschwach
polynomiellen Schranke, da die Große der Eingabezahlen,
wenngleich nur logarithmisch, in die Abschatzung eingeht.
Tatsachlich lasst sich auch einestarkpolynomielle Laufzeit-
schranke herleiten.
Satz 18 Der Mean-Cycle-Canceling-Algorithmus hat eine
Laufzeit vonO(m3n2 log n).
Auf die Prasentation des Beweises dieses Satzes verzichten
wir an dieser Stelle.
42