AlgorithmenundDatenstrukturen
11.GRAPHEN3
FLÜSSEUNDSPANNBÄUME
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
1
AlgorithmenundDatenstrukturen
11.1. BERECHNUNG
MAXIMALERFLÜSSE
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
2
Problemstellungen
Maximaler Fluss
• Logistische Aufgabe:
– Verteilungsnetz mit Kapazitäten
• Wasserrohre
• Förderbänder
• Paketvermittlung im Rechnernetz
• Quelle liefert (beliebig viele) Objekte pro
Zeiteinheit
• Senke verbraucht diese
• Jede Verbindung hat eine maximale Kapazität c
und einen aktuellen Fluss f
• Wie hoch ist die Übertragungskapazität?
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
3
Problemstellungen
Problemformalisierung
Gegeben:
Digraph(V,E)mitKapazitätsfunkOonc:E→,
R
Knotenq∈V(Quelle)undz∈V(Ziel)
4
2
4
4
5
q 1
6
5
6 z
6
12
10
3
5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
5
4
Problemstellungen
Definition: Fluss Ein Fluss f von q∈V nach z∈V ist eine Funktion
fq,z : E ! R
für die die folgenden zwei Bedingungen gelten:
1. Die Kapazitäten werden eingehalten:
8e 2 E : fq,z (e) c(e)
2. Was in einen Knoten hereinfließt, muss wieder
herausfließen (mit Ausnahme von q und z):
X
X
8v 2 V \ {q, z} :
f ((u, v)) =
f ((v, w))
u2P (v)
w2S(v)
wobei P (v) = {u|(u, v) 2 E} (Vorgänger von v)
S(v) = {w|(v, w) 2 E} (Nachfolger von v)
und
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
5
Problemstellungen
Maximaler Fluss
• Wert eines Flusses
val(G, fq,z ) =
X
fq,z ((q, u))
u2S(q)
• Gesucht: Wert eines maximalen Flusses
max{val(G, f )|f ist Fluss von q nach z}
f
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
6
Problemstellungen
Beispiel1/3
Definieref1durch
f1((1,2))=2 f1((1,3))=4 f1((2,4))=1 f1((2,5))=1 f1((3,2))=0
f1((3,5))=4 f1((4,5))=0 f1((4,6))=1 f1((5,6))=5 →val(G,f1)=6
2
5
2
q 1
10
4
1
4
4
1
0
5
6
0
3
4
1
6 z
6
5
4
5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
5
7
12
Problemstellungen
Beispiel2/3
Definieref2durch
f2((1,2))=5 f2((1,3))=3 f2((2,4))=4 f2((2,5))=1 f2((3,2))=2
f2((3,5))=1 f2((4,5))=1 f2((4,6))=3 f2((5,6))=3 →f2istkeinFluss
2
5
5
q 1
10
3
4
4
4
1
1
5
6
2
3
4
3
6 z
6
3
1
5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
5
8
12
Problemstellungen
Beispiel3/3
Definieref3durch
f3((1,2))=5 f3((1,3))=9 f3((2,4))=4 f3((2,5))=5 f3((3,2))=4
f3((3,5))=5 f3((4,5))=0 f3((4,6))=4 f3((5,6))=10
→val(G,f3)=14(f3istmaximal)
4
4
2
5
5
q 1
10
9
4
5
0
5
6
4
3
4
4
6 z
6
10
5
5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
5
9
12
Algorithmen
Berechnung eines maximalen Flusses
• Ford-Fulkerson-Algorithmus
– EffizienteBesOmmungeinesmaximalenFlussesvon
qnachz
– Vorgehensweise:MischungausGreedyundZufallsauswahl
• Prinzip:FügesolangeverfügbarePfadezumGesam5luss
hinzuwiemöglich.
• FindeneinesnutzbarenPfadesetwadurchTiefensuche
• FürKantenwerdendreiWertenoOert:
1. AktuellerFlussfentlangderKante
•
IminiOalisiertenGraphenistdieserWertüberall0
2. VorgegebeneKapazitätc
3. Abgeleitetenochverfügbare(Rest-)Kapazitätc-f
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
10
Algorithmen
Ford-Fulkerson-Algorithmus (Pseudocode)
VorläufigeVersion:
initialisiere Graph mit leerem Fluss;
do
wähle nutzbaren Pfad aus;
füge Fluss des Pfades zum Gesamtfluss hinzu;
while noch nutzbarer Pfad verfügbar
§ NutzbarerPfad
§ (zyklenfreier)PfadvonQuelleqzumZielz,deranallenKanteneine
verfügbareKapazitäthat
§ NutzbarerFluss
§ MinimumderverfügbarenKapazitätendereinzelnenKanten
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
11
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
2
4
4
4
5
s 1
6
5
6 t
6
12
10
3
5
5
GraphmitKapazitäten
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
12
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
2
0/4/4
4
0/4/4
0/5/5
s 1
0/6/6
0/5/5
0/6/6
6 t
0/10/10
0/12/12
3
0/5/5
5
IniOalisieremitFluss:0
NotaOon:<aktuellerFlussf>/<Kapazitätc>/<verfügbareKapazitätc-f>
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
13
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
AuswahlnutzbarerPfade:zufälligodergeeigneteHeurisOk
Anmerkung:esgibtkürzerePfadeundmithöhererKapazität
2
0/4/4
4
0/4/4
0/5/5
s 1
0/6/6
0/5/5
0/6/6
6 t
0/10/10
0/12/12
3
0/5/5
5
AuswahleinesPfades:1à2à5à6NutzbarerFluss:5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
14
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
2
0/4/4
4
0/4/4
5/5/0
s 1
0/6/6
5/5/0
0/6/6
6 t
0/10/10
5/12/7
3
0/5/5
5
AktualisierendesFlusses
AuswahleinesPfades:1à3à5à6NutzbarerFluss:5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
15
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
2
0/4/4
4
0/4/4
5/5/0
s 1
0/6/6
5/5/0
0/6/6
6 t
5/10/5
10/12/2
3
5/5/0
5
AktualisierendesFlusses
AuswahleinesPfades:1à3à2à4à6NutzbarerFluss:4
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
16
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
2
4/4/0
4
4/4/0
5/5/0
s 1
4/6/2
5/5/0
0/6/6
6 t
9/10/1
10/12/2
3
5/5/0
5
AktualisierendesFlusses
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
17
Algorithmen
Beispiel: Ford-Fulkerson-Algorithmus
2
4/4/0
4
4/4/0
5/5/0
s 1
4/6/2
5/5/0
0/6/6
6 t
9/10/1
10/12/2
3
5/5/0
5
KeineweiterenPfademöglichèBerechnungbeendet
MaximalerFluss:14
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
18
Algorithmen
Problem: Ungünstige Pfadwahl
• DiebisherbetrachteteVersiondesAlgorithmusist
nichtimmeropOmal
2
0/5/5
s 1
0/5/5
4
0/5/5
t
0/5/5
0/5/5
3
AuswahleinesPfades:1à3à2à4NutzbarerFluss:5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
19
Algorithmen
Problem: Ungünstige Pfadwahl
• DiebisherbetrachteteVersiondesAlgorithmusist
nichtimmeropOmal
2
0/5/5
s 1
5/5/0
t
0/5/5
5/5/0
AktualisierendesFlusses
4
5/5/0
3
KeineweiterePfadwahlmehrmöglich(opOmalLösungaberPfade(1,2,4)und(1,3,4))
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
20
Algorithmen
Problem: Ungünstige Pfadwahl
• Problem:Flusskannnichtzurückgenommenwerden
• Lösung:erlaubeentgegengesetzteFlussrichtungdurch
Rückkanten
2
0/5/5
s 1
0/5/5
0/0/0
0/0/0
0/0/0 0/5/5
0/0/0
0/0/0
0/5/5
4
t
0/5/5
3
AuswahleinesPfades:1à3à2à4NutzbarerFluss:5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
21
Algorithmen
Problem: Ungünstige Pfadwahl
• Problem:Flusskannnichtzurückgenommenwerden
• Lösung:erlaubeentgegengesetzteFlussrichtungdurch
Rückkanten
2
0/5/5
s 1
5/5/0
-5/0/5
0/0/0
-5/0/5 5/5/0
-5/0/5
0/0/0
5/5/0
4
t
0/5/5
3
AktualisierendesFlusses
AuswahleinesPfades:1à2à3à4NutzbarerFluss:5
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
22
Algorithmen
Problem: Ungünstige Pfadwahl
• Problem:Flusskannnichtzurückgenommenwerden
• Lösung:erlaubeentgegengesetzteFlussrichtungdurch
Rückkanten
2
5/5/0
s 1
-5/0/5
0/0/0
5/5/0
-5/0/5
4
0/5/5
-5/0/5
-5/0/5
5/5/0
t
5/5/0
3
AktualisierendesFlusses
KeineweiterenPfademöglichèBerechnungbeendet(MaximalerFluss:10)
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
23
Algorithmen
Ford-Fulkerson-Algorithmus (Pseudocode)
FinaleVersion:
für jede Kante (u,v) füge Kante (v,u)
mit Kapazität 0 ein
initialisiere Graph mit leerem Fluss;
do
wähle nutzbaren Pfad aus;
füge Fluss des Pfades zum Gesamtfluss hinzu;
while noch nutzbarer Pfad verfügbar
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
24
Analysen
Analyse
Theorem(Terminierung)
SindalleKapazitäteninGnicht-negaOvundra<onal,dann
terminiertderAlgorithmusvonFord-Fulkersonnach
endlicherZeit.
OhneBeweis
Theorem(Laufzeit)
IstXderWerteinesmaximalesFlussesinG=(V,E)undsind
alleKapazitäteninGnicht-negaOvundganzzahlig,sohat
derAlgorithmusvonFord-FulkersoneineLaufzeitvon
O(|E|X).
OhneBeweis
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
25
Analysen
Analyse
Theorem(Korrektheit)
SindalleKapazitäteninGnicht-negaOvundra<onal,
dannberechnetderAlgorithmusvonFord-Fulkerson
denWerteinesmaximalenFlusses.
OhneBeweis
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
26
Analysen
Ford-Fulkerson-Algorithmus
§ WahldesPfadesbeeinflusstAnzahlbenöOgterIteraOonen
§ VerfahrenvonEdmondsundKarp
§ AnzahlderPfadedieineinemGraphenG=(V,E)bis
zumFindendesmaximalenFlussesverfolgtwerden
müssenistkleinerals|V||E|,wennjeweilsderkürzeste
PfadvonQuelleqzuZielzgewähltwird
§ Daher:Auswahldesnächsten(kürzesten)Pfadeskann
basierendaufeinerVariantederBreitensucheerfolgen
§ VerbessertdieLaufzeitaufO(|V||E|2)
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
27
AlgorithmenundDatenstrukturen
11.1. BERECHNUNG
MAXIMALERFLÜSSE
ZUSAMMENFASSUNG
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
28
Zusammenfassung
• BerechnungeinesmaximalesFlusses
• AlgorithmusvonFord-Fulkerson
– Idee:FügesolangeverfügbarePfadezumGesamqluss
hinzuwiemöglich
– EinfügungvonRückwärtskantennotwendigum
OpOmalitätzugaranOeren
– LaufzeitabhängigvonErgebniswert
– Nurfürnicht-negaOveundraOonaleKapazitätenkorrekt
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
29
AlgorithmenundDatenstrukturen
11.2.SPANNBÄUME
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
30
Problemstellungen
Beispiel: Kommunikationsnetz
• Zwischen n Knotenpunkten v1, …, vn soll ein möglichst
günstiges Kommunikationsnetz geschaltet werden, so
dass jeder Knotenpunkt mit jedem anderen verbunden
ist, ggf. auf einem Umweg über andere Knotenpunkte.
• Bekannt sind Kosten ci,j für die direkte Verbindung
zwischen vi und vj, 1 ≤ i,j ≤ n.
• Alle Kosten ci,j seien verschieden und größer als Null.
• Modellierung als gewichtete, ungerichtete und
vollständige Graphen mit Gewichtsfunktion c
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
31
Problemstellungen
Beispiel: Eingabe für Kommunikationsnetz
§ G=(V,E)
§ V={v1,…,v5}
§ E={(v1,v2),(v1,v3),(v1,v4),
(v1,v5),(v2,v3),(v2,v4),(v2,v5),(v3,v4),(v3,v5),(v4,v5)}
§ c((v1,v2))=6,c((v1,v3))=7,etc.;abgekürzt:c1,2=6,c1,3=7,etc.
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
32
Problemstellungen
Problemstellung: Finde minimal aufspannenden Baum
EinigeDefiniOonen(Wdh.):
• EinGraphG=(V,E)heisstzusammenhängend,wenn
fürallev,w∈VeinWegvonvnachwinGexisOert
• EinGraphG=(V,E)enthälteinenKreis,wennes
unterschiedlicheKnotenv1,…,vn∈Vgibt,sodass
{v1,v2},…,{vn-1,n},{vn,v1}∈E
• EinGraphG=(V,E)heisstBaum,wenner
– zusammenhängendistund
– keinenKreisenthält
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
33
Problemstellungen
Problemstellung: Finde minimal aufspannenden Baum
EinigeDefiniOonen(Wdh.):
• EinGraphG’=(V’,E’)heisstTeilgraphvonG=(V,E),wenn
V’⊆VundE‘⊆E∩(V‘xV‘)
• EinGraphG’=(V’,E’)heisstinduzierterTeilgraphvon
G=(V,E)bzglV’⊆V,wennE‘=E∩(V‘xV‘)
• EinGraphG‘=(V‘,E‘)heisstSpannbaumvonG=(V,E),
wenn
– G‘istTeilgraphvonG,
– V‘=Vund
– G‘isteinBaum
Frage:WievieleKantenhateinSpannbaum?
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
34
Problemstellungen
Problemstellung: Finde minimal aufspannenden Baum
WeitereDefiniOonen:
• DasGewichteinesGraphenG=(V,E)ist
X
C(G) =
ci,j
(i,j)2E
• EinGraphG‘=(V‘,E‘)isteinminimalerSpannbaum
vonG=(V,E)wenn
– G‘isteinSpannbaumvonG
– UnterallenSpannbäumenvonGhatG‘minimalesGewicht
Aufgabe:GegebenG=(V,E),findeeinenminimalen
SpannbaumvonG
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
35
Algorithmen
Beispiel
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
36
Algorithmen
Lösungsansatz: Algorithmus von Prim
• Vorgehensweise
– Schrittweise Verfeinerung
– Aufbau eines aufspannenden Baumes durch
Hinzufügen von Kanten
• Greedy-Muster
– Jeweils kostengünstigste geeignete Kante als
Erweiterung
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
37
Algorithmen
Aufspannender minimaler Baum
Pseudocode:
// Teilbaum B besteht anfangs aus einem
// beliebigen Knoten
while [ B noch nicht GV aufspannt ]
do [ suche kostengünstige von B ausgehende Kante ];
[ füge diese Kante zu B hinzu ];
od
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
38
Algorithmen
Beispiel
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
39
Analysen
Analyse
Theorem(Terminierung)
DerAlgorithmusvonPrimterminiertnachendlicher
Zeit.
Beweis:
EinfacheSchleifenanalyse.
Theorem(Laufzeit)
WirdfürdieImplemenOerungeinFibonacci-Heap
benutzt,sohatderAlgorithmusvonPrimeineLaufzeit
vonO(|E|+|V|log|V|).
OhneBeweis
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
40
Analysen
Analyse
Theorem(Korrektheit)
IstGeinverbundenerungerichtetergewichteterGraph,so
berechnetderAlgorithmusvonPrimeinenminimalen
SpannbaumvonG.
Beweis:
Betrachte
while [ B noch nicht GV aufspannt ]
do [ suche kostengünstige von B ausgehende Kante ];
[ füge diese Kante zu B hinzu ];
od
Beobachtung:
• BistamEndeeinBaum
• BistamEndeeinSpannbaum
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
41
Analysen
Analyse
Nochzuzeigen:BistamEndeeinminimaler
Spannbaum.
while [ B noch nicht GV aufspannt ]
do [ suche kostengünstige von B ausgehende Kante
[ füge diese Kante zu B hinzu ];
od
SeiB‘einminimalerSpannbaumvonGundB≠B‘.
BetrachtedenZeitpunktinderHauptschleife,andem
sichdieKonstrukOonvonBvonB‘unterscheidet.
SeiedieKante,diedannzuBhinzugefügtwird.
SeiV1dieMengederKnoten,dieschoninBsindund
V2=V\V1
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
42
];
Analysen
Analyse
DaB‘einminimalerSpannbaumist,gibteseineKante
e‘,dieV1mitV2verbindet.
DaimAlgorithmusstetseinegünsOgsteKantegewählt
wird,mussgelteng(e)≤g(e‘).
TauschenwirinB‘dieKantee‘durcheerhaltenwir
alsoeinenminimalenSpannbaum,dernichtmehr
kostetalsB‘,esfolgtg(e)=g(e‘).
IndukOvfolgtdamitdieKorrektheit.
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
43
AlgorithmenundDatenstrukturen
11.2SPANNBÄUME
ZUSAMMENFASSUNG
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
44
Zusammenfassung
• Spannbaum:Subgraph,deralleKnotenundgenau
|V|-1Kantenenthält
• MinimalerSpannbaum:Spannbaummitminimalem
Gesamtgewicht
• AlgorithmusvonPrim
– Idee:WählestetsgünsOgstevomaktuellenBaum
ausgehendeKanteaus
AlgorithmenundDatenstrukturen-Ma5hiasThimm(thimm@uni-koblenz.de)
45