Begrenzing van het aantal iteraties in het max-flow algoritme



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

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.

Overzicht. 1. Definities. 2. Basisalgoritme. 3. Label setting methoden. 4. Label correcting methoden. 5. Ondergrenzen. 6.

Netwerkstroming. Algoritmiek

TW2020 Optimalisering

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

Netwerkstroming. Algoritmiek

TW2020 Optimalisering

TW2020 Optimalisering

Examen Discrete Wiskunde donderdag 12 april, 2018

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

TW2020 Optimalisering

Uitwerking vierde serie inleveropgaven

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

TW2020 Optimalisering

2WO12: Optimalisering in Netwerken

2WO12: Optimalisering in Netwerken

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

1 Vervangingsstrategie auto

Radboud Universiteit Nijmegen

Optimaliseren in Netwerken

l e x e voor alle e E

Fundamentele Informatica

TW2020 Optimalisering

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Getaltheorie I. c = c 1 = 1 c (1)

Examen Datastructuren en Algoritmen II

Uitwerkingen eerste serie inleveropgaven

TW2020 Optimalisering

TW2020 Optimalisering

2WO12: Optimalisering in Netwerken

Elfde college complexiteit. 23 april NP-volledigheid III

l e x e voor alle e E

Een combinatorische oplossing voor vraag 10 van de LIMO 2010

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

Basiskennis lineaire algebra

3. Elke lijn van een graaf draagt twee bij tot de som van alle graden.

Tweede huiswerkopdracht Lineaire algebra 1 Uitwerking en opmerkingen

Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen. deel 1. Negende college

Benaderingsalgoritmen

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

Herexamen Discrete Wiskunde deel I-II donderdag 6 juli, 2017

Jordan normaalvorm. Hoofdstuk 7

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

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

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Radboud Universiteit Nijmegen

Hoofdstuk 13: Integer Lineair Programmeren

Uitwerkingen Sum of Us

TW2020 Optimalisering

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Bespreking Examen Analyse 1 (Augustus 2007)

Optimalisering en Complexiteit, College 10. Begrensde variabelen. Han Hoogeveen, Utrecht University

Universiteit Utrecht Departement Informatica. Examen Optimalisering op dinsdag 29 januari 2019, uur.

Tiende college algoritmiek. 14 april Gretige algoritmen

Kortste Paden. Algoritmiek

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING

Uitwerking Puzzel 93-1, Doelloos

TW2020 Optimalisering

Functievergelijkingen

TW2020 Optimalisering

Automaten. Informatica, UvA. Yde Venema

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Lijstkleuring van grafen

Ter Leering ende Vermaeck

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

Bilineaire Vormen. Hoofdstuk 9

Lijst-kleuringen in de grafentheorie

Module 3. Maximale stromen

Eigenschappen van driehoeken

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

Examen Datastructuren en Algoritmen II

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

3 De stelling van Kleene

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

Discrete modellen in de toegepaste wiskunde (WISB136) Uitwerkingen proeftentamen.

Examen Datastructuren en Algoritmen II

V.4 Eigenschappen van continue functies

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

Tiende college algoritmiek. 26 april Gretige algoritmen

Kettingbreuken. 20 april K + 1 E + 1 T + 1 T + 1 I + 1 N + 1 G + 1 B + 1 R + 1 E + 1 U + 1 K + E + 1 N A + 1 P + 1 R + 1 I + 1

Tentamen combinatorische optimalisatie Tijd:

In dit gedeelte worden drie problemen genoemd die kunnen voorkomen in netwerken.

Formeel Denken 2014 Uitwerkingen Tentamen

Radboud Universiteit Nijmegen

TW2040: Complexe Functietheorie

Kortste Paden. Algoritmiek

Elfde college algoritmiek. 10 mei Algoritme van Dijkstra, Gretige Algoritmen

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Meetkundige Ongelijkheden Groep 2

Branch-and-Bound en Cutting Planes

III.3 Supremum en infimum

In Katern 2 hebben we de volgende rekenregel bewezen, als onderdeel van rekenregel 4:

3.2 Basiskennis De getallenlijn Symbolen, tekens en getallen. 92 Algebra. Inhoofdstuk1zijnaandeordegeweest: Het=teken. =staat.

Examen Datastructuren en Algoritmen II

Stelling. SAT is NP-compleet.

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Kies voor i een willekeurige index tussen 1 en r. Neem het inproduct van v i met de relatie. We krijgen

Transcriptie:

Begrenzing van het aantal iteraties in het max-flow algoritme Het oplossen van het maximum stroom probleem met behulp van stroomvermeerderende paden werkt, maar het aantal iteraties kan aardig de spuigaten uitlopen wanneer je niet uitkijkt. Indien alle capaciteiten geheeltallig zijn, dan weet je dat je in iedere iteratie de stroom met minstens één verhoogt, en dus is het aantal iteraties beperkt tot de capaciteit van de minimale snede. Dit is in het algemeen echter niet polynomiaal, zoals volgt uit het volgende voorbeeld (waarbij je niet zo slim de stroomvermeerderende paden kiest): 1 3 s 1 2 4 t De maximumstroom is natuurlijk gelijk aan 2, maar je zou kunnen beginnen met één eenheid stroom te sturen via het pad (s, 1)(1, 4)(4, t). Nu klapt de pijl (1, 4) om in de residuele graaf, waarna je het stroomvermeerderende pad (s, 2)(2, 4), (4, 1), (1, 3), (3, t) zou kunnen vinden, waarover je de stroom één eenheid kan verhogen. De pijl (1, 4) is weer leeg, zodat je het pad (s, 1)(1, 4)(4, t) weer kunt gebruiken, enz. Dan vind je na 2 iteraties eindelijk de optimale stroom. Het schijnt nog erger te zijn in geval van niet-geheeltallige capaciteiten: dan kun je bij een slechte keuze van je stroomvermeerderende paden naar een niet-optimale oplossing convergeren. Om deze problemen te voorkomen wordt er bij de keuze van het stroomvermeerderende pad niet zo maar een pad gekozen, maar een pad dat zo min mogelijk pijlen bevat. Dinic heeft bewezen dat je dan in maximaal V A iteraties een maximale stroom vindt, ongeacht of de capaciteiten geheeltallig zijn. Stelling van Dinic Wanneer in de residuele graaf steeds een stroomvermeerderend pad wordt gekozen met een minimaal aantal pijlen, dan bedraagt het aantal iteraties ten hoogste V A. Bewijs Definieer D 1, D 2, als de reeks van residuele grafen in iteratie 1, 2,. Definieer ϕ(d i ) als de afstand van s naar t in D i (iedere pijl heeft lengte 1) en definieer ψ(d i ) als het aantal pijlen dat in tenminste één kortste pad in D i van s naar t voorkomt. Hiervoor geldt ϕ(d i ) V (een kortste pad bevat geen cykels) en ψ(d i ) A (wanneer zowel (v, w) als (w, v) in een kortste pad van s naar t in D i voorkomen, dan hebben die paden de vorm (s v)(v, w)(w t) en (s w)(w, v)(v t), waarbij s v een pad van s naar v aangeeft. Door deze paden te combineren, kun je een korter pad van s naar t in D i vinden: Tegenspraak). Het bewijs is gebaseerd op het bewijzen van de volgende twee claims: 1. ϕ(d i+1 ) ϕ(d i ) (paden worden niet korter); 2. als ϕ(d i+1 ) = ϕ(d i ), dan geldt ψ(d i+1 ) < ψ(d i ). Uit deze beide claims en ϕ(d i ) V en ψ(d i ) A volgt dan de correctheid van de stelling. Voor het bewijs van de claims hebben we het volgende hulpresultaat nodig.

Lemma Beschouw een willekeurige iteratie i. Definieer α v als de afstand van s naar v in D i voor alle v V ; dus α s = 0 en α t = ϕ(d i ). Nu geldt voor iedere pijl (v, w) D i+1 : α w α v + 1 α w α v 1 als (v, w) D i als (w, v) D i } α w α v 1. Bewijs lemma. Wanneer (v, w) D i, dan is (s v)(v, w) een pad in D i met lengte α v + 1, dus de lengte van het kortste pad van s naar w in D i heeft lengte α w α v + 1. Wanneer (w, v) D i en (v, w) D i, dan is de pijl (v, w) in D i+1 gekomen door (w, v) in het stroomvermeerderende pad te gebruiken; dit stroomvermeerderende pad P is van de vorm (s w)(w, v)(v t) en heeft minimale lengte. De stukken (s w) en (s w)(w, v) vormen dus een pad van minimale lengte van s naar w en v, respectievelijk. Hieruit volgt α v = α w + 1. Bewijs claims. Stel (s, v 1,..., v k 1, t) is een kortste pad van s naar t in D i+1, dus ϕ(d i+1 ) = k. Aangezien (s, v 1 ),..., (v k 1, t) D i+1, volgt uit het lemma dat α t α vk 1 1,, α v1 α s 1. Uit deze ongelijkheden volgt ϕ(d i+1 ) = k 1 (α t α vk 1 ) + (α vk 1 α vk 2 ) + + (α v1 α s ) = α t α s = ϕ(d i ); dit bewijst Claim 1. Gelijkheid van ψ(d i+1 ) en ψ(d i ) kan alleen optreden wanneer α t α vk 1 = 1,, α v1 α s = 1, dus wanneer alle pijlen (s, v 1 ),..., (v k 1, t) in D i zitten. Dit moet voor ieder kortste pad van s naar t in D i+1 gelden, dus alle pijlen die in een kortste pad van s naar t in D i+1 zitten, zitten ook in een kortste pad van s naar t in D i ; hieruit volgt ψ(d i+1 ) ψ(d i ). Gelijkheid kan zich echter niet voordoen, want minstens één pijl in het gebruikte stroomvermeerderende pad in D i wordt volgetankt en komt niet terug in D i+1. in-cost max-flow Uiteraard is niets in het leven gratis, en daarom veronderstellen we vanaf nu dat je voor het transport van stroom moet betalen. We nemen aan dat er geen vaste kosten zijn; de kosten om één eenheid stroom door een pijl (i, j) te sturen bedragen k ij. Het doel is nog steeds om een stroom van maximale omvang te vinden, maar uit de verzameling van stromen van maximale omvang zoeken we eentje met minimale kosten. We gebruiken de notatie dat voor een gegeven stroom x (hoeft niet maximaal te zijn) kost(x) en omvang(x) de kosten en omvang van x aangeven. We gaan in het onderstaande steeds uit van een gerichte graaf G = (V, A), waarbij de bron s en de put t zijn gegeven. De capaciteit en kosten van een pijl (i, j) A worden aangeduid met c ij en k ij. Definitie. Een stroom x heet een min-cost stroom wanneer kost(x) minimaal is binnen de verzameling van stromen met omvang gelijk aan omvang(x).

Gegeven een stroom x, stel de residuele graaf G = (V, Ã) op. Geef aan iedere pijl (i, j) Ã een lengte l(i, j), waarbij { kij als (i, j) A l(i, j) = als (j, i) A k ji Wanneer zowel (i, j) als (j, i) in A zitten, dan kies je voor l(i, j) de kleinste waarde. Stelling. Stel x is een min-cost stroom; stel G = (V, Ã) is de bij x horende residuele graaf. Bepaal in G een stroomvermeerderend pad van minimale lengte (op basis van de afstanden l(i, j)). Verhoog x volgens dat stroomvermeerderende pad; noem de nieuwe stroom x. Dan is x ook een min-cost stroom. Bewijs. We gaan bewijzen dat voor iedere stroom y met omvang(y ) = omvang(x ) geldt dat kost(y ) kost(x ). Definieer voor alle v V φ(v) als de afstand van v naar t in G op basis van de afstanden l(i, j). Definieer ɛ = omvang(x ) omvang(x). Stroom x is uit x ontstaan door x te verhogen met ɛ op de pijlen in voorwaartse richting op het stroomvermeerderende pad en door x te verlagen met ɛ op de pijlen in achterwaartse richting op het stroomvermeerderende pad, dus cost(x ) = cost(x) + ɛ maal de lengte van het stroomvermeerderende pad. Aangezien het pad minimale lengte heeft, geldt kost(x ) = kost(x) + ɛφ(s). We gaan nu een grens afleiden voor kost(y ) kost(x). Hulpresultaat. Voor alle (i, j) A geldt Als y ij > x ij, dan k ij = l(i, j) φ(i) φ(j). Als y ij < x ij, dan k ij l(j, i) φ(i) φ(j). Bewijs hulpresultaat. Als y ij > x ij, dan zat de pijl (i, j) dus niet vol, en derhalve zit (i, j) in de residuele graaf. Vanwege de bepaling van l(i, j) geldt dan k ij l(i, j) (geen gelijkheid, want (j, i) kan ook tot A behoren). Aangezien φ(i) gelijk is aan de afstand van i naar t en het pad (i, j), (j t) een mogelijkheid is, volgt φ(i) l(i, j) + φ(j). Voor het bewijzen van de tweede ongelijkheid gebruiken we dat uit x ij > 0 volgt dat (j, i) Ã, zodat l(j, i) k ij of te wel, k ij l(j, i). Verder geldt als boven dat φ(j) l(j, i) + φ(i), en dus l(j, i) φ(i) φ(j). Uit het hulpresultaat volgt k ij (y ij x ij ) (φ(i) φ(j))(y ij x ij ). Dit geeft kost(y ) kost(x) = k ij (y ij x ij ) (φ(i) φ(j))(y ij x ij ).

In deze laatste uitdrukking komt φ(i) voor met een plusteken voor iedere pijl (i, j) A en met een minteken voor iedere pijl (h, i) A. Door om te schrijven vinden we (φ(i) φ(j))(y ij x ij ) = i V φ(i) (y ij x ij ) (h,i) A (y h,i x hi ) = φ(i) y ij y h,i i V (h,i) A φ(i) i V x ij (h,i) A x h,i. Aangezien zowel y als x een stroom is, is het stuk tussen rechte haken gelijk aan de uitstroom in i minus de instroom in i, en dit is gelijk aan 0 voor alle i V \ {s, t}. Verder geldt φ(t) = 0, en het enige dat overblijft van de laatste uitdrukking is φ(s) (s,j) A y sj (h,s) A y h,s φ(s) (s,j) A x sj (h,s) A x h,s. Aangezien het stuk tussen haken precies gelijk is aan de omvang van de betreffende stroom, vinden we dat dit laatste stuk gelijk is aan φ(s)[omvang(y ) omvang(x)] = φ(s)[omvang(x ) omvang(x)] = ɛφ(s) = kost(x ) kost(x). Wanneer we dit invullen in onze oorspronkelijke afschatting, dan vinden we kost(y ) kost(x) kost(x ) kost(x). Step 1. Ga uit van de nulstroom. Step 2. Stel de residuele graaf op met lengtefunctie l(i, j). Dit leidt tot het volgende algorithme: Step 3. Bepaal een stroomvermeerderend pad van minimale lengte in de residuele graaf; wanneer geen stroomvermeerderend pad kan worden gevonden, dan Stop. Step 4. Verhoog de stroom volgens het stroomvermeerderende pad; Ga naar 2. Het bepalen van een kortste pad in de residuele graaf gebeurt met behulp van Bellman-Ford, aangezien er geen negatieve cykels voor kunnen komen in de residuele graaf. Stelling Als x een min-cost stroom is, dan bevat de bijbehorende residuele graaf G = (V, Ã) geen cykels met negatieve lengte. Bewijs. Stel dat (v 0, v 1,..., v k, v 0 ) een cykel in G is met negatieve lengte, dus l(v 0, v 1 )+..., l(v k, v 0 ) < 0. Bepaal de capaciteit van alle kanten in dit cykel; stel ɛ is het minimum. Pas de stroom als volgt aan: voorwaartse pijlen in het cykel krijgen er ɛ aan stroom bij; bij achterwaartse pijlen wordt de stroom met ɛ verminderd; en voor de overige kanten verandert de stroom niet. De constructie levert een stroom y op met omvang(y) = omvang(x) en cost(y) =

cost(x) + ɛ(l(v 0, v 1 ) +..., l(v k, v 0 )) < cost(x). Tegenspraak. Dit betekent dat je in polynomiale tijd kunt checken of een gegeven stroom een oplossing is van het min-cost max-flow probleem door een snede te geven met capaciteit gelijk aan de omvang van de stroom en door te checken of de bijbehorende residuele graaf een cykel bevat met negatieve lengte. Verder kun je ook nog bewijzen dat de lengte van de gevonden stroomvermeerderende paden niet afneemt; dit is een werkcollege opgave.