Twaalfde college algoritmiek. 11/12 mei Branch & Bound

Vergelijkbare documenten
Twaalfde college algoritmiek. 17 mei Branch & Bound

Twaalfde college algoritmiek. 12 mei Branch & Bound

Elfde college algoritmiek. 29 april Algoritme van Dijkstra, Branch & Bound

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

Elfde college algoritmiek. 16 mei Dijkstra, Gretige algoritmen en Branch & Bound

Twaalfde college algoritmiek. 23 mei Branch & Bound, Heapsort

Elfde college algoritmiek. 28 april Gretige Algoritmen, Algoritme van Dijkstra, Branch & Bound

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify

Vijfde college algoritmiek. 3 maart Brute Force, Exhaustive search en Backtracking

Vijfde college algoritmiek. 2/3 maart Exhaustive search

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

Vijfde college algoritmiek. 17 maart Exhaustive search Graafwandelingen Backtracking

Vijfde college algoritmiek. 9 maart Brute Force. Exhaustive search

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Zesde college algoritmiek. 22 maart Backtracking

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

Tiende college algoritmiek. 26 april Gretige algoritmen

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 5 juni 2007, uur

Tiende college algoritmiek. 14 april Gretige algoritmen

Tiende college algoritmiek. 3 mei Dynamisch programmeren Gretige Algoritmen Algoritme van Dijkstra

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

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

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

Zesde college algoritmiek. 23 maart Backtracking. Verdeel en Heers

Zesde college algoritmiek. 18 maart Backtracking. Verdeel en Heers

Zesde college algoritmiek. 9/10 maart Backtracking. Verdeel en Heers

Twaalfde college complexiteit. 11 mei Overzicht, MST

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Overzicht. Inleiding. Toepassingen. Verwante problemen. Modellering. Exacte oplosmethode: B&B. Insertie heuristieken. Local Search

Negende college algoritmiek. 15 april Dynamisch Programmeren

TW2020 Optimalisering

ALGORITMIEK: antwoorden werkcollege 5

Elfde college complexiteit. 23 april NP-volledigheid III

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Algoritmiek. 2 februari Introductie

Algoritmiek. 15 februari Grafen en bomen

Tentamen combinatorische optimalisatie Tijd:

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

Negende college algoritmiek. 6/7 april Dynamisch Programmeren

Computationele Intelligentie

Tweede college algoritmiek. 12 februari Grafen en bomen

Het minimale aantal sleutels op niveau h is derhalve

Minimum Opspannende Bomen. Algoritmiek

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Computationele Intelligentie

Doorzoeken van grafen. Algoritmiek

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

1 Vervangingsstrategie auto

Vierde college complexiteit. 14 februari Beslissingsbomen

Netwerkstroming. Algoritmiek

l e x e voor alle e E

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).

Eerste college algoritmiek. 5 februari Introductie

Minimum Spanning Tree

2WO12: Optimalisering in Netwerken

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

Optimalisering/Besliskunde 1. College 1 6 september, 2012

TW2020 Optimalisering

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

TW2020 Optimalisering

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 Datastructuren en Algoritmen II

Optimalisering/Besliskunde 1. College 1 3 september, 2014

Heuristieken en benaderingsalgoritmen. Algoritmiek

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Kortste Paden. Algoritmiek

TW2020 Optimalisering

l e x e voor alle e E

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 3 juni 2008, uur

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

TW2020 Optimalisering

De statespace van Small World Networks

Het Queens n 2 graafkleuring probleem

Greedy algoritmes. Algoritmiek

Branch-and-Bound en Cutting Planes

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

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Duration: 2 hrs; Total points: 100 No documents allowed. Use of electronic devices, such as calculators, smartphones, smartwatches is forbidden.

8C080 deel BioModeling en bioinformatica

Examen Datastructuren en Algoritmen II

WISKUNDE-ESTAFETTE 2011 Uitwerkingen

De wissel-eigenschap voor vermenigvuldigen Vermenigvuldigen kan in omgekeerde volgorde gebeuren, want voor ieder paar getallen a enbgeldt: a b=b a.

Optimalisering/Besliskunde 1. College 1 2 september, 2015

Examen Datastructuren en Algoritmen II

Zevende college algoritmiek. 1 april Verdeel en Heers

Examen Datastructuren en Algoritmen II

Kosten. Computationale Intelligentie. Een zoekprobleem met stapkosten. Een voorbeeld: het vinden van een route. Zoeken met kosten.

Negende college complexiteit. 9 april NP-volledigheid I: introductie

Examen Datastructuren en Algoritmen II

Netwerkstroming. Algoritmiek

Hoofdstuk!7!Kortste!paden!

Transcriptie:

Twaalfde college algoritmiek 11/12 mei 2017 Branch & Bound 1

Backtracking Backtracking - bouwt een oplossing component voor component op - kijkt tijdens de stap-voor-stap constructie of de deeloplossing die bekeken wordt nog aan de gestelde restricties/eisen voldoet (kan voldoen) - zo niet, breidt dan de deeloplossing niet verder uit en herziet de laatste keuze (backtrack!) - houdt (alleen) het pad corresponderend met de (deel)oplossing die nu wordt uitgebreid bij - spaart soms veel werk uit vergeleken met exhaustive search - toepasbaar op allerlei problemen waarbij oplossingen stap voor stap gegenereerd kunnen worden - werking te beschrijven m.b.v. een state space tree 2

Optimal feasible Optimalisatieprobleem: er wordt een oplossing gezocht met minimale of maximale... Terminologie: De functie/waarde die ge-optimaliseerd moet worden heet wel de objectfunctie (bijvoorbeeld de lengte van een Hamiltonkring) Een oplossing die voldoet aan de restricties van het probleem heet feasible (toelaatbaar) Een optimale oplossing is een/de toelaatbare oplossing met de beste waarde van de objectfunctie 3

Optimalisatie Backtracking en optimalisatieproblemen - Bij een minimalisatieprobleem kun je bijv. ook stoppen met uitbreiden wanneer je deeloplossing al een grotere waarde van de te optimaliseren functie heeft dan de huidige beste oplossing (die wordt dus bijgehouden/opgeslagen) en alleen maar nog groter kan worden. (Iets dergelijks bij een maximalisatieprobleem.) - Als je snel een (bijna) optimale oplossing vindt, kunnen verdere deeloplossingen eerder worden afgekapt en ben je dus sneller klaar = gretig algoritme. - Backtracking is het efficiëntst wanneer een oplossing gezocht wordt, dus voor optimalisatieproblemen is backtracking niet bij voorbaat de meest geschikte oplossingsmethode. 4

Toewijzingsprobleem Assignmentproblem (toewijzingsprobleem) Gegeven n personen en n taken (jobs). Persoon i kan taak j doen voor kosten[i][j] euro. Gevraagd: de/een toewijzing van de personen aan de jobs (één persoon per job en één job per persoon) met minimale kosten. Voorbeeld: W X Y Z Alice 9 2 7 8 Bob 6 4 3 7 Carol 5 8 1 8 David 7 6 9 4 5

Branch & bound snoeien 13 5 7 13 5 7 5 8 state space tree 5 8 gesnoeide boom Witte knopen corresponderen met toelaatbare oplossingen; rode knopen met niettoelaatbare oplossingen; de waarden bij de bladeren geven de waarde van de objectfunctie van de bijbehorende oplossing; de waarden bij de andere knopen geven een ondergrens op de te verwachten waarde van de objectfunctie; bij de knoop met grens 13 kan meteen gesnoeid worden, die met 7 wordt nog bekeken, maar leidt tot een niet-toelaatbare oplossing 6

TP met B&B -1- W X Y Z Alice 9 2 7 8 Bob 6 4 3 7 Carol 5 8 1 8 David 7 6 9 4 Een ondergrens voor de kosten van een optimale oplossing: (a) neem uit elke rij de kleinste waarde en tel die bij elkaar op: 2 + 3 + 1+4 = 10 (b) neem uit elke kolom de kleinste waarde en tel die bij elkaar op: 5 + 2+1+4 = 12 We genereren oplossingen door de personen een voor een aan een job te koppelen, en gebruiken daarbij de ondergrens volgens suggestie (a). De optimale oplossing heeft totale kosten 13: Alice job X; Bob job W; Carol job Y; David job Z 7

TP met B&B -2- Voor een willekeurige knoop/deeloplossing berekenen we de ondergrens op de te verwachten waarde van de objectfunctie door uit elke verdere rij de kleinste waarde van de nog beschikbare jobs te nemen en deze op te tellen bij de waarde van de deeloplossing. Voor de deeloplossing(en) die Alice aan job W koppelt zal die ondergrens bijvoorbeeld 9+3+1+4 = 17 zijn. (Analoog voor kolommen: kies uit elke verdere kolom de kleinste waarde van de nog beschikbare personen(*).) De volgorde waarin de knopen van de state space tree worden uitgebreid laten we afhangen van de berekende ondergrens. We kiezen de knopen met de beste (=laagste) ondergrens als eerste: dit lijkt de meest veelbelovende knoop. Deze strategie heet wel de best-first branch-and-bound. Priority queue nodig. 8

B&B state space tree C/Y D/Z k = 13 0 og = 10 1 2 3 4 A/W A/X A/Y A/Z og = 17 og = 10 og = 20 og = 18 5 6 7 B/W B/Y B/Z og = 13 og = 14 og = 17 8 9 C/Z D/Y k = 25 W X Y Z Alice 9 2 7 8 Bob 6 4 3 7 Carol 5 8 1 8 David 7 6 9 4 Opgave: los het probleem op met de ondergrenzen berekend volgens (*). 9

Branch-and-bound -1- Branch & bound is alleen toepasbaar op optimalisatieproblemen genereert oplossingen stap voor stap en houdt de tot dusver gevonden beste oplossing bij gebruikt voor elke deeloplossing (= knoop in de state space tree) een of andere ondergrens (minimalisatieprobleem) resp. bovengrens (maximalisatieprobleem) op de te verwachten waarde van de objectfunctie, met als doel - van deeloplossingen te kunnen bepalen dat ze niet verder bekeken hoeven te worden: snoeien (*) - de zoekvolgorde in de zoekruimte (state space tree), dus de volgorde waarin knopen worden gegenereerd en verder bekeken, te leiden (**) (*) zou bij backtracking ook kunnen, maar (**) niet of nauwelijks 10

Branch-and-bound -2- Een branch-and-bound algoritme breidt een knoop (deeloplossing) niet verder uit als de waarde van de ondergrens (bovengrens) bij die knoop niet beter is dan de waarde van de tot dusver gevonden beste oplossing: als ondergrens tot dusver gevonden minimale waarde, dan snoeien de deeloplossing niet meer voldoet aan de restricties (of niet meer uit te breiden is tot een toelaatbare oplossing) er nog maar één volledige, toelaatbare oplossing mogelijk is bij de deeloplossing (i.h.b. als deeloplossing zo n volledige oplossing is); de waarde van deze ene oplossing wordt met beste oplossing tot nu toe vergeleken; update zonodig beste oplossing. 11

Branch-and-bound -3- De volgorde waarin de knopen (deeloplossingen) worden uitgebreid hangt direct af van de berekende grenzen: er worden meerdere deeloplossingen tegelijk bijgehouden, dit in tegenstelling tot backtracking in elke stap wordt een van al deze deeloplossingen gekozen, en daarvan worden alle 1-staps-uitbreidingen (kinderen in de state space tree) bekeken en geëvalueerd (d.w.z. ondergrens/bovengrens bepaald) zinloze uitbreidingen worden meteen verworpen meestal wordt de deeloplossing gekozen die het meest veelbelovend lijkt: best-first branch-and-bound bij minimalisatieproblemen (resp. maximalisatieproblemen) kiezen we de knoop met de laagste ondergrens (resp. hoogste bovengrens) als eerste 12

B&B vs backtracking Werkcollege: Los het toewijzingsprobleem op voor onderstaand voorbeeld met behulp van 1. backtracking (snoeien op de kosten van deeloplossingen (*)) 2. branch-and-bound en vergelijk de hoeveelheid snoeiwerk bij beide methoden, alsmede de volgorde waarin de knopen van de state space tree worden bekeken. W X Y Z Alice 4 7 3 5 Bob 6 2 9 1 Carol 3 9 5 3 David 1 1 1 8 (*) overigens kun je bij backtracking ook ondergrenzen berekenen zoals bij B&B, en die gebruiken om te snoeien; B&B vindt een optimale oplossing echter i.h.a. eerder 13

Knapzakprobleem Gegeven n objecten, met gewicht w 1,...,w n en waarde v 1,...,v n, en een knapzak met capaciteit W. Gevraagd: de meest waardevolle deelverzameling der objecten die in de knapzak past (dus met totaalgewicht W). Voorbeeld: item w v v/w 1 4 40 10 2 7 42 6 3 5 25 5 4 3 12 4 Maximaal gewicht W = 10 14

KZP met B&B item w v v/w 1 4 40 10 2 7 42 6 3 5 25 5 4 3 12 4 Opbouwen van de oplossing: in de i-de stap wordt object i wel of niet gekozen, Een bovengrens voor de waarde van een optimale oplossing: Bij aanvang: W (v 1 /w 1 ) = 100; Na de i-de stap: v + (W w) (v i+1 /w i+1 ), met v de totaalwaarde van de reeds gekozen objecten en w het totaalgewicht daarvan. De optimale oplossing heeft gewicht 9 en waarde 65: {1,3}. 15

B&B state space tree 0 w = 0,v = 0 bg = 100 w = 4,v = 40 bg = 76 1 1 1 2 w = 0,v = 0 bg = 60 3 2 2 4 w = 11 w = 4,v = 40 bg = 70 w = 9,v = 65 bg = 69 5 3 3 6 w = 4,v = 40 bg = 64 7 4 4 8 w = 12 w = 9,v = 65 waarde = 65 item w v v/w 1 4 40 10 2 7 42 6 3 5 25 5 4 3 12 4 W = 10 Zie ook exercise 12.2.5, Levitin. 16

Handelsreizigersprobleem Traveling Salesman Problem (handelsreizigersprobleem) Gegeven n steden waarvan alle onderlinge afstanden bekend zijn. Gevraagd: de/een kortste route die elke stad precies één keer aandoet, en weer terugkeert in het vertrekpunt. Ofwel: vind de/een kortste Hamiltonkring in een samenhangende gewogen (complete) graaf. Het gaat hier om een ongerichte graaf. 17

Voorbeeld a 3 b 5 6 1 7 8 c 2 4 3 d 9 e De optimale oplossing heeft lengte 16: a, b, d, e, c, a Mogelijke ondergrenzen voor de kosten van een optimale oplossing... 18

TSP met Branch & Bound Mogelijke ondergrenzen voor de kosten van een optimale oplossing: a 3 b eenvoudig: n kortste afstand tussen twee knopen; 5 1 = 5 bij aanvang (analoog als reeds takken gekozen zijn). iets beter: de lengtes van de n kortste takken gesommeerd; 1 + 2 + 3 + 3 + 4 = 13 bij aanvang (analoog als reeds takken gekozen zijn). 8 c 5 6 1 7 2 4 e 3 d 9 nog beter: som over alle knopen i van de afstanden van knoop i tot de twee dichtstbijzijnde knopen (inclusief al gekozen takken), en dat gedeeld door 2(*); ((1+3)+(3+6)+(1+2)+(3+4)+(2+3))/2 = 14 bij aanvang. Opmerking: delen door 2 is niet nodig; je kunt ook 2 lengte minimaliseren (*). 19

tree a 3 b Branch & Bound, state space 8 c 5 6 1 7 a,b,c og = 4+9+7 +7+5 = 32 a,b,c,d (e,a) 2L = 11+9+10 +7+11 = 48 0 a og = 4+9+3 +7+5 = 28 4 d 9 2 3 e 1 2 3 4 a,b a,c a,d a,e og = 4+9+3 og = 6+9+3 og = 9+9+3 +7+5 = 28 +8+5 = 31 +7+10 = 38 a,b,d a,b,e a,d,b a,d,c a,d,e og = 4+10+3 og = 4+12+3 og = 6+10+3 og = 6+9+3 +10+5 = 32 +7+11 = 37 +12+5 = 36 +8+5 = 31 a,d,e,c 5 6 7 8 9 10 13 14 15 16 11 12 a,b,c,e (d,a) 2L = 8+9+8 +8+5 = 38 a,b,d,c (e,a) 2L = 11+10+6 +11+10 = 48 a,b,d,e (c,a) 2L = 4+10+3 +10+5 = 32 a,d,e,b (c,a) 2L = 6+15+7 +8+12 = 48 20

Toelichting De volgende versnellingen zijn mogelijk: bekijk alleen Hamiltonkringen startend in a immers, de kring c, d, e, a, b, c is hetzelfde als de kring a, b, c, d, e, a (en als d, e, a, b, c, d en e, a, b, c, d, e en als b, c, d, e, a, b). bekijk alleen situaties waarbij b wordt bezocht voor c de kring a, c, d, b, e, a is dezelfde kring als a, e, b, d, c, a maar in omgekerde volgorde. Beide hebben dezelfde lengte (want deze graaf is ongericht). Zie vorige sheet: deeloplossingen beginnend met a, c zijn ontoelaatbaar (infeasible) na uitbreiding komt c voor b. Deze knoop hoeft dus ook niet verder bekeken te worden; bijbehorende oplossingen komen we elders wel tegen. Bijv.: a, c, e, b, d, a vinden we terug als a, d, b, e, c, a, dus via knoop a, d. 21

TSP met B&B We zeiden wel: delen door 2 is niet nodig; je kunt ook 2 lengte minimaliseren (*) Delen door 2 geeft echter wel scherpere ondergrens, als je resultaat afrondt naar boven. In vorige voorbeeld wordt ondergrens 31 van knoop a,d hiermee 16. Deze knoop hoef je nu niet uit te werken (zie boom in boek). 22

Exercise 12.2.9 Werkcollege: Nog een voorbeeld, met als ondergrens wederom de som van de twee kortste takken per knoop (eventueel gedeeld door 2, zoals in het boek). a 2 b 7 8 5 3 c 1 d De optimale oplossing heeft lengte 11: a, b, d, c, a. 23

Exercise 12.2.9, vervolg a,b og = 7+5 +6+4 = 22 a,b,c (d,a) 2L = 9+10 +9+8 = 36 0 a og = 7+5 +6+4 = 22 1 2 3 a,c og = 9+5 +6+8 = 28 4 5 a,b,d (c,a) 2L = 7+5 +6+4 = 22 a,d 2 a b 7 8 5 3 1 c d 24

ES Bt B&B (1) Overeenkomsten en verschillen tussen: Exhaustive search (ES) Backtracking (Bt) Best-first branch-and-bound (B&B) N.B.: Verschillende punten hieronder hangen soms met elkaar samen. ES geschikt voor optimalisatieproblemen en andere problemen Bt geschikt voor optimalisatieproblemen en andere problemen B&B alleen geschikt voor optimalisatieproblemen 25

ES Bt B&B (2) ES kán oplossing component voor component opbouwen, maar is ook geschikt voor problemen waar geen sprake is van componenten en deeloplossingen Bt bouwt oplossing component voor component op B&B bouwt oplossing component voor component op ES controleert pas op geldigheid als het complete oplossing heeft opgebouwd (in geval dat ES oplossing component voor component opbouwt, ook verderop) Bt breidt deeloplossing niet verder uit als het geen geldige complete oplossing meer kan worden B&B breidt deeloplossing niet verder uit als het geen geldige complete oplossing meer kan worden 26

ES Bt B&B (3) ES let niet op ondergrens/bovengrens voor waarde complete oplossing Bt kán besluiten om deeloplossing niet verder uit te breiden als ondergrens/bovengrens voor waarde complete oplossing niet beter is dan beste waarde van tot nu toe gevonden complete oplossing, maar dit hoeft niet B&B breidt deeloplossing niet verder uit als ondergrens/bovengrens voor waarde complete oplossing niet beter is dan beste waarde van tot nu toe gevonden complete oplossing ES houdt op elk moment slechts één deeloplossing bij (en impliciet de daaraan voorafgaande deeloplossingen in de toestandsboom) Bt houdt op elk moment slechts één deeloplossing bij (en impliciet de daaraan voorafgaande deeloplossingen in de toestandsboom) B&B houdt verzameling van deeloplossingen bij die (mogelijk) nog uitgebreid worden tot complete oplossing 27

ES Bt B&B (4) ES genereert bij uitbreiden van deeloplossing één kind tegelijk Bt genereert bij uitbreiden van deeloplossing in principe één kind tegelijk B&B genereert bij uitbreiden van deeloplossing meteen alle kinderen Bt kán ondergrens/bovengrens gebruiken om deeloplossing te selecteren die als eerstvolgende wordt uitgebreid, maar alleen om te kiezen tussen de kinderen van de huidige deeloplossing, en bovendien is dit niet standaard B&B gebruikt ondergrens/bovengrens om deeloplossing te selecteren die als eerstvolgende wordt uitgebreid ES volgt (in de praktijk) depth-first wandeling in toestandsboom bij zoeken naar (optimale) oplossing Bt volgt depth-first wandeling in toestandsboom bij zoeken naar (optimale) oplossing B&B kan heen en weer springen in toestandsboom bij zoeken naar optimale oplossing 28

(Werk)college Lezen/leren bij dit college: paragraaf 12.2 Werkcollege: vanmiddag, 13:45 15:30, in deze zaal Opgaven: zie http://www.liacs.leidenuniv.nl/~vlietrvan1/algoritmiek Na werkcollege: assistentie opdracht 3 Laatste keer: 18/19 mei 2017: tentamen oefenen Tentamen: dinsdag 6 juni 2017, 14.00 17.00, Snellius Vragenuur? 29