Netwerkstroming. Algoritmiek

Vergelijkbare documenten
Netwerkstroming. Algoritmiek

TW2020 Optimalisering

TW2020 Optimalisering

Kortste Paden. Algoritmiek

Begrenzing van het aantal iteraties in het max-flow algoritme

TW2020 Optimalisering

TW2020 Optimalisering

Optimaliseren in Netwerken

Universiteit Utrecht Betafaculteit. Examen Discrete Wiskunde II op donderdag 6 juli 2017, uur.

Heuristieken en benaderingsalgoritmen. Algoritmiek

Doorzoeken van grafen. Algoritmiek

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

TW2020 Optimalisering

Tentamen combinatorische optimalisatie Tijd:

Benaderingsalgoritmen

Universiteit Utrecht Betafaculteit. Examen Discrete Wiskunde op donderdag 13 april 2017, uur.

Hoofdstuk 13: Integer Lineair Programmeren

TW2020 Optimalisering

(On)Doenlijke problemen

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Examen Discrete Wiskunde donderdag 12 april, 2018

Week Hier vind je uitwerkingen van enkele opgaven uit het dictaat Grafen: Kleuren en Routeren.

2WO12: Optimalisering in Netwerken

Hoofdstuk 8: Algoritmen en Complexiteit

Basiskennis lineaire algebra

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Transport-, Routing- en Schedulingproblemen. Wi4062TU / Wi487TU / a86g. Uitwerkingen

2WO12: Optimalisering in Netwerken

TW2020 Optimalisering

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

TW2020 Optimalisering

TW2020 Optimalisering

l e x e voor alle e E

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Sommige praktische IP problemen kunnen worden geformuleerd als optimalisering op een netwerk.

Ter Leering ende Vermaeck

Netwerkoptimalisatie

Vector-en matrixvergelijkingen. Figuur: Vectoren, optellen

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Universiteit Utrecht Faculteit Wiskunde en Informatica. Examen Optimalisering op maandag 18 april 2005, uur.

Lineaire Algebra voor ST

RSA. F.A. Grootjen. 8 maart 2002

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

3.2 Vectoren and matrices

Toewijzingsprobleem Bachelorscriptie

Lineaire Algebra voor ST

Uitwerkingen Sum of Us

Functies van vectoren

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5

Workshop DisWis, De Start 13/06/2007 Bladzijde 1 van 7. Sudoku. Sudoku

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

De huwelijksstelling van Hall

Tentamen lineaire algebra voor BWI maandag 15 december 2008, uur.

Vierde college complexiteit. 14 februari Beslissingsbomen

Optimalisering/Besliskunde 1. College 1 3 september, 2014

Determinanten. Definities en eigenschappen

Lineaire Algebra (wi2142tn) Les 5: Determinanten. Joost de Groot Les 5. Faculteit EWI, Toegepaste Wiskunde. Technische Universiteit Delft

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

1 Complexiteit. of benadering en snel

Inleiding Analyse 2009

Examen Datastructuren en Algoritmen II

2WO12: Optimalisering in Netwerken

Oefententamen in2505-i Algoritmiek

Een combinatorische oplossing voor vraag 10 van de LIMO 2010

Matrixalgebra (het rekenen met matrices)

3 Wat is een stelsel lineaire vergelijkingen?

1 Rekenen in eindige precisie

3. Structuren in de taal

Geldwisselprobleem van Frobenius

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

1 In deze opgave wordt vijftien maal telkens drie beweringen gedaan waarvan er één juist is. Kruis de juiste bewering aan. (2pt. per juist antwoord).

Hoofdstuk!7!Kortste!paden!

Dynamisch Programmeren III. Algoritmiek

CTB1002 deel 1 - Lineaire algebra 1

III.3 Supremum en infimum

ONBETWIST ONderwijs verbeteren met WISkunde Toetsen Voorbeeldtoetsen Lineaire Algebra Deliverable 3.10 Henk van der Kooij ONBETWIST Deliverable 3.

Transshipment problemen Simplex methode en netwerk optimalisatie algoritmes. Luuk van de Sande Begeleider: Judith Keijsper 20 januari 2013

Afbeelding 12-1: Een voorbeeld van een schaakbord met een zwart paard op a4 en een wit paard op e6.

OptimalisereninNetwerken

Matrices en Grafen (wi1110ee)

Transcriptie:

Netwerkstroming

Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede Maximum Stroming Stelling Variant: Edmonds-Karp Toepassing: koppelingen in bipartite grafen

Netwerkstroming Modelleert transport van goederen over bijv. een wegennetwerk Toepassingen in Logistiek Subroutine in algoritmen 3

Een stromingsnetwerk Een stromingsnetwerk bestaat uit 4 Een gerichte graaf G=(N,A) Voor elke pijl (v,w) A een capaciteit c(v,w) 0. Twee speciale knopen: bron s (source) en put t (sink). s 3 a d 3 4 b c 4 t

Stroming Schrijf als (v,w) A: c(v,w) = 0. Een stroming (van s naar t) is een functie f: V x V R, zodat Voor alle v,w in N: f (v,w) c(v,w). (Capaciteitseis). Voor alle v,w in N: f (v,w) = f (w,v). (Scheve symmetrie.) Voor elke knoop v in N {s,t}: (Behoud van stroming.) w N f ( v, w) = 0 5

Opmerking We volgen de notatie van het boek In de literatuur wordt vaak met alleen nietnegatieve waardes van stroming gerekend (en dus in plaats van f(v,u) = - f(u,v) is een van de waardes f(v,u) en f(u,v) gelijk aan 0; de regel van behoud van stroming verandert.) Dit maakt voor de principes achter stroming niets uit; het is een kwestie van notatie 6

Voorbeeld Capaciteiten: s 3 a d 3 4 b c 4 t s a d b c t Stromingsfunctie Alleen positieve waardes zijn getoond 7 Bijv.: f (b,a) =

Maximum stroming s Waarde van stroming: Probleem dat we bekijken: 8 3 Gegeven: stromingsnetwerk Gevraagd: vind een stroming met zo groot mogelijke waarde a d b 3 c 4 4 t s f = f ( s, w) a d w N b c t Waarde: 3 Geen maximum stroming

Opmerkingen `Negatieve stromingen: notationele truc (CLRS) Je kan weglaten: alle knopen Die geen pad vanuit s hebben Die geen pad naar t hebben Als (v,w) A en (w,v) A dan f(v,w) = 0. Voor elke w, behalve s, t: Ook: f = f ( w, t) w N v N f ( v, w) = 0 9

Ford-Fulkerson methode Ford-Fulkerson (96) vonden een methode om een maximum stroming in een stromingsnetwerk te berekenen. Later veel verbeteringen en snellere methoden gevonden. Idee: Begin met een stroming die overal 0 is. Stapsgewijs wordt de stroming verbeterd met behulp van het rest-netwerk en verbeterende paden. Bewijs vertelt dat als zo n verbetering niet meer mogelijk is, dan is de stroming een maximum stroming. 0

Een verbeterend pad: simpeler versie Stel, we hebben een stromingsnetwerk G=(N,A), met capaciteiten c, en een stroming f van s naar t. Stel, er is een pad van s naar t in G met voor elke pijl (v,w) op het pad: f (v,w) < c(v,w). Dan kunnen we de stroming verbeteren met behulp van dit pad. Bereken x= min {c(v,w) f(v,w) (v,w) op pad}. Voor elke pijl (v,w) op pad, zet f (v,w) = f (v,w)+x, en zet f (w,v) = f (w,v) x. Voor elk ander paar knopen v, w, zet f (v,w) = f (v,w). Dit is weer een stroming, en de waarde is x>0 hoger geworden!

Helpt, maar niet genoeg om altijd een maximum stroming te vinden Hier wel: s a d 3 b c t Hier niet: s a t d

Verbeteren door in tegenovergestelde richting te verminderen s a d t s 0/ / a d / / 0/ t a d / a d / a / / s / t / d / 3

Rest-netwerk Stel f is een stroming in netwerk G=(N,A) met capaciteiten c. Definieer het rest-netwerk (residual network) G f : Voor elke pijl (v,w) in A: Als f (v,w) < c(v,w), dan is (v,w) een pijl in G f. Als f (v,w) > 0, dan is (w,v) een pijl in G f. Voor elk paar knopen v, w: c f (v,w) = c(v,w) f (v,w) Rest-netwerk laat mogelijke verbeteringen zien. Er is een pijl, d.e.s.d. als restcapaciteit c f positief. 4

Een lemma en een opmerking Stel f is een stroming in G, en g is een stroming in het restnetwerk G f. Dan is f +g een stroming in G met waarde f + g. Volgt snel uit definitie. Als we een pad van s naar t in G f hebben maken we een stroming in G f. Een pad van s naar t in G f heet een verbeterend pad. 5

Ford-Fulkerson Begin met een stroming f zodat voor alle v, w: f (v,w) = 0. repeat Maak het rest-netwerk G f. Vind een pad p in G f van s naar t. Bereken x = min { c f (v,w) (v,w) op p}. for all (v,w) op p do f(v,w) = f(v,w) + x; f(w,v) = f(v,w); until (er is geen pad van s naar t in G f ) Output f. 6

Over Ford-Fulkerson algoritme FF vindt een stroming in G. FF gebruikt soort greedy aanpak. Verbeteringen over verbeterend pad: steeds of stroom toevoegen, of stroom weghalen in tegengestelde richting. Geeft FF ook een maximum stroming? Ja, maar er is wel een interessant bewijs voor nodig. In gedegenereerde gevallen gebruikt FF veel (exponentiele) tijd. 7

Sneden Een s-t-snede in een netwerk G=(N,A) is een partitie van de knopen in twee verzamelingen S en T, zodat S T = N S T = s S; t T. De capaciteit van een snede (S,T) is c( S, T ) = c( v v S, w T De stroming over een snede (S,T) is f ( S, T ) = v S, w T, w) f ( v, w) 8

Over sneden en stromingen Voor elke s-t-snede (S,T): f(s,t) c(s,t) f(s,t) = f Eenvoudig uit definities te bewijzen 9

0 Maximum stroming minimum snede stelling De volgende uitspraken zijn equivalent. f is een maximum stroming in G.. Het restnetwerk G f bevat geen verbeterende paden (paden van s naar t). 3. f = c(s,t) voor een s-t-snede (S,T) in G. Bewijs. Als G f wel een verbeterend pad bevat, dan kunnen we een stroming met hogere waarde maken: f is dan niet maximum. 3. We zagen net: f c(s,t) voor elke s-t-snede (S,T). Als f = c(s,t) dan bestaat er dus geen stroming met een hogere waarde dan f.

Slot bewijs MSMS-stelling 3: Stel G f bevat geen verbeterend pad. Schrijf S = { v er is een pad van s naar v in G f }, en T = N S. (S,T) is een snede. (t T anders is er een verbeterend pad.) Voor elke paar knopen v S, w T: f(v,w) = c(v,w) v s want anders zit w ook in S. Dus is f = f (S,T) = c(s,t). S w

Over de maximum-stroming minimum-snede-stelling Bewijst correctheid van Ford-Fulkerson-algoritme Verkeersopstoppingen en oorlogshandelingen: bruggen over rivieren (en tunnels)

Edmonds-Karp Probleem van FF: geen grens op looptijd. Edmonds-Karp: kortste verbeterende pad. Begin met een stroming f zodat voor alle v, w: f (v,w) = 0. repeat Maak het rest-netwerk G f. Vind het kortste pad p in G f van s naar t. (Met BFS.) Bereken x = min { c f (v,w) (v,w) op p}. for all (v,w) op p do f(v,w) = f(v,w) + x; f(w,v) = f(v,w); until (er is geen pad van s naar t in G f ) Output f. Gebruikt O(na ) tijd. Zonder bewijs hier. 3

Vinden van sneden Stromingsalgoritmen kunnen dus ook gebruikt worden voor het vinden van sneden. Toepassing o.a. voor bepalen van betrouwbaarheid van netwerken. Algoritme komt uit bewijs 4

Vinden van minimum snede Gegeven: gerichte graaf G=(N,A), knopen s, t. Gevraagd: wat is het minimum aantal pijlen dat we uit G moeten halen zodat er geen pad meer is van s naar t? Geef alle pijlen capaciteit. Vind maximum stroming, bijv. met FF. Bepaal S: alle knopen bereikbaar uit s. Neem alle pijlen tussen S en N S. 5

Weglaten van knopen Gegeven: gerichte graaf G=(N,A), knopen s, t. Gevraagd: wat is het minimum aantal knopen dat we uit G moeten halen zodat er geen pad meer is van s naar t (we mogen s en t niet weglaten)? oftewel: verzameling W van minimum formaat, zodat W deelverzameling van N-{s,t} en elk pad van s naar t een knoop in W gebruikt 6

Oplossing: vertaal probleem naar vraag over pijlen Vervang elke knoop als in plaatje: v v v Minimum knoop-separator van s naar t in oorspronkelijke graaf correspondeert met minimum snede van s naar t in nieuwe graaf Er is altijd een optimale oplossing die alleen de nieuwe kanten weglaat -> neem de bijbehorende knopen 7

Ongerichte grafen Gegeven: ongerichte graaf G=(N,A), knopen s, t. Gevraagd: wat is het minimum aantal kanten dat we uit G moeten halen zodat er geen pad meer is van s naar t? Vervang elke kant door twee pijlen en gebruik algoritme voor gerichte grafen Knoop-samenhang van ongerichte grafen: combineer de stappen 8

Bipartite grafen Bipartite graaf G = (N M, F) Elke kant heeft een eindpunt in N en een eindpunt in M. ( F N x M ) 9

Veel toepassingen van bipartite grafen Relatie tussen twee verschillende soorten objecten: Personen of machines en taken Zalen en lessen 30

Koppeling: Verzameling kanten die geen eindpunt gemeenschappelijk hebben. Koppeling F is een maximum koppeling als er geen koppeling met meer kanten bestaat. Koppeling F is een maximale koppeling als er geen kant e F bestaat met F {e} ook een koppeling. Koppeling koppeling, niet maximaal, niet maximum maximum 3 maximaal, niet maximum

Maximum bipartite koppeling probleem Gegeven: bipartite graaf G. Gevraagd: zoek een maximum koppeling in G. Toepassingen o.a.: Roostering Taak toewijzen bij Personen in bedrijf Machines Traditioneel: het huwelijksprobleem 3

Oplossingsmethode Modelleer als stromingsprobleem. Neem twee extra knopen, s en t, met pijlen (s,v) voor elke v N, en (w,t) voor elke w in M, en richt alle kanten in F van N naar M. Geef alle kanten capaciteit. s t 33

Integer stroming Als alle capaciteiten gehele getallen zijn, dan Is er een maximum stroming waarbij alle stromingswaarden gehele getallen zijn Wordt zo n maximum stroming door Ford- Fulkerson (en de meeste andere algoritmen voor het stromingsprobleem) gevonden 34

Equivalent Stel G=(N M, F) is een bipartite graaf, en H=(N M {s,t}) is het bijbehorende stromingsnetwerk. De volgende beweringen zijn equivalent. G heeft een koppeling met x kanten.. H heeft een s-t-stroming met waarde x. 3. H heeft een integer s-t-stroming met waarde x. 3: zagen we net. 35

Stroming en koppeling Als we een koppeling hebben: Stuur stroom van s naar elk beginpunt van een kant in koppeling Stuur stroom over elke kant in de koppeling Stuur stroom van elk eindpunt van kant in koppeling naar t. Alle andere pijlen krijgen 0 stroom. s 0 0 0 0 t 36

Correctheid Dit is een stroming. De waarde van de stroming is die over de snede ({s} N, M {t}): precies gelijk aan het aantal kanten in de koppeling. Of: Als we x kanten in koppeling, dan zijn er x knopen in N beginpunt van kant in koppeling, dus gaat er x stroom uit s. 37

Stroming en koppeling Als we een integer stroming hebben: Over elke pijl gaat 0 of stroom, want capaciteiten allemaal. Neem kant in koppeling als stroom over corresponderende pijl. s 0 0 0 0 t 38

Correctheid Laat K de gevonden verzameling kanten zijn. K is een koppeling: Elke knoop in N krijgt hooguit stroom binnen uit s. Dus er gaat ook hooguit stroom uit Dus, knopen in N zijn eindpunt van hooguit kant in K. Net zo voor de knopen in M. (Gebruik t.) Als de stroming waarde x heeft, dan: Is de stroming over de snede ({s} N, M {t}) x. Zijn er x pijlen van N naar M met stroom. Zitten er x kanten in K. 39

Algoritme voor maximum bipartite koppeling Bouw stromingsnetwerk. Vind maximum stroming van s naar t met stromingsalgoritme dat integer stroming oplevert; bijvoorbeeld Ford-Fulkerson. Vertaal stroming terug naar koppeling. 40

Tijd Schrijf n = N + M. Ieder verbeterend pad zal altijd de stromingswaarde met precies ophogen. Een koppeling heeft hooguit min( N, M ) < n kanten, dus is de maximum stromingswaarde kleiner dan n. Er worden dus minder dan n verbeterende paden gebruikt door Ford-Fulkerson: n iteraties van hoofdloop. Iedere iteratie kost O(n+a) tijd (vinden van pad in graaf, maken van verbeterende netwerk.) Totale tijd is O(n (n+a)) = O(na). 4

Variaties () Gegeneraliseerde koppeling: Gegeven: bipartite graaf G=(N M, F) met voor elke knoop v in N M een capaciteit c(v) in N Gevraagd: de grootste verzameling kanten F F zodat iedere knoop v in N M van maximaal c(v) kanten in F eindpunt is Voorbeeld toepassing: N zijn personen die c(v) taken kunnen uitvoeren. M zijn taken met c(w)= 4

Oplossen van gegeneraliseerde koppeling Verander bipartite graaf in stromingsnetwerk met handig/juist kiezen van capaciteiten van kanten c(v) v w c(w) s t 43

Afronden bij matrices Toepassing: afronding Lijkt op opgave 5 van practicum Gegeven: dimensionale matrix A met reals Gevraagd: rond alle getallen omhoog of omlaag af naar een integer zodat we een matrix B krijgen met De som van elke rij in B is een de juiste afronding is van de som van die rij in A De som van elke kolom in B is de juiste afronding van de som van die kolom in A Dus: afronding in B mag ook niet juist zijn (dus:.35 mag naar en naar ), maar voor de rijen en kolommen moet het wel juist zijn (daar dus:.35 altijd naar ) 44

Voorbeeld.7.9 4. 4.8 4.6 8.9 3 4 5 5 9 5.8 7.7 6 8 45

Oplossing: eerste en laatste stap Verander input naar getallen tussen 0 en : Neem van iedere waarde alleen deel achter de komma (of punt) Dus:.45 wordt 0.45 Kolomsommen en rijsommen veranderen mee Los probleem nu op Vertaal terug naar oorspronkelijke probleem door bij elk getal oorspronkelijke waarde voor de komma weer op te tellen 46

Voorbeeld.7.9 4. 4.8 4.6 8.9???? 5 9 5.8 7.7 6 8 0.7 0.9 0. 0.8.6 0.9???? 0.8.7 47

Voorbeeld.7.9 4. 4.8 4.6 8.9???? 5 9 5.8 7.7 6 8 0.7 0.9 0. 0.8.6 0.9 0 0.8.7 48

Voorbeeld.7.9 4. 4.8 5.8 7.7 4.6 8.9 Deel achter komma nemen 3 4 5 6 8 5 9 Deel voor komma optellen 0.7 0.9 0. 0.8.6 0.9 0 0.8.7 49

Afrondingsprobleem oplossen met stroming Afrondingsprobleem na modificatie is generaliseerde koppeling in vermomming Neem een bipartite graaf met: Voor elke rij een knoop met capaciteit gewenste som Voor elke kolom een knoop met capaciteit gewenste som Tussen elke rij-knoop en kolom-knoop een kant met capaciteit 50

Voorbeeld 0.7 0.9 0. 0.8.6 0.9???? 0.8.7 c= c= c= c= s t rijen kolommen 5

Voorbeeld 0.7 0.9 0. 0.8.6 0.9 0 0.8.7 c= c= c= c= rijen kolommen 5

Wrap-up algoritme Stap : trek deel voor de komma af Stap : maak bipartite graaf met generaliseerde koppelingsprobleem Stap 3: los generaliseerde koppelingsprobleem op met stromingsalgoritme Stap 4: vertaal antwoord van koppelingsprobleem naar afrondingen in matrix ( betekent: omhoog; 0: omlaag) 53

Variaties van afrondingen Practicumopgave 5: onnauwkeurigheden: principe blijft hetzelfde werk de details zelf uit, en stel evt. wat vragen op het werkcollege Wat lastiger: als je ook naar beneden mag afronden (kan ook met stroming, met gebruik van ondergrenzen) 54

Samenvatting Algoritmen voor stroming in netwerken Ford-Fulkerson, verbetering Edmonds-Karp Toepassing in allerlei koppelingsvragen door modellering als netwerkprobleem 55