Flüsse, Schnitte, bipartite Graphen

Werbung
Flüsse, Schnitte, bipartite Graphen
Michael Eischer
06. Juni 2012
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
1 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
2 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
3 / 48
Denitionen: Netzwerk
G = (V , E )
Kapazitätsfunktion c (u , v ) ∈ N gibt an, wie viel
Gerichteter Graph
durch eine Kante ieÿen kann
Jede Kante besitzt Kapazität c (u , v ) > 0, (u , v ) ∈ E
c (u , v ) = 0, (u , v ) ∈/ E
Besitzt eine Quelle
s
und eine Senke
t
Antiparallelität: Wenn es eine Kante von
u
gibt, darf keine Rückkante von
existieren
v
nach
u
nach
v
Jeder Knoten v liegt auf dem Weg von s nach t:
s
v
Michael Eischer
t
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
4 / 48
Denitionen: Netzwerk
Beispiel:
3
5
t
2
2
s
4
3
2
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
5 / 48
Denitionen: Fluss
Flussfunktion
f
gibt den Fluss über jede Kante an
Kapazitätsbeschränkung:
0 ≤ f (u , v ) ≤ c (u , v ) ∀u , v ∈ V
Flusserhaltung:
P∀u ∈ V \ {s , t } :
P
f (v , u ) = f (u , v )
v ∈V
v ∈V
Zuuss = Abuss, für alle Knoten auÿer Quelle und
Senke
Die Quelle und Senke können somit unendlich Fluss
produzieren oder
P konsumieren
Fluss: |f | =
f (s , v )
v ∈V
Maximaler Fluss: Fluss, dessen Betrag maximal ist
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
6 / 48
Denitionen: Fluss
2/3
1/2
3/5
t
2/2
s
4/
4
3
3/
2/2
Beschriftung der Kanten: Fluss / Kapazität
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
7 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
8 / 48
Maximaler Fluss: Restnetzwerk
Gerichteter Graph, dessen Kanten angeben, um wie
viel der Fluss maximal geändert werden kann
Zu jeder Kante
(u , v )
im ursprünglichen Netzwerk
folgende Kanten erstellen:
c 0 (u , v ) = c (u , v ) − f (u , v ) verbleibende Kapazität
c 0 (v , u ) = f (u , v ) möglicher Rückuss
Nicht vorhandene Kanten: c 0 (u , v ) = 0
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
9 / 48
Maximaler Fluss: Restnetzwerk
Graph:
2/3
1/2
3/5
t
2/2
s
4/
4
3
3/
2/2
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
10 / 48
Maximaler Fluss: Restnetzwerk
Restnetzwerk:
3
2
t
2
1
1
s
1
2
3
4
2
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
10 / 48
Maximaler Fluss: Erweiternder Pfad
3
2
t
2
1
1
s
1
2
3
4
2
Erweiternder Pfad: Pfad von
s
nach
t
Die Kante des Pfad im Restnetzwerk, mit der
minimalen Kapazität, begrenzt die Erhöhung des
Flusses
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
11 / 48
Maximaler Fluss: Erweiternder Pfad
3
2
t
2
1
1
s
1
2
3
4
2
Erweiternder Pfad: Pfad von
s
nach
t
Die Kante des Pfad im Restnetzwerk, mit der
minimalen Kapazität, begrenzt die Erhöhung des
Flusses
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
11 / 48
Maximaler Fluss
Wie bekommen wir einen maximalen Fluss?
3
5
t
2
2
s
4
3
2
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
12 / 48
Maximaler Fluss: Ford-Fulkerson
f
für alle Kanten
=0
1
Setze
2
Solange ein erweiternder Pfad
p
im Restnetzwerk
Gf
existiert:
erweitere
3
4
gib
f
f
entlang
p (mit minimaler Kapazität)
zurück
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
13 / 48
Maximaler Fluss: Ford-Fulkerson
Restnetzwerk
a
a
Michael Eischer
3
5
b
Flüsse, Schnitte, bipartite Graphen
t
2
c
4
c
s
2
0/2
0/2
t
2
3
0/
b
0/3
3
0/5
0/2
s
0/
4
Netzwerk
06. Juni 2012
14 / 48
Maximaler Fluss: Ford-Fulkerson
Restnetzwerk
a
a
Michael Eischer
3
5
b
Flüsse, Schnitte, bipartite Graphen
t
2
c
4
c
s
2
0/2
0/2
t
2
3
0/
b
0/3
3
0/5
0/2
s
0/
4
Netzwerk
06. Juni 2012
14 / 48
Maximaler Fluss: Ford-Fulkerson
Restnetzwerk
Michael Eischer
c
s
a
2
3
b
Flüsse, Schnitte, bipartite Graphen
t
2
c
4
0/2
0/2
t
3
2
3
0/
b
3/3
3
3/5
0/2
s
0/
4
a
2
Netzwerk
06. Juni 2012
14 / 48
Maximaler Fluss: Ford-Fulkerson
Restnetzwerk
Michael Eischer
c
s
a
2
3
b
Flüsse, Schnitte, bipartite Graphen
t
2
c
4
0/2
0/2
t
3
2
3
0/
b
3/3
3
3/5
0/2
s
0/
4
a
2
Netzwerk
06. Juni 2012
14 / 48
Maximaler Fluss: Ford-Fulkerson
Netzwerk
Restnetzwerk
a
Michael Eischer
s
1
2
2
3
2
2/2
0/2
c
t
2/
4
3
2/
b
3/3
a
b
Flüsse, Schnitte, bipartite Graphen
2
3/5
2/2
s
3
2
c
2
t
2
06. Juni 2012
14 / 48
Maximaler Fluss: Ford-Fulkerson
Netzwerk
Restnetzwerk
a
Michael Eischer
s
1
2
2
3
2
2/2
0/2
c
t
2/
4
3
2/
b
3/3
a
b
Flüsse, Schnitte, bipartite Graphen
2
3/5
2/2
s
3
2
c
2
t
2
06. Juni 2012
14 / 48
Maximaler Fluss: Ford-Fulkerson
Netzwerk
Restnetzwerk
a
a
2/2
3
5
1
2
2
s
b
t
2
c
4
c
t
4/
4
0/2
3
2/
b
3/3
2
5/5
2/2
s
Es gibt keine zusätzlichen erweiternden Pfade
Damit ist der maximale Fluss: 7
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
14 / 48
Schnitt: Denition
Aufteilung der Knoten in zwei Mengen
S
und
T,
s ∈ S und t ∈ T
PP
Kapazität: c (S , T ) =
c (u , v ) = Kapazität der
wobei
u ∈S v ∈T
geschnittenen Kanten, die von S nach T verlaufen
Fluss:
f (S , T ) =
Fluss von
S
nach
PP
u ∈S v ∈T
T
f (u , v ) −
PP
u ∈S v ∈T
f (v , u ) =
minus Rückuss
f (S , T ) = |f |, wobei auch gilt, dass |f | ≤ c (S , T )
Minimaler Schnitt: Schnitt mit minimaler Kapazität
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
15 / 48
Minimaler Schnitt: Beispiel
8/8
4/4
t
2/5
3/
8
5
1/
3/3
s
6/8
7
7/
6/7
Kapazität der Schnitts: 20 (kein minimaler Schnitt!)
Fluss über den Schnitt: 12 - 1 = 11
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
16 / 48
Minimaler Schnitt: Beispiel
8/8
4/4
t
2/5
3/
8
5
1/
3/3
s
6/8
7
7/
6/7
Kapazität der Schnitts: 11
Fluss über den Schnitt: 11
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
16 / 48
Min-Cut-Max-Flow-Theorem
Äquivalente Aussagen:
f
ist ein maximaler Fluss
Das Restnetzwerk enthält keinen erweiternden Pfad
Es gibt minimale Schnitte
S, T
für die
|f | = c (S , T )
gilt. D.h. die Kapazität eines Schnitts wird voll
ausgenutzt
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
17 / 48
Minimaler Schnitt: Konstruktion
1
Maximalen Fluss berechnen
2
Aufteilen in der Knoten in zwei Mengen:
Menge S =
{v | Knoten v von s aus im Restnetzwerk erreichbar}
Menge T = V \ S
Alle Kanten zwischen
S
und
T
sind voll ausgelastet,
somit ist die Aufteilung ein minimaler Schnitt
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
18 / 48
Minimaler Schnitt: Konstruktion
Netzwerk
Restnetzwerk
a
a
b
Michael Eischer
6/6
s
t
3
5
Flüsse, Schnitte, bipartite Graphen
7
7/7
c
8
1
3/8
1
1/
3/3
s
4
t
3
4/4
8
8/
b
6
c
06. Juni 2012
19 / 48
Minimaler Schnitt: Konstruktion
Netzwerk
Restnetzwerk
a
a
b
Michael Eischer
6/6
s
t
3
5
Flüsse, Schnitte, bipartite Graphen
7
7/7
c
8
1
3/8
1
1/
3/3
s
4
t
3
4/4
8
8/
b
6
c
06. Juni 2012
19 / 48
Minimaler Schnitt: Konstruktion
Netzwerk
Restnetzwerk
a
a
b
Michael Eischer
6/6
s
t
3
5
Flüsse, Schnitte, bipartite Graphen
7
7/7
c
8
1
3/8
1
1/
3/3
s
4
t
3
4/4
8
8/
b
6
c
06. Juni 2012
19 / 48
Minimaler Schnitt: Konstruktion
Netzwerk
Restnetzwerk
a
a
b
Michael Eischer
6/6
s
t
3
5
Flüsse, Schnitte, bipartite Graphen
7
7/7
c
8
1
3/8
1
1/
3/3
s
4
t
3
4/4
8
8/
b
6
c
06. Juni 2012
19 / 48
Minimaler Schnitt: Konstruktion
Netzwerk
Restnetzwerk
a
a
b
6/6
s
t
3
5
7
7/7
c
8
1
3/8
1
1/
3/3
s
4
t
3
4/4
8
8/
b
6
c
Minimaler Schnitt, mit Fluss und Kapazität 11
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
19 / 48
Maximaler Fluss: Ford-Fulkerson
Wieso funktioniert das?
Ford-Fulkerson: Der Fluss wird erhöht, solange ein
erweiternder Pfad existiert
Dabei erhöht jeder gefundene Pfad den Fluss um
mindestens 1
Min-Cut-Max-Flow-Theorem: Der Fluss ist maximal,
wenn kein erweiternder Pfad existiert
Somit gilt, dass der Algorithmus genau dann
abbricht, wenn der Fluss maximal ist
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
20 / 48
Maximaler Fluss: Laufzeit
Laufzeit wird durch Algorithmus zur Pfadsuche
bestimmt
Hier für Tiefensuche:
Der maximale Aufwand ist O (|f | · |E |)
Im schlimmsten Fall wird der Fluss pro Durchlauf nur um
1 erhöht
Pro Durchlauf müssen maximal alle Kanten und Knoten
betrachtet werden
Da jeder Knoten mindestens eine Kante hat, ist die
Laufzeit dafür O (|E |)
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
21 / 48
Maximaler Fluss: Worst-Case
a
0/1
0
0
Michael Eischer
b
0/1
0
t
0
0
0
0/1
s
100
100
Flüsse, Schnitte, bipartite Graphen
1
00
0/1
0/1
s
a
b
100
t
100
06. Juni 2012
22 / 48
Maximaler Fluss: Worst-Case
a
0/1
0
0
Michael Eischer
b
0/1
0
t
0
0
0
0/1
s
100
100
Flüsse, Schnitte, bipartite Graphen
1
00
0/1
0/1
s
a
b
100
t
100
06. Juni 2012
22 / 48
Maximaler Fluss: Worst-Case
00
1/1
1/1
s
0/1
0
0
Michael Eischer
b
0/1
0
t
0
0
0
1/1
s
1
99
100
Flüsse, Schnitte, bipartite Graphen
a
1
a
b
100
1
99
t
06. Juni 2012
22 / 48
Maximaler Fluss: Worst-Case
00
1/1
1/1
s
0/1
0
0
Michael Eischer
b
0/1
0
t
0
0
0
1/1
s
1
99
100
Flüsse, Schnitte, bipartite Graphen
a
1
a
b
100
1
99
t
06. Juni 2012
22 / 48
Maximaler Fluss: Worst-Case
a
1/1
0
0
Michael Eischer
b
1/1
0
t
0
0
0
1/1
s
Flüsse, Schnitte, bipartite Graphen
a
1
0/1
s
00
1/1
1
99
1
99
b
1
99
1
99
t
06. Juni 2012
22 / 48
Maximaler Fluss: Edmonds-Karp
Verwendet Breitensuche, um einen erweiternden Pfad
zu nden
Es wird immer mit dem Weg mit der geringsten
Kantenanzahl erweitert
Damit ergibt sich eine Laufzeit von
O (|V | · |E |2 )
Beweis: siehe Cormen
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
23 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
24 / 48
Reduktionen
Viele Probleme, die ein Flussproblem sind, liefern einen
Graphen, der nicht wirklich passt
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
25 / 48
Mehrere Quellen/Senken
s1
s2
s3
Michael Eischer
t1
t2
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
26 / 48
Mehrere Quellen/Senken
s1
s2
s3
s1
s
∞
∞
∞
s2
s3
t1
t2
t1
t2
∞
t
∞
Superquelle/-senke einfügen und mit Kanten
unendlicher Kapazität anbinden
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
26 / 48
Knotenkapazität
c
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
27 / 48
Knotenkapazität
c
c
Knoten mit Kapazität c durch zwei Knoten, die über
eine Kante mit Kapazität c verbunden sind, ersetzen
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
27 / 48
Produktion/Konsum beschränken
s
Michael Eischer
t
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
28 / 48
Produktion/Konsum beschränken
s
s
t
c
c
t
Knoten einfügen, dessen Kante die Produktion /
Konsum der Quelle / Senke beschränkt
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
28 / 48
Antiparallelität
c2
c1
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
29 / 48
Antiparallelität
c2
c2
c2
c1
c1
Extra Knoten einfügen, mit dem eine Kante
aufgebrochen wird
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
29 / 48
Ungerichtete Kanten
c
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
30 / 48
Ungerichtete Kanten
c
c
c
Ungerichtete Kanten durch zwei gerichtete ersetzen
und anschlieÿend die Antiparallelität sicherstellen
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
30 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
31 / 48
Bipartites Matching: Denition
Ein ungerichteter Graph heiÿt bipartit, wenn die
Knoten so in zwei Mengen aufgeteilt werden können,
dass die Kanten nur zwischen diesen verlaufen.
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
32 / 48
Bipartites Matching: Denition
Ein ungerichteter Graph heiÿt bipartit, wenn die
Knoten so in zwei Mengen aufgeteilt werden können,
dass die Kanten nur zwischen diesen verlaufen.
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
32 / 48
Bipartites Matching: Denition
Ein Matching ist eine Auswahl an Kanten, sodass
jeder Knoten zu maximal einer Kante inzident ist
Ein Matching ist maximal, wenn es eine maximale
Anzahl an Kanten enthält
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
33 / 48
Bipartites Matching: Denition
Ein Matching ist eine Auswahl an Kanten, sodass
jeder Knoten zu maximal einer Kante inzident ist
Ein Matching ist maximal, wenn es eine maximale
Anzahl an Kanten enthält
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
33 / 48
Bipartites Matching: Denition
Ein Matching ist eine Auswahl an Kanten, sodass
jeder Knoten zu maximal einer Kante inzident ist
Ein Matching ist maximal, wenn es eine maximale
Anzahl an Kanten enthält
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
33 / 48
Umwandlung zu Flussproblem
Quelle einfügen und mit der ersten Menge über
gerichtete Kanten verbinden
Senke einfügen und zweite Menge über gerichtete
Kanten mit Senke verbinden
Kanten zwischen den Mengen durch gerichtete
Kanten von der ersten zur zweiten Menge ersetzen
Alle Kanten haben die Kapazität 1
Der maximale Fluss auf dem Graphen ergibt das maximale
bipartite Matching
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
34 / 48
Beispielumwandlung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
35 / 48
Beispielumwandlung
s
Michael Eischer
t
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
35 / 48
Beispielumwandlung
s
1
1
Michael Eischer
1
1
1
1
1 1
Flüsse, Schnitte, bipartite Graphen
t
1
1
06. Juni 2012
35 / 48
Bipartites Matching: Laufzeit
O (|V | · |E |)
Maximaler Fluss |f | < |V |
Maximale Laufzeit
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
36 / 48
LKWs minimieren
Ein Transportunternehmen hat eine Liste von
Aufträgen bestehend aus Startort/Abfahrtszeit und
Zielort/Ankunftszeit
Die Transporter können an beliebigen Orten starten
und mehrere Aufträge übernehmen, wenn sie
rechtzeitig am jeweiligen Startort sind
Die Transporter können ihren Aufenthaltsort nur
durch eine Auftragsfahrt ändern
Wie viele LKW werden mindestens benötigt, um alle
Aufträge zu erfüllen?
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
37 / 48
LKWs minimieren
Um das Problem als Flussproblem lösen zu können,
muss es in ein Maximierungsproblem transformiert
werden
Statt wie viele LKWs werden benötigt?, fragt man
wie viele lassen sich einsparen?
Mit Anzahl Transporter = Anzahl Aufträge, werden
garantiert alle Aufträge erfüllt
Wenn zwei Aufträge nacheinander von einem
Transporter erfüllt werden können, spart man einen
LKW
Also muss die Anzahl der Auftragspaare, die ein
Transporter erledigt, maximiert werden
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
38 / 48
LKWs minimieren
Reduktion auf maximales bipartites Matching:
Unterteile jeden Auftrag in einen Abfahrts- und
Ankunftsknoten unterteilt
Die Ankunftsknoten werden mit den möglichen
anschlieÿenden Abfahrten verbunden
Berechne das maximale bipartite Matching
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
39 / 48
LKWs minimieren
Abfahrt
Ankunft
Erlangen 10:00
Nürnberg 12:00
Nürnberg 12:00
Erlangen 13:00
Fürth 11:00
Nürnberg 15:00
Michael Eischer
Nürnberg 13:00
Fürth 17:00
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
40 / 48
LKWs minimieren
Abfahrt
Ankunft
Erlangen 10:00
Nürnberg 12:00
Nürnberg 12:00
Erlangen 13:00
Fürth 11:00
Nürnberg 15:00
Michael Eischer
Nürnberg 13:00
Fürth 17:00
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
40 / 48
LKWs minimieren
Abfahrt
Ankunft
Erlangen 10:00
Nürnberg 12:00
Nürnberg 12:00
Erlangen 13:00
Fürth 11:00
Nürnberg 15:00
Nürnberg 13:00
Fürth 17:00
Maximales bipartites Matching ergibt, wie viele LKW
eingespart werden können
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
40 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
41 / 48
Knoten verbinden
Es ist eine Menge von Knoten gegeben, für die
bekannt ist, wie viele ein- und ausgehende Kanten
existieren
Es sollen nun die Kanten gefunden werden (Zwischen
zwei Knoten existiert maximal eine Kante)
Idee: Knoten in Eingangs- und Ausgangsknoten
aufsplitten
Kanten mit Kapazität 1 einfügen
Eingangs- und Ausgangsknoten mit Quelle/Senke
verbinden, wobei die Kapazität dem
Eingangs-/Ausgangsgrad entspricht
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
42 / 48
1
1
a
a0
b
b
0
c
c
0
d
d
0
a
1
s
2
Knoten verbinden
2
1
1
1
t
d
b
c
Ausgangsgrad: (2,1,1,1) (für a-d)
Eingangsgrad: (1,2,1,1)
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
43 / 48
1
1
a
a0
b
b
0
c
c
0
d
d
0
a
1
s
2
Knoten verbinden
2
t
1
1
1
d
b
c
Ausgangsgrad: (2,1,1,1) (für a-d)
Eingangsgrad: (1,2,1,1)
Je nach vorgegebenem Graph kann es auch mehrere
Lösungen geben
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
43 / 48
Min. Schnitt mit min. Kantenzahl
Reduktion:
Kapazität der Kanten mit
(|E | + 1)
multiplizieren
und anschlieÿend 1 addieren
Der minimale Schnitt im transformierten Graphen ist
ein minimaler Schnitt mit minimaler Kantenanzahl
Das
(|E | + 1)
verändert nichts an den möglichen
minimalen Flüssen. Da durch die
Kapazität eines Schnitts nur um
+1en
E
die maximale
erhöht werden
kann, entstehen keine neuen minimalen Schnitte.
Es bleiben nur die Schnitte mit minimaler
Kantenanzahl minimal. Jede Kante mehr erhöht die
Kapazität des Flusses, der somit nicht mehr minimal
ist.
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
44 / 48
Min. Schnitt mit min. Kantenzahl
Netzwerk
0/2
b
2/2
5/5
3
2/
Michael Eischer
s
2/2
3/3
t
c
4/
4
a
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
45 / 48
Min. Schnitt mit min. Kantenzahl
Transformiertes Netzwerk
a
t
17
17
c
33
25
Michael Eischer
b
25
17
41
s
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
45 / 48
Min. Schnitt mit min. Kantenzahl
Transformiertes Netzwerk
a
17/17
c
t
33
/3
3
0/1
7
5
/2
17
Michael Eischer
b
25/
25
17
16/
41
41/
s
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
45 / 48
Übersicht
1
Denitionen
Netzwerk
Fluss
2
Maximaler Fluss
Ford-Fulkerson
Minimaler Schnitt
Edmonds-Karp
3
Reduktionen
4
Bipartites Matching
5
Anwendungen
Knoten verbinden
Minimaler Schnitt mit minimaler Kantenzahl
6
Zusammenfassung
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
46 / 48
Zusammenfassung
Maximaler Fluss in Netzwerken mittels
Ford-Fulkerson-Methode mit Edmonds-Karp in
O (|V | · |E |2 ) berechenbar
Maximaler Fluss = minimaler Schnitt
Reduktion komplexer Probleme auf
Standardnetzwerke
Matchingprobleme lassen sich als Flussproblem lösen
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
47 / 48
Quellen
Introduction to Algorithms (Cormen)
Flüsse, Schnitte und bipartite Abbildungen 2010,
Thomas Fersch
Flüsse, Schnitte und bipartite Abbildungen 2011,
Christopher Dennl
http://www.topcoder.com/tc?module=Static
&d1=tutorials&d2=maxFlow2
Michael Eischer
Flüsse, Schnitte, bipartite Graphen
06. Juni 2012
48 / 48
Herunterladen