PDF verkleinert - RWTH

Werbung
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Netzwerke und Flüsse
Ein Flussnetzwerk ist ein gerichteter Graph G = (V, E, q, s, c)
mit zwei ausgewählten Knoten q, s ∈ V und einer Kapazitätsfunktion c : E → N. Die Quelle q hat Eingangsgrad 0 und die
Senke s hat Ausgangsgrad 0.
Kapitel 1: Flussalgorithmen
Wir definieren n = |V |, m = |E| und nehmen an, jeder
Knoten ist von q erreichbar. Es gilt n − 1 ≤ m ≤ n(n − 1).
Ein Fluss in einem Netzwerk G ist eine realwertige Funktion
f : E → R+
0 mit den Eigenschaften
Hilfreiche Literatur:
• Ahuja, Magnanti, Orlin: Network Flows: Theory, Algorithms, and Applications, Prentice Hall, 1993.
• Cormen, Leiserson, Rivest: Introduction to Algorithms,
First Edition. MIT Press, 1990.
• Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, Second Edition. MIT Press, 2001.
• Ottmann, Widmayer: Algorithmen und Datenstrukturen.
BI-Wiss.-Verl. 1990.
1
a) Flusserhaltung: ∀u ∈ V \ {q, s} :
X
X
f (v, u) =
v : (v,u)∈E
|
{z
fin (u)
f (u, v) .
v : (u,v)∈E
}
|
{z
fout (u)
}
b) Kapazitätsbeschränkung: ∀e ∈ E : f (e) ≤ c(e).
Der Wert des Flusses f ist definiert als w(f ) = fout (q). Wegen
der Flusserhaltung gilt somit auch w(f ) = fin (s).
2
Berthold Vöcking, RWTH Aachen, 23. April 2008
Problem 1 (Maximaler Fluss) Gegeben sei ein Flussnetzwerk G. Berechne einen maximalen Fluss auf G, d.h. einen
Fluss mit größtmöglichem Wert.
Berthold Vöcking, RWTH Aachen, 23. April 2008
Die Ford-Fulkerson-Methode
Der folgende algorithmische Rahmen zur Berechnung eines maximalen Flusses f auf einem Flussnetzwerk G =
(V, E, q, s, c) geht zurück auf Ford und Fulkerson, 1957.
Beachte, wir haben angenommen, dass die Kantenkapazitäten
ganzzahlig sind. Das ist keine besondere Einschränkung, denn
bei rationalen Kapazitäten können wir immer alle Zahlen mit
dem Hauptnenner multiplizieren und somit ein Flussproblem
mit rationalen Kapazitäten in ein Problem mit ganzzahligen
Kapazitäten transformieren.
Die Algorithmen zur Berechnung von maximalen Flüssen,
die wir im Folgenden vorstellen werden, haben zahlreiche
praktische Anwendungen, die auf den ersten Blick nicht immer unbedingt unmittelbar an Flussprobleme erinnern. In den
Übungen präsentieren wir dazu einige, teilweise überraschende Beispiele, wie z.B. das Meisterschaftsproblem.
3
Ford-Fulkerson-Methode:
1 ∀e ∈ E : f (e) = 0;
2 Solange es einen fv-Weg W gibt
3
erhöhe den Fluss f entlang von W maximal;
4 Ausgabe von f .
fv-Weg“ steht für flussvergrößernder Weg“. Dabei handelt
”
”
es sich um Wege im sogenannten Restnetzwerk“.
”
4
Berthold Vöcking, RWTH Aachen, 23. April 2008
Das Restnetzwerk Gf zu einem Netzwerk G = (V, E, q, s, c)
und einem Fluss f ist wie folgt definiert.
• O.B.d.A. nehmen wir an, dass das Netzwerk G keine
entgegengesetzten Kanten hat, d.h.
(u, v) ∈ E ⇒ (v, u) 6∈ E .
• Für alle Paare (u, v) ∈ V 2 setze



 c(u, v) − f (u, v) (u, v) ∈ E
restf (u, v) =
f (v, u)
(v, u) ∈ E



0
sonst
Berthold Vöcking, 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 oder Schnitt (Q, S) in einem Flussnetzwerk G ist
eine Partionierung der Knotenmenge V = Q ∪˙ S mit q ∈ Q,
s ∈ S.
• Die Kapazität des Schnitts (Q, S) ist definiert durch
X
c(u, v) .
c(Q, S) =
(u,v)∈E
u∈Q,v∈S
• Der Fluss über den Schnitt (Q, S) ist definiert durch
X
X
f (v, u) .
f (u, v) −
f (Q, S) =
(v,u)∈E
v∈S,u∈Q
(u,v)∈E
u∈Q,v∈S
• Gf hat die Knotenmenge V und die Kantenmenge
Ef = {(u, v) ∈ V 2 | restf (u, v) > 0} .
Ein fv-Weg ist ein einfacher Weg von q nach s im Restnetzwerk Gf . (einfacher Weg = Weg auf dem jede Kante
höchstens einmal vorkommt)
5
Lemma 2 [Max-Flow≤Min-Cut]
Für jeden Fluss f und jeden Schnitt (Q, S) gilt w(f ) =
f (Q, S) ≤ c(Q, S).
⊓
⊔
Dieses Lemma folgt direkt aus der Flusserhaltung. Formal
zeigt man w(f ) = f (Q, S) per Induktion über die Größe der
Menge Q (vgl. Übungen).
6
Berthold Vöcking, RWTH Aachen, 23. April 2008
Satz 3 (Max-Flow=Min-Cut)
Die folgenden Aussagen sind äquivalent.
a) f ist ein maximaler Fluss.
b) Das Restnetzwerk Gf enthält keinen fv-Weg.
c) Es gibt einen Schnitt (Q, S) mit w(f ) = c(Q, S).
Berthold Vöcking, RWTH Aachen, 23. April 2008
aus b) folgt c):
• Aussage b) sagt, dass Gf keinen fv-Weg hat
• Definiere Q = {v ∈ V | ∃ Weg von q nach v in Gf }
und S = V \ Q.
• Da Gf keinen fv-Weg hat, folgt s ∈ S. Also ist (Q, S)
ein wohldefinierter Schnitt mit q ∈ Q und s ∈ S.
• Für jede Kante (u, v) ∈ E mit u ∈ Q und v ∈ S gilt
f (u, v) = c(u, v), weil sonst restf (u, v) > 0 und somit
v ∈ Q wäre.
Beweis von Satz 3:
aus a) folgt b):
• Zum Zwecke des Widerspruchs, sei f ein maximaler
Fluss und W ein fv-Weg in Gf .
• Dann kann f entlang von W vergrößert werden. Dies ist
ein Widerspruch zur Maximalität von f .
• Für jede Kante (v, u) ∈ E mit v ∈ S und u ∈ Q gilt
f (v, u) = 0, weil sonst restf (u, v) > 0 und somit
wiederum v ∈ Q wäre.
• Wir erinnern uns an die Definitionen von c(Q, S) und
f (Q, S) und erhalten Aussage c), weil
X
c(u, v)
c(Q, S) =
(u,v)∈E
u∈Q,v ∈S
aus c) folgt a):
=
Aus Lemma 2 folgt
X
f (u, v) −
(u,v)∈E
u∈Q,v∈S
w(f ) = c(Q, S) ≥ Min-Cut ≥ Max-Flow ,
= f (Q, S)
und somit gilt w(f ) = Max-Flow.
7
X
f (v, u)
(v,u)∈E
v∈S,u∈Q
Lemma 2
=
w(f ) .
⊓
⊔ Satz 3
8
Berthold Vöcking, RWTH Aachen, 23. April 2008
Die Ford-Fulkerson-Methode terminiert, sobald kein fv-Weg
mehr vorhanden ist. Aus der Äquivalenz der Aussagen in
Satz 3a) und b) folgt somit, dass der berechnete Fluss f
maximal ist.
Satz 4 (Korrektheit) Die Ford-Fulkerson-Methode berechnet einen maximalen Fluss.
Wir haben angenommen, dass die Kantenkapazitäten natürliche 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
natürliche Zahl beschrieben.
Korollar 5 (Ganzzahligkeit) Für jeden maximalen Fluss
gibt es einen ganzzahligen Fluss mit gleichem Wert, und die
Ford-Fulkerson-Methode berechnet einen derartigen ganzzahligen maximalen Fluss.
Diese bemerkenswerte Eigenschaft ist nützlich für vielerlei
Anwendungen (vgl. Übungen).
9
Berthold Vöcking, RWTH Aachen, 23. April 2008
Laufzeit der Ford-Fulkerson-Methode
fv-Wege können beispielsweise durch Tiefen- oder Breitensuche im Restnetzwerk gefunden werden. Damit dauert eine
Iteration der Ford-Fulkerson-Methode nur Zeit O(m). Sei
P
C = e∈E c(e). Da der Fluss in jeder Iteration um mindestens eine Einheit erhöht wird und C eine obere Schranke für
den Wert des maximalen Flusses ist, können wir die Laufzeit
der Ford-Fulkerson-Methode durch O(mC) abschätzen und
erhalten damit eine pseudopolynomielle Laufzeitschranke.
Im Allgemeinen hat die Ford-Fulkerson-Methode keine polynomielle Laufzeit. Im Folgenden werden wir jedoch sehen,
dass die Berechnung der fv-Wege mittels einer Breitensuche
eine polynomielle Laufzeit garantiert. Eine Breitensuche findet kürzeste fv-Wege, d.h. solche Wege zwischen q und s im
Restnetzwerk, die eine minimale Anzahl Kanten enthalten.
Satz 6 (Edmonds und Karp, 1969) Die Laufzeit der FordFulkerson-Methode mit Breitensuche ist O(m2 n) = O(n5 ).
Zum Beweis dieses Satzes müssen wir zeigen, dass der
Algorithmus nach O(mn) Iterationen terminiert.
10
Berthold Vöcking, RWTH Aachen, 23. April 2008
Lemma 7 Von Iteration zu Iteration verringert sich die Distanz von q zu einem Knoten v ∈ V im Restnetzwerk nicht.
Beweis: Entlang des fv-Weges können durch die Erhöhung
des Flusses Kanten verschwinden und entstehen. Es gibt zwei
Arten von Veränderungen.
• Für jede Kante (u, v) auf dem fv-Weg verringert sich
restf (u, v). Kanten mit minimaler Restkapazität auf dem
fv-Weg, sogenannte Flaschenhalskanten, verschwinden
aus dem Restnetzwerk, denn ihre Restkapazität wird auf
0 gesetzt.
• Gleichzeitig erhöht sich für jede Kante (u, v) auf dem
fv-Weg die entgegengesetzte Restkapazität restf (v, u).
Falls restf (v, u) zuvor den Wert 0 hatte entsteht eine
neue Kante im Restnetzwerk.
Zum Zwecke des Beweises, verändern wir das Restnetzwerk
in zwei Schritten und fügen zunächst nacheinander alle neuen
Kanten hinzu und entfernen erst dann die Flaschenhalskanten.
11
Berthold Vöcking, RWTH Aachen, 23. April 2008
Hinzufügen von neuen Kanten:
Kann das Hinzufügen der neuen Kanten Distanzen von
der Quelle zu anderen Knoten verringern? – Nein!
Begründung: Eine Kante (v, u) wird nur dann eingefügt,
wenn die Kante in umgekehrter Richtung – also die
Kante (u, v) – auf einem flussvergrößerndem Weg liegt.
Flussvergrößernde Wege sind aber kürzeste Weg im
Restnetzwerk. Wenn u also die Distanz ℓ von der Quelle
hat, so hat v 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, müsste man eine gerichtetete Kante von
einem Knoten mit Distanz k, für irgendein k ≥ 0, zu
einem Knoten mit Distanz k + i, für irgendein i > 1,
einfügen.
Entfernen von Flaschenhalskanten:
Offensichtlich können Kantenlöschungen keine Distanzen verringern.
⊓
⊔ Lemma 7
12
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Beweis von Satz 6:
Der Algorithmus von Dinitz, 1970
• 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 zu v ist somit ℓ + 1.
• Die Kante (u, v) kann in einer späteren Iteration wieder
in das Restnetzwerk eingefügt werden und zwar wenn
der Fluss auf Kante (v, u) erhöht wird. Dazu muss (v, u)
auf einem kürzesten Weg liegen. Da die Distanz von q zu
v sich aber nicht verringert hat, muss die Distanz von q
zu u dann mindestens ℓ + 2 sein.
• Zwischen jedem Entfernen und Wiedereinfügen einer
Kante (u, v) erhöht sich die Distanz von der Quelle q
zum Knoten u also um den additiven Wert 2. Da die
maximale Distanz n − 1 ist, kann eine Kante also nicht
öfter als 12 n mal entfernt werden.
• In jeder Iteration wird mindestens eine Kante entfernt.
Es gibt bis zu 2m Kanten im Restnetzwerk. Also ist die
Anzahl der Iterationen höchstens 21 n · 2m = nm.
Idee: In jeder Iteration erhöhe den Fluss entlang von mehreren
kürzesten fv-Wegen.
Zu einem gegebenen Restnetzwerk Gf = (V, Ef ) ist das
Niveaunetzwerk G′f = (V, Ef′ ) wie folgt definiert. Für i ∈ N0
sei
Vi
= {v ∈ V | die Distanz von q nach v in Gf ist i} .
G′f enthält nur die Kanten von Niveau i zu Niveau i + 1, d.h,
Ef′
=
{(u, v) ∈ Ef | ∃i : u ∈ Vi , v ∈ Vi+1 } .
Als Kapazitäten für diese Kanten verwenden wir die Restkapazitäten des Restnetzwerkes Gf .
G′f kann aus Gf durch Breitensuche in Zeit O(m) berechnet
werden.
⊓
⊔ Satz 6
13
14
Berthold Vöcking, RWTH Aachen, 23. April 2008
Statt eines fv-Weges im Restnetzwerk Gf berechnet Dinitzs
Algorithmus einen sogenannten Sperrfluss“ im Niveaunetz”
werk G′f . Dieser Begriff ist folgendermaßen definiert:
• Sei φ ein Fluss im Niveaunetzwerk G′f .
• Eine Kante e ∈ Ef′ heisst saturiert, wenn φ(e) =
restf (e).
Berthold Vöcking, RWTH Aachen, 23. April 2008
Dinitzs Maximaler-Fluss-Algorithmus
1 ∀e ∈ E : f (e) = 0;
2 Solange es einen q-s Weg im Restnetzwerk gibt
3
berechne das Niveaunetzwerk G′f ;
4
berechne einen Sperrfluss φ in G′f ;
5
addiere“ φ zu f ;
”
6 Ausgabe von f .
• φ heisst Sperrfluss wenn jeder q-s-Weg in G′f mindestens
eine saturierte Kante enthält.
Intuitiv ist ein Sperrfluss also ein Fluss im Niveaunetzwerk,
der alle Wege verstopft.
(In den Übungen zeigen wir, dass der Sperrfluss nicht notwendigerweise ein maximaler Fluss im Niveaunetzwerk ist.)
15
• Beim Addieren der Flüsse in Schritt 5 ist zu beachten,
dass Flüsse auf entgegengesetzten Kanten subtrahiert
werden müssen.
• Die Korrektheit des Algorithmus folgt mittels des Min”
Cut=Max-Flow“-Theorems analog zur Ford-FulkersonMethode.
16
Berthold Vöcking, RWTH Aachen, 23. April 2008
Lemma 8 Dinitzs Algorithmus terminiert nach spätestens
n − 1 Sperrflussberechnungen.
Beweis: Behauptung: Die Länge des kürzesten Weges im
Restnetzwerk wächst von Iteration zu Iteration um mindestens
eine Kante.
• Sei ℓ die Entfernung zwischen q und s zu Beginn der
Iteration.
• Alle ursprünglichen Wege der Länge ℓ werden durch den
Sperrfluss zerstört. Aber es können neue Wege durch
neue erzeugte Kanten entstehen.
• Neue Kanten laufen jedoch entgegengesetzt zum Sperrfluss, also führen sie von Niveau i zu Niveau i − 1 für
irgendein i ≥ 1. Wege über solche Kanten haben Länge
mindestens ℓ + 2.
Berthold Vöcking, RWTH Aachen, 23. April 2008
Wir müssen uns nun nur noch überlegen, wie man eine Sperrflussberechnung effizient durchführen kann. Dazu greifen wir
auf ein Verfahren zurück, das ein wenig effizienter ist als das
ursprünglich von Dinitz vorgeschlagene Verfahren zur Sperrflussberechnung. 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 von O(n3 ) ergibt.
Gegeben sei ein Niveaunetzwerk G′f mit Restkapazitäten
restf (e). Wir beschreiben nun einen Algorithmus zur Berechnung eines Sperrflusses φ auf G′f . Für einen Knoten
v ∈ V bezeichne
• A(v) = {(v, u) ∈ Ef′ } die von v ausgehenden Kanten,
• E(v) = {(u, v) ∈ Ef′ } die in v eingehenden Kanten.
Somit gilt die Behauptung und der Satz folgt, weil die Länge
eines q-s-Weges mindestens 1 und höchstens n − 1 ist.
⊓
⊔
Wir starten mit φ = 0 und erhöhen den Fluss φ nach und
nach durch sogenannte Forward-Backward-Propagationen“
”
bis wir einen Sperrfluss im Niveaunetzwerk berechnet haben.
17
18
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Forward-Propagation:
Eine Propagationsphase besteht aus einer Forward-“ und
”
einer Backward-Propagation“.
”
• Sei v ∗ der Knoten mit kleinstem, positivem Potential.
Sei i das Niveau von v ∗ . Wir erzeugen pot(v ∗ ) Einheiten
zusätzlichen Flusses am Knoten v ∗ .
• Sei φ der berechnete Fluss zu Beginn einer solchen Propagationsphase.
• Dadurch erhalten wir einen Überschuss von pot(v ∗ )
Flusseinheiten am Knoten v ∗ . Diesen Überschuss schieben wir vorwärts entlang der Kanten in A(v ∗ ).
• Das Potential einer Kante e ist definiert als
• Jetzt erhalten wir einen Überschuss auf einigen der
Knoten auf Niveau i + 1. Diesen Überschuss verschieben
wir wiederum zu Knoten auf Niveau i + 2, usw. bis wir
die Senke erreichen.
pot(e) = restf (e) − φ(e) ,
entspricht also der noch ungenutzten Restkapazität der
Kante e im Niveaunetzwerk.
• Das Potential eines Knotens v ist definiert als


 X

X
pot(v) = min
pot(e),
pot(e)
.


e∈E(v)
19
• Da v ∗ der Knoten mit kleinstem Potential war, ist die
Entsorgung des Überschussflusses sichergestellt, weil
jeder Knoten genügend Potential hat, um den Überschuss
weiterzuleiten.
e∈A(v)
Backward Propagation: analog – ausgehend vom selben
Knoten v ∗ wird der Überschuss zur Quelle propagiert.
20
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Forward-Propagation im Detail:
Wir benutzen eine FIFO-Queue Q zur Verwaltung der Knoten
mit positivem Überschuss. Die Menge A(v) der von v ausgehenden Kanten im Niveaunetzwerk wird als Liste verwaltet.
next(A(v)) bezeichnet jeweils die nächste bisher noch nicht
betrachtete Kante. Ziel ist die Berechnung eines Flusses ψ mit
Wert pot(v ∗ ) vom Knoten v ∗ zur Senke s.
Algorithmus Forward-Propagation(v ∗ ):
01 setze U (v ∗ ) = pot(v ∗ ); /* initialer Überschuss */
02 für alle v 6= v ∗ setze U (v) = 0;
03 füge v ∗ in Q ein;
04 while Q 6= ∅ do
05
nimm Element aus Q und nenne es v;
06
while U (v) > 0 do
07
sei e = (v, u) = next(A(v));
08
setze ψ(e) = min{pot(e), U (v)};
09
setze U (v) = U (v) − ψ(e);
10
setze U (u) = U (u) + ψ(e);
11
falls u 6= s und u 6∈ Q füge u in Q ein;
12 Ausgabe von ψ.
Die Propagationsphasen werden solange wiederholt bis ein
Sperrfluss berechnet ist. Die Kanten- und Knotenpotentiale
werden dabei nach jeder Propagationsphase angepasst. Knoten und Kanten mit Potential 0 werden als saturiert 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 spätestens n − 1 Propagationsphasen
ist ein Sperrfluss berechnet, weil in jeder Phase mindestens
ein Knoten saturiert wird.
Der Fluss ψ wird dann zum Fluss φ addiert.
21
22
Berthold Vöcking, RWTH Aachen, 23. April 2008
Lemma 10 Eine Forward-Propagation kann in Zeit O(n + ℓ)
durchgeführt werden, wobei ℓ die Anzahl der neu saturierten
Kanten ist. (Backward-Propagation analog.)
Beweis: Die Verwendung der FIFO-Queue Q garantiert die
folgenden Eigenschaften.
1) Die Niveaus werden strikt nacheinander abgearbeitet.
Berthold Vöcking, RWTH Aachen, 23. April 2008
Satz 11 Durch Forward-Backward-Propagation kann man
einen Sperrfluss in Zeit O(m + n2 ) = O(n2 ) berechnen.
Dadurch erhält man einen Algorithmus zur Berechnung eines
maximalen Flusses mit Laufzeit O(n3 ).
Beweis von Satz 11
2) Dadurch wird jeder Knoten höchstens einmal aus der
Queue Q entnommen.
• Beobachtung 9 liefert, dass nur höchstens n − 1 Propagationsphasen zur Sperrflussberechnung nötig sind. Sei ℓi
die Anzahl der in der i-ten Propagationsphase gelöschten
Kanten, 1 ≤ i ≤ n − 1.
3) Für jeden entnommenen Knoten werden alle bis auf
maximal eine der betrachteten Kanten saturiert.
Pro Knoten v gibt es somit maximal eine Kante in A(v), die
betrachtet aber nicht saturiert wird.
Die Laufzeitkosten werden auf die Kanten umgelegt:
• Dann ergibt sich aus Lemma 10 die folgende Laufzeitabschätzung für die Sperrflussberechnung:
!
n−1
n−1
X
X
= O(n2 + m) .
O(n + ℓi ) = O n2 +
ℓi
i=1
i=1
• Für jede betrachtete Kante entstehen Kosten O(1).
• Da n − 1 Sperrflussberechnungen einen maximalen Fluss
liefern, folgt der Satz.
• Die Anzahl betrachteter, saturierter Kanten ist ℓ.
• Die Anzahl betrachteter, nicht saturierter Kanten ist
höchstens n.
Damit sind die Gesamtkosten O(n + ℓ).
23
⊓
⊔
⊓
⊔
24
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Das Min-Cost-Flow-Problem
Beim Min-Cost-Flow-Problem ist jeder Kante e ∈ E im
Flussnetzwerk neben der Kapazitätsfunktion c : E → N
zusätzlich eine Kostenfunktion ℓ : E → Z zugeordnet. Das
Netzwerk darf keine Kreise mit negativer Gewichtssumme
enthalten.
Sei f ein Fluss in G. Die Kosten von f sind definiert als
X
ℓ(e) f (e) .
ℓ(f ) =
e∈E
Gegeben sei ein Flussnetzwerk G = (V, E, q, s, c, ℓ) und eine
Zahl W ∈ N, wobei W nicht größer als der maximale Fluss
in G ist. Wir suchen einen kostenminimaler Fluss f ∗ mit Wert
W , d.h. es soll gelten w(f ∗ ) = W und
Wir greifen unserer Analyse vorweg und merken an, dass –
wie schon beim Max-Flow-Problem – für jede Instanz des
Min-Cost-Flow-Problems eine ganzzahlige optimale Lösung
existiert und unsere Algorithmen ohne weiteres Zutun eine
solche Lösung berechnen werden.
Für W = 1 entspricht das Min-Cost-Flow-Problem wegen
der Ganzzahligkeit dem Kürzeste-Wege-Problem.
Im Falle ℓ(e) = 0, für alle e ∈ E, ist ein beliebiger Fluss mit
Wert W gesucht. Dieses Problem kann ohne nennenswerten
Zeitverlust auf das Max-Flow-Problem reduziert werden.
(Wie?)
ℓ(f ∗ ) = min{ℓ(f ) | f ist Fluss in G mit w(f ) = W } .
25
26
Berthold Vöcking, RWTH Aachen, 23. April 2008
Der Cycle-Canceling-Algorithmus
Wir beschreiben einen Algorithmus für das Min-Cost-FlowProblem.
Gf = (V, Ef ) bezeichne wie schon zuvor das Restnetzwerk
bezüglich eines Flusses f . Die Kosten für eine Kante (u, v) ∈
Ef \ E seien durch ℓ((u, v)) = −ℓ((v, u)) definiert.
Eine Zirkulation f ′ in Gf ist eine Funktion f ′ : Ef → R+
0,
die die Flusserhaltung auf jedem Knoten aus V einhält und
die Restkapazitäten nicht übersteigt.
Somit entspricht eine Zirkulation einem Fluss, der im Gegensatz zu einem herkömmlichen Fluss“ auch auf Quelle und
”
Senke die Flusserhaltung einhält.
Analog zur Definition bei herkömmlichen Flüssen, sei der
Wert der Zirkulation über einen Schnitt (Q, S) definiert als
X
X
′
′
f ′ (v, u) .
f (u, v) −
f (Q, S) =
(v,u)∈E
v∈S,u∈Q
(u,v)∈E
u∈Q,v∈S
Berthold Vöcking, RWTH Aachen, 23. April 2008
Eine Zirkulation, die nur entlang eines einfachen Kreises im
Restnetzwerk fließt, wird als Kreisfluss bezeichnet. Für einen
Kreis K in Gf , sei f ′ (K) der größtmögliche Kreisfluss auf
K, der die Restkapazitäten nicht überschreitet. Wir sagen ein
P
Kreis K hat negative Kosten, wenn gilt e∈K ℓ(e) < 0.
Cycle-Canceling-Algorithmus:
1 Berechne einen beliebigen Fluss f mit Wert W ;
2 Solange Gf einen Kreis K mit neg. Kosten enthält
3
setze f := f + f ′ (K);
4 Ausgabe von f .
Da f ′ (K) eine Zirkulation ist, erhöht sich durch die Addition
von f ′ (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
Der Wert der Zirkulation ist ebenfalls analog definiert als
w(f ′ ) = f (q, V \ {q}). Aufgrund der Flusserhaltung an der
Quelle gilt w(f ′ ) = 0. Per Induktion folgt: Für jeden Schnitt
(Q, S) gilt f ′ (Q, S) = w(f ′ ) = 0.
ℓ(f + f ′ (K)) = ℓ(f ) + ℓ(f ′ (K)) < ℓ(f ) ,
P
da ℓ(f ′ (K)) = f ′ (a)· e∈K ℓ(e) < 0, wobei a eine beliebige
Kante aus K bezeichnet.
27
28
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Lemma 12 Wenn f nicht kostenminimal ist, dann gibt es
einen Kreis K mit negativen Kosten in Gf .
Beweis:
Übungsaufgabe: Zeige, dass jede Zirkulation f ′ , die M viele
Kanten benutzt, in höchstens M viele Kreisflüsse zerlegt
werden kann, d.h. f ′ besteht aus der Addition von höchstens
M Kreisflüssen.
Sei f ein Fluss, der nicht kostenminimal ist, und sei f ∗
ein kostenminimimaler Fluss, d.h. ℓ(f ∗ ) < ℓ(f ). Der Fluss
f ∗ −f erfüllt die Flusserhaltung auf allen Knoten, ist also eine
Zirkulation auf den maximal 2m Kanten des Restnetzwerkes
Gf und kann somit in M ≤ 2m viele Kreisflüsse f1 , . . . , fM
zerlegt werden. Es gilt f ∗ − f = f1 + · · · + fM und somit
ℓ(f ∗ ) − ℓ(f ) = ℓ(f1 ) + · · · + ℓ(fM ). Aus ℓ(f ∗ ) − ℓ(f ) < 0
folgt nun
ℓ(f1 ) + · · · + ℓ(fM ) < 0 .
Aus dem Lemma und den vorhergehenden Überlegungen
folgt
Satz 13 Ein Fluss f ist kostenminimal genau dann, wenn Gf
keinen Kreis mit negativen Kosten enthält.
Damit ist die Korrektheit des Cycle-Canceling-Algorithmus
nachgewiesen. Die Laufzeit des Cycle-Canceling-Algorithmus
lässt sich im Allgemeinen wieder nur pseudopolynomiell in
C, der Summe der Kapazitäten, beschränken.
Wie schon bei der Ford-Fulkerson-Methode kann man aber
eine polynomielle Laufzeitschranke erhalten, wenn man die
aufzuaddierenden Flüsse – in diesem Fall die Kreise mit
negativen Kosten – geschickt wählt.
Wenn nun keiner der diesen M Kreisflüssen zugrunde liegenden Kreise negative Kosten hätte, so wäre aber ℓ(f1 ) + · · · +
ℓ(fM ) ≥ 0. Also gibt es mindestens einen Kreis in Gf mit
negativen Kosten.
⊓
⊔
29
30
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Anzahl der Phasen:
Der Min-Mean-Cycle-Canceling-Algorithmus
Sei T die Anzahl der Phasen. Sei µ0 der Wert von µ zu Beginn
der ersten Phase und, für 1 ≤ t ≤ T , sei µt der Wert von µ zu
Ende der t-ten Phase.
Der Min-Mean-Cycle-Canceling-Algorithmus wählt in jeder
Iteration einen Kreis K aus Gf , der die durchschnittlichen
Kantenkosten (mean cost)
P
ℓ(e)
ℓ(K)
ℓ̄(K) =
= e∈K
|K|
|K|
Für 1 ≤ t ≤ T − 1 folgt aus der Definition der Phasen
1
µt−1
µt ≤ 1 −
(1)
µt−1 ≤ 1/n .
n
e
minimiert.
Zu Beginn des Algorithmus ist µ durch den maximalen
Absolutbetrag aller Kantenkosten, das wir mit L bezeichnen,
nach oben beschränkt. Es gilt somit µ0 ≤ L. (2)
K wird als Min-Mean-Cycle bezeichnet. Sei µ(f ) = −ℓ̄(K).
Beachte, wenn K ein Kreis mit negativen Kosten ist, so ist
ℓ̄(K) negativ und somit µ(f ) positiv.
Für die Laufzeitanalyse zerlegen wir die Folge der Iterationen
des Algorithmus in Phasen. Sei f der Fluss zu Beginn einer
Phase. Die Phase endet nach der ersten Iteration in der ein
Fluss g mit µ(g) ≤ (1 − n1 )µ(f ) oder µ(g) ≤ 0 berechnet
wird. Im letzteren Fall enthält Gg keinen Kreis mit negativen
Kosten und die Berechnung terminiert. Ansonsten folgt die
nächste Phase.
Die letzte Abschätzung erfolgt dabei aus der allgemeingültigen Ungleichung 1 − x ≤ e−x mit x = n1 .
Der Algorithmus terminiert, wenn zum Ende einer Phase die
Bedingung µ ≤ 0 erfüllt ist. Am Ende von Phase T − 1 gilt
somit noch µ > 0. Aufgrund der Ganzzahligkeit der Kosten
kann µ nicht im Interval (0, n1 ) liegen. (Warum?) Am Ende
von Phase T − 1 gilt somit µ ≥ n1 , d.h. µT −1 ≥ n1 . (3)
Aus den Ungleichungen (1), (2) und (3) folgt
T − 1 ≤ loge1/n (nL) =
ln(nL)
= n ln(nL) ,
ln(e1/n )
und somit terminiert der Algorithmus nach T ≤ n ln(nL) + 1
Phasen.
31
32
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Anzahl der Iterationen je Phase:
Sei f der initiale Fluss zu Beginn einer Phase. Wir zeigen,
dass der Algorithmus nach m Iterationen terminiert oder
nach spätestens m − 1 Iterationen wird ein Fluss g mit
µ(g) ≤ (1 − n1 )µ(f ) berechnet. Eine Phase dauert somit
höchstens m Iterationen. Wir treffen zunächst die folgende
vereinfachende Annahme.
Annahme 14 Für alle Kanten e ∈ Gf gelte ℓ(e) ≥ −µ(f ).
Wir unterscheiden Iterationen vom Typ 1 in denen der MinMean-Cycle jeweils nur Kanten mit negativen Kosten enthält
und Iterationen vom Typ 2 in denen der Min-Mean-Cycle
mindestens eine Kante mit positiven Kosten enthält.
In jeder Typ-1-Iteration wird mindestens eine Kante mit negativen Kosten saturiert und aus dem Restnetzwerk entfernt.
Ferner verlaufen alle möglicherweise neu entstehenden Kanten entgegengesetzt zu den Kanten mit negativen Kosten und
haben somit selbst positive Kosten. Spätestens nach m konsekutiven Typ-1-Iterationen terminiert der Algorithmus somit,
weil das Restnetzwerk dann nur noch Kreise mit positiven
Kosten enthält.
33
Wenn die Phase länger als m Iterationen dauert, folgt nach
spätestens m − 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
hinzugefügt haben, gilt weiterhin unsere Annahme, d.h.
ℓ(e) ≥ −µ(f ) bzw. −ℓ(e) ≤ µ(f ) für alle Kanten e ∈ Gg .
Sei K der Min-Mean-Cycle in g und H ⊆ K die Menge der
Kanten mit negativen Kosten aus K. Es gilt
X −ℓ(e)
X −ℓ(e)
µ(f )
µ(g) =
≤
≤ |H| ·
,
|K|
|K|
|K|
e∈K
e∈H
weibei die letzte Abschätzung aus Annahme 14 folgt. Aus
|H| ≤ |K| − 1 folgt nun |H|/|K| ≤ 1 − 1/|K| ≤ 1 − 1/n
und somit µ(g) ≤ (1 − n1 )µ(f ).
Die Phase endet also sobald der Fluss g berechnet ist und
damit noch vor der ersten Typ-2-Iteration!
Wenn Annahme 14 zu Beginn einer Phase hält, so gibt es also
keine Typ-2-Iterationen in der Phase und die Phase endet nach
spätestens m vielen Typ-1-Iterationen.
34
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Annahme 14 sieht sehr restriktiv aus, insbesondere vor dem
Hintergrund der vorhergehenden Analyse. Wir zeigen aber
nun, dass wir diese Annahme erreichen können, indem wir
die Kostenfunktion ℓ auf geeignete Art und Weise verändern,
ohne dabei den Ablauf des Algorithmus zu beeinflussen.
Lemma 15 Im Restnetzwerk Gf = (V, Ef ) gelte ℓ̄(K) ≥
−µ für jeden Kreis K. Dann gibt es eine Funktion p : V → Z
mit der Eigenschaft ℓ′ (e) = ℓ(e) − p(v) + p(u) ≥ −µ für jede
Kante e ∈ Ef .
Sei p : V → Z eine beliebige Funktion, die jedem Knoten
einen Wert zuweist, ein sogenanntes Potential. Wir setzen
ℓ′ (e) = ℓ(e) − p(v) + p(u) für jede Kante e = (u, v).
Beachte, für ē = (v, u) gilt
Beweis:
ℓ′ (ē) = ℓ(ē) − p(u) + p(v)
= −ℓ(e) − p(u) + p(v) = −ℓ′ (e) .
Wir beobachten, dass die Potentiale die Kostensumme auf
Kreisen nicht beeinflussen, da jeder Potentialwert einmal mit
positivem und einmal mit negativem Vorzeichen aufsummiert
wird, d.h. für jeden Kreis K gilt ℓ(K) = ℓ′ (K).
Die Potentiale haben somit keine Auswirkungen auf den Ablauf des Algorithmus. Um Annahme 14 in der vorhergenden
Analyse zu erreichen, können wir also beliebige Potentiale
verwenden, um die Kostenfunktion zu Beginn einer Phase
geeignet zu manipulieren.
Das folgende Lemma besagt, dass es tatsächlich Potentiale
gibt, die es erlauben, Annahme 14 zu erreichen.
35
Für jede Kante e ∈ Ef definiere ein Kantengewicht w(e) =
ℓ(e) + µ. Für jeden Knoten v ∈ V definiere nun p(v) als die
Länge (= Gewicht) eines kürzesten Kantenzuges (d.h. Pfades
mit beliebigen Wiederholungen von Knoten und Kanten) in
Gf , der von einem beliebigen Knoten zum Knoten v in Gf
führt. Dieser Wert ist wohldefiniert, weil keine Kreise mit
negativem Gewicht in Gf existieren, denn aus ℓ̄(K) ≥ −µ
folgt w(K) ≥ 0 für jeden Kreis K.
Die Definition der Potentiale garantiert uns die folgende
Eigenschaft: Für jede Kante e = (u, v) gilt p(v) ≤ p(u) +
w(u, v), denn der kürzeste Weg, der in v endet, kann nicht
länger als der kürzeste Weg sein, der zu u führt und über die
Kante (u, v) fortgesetzt wird. Es folgt
ℓ′ (e) = ℓ(e) − p(v) + p(u)
= w(e) − p(v) + p(u) − µ ≥ −µ .
⊓
⊔
36
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Beweis von Lemma 16
Laufzeit pro Iteration:
Wir zeigen nun wie man einen Min-Mean-Cycle im Restnetzwerk in Zeit O(nm) berechnen kann (Karp, 1978).
Für k = 0, 1, . . . , n und v ∈ V sei dk (v) die Länge (=Kosten)
eines kürzesten Kantenzuges mit genau k Kanten, der bei v
endet. Es gilt d0 (v) = 0 und
dk+1 (v) =
min
e=(u,v)∈E
(dk (u) + ℓ(e)) .
Alle dk (v)-Werte können somit durch dynamische Programmieren in Zeit O(nm) berechnet werden.
Lemma 16 Der Wert ℓ̄(K) des Min-Mean-Cycles in G ist
dn (v) − dj (v)
n−1
α = min max
v∈V j=0
n−j
37
Sei K ein Min-Mean-Cycle. Wenn wir alle Kantenkosten
um den gleichen additiven Betrag ∆ erhöhen, so ist K unverändert ein Min-Mean-Cycle aber sein Wert würde sich um
∆ erhöhen. Beachte, dass auch α sich genau um ∆ erhöhen
würde. (Warum?) Deshalb können wir die Kantenkosten um
einen beliebigen additiven Betrag ∆ verschieben und somit o.B.d.A. annehmen, dass ℓ̄(K) = 0 gilt. Unter dieser
Annahme müssen wir zeigen, es gilt auch α = 0.
Betrachte dazu einen beliebigen Knoten v. Sei P ein Kantenzug aus n Kanten, der bei v endet und die Länge dn (v) hat.
Weil das Netzwerk nur n Knoten enthält, muss P einen Kreis
enthalten. Sei C dieser Kreis und P ′ der Kantenzug, den wir
enthalten, wenn wir C aus P entfernen. Sei j die Anzahl
Kanten in P ′ und n − j die Anzahl Kanten in C. Es gilt nun
dn (v) = ℓ(P ) = ℓ(C) + ℓ(P ′ ) ≥ ℓ(P ′ ) ≥ dj (v) ,
da ℓ(C) ≥ 0. Somit existiert für jeden Knoten v ein j ∈
{1, . . . , n − 1} mit der Eigenschaft dn (v) ≥ dj (v). Hieraus
folgt α ≥ 0.
38
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Tafelbild:
Wir müssen nun also nur noch zeigen, dass auch α ≤ 0 gilt.
Dazu werden wir zeigen, dass es einen Knoten w mit der
Eigenschaft dn (w) ≤ dj (w) für alle j ∈ {0, . . . , n − 1} gibt.
Zu diesem Zweck betrachte die folgende Situation:
• Sei v ein Knoten des Min-Mean-Cycle K.
• Sei P ein kürzester unter allen Kantenzügen beliebiger
Länge, die am Knoten v enden. O.B.d.A. enthält P keinen
Kreis, da es keine Kreise negativer Länge gibt. Sei p < n
die Anzahl Kanten in P .
• Sei w derjenige Knoten, den wir erreichen, wenn wir K
von v ausgehend entlang von n−p Kanten folgen. Diesen
Kantenzug bezeichnen wir mit Q.
• Sei R der Weg von w zu v entlang von K, und sei r die
Anzahl Kanten dieses Weges.
• Sei nun j ∈ {0, . . . , n − 1} beliebig gewählt und S
ein Kantenzug minimaler Länge aus j Kanten, der am
Knoten w endet.
Aus der Definition der Kantenzüge 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 Kantenzug Q ◦ R die Länge 0, da er K
(möglicherweise mehrfach) umläuft und ℓ(K) = 0 gilt.
Somit gilt, wie gefordert, dn (w) ≤ dj (w).
39
40
⊓
⊔
Berthold Vöcking, RWTH Aachen, 23. April 2008
Berthold Vöcking, RWTH Aachen, 23. April 2008
Gesamtlaufzeit:
Der Algorihmus zur Bestimmung des Min-Mean-Cycles
arbeitet nun folgendermaßen:
• Berechne die dk (v)-Werte und bestimme α, also den
Wert des Min-Mean-Cycles.
• Erhöhe alle Kantenkosten um den additiven Term α, so
dass der Wert des Min-Mean-Cycles nun gleich 0 ist.
Der Algorithmus benötigt höchstens n log(nL) + 1 Phasen,
die jeweils höchstens m Iterationen benötigen, die jeweils
Laufzeit O(mn) haben. L bezeichnet dabei das Maximum der
Absolutwerte der Kantenkosten. Es folgt
Satz 17 Der Mean-Cycle-Canceling-Algorithmus hat eine
Laufzeit von O(m2 n2 log(nL)).
• Transformiere die Kantenkosten wie in Lemma 15 beschrieben. Die benötigten 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.
Diese Abschätzung der Laufzeit ist zwar polynomiell in der
Eingabelänge beschränkt, aber man spricht von einer schwach
polynomiellen Schranke, da die Größe der Eingabezahlen,
wenngleich nur logarithmisch, in die Abschätzung eingeht.
Tatsächlich lässt sich auch eine stark polynomielle Laufzeitschranke herleiten.
• Streiche alle Kanten mit Kosten größer als 0 aus dem
Graphen und suche den Min-Mean-Cycle mittels Tiefensuche unter den verbleibenden Kanten.
Satz 18 Der Mean-Cycle-Canceling-Algorithmus hat eine
Laufzeit von O(m3 n2 log n).
Auf die Präsentation des Beweises dieses Satzes verzichten
wir an dieser Stelle.
41
42
Herunterladen