AlgorithmenundDatenstrukturen 11.GRAPHEN3 FLÜSSEUNDSPANNBÄUME AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 1 AlgorithmenundDatenstrukturen 11.1. BERECHNUNG MAXIMALERFLÜSSE AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 25 Analysen Analyse Theorem(Korrektheit) SindalleKapazitäteninGnicht-negaOvundra<onal, dannberechnetderAlgorithmusvonFord-Fulkerson denWerteinesmaximalenFlusses. OhneBeweis AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 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([email protected]) 27 AlgorithmenundDatenstrukturen 11.1. BERECHNUNG MAXIMALERFLÜSSE ZUSAMMENFASSUNG AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 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([email protected]) 29 AlgorithmenundDatenstrukturen 11.2.SPANNBÄUME AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 35 Algorithmen Beispiel AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 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([email protected]) 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([email protected]) 38 Algorithmen Beispiel AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 39 Analysen Analyse Theorem(Terminierung) DerAlgorithmusvonPrimterminiertnachendlicher Zeit. Beweis: EinfacheSchleifenanalyse. Theorem(Laufzeit) WirdfürdieImplemenOerungeinFibonacci-Heap benutzt,sohatderAlgorithmusvonPrimeineLaufzeit vonO(|E|+|V|log|V|). OhneBeweis AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 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([email protected]) 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([email protected]) 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([email protected]) 43 AlgorithmenundDatenstrukturen 11.2SPANNBÄUME ZUSAMMENFASSUNG AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 44 Zusammenfassung • Spannbaum:Subgraph,deralleKnotenundgenau |V|-1Kantenenthält • MinimalerSpannbaum:Spannbaummitminimalem Gesamtgewicht • AlgorithmusvonPrim – Idee:WählestetsgünsOgstevomaktuellenBaum ausgehendeKanteaus AlgorithmenundDatenstrukturen-Ma5hiasThimm([email protected]) 45