Flüsse, Schnitte, Bipartite Graphen

Werbung
Flüsse, Schnitte, Bipartite Graphen
Sebastian Hahn
4. Juni 2013
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
1 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
2 / 48
Netzwerk N
Ziel: Material durch Netzwerk transportieren
Definition
N = (G , u, s, t) mit
G = (V , E ) gerichteter Graph
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
3 / 48
Netzwerk N
Ziel: Material durch Netzwerk transportieren
Definition
N = (G , u, s, t) mit
G = (V , E ) gerichteter Graph
Kapazitätsfunktion u : E → N+ weist jeder Kante e ∈ E einen
ganzzahligen, nichtnegativen Wert zu
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
3 / 48
Netzwerk N
Ziel: Material durch Netzwerk transportieren
Definition
N = (G , u, s, t) mit
G = (V , E ) gerichteter Graph
Kapazitätsfunktion u : E → N+ weist jeder Kante e ∈ E einen
ganzzahligen, nichtnegativen Wert zu
Quelle s (unendliche Produktion)
Senke t (unendlicher Konsum)
Kapazität als Einheiten pro Zeitschritt
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
3 / 48
Mate(rial)transport zur OHM
Amsterdam
Frankfurt v
1
12
16
Erlangen
s
v3
4
20
t
7
9
13
v2
Bielefeld
14
v4
Alkmaar
4
Emden
Kantengewichte beschreiben freie Ladekapazitäten
Es gibt keine Zwischenlager
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
4 / 48
Fluss f in einem Netzwerk N
Definition
f : E → N+ weist jeder Kante e ∈ E einen
ganzzahligen, nichtnegativen Flusswert zu
∀e ∈ E : f (e) ≤ u(e)
X
X
∀v ∈ V \ {s, t} :
f (e) =
f (e)
e=(x,v )∈E
x∈V
e=(v ,x)∈E
x∈V
"Jede Kante hat eine Kapazitätsfunktion"
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
5 / 48
Fluss f in einem Netzwerk N
Definition
f : E → N+ weist jeder Kante e ∈ E einen
ganzzahligen, nichtnegativen Flusswert zu
∀e ∈ E : f (e) ≤ u(e)
X
X
∀v ∈ V \ {s, t} :
f (e) =
f (e)
e=(x,v )∈E
x∈V
e=(v ,x)∈E
x∈V
"Der Fluss auf einer Kante ist nie größer als die Kapazität
der Kante"
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
5 / 48
Fluss f in einem Netzwerk N
Definition
f : E → N+ weist jeder Kante e ∈ E einen
ganzzahligen, nichtnegativen Flusswert zu
∀e ∈ E : f (e) ≤ u(e)
X
X
∀v ∈ V \ {s, t} :
f (e) =
f (e)
e=(x,v )∈E
x∈V
e=(v ,x)∈E
x∈V
"Der Fluss in einen Knoten ist gleich dem Fluss aus dem
Knoten heraus"
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
5 / 48
Mate(rial)-Fluss zur OHM
Amsterdam
Frankfurt v
1
12/12
11/16
Erlangen
s
v3
1/4
15/20
t
7/7
4/9
8/13
v2
v4
Alkmaar
4/4
11/14
Bielefeld
Emden
Fluss von 19 Einheiten Richtung Alkmaar
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
6 / 48
Mate(rial)-Fluss zur OHM
Amsterdam
Frankfurt v
1
12/12
11/16
Erlangen
s
v3
1/4
15/20
t
7/7
4/9
8/13
v2
v4
Alkmaar
4/4
11/14
Bielefeld
Emden
Fluss von 19 Einheiten Richtung Alkmaar
Frage: Geht da noch was?
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
6 / 48
Maximaler Fluss
Häufiges Ziel: Flussfunktion so einstellen, dass Gesamtfluss
maximal
Wasser in Wasserleitungen
Menschen auf dem Weg in eine Halle
Transport von Waren mit der Bahn
Gesamtfluss entspricht Produktion an Quelle bzw Konsum
an Senke
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
7 / 48
OHM
Amsterdam
Frankfurt v
1
12/12
11/16
Erlangen
s
v3
1/4
19/20
t
7/7
0/9
12/13
v2
v4
Alkmaar
4/4
11/14
Bielefeld
Emden
Jetzt: Fluss von 23 Einheiten Richtung Alkmaar
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
8 / 48
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12/12
11/16
15/20
s
1/4
t
7/7
4/9
8/13
4/4
11/14
Berechnungsaufwand O(e)
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12/12
15/20
5
11
s
1/4
t
7/7
4/9
8/13
4/4
11/14
Berechnungsaufwand O(e)
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12/12
15/20
5
11
s
1/4
t
7/7
4/9
5
4/4
8
11/14
Berechnungsaufwand O(e)
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
0
12
5
15/20
11
s
1/4
t
7/7
4/9
5
4/4
8
11/14
Berechnungsaufwand O(e)
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12
5
15/20
11
s
1/4
t
7/7
4/9
5
4/4
8
11/14
Berechnungsaufwand O(e)
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12
5
15/20
11
s
3
t
7/7
1
4/9
5
4/4
8
11/14
Berechnungsaufwand O(e)
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12
5
11
s
5
15
4
3
1
t
7
5
5
4
8
3
11
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
9 / 48
Residualgraph
Gibt an, wie ein Fluss verändert werden kann
Maximale lokale Flussveränderung als gerichtete
Kante in Gegenrichtung
12
5
11
s
5
15
4
3
1
t
7
5
5
4
8
3
11
Berechnungsaufwand O(e)
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
9 / 48
Erweiternde Pfade
Pfade, die Quelle und Senke verbinden
Gesamtfluss kann um das minimale Gewicht der auf
dem Pfad liegenden Kanten erhöht werden
Danach: Residualgraph aktualisieren
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
10 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
11 / 48
Ford-Fulkerson-Methode
Ziel: Maximalen Fluss bestimmen
∀e ∈ E setze f (e) = 0 mittels Rückkanten
Setze MaxFlow = 0
Tiefensuche nach erweiterndem Pfad p von s nach t
setze minc auf minimale Kapazität von p
setze MaxFlow auf MaxFlow + minc
∀e ∈ p
Erhöhe/vermindere f (e) um minc (Hin-/Rückkante)
vermindere u(e) um minc
falls u(e) = 0 : entferne Kante e
Gib MaxFlow zurück
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
12 / 48
Residualgraph:
12
16
20
s
4
t
7
13
9
4
14
Fluss: MaxFlow = 0
0/12
0/16
s
0/4
0/13
0/20
0/14
Sebastian Hahn
t
0/7
0/9
Flüsse, Schnitte, Bipartite Graphen
0/4
4. Juni 2013
13 / 48
Residualgraph:
8
12
4
4
s
20
4
4
t
7
13
5
4
10
4
Fluss: MaxFlow = 4
4/12
4/16
s
0/4
0/13
0/20
4/14
Sebastian Hahn
t
0/7
4/9
Flüsse, Schnitte, Bipartite Graphen
4/4
4. Juni 2013
13 / 48
Residualgraph:
4
12
4
4
s
16
8
4
4
t
7
9
5
4
10
4
4
Fluss: MaxFlow = 8
8/12
4/16
s
4/4
4/13
4/20
4/14
Sebastian Hahn
t
0/7
4/9
Flüsse, Schnitte, Bipartite Graphen
4/4
4. Juni 2013
13 / 48
Residualgraph:
4
8
12
8
8
8
s
4
t
7
9
9
4
10
4
4
Fluss: MaxFlow = 12
8/12
8/16
s
0/4
4/13
8/20
4/14
Sebastian Hahn
t
0/7
0/9
Flüsse, Schnitte, Bipartite Graphen
4/4
4. Juni 2013
13 / 48
Residualgraph:
4
8
5
8
15
8
s
4
t
7
2
9
4
3
11
11
Fluss: MaxFlow = 19
8/12
8/16
s
0/4
11/13
15/20
11/14
Sebastian Hahn
t
7/7
0/9
Flüsse, Schnitte, Bipartite Graphen
4/4
4. Juni 2013
13 / 48
Residualgraph:
4
1
12
19
12
s
4
t
7
2
9
4
3
11
11
Fluss: MaxFlow = 23
12/12
12/16
s
0/4
11/13
19/20
11/14
Sebastian Hahn
t
7/7
0/9
Flüsse, Schnitte, Bipartite Graphen
4/4
4. Juni 2013
13 / 48
Laufzeitüberlegungen
1000
1000
s
1000
Sebastian Hahn
t
1
1000
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
14 / 48
Laufzeitüberlegungen
1000
999
s
1000
Sebastian Hahn
t
1
999
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
14 / 48
Laufzeitüberlegungen
999
999
s
999
Sebastian Hahn
t
1
999
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
14 / 48
Laufzeitüberlegungen
999
999
s
t
1
999
999
Oooops
Kapazität nimmt pro Durchlauf nur um 1 ab
Laufzeit: O(MaxFlow ∗ |E |)
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
14 / 48
Laufzeitüberlegungen
999
999
s
t
1
999
999
Oooops
Kapazität nimmt pro Durchlauf nur um 1 ab
Laufzeit: O(MaxFlow ∗ |E |)
Tiefensuche manchmal schlecht, gibt es Alternativen?
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
14 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
15 / 48
Edmonds-Karp-Strategie
Einfacher Fix
Keine Tiefensuche mehr, dafür Breitensuche
Laufzeit im schlimmsten Fall: O(|V ||E |2 )
Genauso leicht zu implementieren (siehe Wiki)
Es wird immer der Pfad mit minimaler Kantenanzahl
ausgewählt
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
16 / 48
Beispiel Edmonds-Karp
1000
1000
s
t
1
1000
1000
MaxFlow = 0
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Beispiel Edmonds-Karp
1000
1000
s
t
1
1000
1000
MaxFlow = 0
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Beispiel Edmonds-Karp
1000
1000
s
t
1
1000
1000
MaxFlow = 0
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Beispiel Edmonds-Karp
1000
1000
s
t
1
1000
1000
MaxFlow = 0
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Beispiel Edmonds-Karp
0
0
s
t
1
1000
1000
MaxFlow = 1000
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Beispiel Edmonds-Karp
0
0
s
t
1
1000
1000
MaxFlow = 1000
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Beispiel Edmonds-Karp
0
0
s
t
1
0
0
MaxFlow = 2000
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
17 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
18 / 48
Partition einer Menge
Definition
A, B sind eine Partition von C ⇔
A ( C, B ( C
A∩B =∅
A∪B =C
Hier kurz: {A, B} ∈ Part(C )
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
19 / 48
Schnitt
Definition
{S, T } ∈ Part(V ), mit s ∈ S und t ∈ T
"Partition in zwei Teilmengen, so dass die Quelle in
der einen und die Senke in der anderen ist"
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
20 / 48
Schnitt
Definition
{S, T } ∈ Part(V ), mit s ∈ S und t ∈ T
"Partition in zwei Teilmengen, so dass die Quelle in
der einen und die Senke in der anderen ist"
X
u(e)
Kapazität des Schnitts =
e=(a,b)∈E
a∈S∧b∈T
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
20 / 48
Schnitt
Definition
{S, T } ∈ Part(V ), mit s ∈ S und t ∈ T
"Partition in zwei Teilmengen, so dass die Quelle in
der einen und die Senke in der anderen ist"
X
u(e)
Kapazität des Schnitts =
e=(a,b)∈E
a∈S∧b∈T
Fluss des Schnitts =
X
f (e) −
e=(a,b)∈E
a∈S∧b∈T
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
X
f (e)
e=(a,b)∈E
a∈S∧b∈T
4. Juni 2013
20 / 48
Beispielschnitt
12/12
15/20
11/16
s
1/4
t
7/7
4/9
8/13
4/4
11/14
Kapazität: 16 + 4 + 7 + 4 = 31
Fluss: 11 + 1 + 7 + 4 − 4 = 19
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
21 / 48
Eigenschaften von Schnitten
Fluss für beliebigen Schnitt = Fluss durch das
Gesamtnetzwerk
Betrag des Flusses ist von oben beschränkt durch
Kapazität jedes Schnittes
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
22 / 48
Eigenschaften von Schnitten
Fluss für beliebigen Schnitt = Fluss durch das
Gesamtnetzwerk
Betrag des Flusses ist von oben beschränkt durch
Kapazität jedes Schnittes
Also auch: Betrag des Flusses ist von oben
beschränkt durch Kapazität des minimalen Schnittes
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
22 / 48
Eigenschaften von Schnitten
Fluss für beliebigen Schnitt = Fluss durch das
Gesamtnetzwerk
Betrag des Flusses ist von oben beschränkt durch
Kapazität jedes Schnittes
Also auch: Betrag des Flusses ist von oben
beschränkt durch Kapazität des minimalen Schnittes
Entfernen der Kanten im Schnitt mit minimaler
Kapazität trennt s und t mit minimalen Kosten
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
22 / 48
Max-Flow-Min-Cut-Theorem
Für Fluss f in einem Netzwerk N sind äquivalent:
f ist maximaler Fluss in N
Residualgraph für f und N hat keine erweiternden Pfade
Es existiert ein Schnitt von N mit Kapazität |f |
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
23 / 48
Max-Flow-Min-Cut-Theorem
Für Fluss f in einem Netzwerk N sind äquivalent:
f ist maximaler Fluss in N
Residualgraph für f und N hat keine erweiternden Pfade
Es existiert ein Schnitt von N mit Kapazität |f |
Daraus folgt: |f | ist die Kapazität des minimalen
Schnitts von N
Max-Flow = Min-Cut (Beweis siehe Cormen)
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
23 / 48
Minimalen Schnitt finden
Wenn Algorithmus für maximalen Fluss beendet:
Alle im Residualgraphen von s aus erreichbaren
Knoten bilden S
Alle anderen Knoten bilden T
Minimaler Schnitt, da die Kapazität voll ausgeschöpft
ist
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
24 / 48
Residualgraph:
4
1
12
19
12
s
4
t
7
2
9
4
3
11
11
Fluss: Kapazität = Fluss = 23
12/12
12/16
s
0/4
11/13
19/20
11/14
Sebastian Hahn
t
7/7
0/9
Flüsse, Schnitte, Bipartite Graphen
4/4
4. Juni 2013
25 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
26 / 48
Reduktionen
Problem
Netzwerke oft in ungeeigneter Form. . .
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
27 / 48
Reduktionen
Problem
Netzwerke oft in ungeeigneter Form. . .
. . . aber man kann sie oft transformieren
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
27 / 48
Reduktionen
Problem
Netzwerke oft in ungeeigneter Form. . .
. . . aber man kann sie oft transformieren
Typisch
Ungerichtete Kanten
Quelle oder Senke haben keine unendliche Kapazität
Die Knoten haben auch Gewichte
Es gibt mehrere Quellen oder Senken
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
27 / 48
Ungerichtete Kanten
5
v1
v2
Lösung
Erzeuge neuen Knoten mit Indirektion
Führe zwei gerichtete Kanten ein
v
5
5
5
v1
Sebastian Hahn
5
v2
v1
Flüsse, Schnitte, Bipartite Graphen
v2
5
4. Juni 2013
28 / 48
s/t haben beschränkte Kapazität
5
s
5
5
t
Lösung
Führe zwei gewichtete Kanten ein
s
Sebastian Hahn
5
s’
5
t’
Flüsse, Schnitte, Bipartite Graphen
5
t
4. Juni 2013
29 / 48
Knoten haben auch Kapazitäten
s
10
5
10
t
Lösung
Führe neuen Knoten ein und verbinde diesen mit
gewichteter Kante
s
Sebastian Hahn
10
a
5
b
Flüsse, Schnitte, Bipartite Graphen
10
t
4. Juni 2013
30 / 48
Es gibt mehrere Quellen oder Senken
s1
s2
10
10
a
5
10
b
10
10
s3
t1
10
t2
t3
Lösung
Führe neuen s/t-Knoten ein
s1
∞
∞
s
∞
Sebastian Hahn
s2
s3
10
10
a
10
t1
10
5
10
b
10
Flüsse, Schnitte, Bipartite Graphen
t2
t3
∞
∞
t
∞
4. Juni 2013
31 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
32 / 48
Bipartiter Graph
Definition:
Ungerichteter Graph G = (V , E ) heißt bipartit, wenn:
∃{A, B} ∈ Part(V ), mit
∀{u, v } ∈ E : (u ∈ A ∧ v ∈ B) ∨ (u ∈ B ∧ v ∈ A)
"Jede Kante verbindet einen Knoten aus A mit einem
Knoten aus B"
Zum Beispiel: Studenten und Tutoren, Tanzpaare,
Schachbretter
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
33 / 48
Bipartiter Graph: Beispiel
Sebastian Hahn
L1
V1
L2
V2
L3
V3
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
34 / 48
Bipartites Matching
Matching: Kantenauswahl, so dass jeder Knoten zu
maximal einer Kante inzident ist
Anzahl der Kanten maximal: maximales bipartites
Matching
Damit kann man ausrechnen, wieviele Kanten man
sparen kann
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
35 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
36 / 48
Beispielaufgabe: Klausur
Folgende Situation:
Klausur muss wiederholt werden wegen Feueralarm
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
37 / 48
Beispielaufgabe: Klausur
Folgende Situation:
Klausur muss wiederholt werden wegen Feueralarm
Es gibt eine Facebookseite, auf der sich Studenten als
abschreibewillig outen
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
37 / 48
Beispielaufgabe: Klausur
Folgende Situation:
Klausur muss wiederholt werden wegen Feueralarm
Es gibt eine Facebookseite, auf der sich Studenten als
abschreibewillig outen
Du musst herausfinden, ob genügend Aufsichtskräfte
da sind um Betrug zu bemerken
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
37 / 48
Beispielaufgabe: Klausur
Folgende Situation:
Klausur muss wiederholt werden wegen Feueralarm
Es gibt eine Facebookseite, auf der sich Studenten als
abschreibewillig outen
Du musst herausfinden, ob genügend Aufsichtskräfte
da sind um Betrug zu bemerken
Jede Aufsichtskraft kann genau zwei direkt
nebeneinander oder hintereinander sitzende
Studenten überwachen
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
37 / 48
Beispielaufgabe: Klausur
Folgende Situation:
Klausur muss wiederholt werden wegen Feueralarm
Es gibt eine Facebookseite, auf der sich Studenten als
abschreibewillig outen
Du musst herausfinden, ob genügend Aufsichtskräfte
da sind um Betrug zu bemerken
Jede Aufsichtskraft kann genau zwei direkt
nebeneinander oder hintereinander sitzende
Studenten überwachen
Jeder potenzielle Abschreiber muss überwacht werden
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
37 / 48
Interpretation: bipartites Matching
Auf einem 2d-Grid Schachbrettmuster annehmen
Alle weißen Felder bilden die eine Teilmenge, alle
schwarzen die andere
Alle nicht-abschreibwilligen Studenten ignorieren
Neben- oder hintereinander sitzende Studenten haben
eine Kante zwischen sich
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
38 / 48
Visualisierung
⇒ Tafel
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
39 / 48
Interpretation als Flussproblem
Vorgehensweise
Füge Quelle hinzu für weiße Felder
Füge Senke hinzu für schwarze Felder
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
40 / 48
Interpretation als Flussproblem
Vorgehensweise
Füge Quelle hinzu für weiße Felder
Füge Senke hinzu für schwarze Felder
Ändere die ungerichteten Kanten in gerichtete
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
40 / 48
Interpretation als Flussproblem
Vorgehensweise
Füge Quelle hinzu für weiße Felder
Füge Senke hinzu für schwarze Felder
Ändere die ungerichteten Kanten in gerichtete
Jede Kante hat Gewicht 1
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
40 / 48
Interpretation als Flussproblem
Vorgehensweise
Füge Quelle hinzu für weiße Felder
Füge Senke hinzu für schwarze Felder
Ändere die ungerichteten Kanten in gerichtete
Jede Kante hat Gewicht 1
Maximalen Fluss ergibt maximales bipartites
Matching
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
40 / 48
Interpretation als Flussproblem
Vorgehensweise
Füge Quelle hinzu für weiße Felder
Füge Senke hinzu für schwarze Felder
Ändere die ungerichteten Kanten in gerichtete
Jede Kante hat Gewicht 1
Maximalen Fluss ergibt maximales bipartites
Matching
Lösung: Anzahl Abschreiber - Fluss
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
40 / 48
Interpretation als Flussproblem
Vorgehensweise
Füge Quelle hinzu für weiße Felder
Füge Senke hinzu für schwarze Felder
Ändere die ungerichteten Kanten in gerichtete
Jede Kante hat Gewicht 1
Maximalen Fluss ergibt maximales bipartites
Matching
Lösung: Anzahl Abschreiber - Fluss
Laufzeit schlimmster Fall: O(|V ||E |)
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
40 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
41 / 48
http://wallpaper-gallery.com/downloads/animals-penguins-wallpaper-0004.jpg
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
42 / 48
Wählerische Pinguine
Es gibt n weibliche und n männliche Pinguine
Pinguine haben eine Prioritätsliste für die Paarung
Pinguine leben monogam
Jeder möchte einen Partner mit möglichst hoher
Priorität
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
43 / 48
Wählerische Pinguine
Es gibt n weibliche und n männliche Pinguine
Pinguine haben eine Prioritätsliste für die Paarung
Pinguine leben monogam
Jeder möchte einen Partner mit möglichst hoher
Priorität
Lösung:
Stabiles Heiraten
Stabilität: Am Ende gibt es keine unglücklichen Paare
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
43 / 48
Algorithmus
Alle Pinguine sind ungebunden, mit Prioritätslisten p
Solange es ungebundenes Weibchen w gibt {
curM = take(p(w ))
Wenn curM ungebunden:
w und curM sind Paar
sonst: (curM ist Teil eines Paares)
curWforcurM = Weibchen von curM
Wenn curM w lieber mag als curWforcurM:
w und curM sind Paar
curWforcurM ist wieder ungebunden
}
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
44 / 48
Überblick
Flussnetzwerke
Ford-Fulkerson-Methode
Edmonds-Karp-Strategie
Dualität Maximaler Fluss / Minimaler Schnitt
Reduktionen
Bipartite Graphen
Anwendungen:
Maximales Bipartites Matching
Stabiles Heiraten
Zusammenfassung
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
45 / 48
Zusammenfassung
Viele Probleme lassen sich als Flussnetzwerke
modellieren
Maximaler Fluss entspricht minimalem Schnitt
Probleme auf bipartiten Graphen lassen sich mit
Flussnetzwerken lösen
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
46 / 48
Ausblick
Weitere Themen
Preflow-Push-Algorithmen (Komplexität je nach
Implementierung √
O(|V |3 ), O(|V |2 | E ), O(|V ||E | log (|V |2 /|E |))
Ungarische Methode (Maximales gewichtetes
bipartites Matching) (Komplexität: O(|V |3 )
Knoten/Kanten-Konnektivität
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
47 / 48
Quellen
HW-Vorträge der Vorjahre (Thomas Fersch 2010,
Christopher Dennl 2011)
"Introductions to Algorithms"(Cormen)
http://de.wikipedia.org/wiki/Flüsse_und_
Schnitte_in_Netzwerken
http:
//de.wikipedia.org/wiki/Bipartiter_Graph
http://de.wikipedia.org/wiki/Matching_
(Graphentheorie)
http://de.wikipedia.org/wiki/Königspinguin
https://ohm2013.org/wiki/FAQ
http://www.openstreetmap.org
Sebastian Hahn
Flüsse, Schnitte, Bipartite Graphen
4. Juni 2013
48 / 48
Herunterladen