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