f - Universität Bern

Werbung
Datenstrukturen & Algorithmen
Matthias Zwicker
Universität Bern
Frühling 2010
Graphenalgorithmen
Maximaler Fluss
• Einleitung
• Flussnetzwerke
• Ford
Ford-Fulkerson
Fulkerson Methode
• Maximales bipartites Matching
2
Einleitung
• Gerichtete Graphen zur Modellierung von
Flussnetzwerken
• Modell: Material fliesst durch Röhrensystem von
Quelle zu Senke
Q
– Quelle produziert konstantes Materialvolumen pro Zeit
– Senke konsumiert konstantes Volumen pro Zeit
– „Fluss“ in Röhre ist Volumen pro Zeit, das verschoben
wird
• Beispiele
–
–
–
–
Flüssigkeit durch Röhren
Teile auf Fliessbändern
Strom in elektrischen Netzwerken
Information in Kommunikationsnetzwerken
3
Flussnetzwerke
• Modellierung mit gerichteten Graphen
• Kante: „Röhre“
Röhre“
– Gewisse maximale Kapazität von Einheiten pro
Zeit, die fliessen können
• Knoten: Verbindungspunkte
– Material darf sich nicht „stauen“
– „Fluss hinein“
hinein muss gleich „Fluss hinaus
hinaus“ sein
• Problem des maximalen Fluss
– G
Grösstmöglicher
ö t ö li h Fl
Fluss von Q
Quelle
ll zu SSenke,
k so
dass keine maximale Kapazität irgendeiner Kante
verletzt wird
4
Graphenalgorithmen
Maximaler Fluss
• Einleitung
• Flussnetzwerke
• Ford
Ford-Fulkerson
Fulkerson Methode
• Maximales bipartites Matching
5
Flussnetzwerke
• Gerichteter Graph G=(V,E)
• Jede Kante (u,v) hat Kapazität c(u,v)>=0
• Falls Kante (u,v)
(u v) nicht existiert,
existiert c(u,v)=0
c(u v) 0
• Quelle: ein Knoten s
• Senke: ein Knoten t
• Annahme: für jeden Knoten v gibt es einen
Pf d s à v à t
Pfad
6
Flussnetzwerke
w
x
s
t
y
z
7
Flussnetzwerke
Jede Kante (u,v) hat eine Kapazität c(u,v)
Ni ht eingezeichnete
Nicht
i
i h t K
Kanten
t h
haben
b iimplizit
li it c(u,v)=0
( ) 0
8
Flussnetzwerke
• Positiver Fluss: Eine Funktion p: V x V → R
– Weist jeder Kante einen Wert, d.h. positiven
Fluss, zu
• Kapazitätsbedingung
– Für
Fü alle
ll u,v ∈ V,
V 0 ≤ p(u,v)
( ) ≤ c(u,v)
( )
• Flusserhaltung
g
– „Fluss hinein gleich Fluss hinaus“
– Für
Fü alle
ll u ∈ V-{s,t},
V { } v∈ V p(v,u)
( ) = v∈ V p(u,v)
( )
– Äquivalent v∈ V p(v,u) - v∈ V p(u,v) = 0
9
Flussnetzwerke
Jede Kante ist annotiert mit
positivem Fluss/Kapazität, d.h. p(u,v)/c(u,v)
10
Gegenseitige Auslöschung
• O.B.d.A positiver Fluss ist entweder
– von u nach
hv
– oder von v nach u
– aber nicht beides
• Beispiel:
p
zwei äquivalente
q
Situationen
– 1 Einheit von x → z, 2 Einheiten von z → x
– 0 Einheiten von x → z,
z 1 Einheit von z → x
– In beiden Fällen: „Netto Fluss“ ist eine Einheit
von z → x
• „Netto Fluss“ erfüllt Kapazitätsbedingung
und
d Flusserhaltung
Fl
h lt
iimmer
11
(Netto) Fluss
• Eine Funktion f: V x V → R
– Sehr ähnlich wie positiver Fluss
• Kapazitätsbedingung
– Für alle u,v ∈ V, f(u,v) ≤ c(u,v)
• Asymmetrie
y
– Für alle u,v ∈ V, f(u,v) = -f(v,u)
• Flusserhaltung
– Für alle u ∈ V-{s,t}, v∈ V f(u,v) = 
– „Fluss hinein ist gleich Fluss hinaus“
• Definitionen für ((netto)) Fluss und p
positiver
Fluss sind gleichwertig
12
Auslöschung und netto Fluss
• Noch ein Beispiel: äquivalente Situationen
– 5 Einheit von u → v, 0 Einheiten von v → u
– 8 Einheiten von u → v, 3 Einheiten von v → u
– In beiden Fällen: Fluss ist 5 Einheiten von u → v
• Könnten Sendungen auch ändern, indem
zusätzlich 3 Einheiten von u → v und 3
Einheiten von v → u
– Netto Fluss bleibt gleich
g
– Können tatsächlich „geschickte Sendungen“ nicht
aus Fluss rekonstruieren
•P
Positiver
ii
Fl
Fluss h
hat einen
i
redundanten
d d
Freiheitsgrad, arbeiten deshalb mit (netto)
Fluss
13
Fluss
w
x
s
t
y
z
14
Fluss
• Auslöschung aus vorherigem Beispiel durchgeführt
• Kanten mit positivem Fluss sind annotiert mit
Fluss/Kapazität, d.h. f(u,v)/c(u,v)
• Kanten mit negativem Fluss sind nur mit Kapazität
annotiert, d.h. c(u,v); Fluss ist implizit f(u,v) = -f(v,u)
• z.B. f(y,s) = -2, f(x,z) = -1
• Kanten mit Kapazität c(u,v)=0 nicht eingezeichnet;
können negativen Fluss haben, z.B. c(y,x)=0, f(y,x)=-1
15
Implizite Summation
• Zur Vereinfachung der Schreibweise
– Erlaube Mengen als Argumente in Funktionen
p
Summation
– Mit impliziter
f (X, Y ) bedeutet
X X
f (x, y)
x∈X y∈Y
• Flusserhaltung: f(u,V)=0, for all u ∈ V-{s,t}
• Weitere Vereinfachung der Notation
– Weglassen von Klammern für Mengen
p f(
f(s,V-s)
, ) statt f(
f(s,V-{s})
, { })
– Beispiel
16
Wert eines Flusses
• Wert des Flusses f ist
|f | =
X
f (s, v) = totaler Fluss aus Quelle
v∈V
• Mit vereinfachter Notation |f | = f (s,
(s V )
17
Wert eines Flusses
• Wert des Flusses ist 3
• Es wird nur Fluss aus der Quelle hinaus gezählt
• z.B. f(y,s)=-2 wird nicht mitgezählt
18
Graphenalgorithmen
Maximaler Fluss
• Einleitung
• Flussnetzwerke
• Ford
Ford-Fulkerson
Fulkerson Methode
• Maximales bipartites Matching
19
Ford-Fulkerson Methode
• Löst das Problem des maximalen Flusses
• Gegeben
–
–
–
–
Graph G
Quelle s
Senke t
Kapazitäten c
• Finde Fluss f mit grösstem Wert
– G
Grösstmöglicher
ö t ö li h positiver
iti
Fl
Fluss, d
der aus Q
Quelle
ll
hinausfliesst
• Brauchen weitere Konzepte
– Schnitte durch Graphen
– Restnetzwerke
20
Schnitte
• Schnitt (S,T) eines Flussnetzwerks G=(V,E)
ist
– eine Partition von V in S und T=V-S
– So dass s ∈ S und t ∈ T
• Netto Fluss über Schnitt (S,T)
(S T) ist f(S,T)
f(S T)
– Zur Erinnerung
g
f ((S,, T ) =
P
P
x∈S y∈T
f ((x,, y)
• Kapazität des Schnittes (S,T) ist c(S,T)
• Minimaler Schnitt ist Schnitt, dessen
Kapazität
p
minimal ist über alle Schnitte
von G
21
Schnitte
22
Schnitte
• Beispiel: Schnitt S={s,w,y}, T={x,z,t}
• f(S,T)
f(S T) = f(w,x)
f( ) + f(y,x)
f( ) + f(y,z)
f( )
= 2 + -1 + 2
=3
• c(S,T) = c(w,x) + c(y,x) + c(y,z)
=2+0+3
=5
• Beachte Unterschied zwischen Kapazität und
Fluss
– Fluss ist asymmetrisch, z.B.f(y,x)=-f(x,y)=-1
– Kapazität
K
ität ist
i t nicht,
i ht z.B.c(y,x)=0,
B ( ) 0 aber
b c(x,y)=1
( ) 1
23
Schnitte
• Beispiel: Schnitt S={s,w,x,y}, T={z,t}
• f(S,T) = f(x,z)+f(x,t)+f(y,z)
= -1+2+2
=3
• c(S,T) = c(x,z)+c(x,t) +c(y,z)
= 2+3+3
=8
• Gl
Gleicher
i h Fluss
Fl
wie
i vorher,
h
aber
b höh
höhere
Kapazität
24
Schnitte
• Lemma
Für jeden Schnitt (S,T)
(S T) gilt f(S,T)=|
f(S T)=| f |
• Korollar
Wert für jeden Fluss ≤
Kapazität für jeden Schnitt
• „Maximaler Fluss ≤
Kapazität des minimalen Schnitts“
25
Restnetzwerke
• Gegeben Fluss f in Netzwerk G=(V,E)
• Knoten u,v ∈ V
• Restkapazität
p
einer Kante ((u,v))
– cf (u,v) = c(u,v) - f(u,v) ≥ 0
– Zusätzlicher Fluss der von u nach v fliessen könnte
– Da f(u,v) negativ sein kann, kann cf (u,v) ≥ 0
bedeuten: „Fluss in die andere Richtung (v,u) kann
reduziert werden“
• Restnetzwerk Gf = (V,Ef )
– Menge der Kanten, die Restkapazität haben
– Ef = { (u,v)
(u v) ∈ V × V : cf (u,v)
(u v) > 0 }
26
Restnetzwerke
Gf
w
x
s
t
y
z
27
Restnetzwerke
28
Summe von Flüssen
• Gegeben zwei Flüsse f1 und f2
• Summe der Flüsse f1 + f2 ist
(f1 + f2)(
)(u,v)
, ) = f1((u,v)
, ) + f2((u,v)
, )
• Lemma: Gegeben
– Flussnetzwerk G, Fluss f in G
– Restnetzwerk Gf , Fluss ff‘ in Gf
– Dann ist Summer der Flüsse f + f‘ ein Fluss in G
mit
it Wert
W t | f + f‘ | = | f |+ | f‘ |
29
Vergrössernder Pfad
• Ein Pfad s à t in Gf
– Erlaubt mehr Fluss entlang jeder Kannte
g von Röhren von Quelle zu Senke,,
– Eine Folge
durch die mehr Material fliessen kann
• Wieviel mehr Fluss möglich entlang Pfad p?
cf (p) = min {{cf ((u,v)) : (u,v)
( ) is on p }
30
Vergrössernder Pfad
• Im Beispiel p = (s,w,y,z,x,t)
• Kleinste Residualkapazität ist 1
31
Vergrössernder Pfad
Erhöhung des Flusses entlang p = (s,w,y,z,x,t) um 1
w
x
s
t
y
z
w
x
s
t
y
z
32
Vergrössernder Pfad
Erhöhung des Flusses entlang p = (s,w,y,z,x,t) um 1
Kein vergrössernder Pfad mehr!
Behauptung: Fluss ist maximal
33
Maximaler Fluss
• Lemma
– Gegeben Flussnetzwerk G,
G Fluss f in G,
G
Restnetzwerk Gf
– Sei p vergrössernder Pfad in Gf
– Definiere fp : V × V → R mit
– Dann ist fp ein Fluss in Gf mit Wert |fp|=
| cf (p)
( )>0
• Korollar
– Definiere fp wie oben
– Definiere f‘ : V × V → R als f‘ = f + fp
– Dann
D
iistt f‘ Fluss
Fl
in
i G mit
it Wert
W t | f‘ | = | f | + cf (p)
( )>|f|
34
Max-flow min-cut Theorem
• Theorem: Folgendes ist äquivalent
– f ist maximaler Fluss
– f erlaubt keinen vergrössernden
g
Pfad
– | f | = c(S,T) für einen Schnitt (S,T)
35
Beweis
• (1) => (2): Falls f erweiternden Pfad p hat, dann
könnten wir Fluss mit Wert f+cf(p)>|f| erhalten;
Widerspruch zu Annahme (1)
• (2) => (3) Nehmen an f hat keinen vergrössernden
Pfad Definieren
Pfad.
S = {v ∈ V: existiert pfad s->v in Gf}
T = V-S
VS
t muss in T sein, sonst ex. erweiternder Pfad
olg (S,
(S,T)) ist
st e
ein Sc
Schnitt
tt
Ess folg
Für alle u ∈ S und v ∈ T, muss gelten f(u,v)=c(u,v),
sonst wäre (u,v) ∈ Ef und damit wäre v ∈ S
– | f | = f(S,T)
f(S T) = c(S,T)
(S T)
–
–
–
–
–
• (3) => (1): Korollar | f | ≤ c(S,T) für jeden Schnitt.
Darum | f | = c(S,T)
c(S T) =>
> f ist ein maximaler Fluss
36
Ford-Fulkerson Algorithmus
• Analyse
– Falls
ll ganzzahlige
hli Kapazitäten,
iä
d
dann
vergrössert jeder Schritt | f | um ≥ 1
– Falls
F ll maximaler
i l Fl
Fluss W
Wert f* hat,
h dann
d
≤ | f* |
Iterationen
– Komplexität
K
l i ä O(E
( | f* |)
37
Edmonds-Karp Algorithmus
• Finde erweiternde Pfade mit Breitensuche
in Restnetzwerk
• Aufwand O(VE
( 2)
– Beweis siehe Buch
38
Graphenalgorithmen
Maximaler Fluss
• Einleitung
• Flussnetzwerke
• Ford
Ford-Fulkerson
Fulkerson Methode
• Maximales bipartites Matching
39
Maximales bipartites Matching
• Beispiel eines Problems (von vielen), das
gelöst werden kann,
kann indem als
Flussproblem formuliert
• Ungerichteter Graph G=(V,E) heisst
bipartit falls V in V = L ∪ R partitioniert
werden kann, so dass alle Kanten zwischen
L und
nd R sind
40
Maximales bipartites Matching
• Matching: eine Teilmenge M von E, so dass
für alle v ∈ V,
V ≤ 1 Kante von M auf v
inzident ist
– Knoten heisst matched falls Kante inzident auf
ihn,, sonst unmatched
• Maximales Matching: ein Matching mit
grösster Kardinalität
– M ist maximal falls ||M | ≥ ||M‘ | für alle M‘
• Problem: gegeben bipartiter Graph (mit
Partitionierung) finde maximales Matching
Partitionierung),
41
Maximales bipartites Matching
K i maximales
Kein
i l M
Matching
hi
M i l M
Maximales
Matching
hi
42
Maximales bipartites Matching
• Anwendungsbeispiel: Flugzeuge einer
Menge von Routen zuweisen
– L = Menge von Flugzeugen
– R = Menge von Routen
– (u,v)
(u v) ∈ E falls Flugzeug u Route v fliegen kann
• Wollen grösstmögliche Anzahl Routen, die
von den
d Flugzeugen
Fl
geflogen
fl
werden
d
können
43
Maximales bipartites Matching
• Gegeben G, definiere Flussnetzwerk
G‘=(V‘
G
=(V ,E
E‘))
– Knoten V‘ = V ∪ {s,t}
– Kanten E‘ = {(s,u) : u ∈ L}
∪ {(
{(u,v)
, ) : u ∈ L,, v ∈ R,, ((u,v)
, ) ∈ E}}
∪ {(v,t) : v ∈ R}
c(u v) = 1 für alle (u,v)
(u v) ∈ E
E‘
– Kapazität c(u,v)
44
Formulierung als Flussproblem
L
R
45
Formulierung als Flussproblem
• Jeder Knoten in V hat ≥ 1 inzidente Kanten
⇒|E|≥|V|/2
• Deshalb | E | ≤ | E‘ | = | E | + | V | ≤ 3 | E |
• Deshalb | E‘ | = Θ( E )
• Finde maximalen Fluss in G‘
– Benutze Kanten mit Fluss 1 im Matching
g im Buch
– Beweis,, dass maximales Matching
46
Anwendung von Max-flow min-cut
• Viele Optimierungsprobleme in der
Bildverarbeitung
– Z.B. Automatische Bildsegmentierung
http://research.microsoft.com/pubs/67890/siggraph04-grabcut.pdf
47
Nächstes Mal
• Lineare Programmierung
48
Herunterladen