Heuristieken en benaderingsalgoritmen Algoritmiek.

Slides:



Advertisements
Verwante presentaties
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Advertisements

Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen.
Datastructuren Quicksort
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica IN3 005 Deel 2 College 5 Cees Witteveen
Uitwerking tentamen Functioneel Programmeren 29 januari 2009.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Computationele complexiteit: NP-volledigheid
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Fibonacci & Friends Met dank aan Gerard Tel.
1 Datastructuren Heapsort College 4. 2 Vandaag  Kort: ADT vs Datastructuur  Heaps en Heapsort  Tijd over: ondergrenzen voor sorteren; nog sneller sorteren.
1 Datastructuren Zoekbomen II Invoegen en weglaten.
NP-volledigheid Algoritmiek © Hans Bodlaender, Oktober 2002.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
vwo A Samenvatting Hoofdstuk 12
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
IJspakketten Annette Ficker Tim Oosterwijk
IJspakketten Annette Ficker Tim Oosterwijk
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
TU Delft Groep Parallelle en Gedistribueerde Systemen Voorbeeld uitwerking reductie bewijs in3120 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 Oplossing Langste Pad Probleem Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in3005 Deel 2 College 6 Cees Witteveen
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen van.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 2 Cees Witteveen.
H4 Differentiëren.
Intermezzo: Queries op zoekbomen Datastructuren. Queries: hoe op te lossen We hebben: – Een zoekboom (gewoon, rood-zwart, AVL,…) – Een vraag / querie.
Representatie & Zoeken
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
1 Datastructuren Quicksort College 3. 2 Vorige keren  O-notaties  Sorteren: insertion sort, bubble sort  Kosten (n 2 ) tijd in het slechtste geval.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen (vorige keer) Hashtabellen –Oplossen van botsingen met “ketens” (chaining) Vorige.
Allard Kamphuisen Hado van Hasselt Wilco Broeders
Gecijferdheid les 1.4 Grootst gemene deler Kleinst gemene veelvoud
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
Loopbaan oriëntatie en begeleiding
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Woordjes leren.
Amorized Analysis en Union-Find Algoritmiek. 2 Vandaag Amortized analysis –Technieken voor tijdsanalyse van algoritmen Union-find datastructuur –Datastructuur.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Algoritmiek 2015 / 2016 Algoritmiek1. Waarom dit vak? Omdat –Mensen ongeduldig zijn … –Het belangrijk is dat antwoorden (van berekeningen door computers)
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Kortste Paden Algoritmiek. 2 Vandaag Kortste Paden probleem All pairs / Single Source / Single Target versies DP algoritme voor All Pairs probleem (Floyd’s.
Netwerkstroming Algoritmiek. 2 Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede.
Greedy algorithms Algoritmiek. 2 Vandaag Greedy algorithms: wat zijn dat? Voorbeelden: –gepast betalen met euromunten –AB-rijtje –… Knapsack probleem.
Uitleg  In dit spel is het de bedoeling dat je zoveel mogelijk punten verzamelt door vragen goed te beantwoorden.  In ronde 2, 3 en 4 staat er ook een.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Datastructuren voor grafen Algoritmiek. 2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –…
Gerandomiseerde algoritmes
Doorzoeken van grafen Algoritmiek.
Netwerkstroming Algoritmiek.
NP-volledigheid Algoritmiek.
Dynamisch Programmeren III
Dynamisch Programmeren II
All-Pairs Shortest paths
Minimum Opspannende Bomen
Benaderingsalgoritmen
Greedy algorithms Algoritmiek.
volgende bladzijde terug
Slim tellen.
Nim, een strategisch spelletje
Tellen met kaarten.
Slim tellen.
Tellen met kaarten.
Python – For loop + strings
Transcript van de presentatie:

Heuristieken en benaderingsalgoritmen Algoritmiek

2 Wat te doen met `moeilijke’ optimaliseringsproblemen? Voor veel problemen, o.a. optimaliseringsproblemen is geen algoritme bekend dat het probleem voor alle inputs binnen redelijke tijd exact oplost – bijvoorbeeld voor een probleem dat NP-volledig is. Wat te doen? –Kijk naar speciale gevallen. (Misschien uit toepassing?) –Vind een algoritme dat vaak snel werkt. –Gebruik een langzaam algoritme, maar versnel het zoveel mogelijk. –Gebruik een algoritme dat het probleem niet exact oplost, maar in de buurt van het goede antwoord komt. Heuristieken Benaderingsalgoritmen

Algoritmiek3 Vandaag Voorbeelden van optimaliseringsproblemen Heuristieken en benaderingsalgoritmen: wat zijn dit? De kwaliteit van een benaderingsalgoritme Verschillende algoritmen en hun analyse –Handelsreizigersprobleem –Subset sum; Knapsack Polynomiale tijd approximatie schema’s

Algoritmiek4 Het Handelsreizigersprobleem Gegeven: stel steden 1, … n. Voor elk paar steden i, j, een afstand d(i,j). Gevraagd: wat is de lengte van de kortste route die in stad 1 begint, elke stad precies 1 keer bezoekt en weer in stad 1 eindigt

Algoritmiek5 Over het Handelsreizigersprobleem Belangrijk probleem (veel toepassingen). Moeilijk exact op te lossen. We kunnen zoeken naar een algoritme dat routes vindt, die misschien niet de allerkortste zijn, maar waarvan de lengte wel in de buurt van de kortste lengte zit.

Algoritmiek6 Greedy: Nearest Neighbor Heuristiek Begin in stad 1. Herhaal tot we alle steden gehad hebben: –Ga vanuit de plek waar we zijn naar de dichtstbijzijnde stad waar we nog niet gekomen waren. Ga weer terug naar stad 1. Werkt soms heel redelijk, maar kan soms ook erg ver van de juiste oplossing af zitten.

Algoritmiek7 Heuristieken en benaderingsalgoritmen Heuristiek –Algoritme dat een antwoord voor een optimaliseringsprobleem geeft dat hopelijk in de buurt van het optimale (exacte) antwoord zit. –Kwaliteit van heuristiek te analyseren met behulp van experimenten Benaderingsalgoritme –Algoritme dat een antwoord voor een optimaliseringsprobleem geeft dat bewijsbaar in de buurt van het optimale (exacte) antwoord zit. –Bewijs te leveren dat algoritme nooit meer dan … van optimaal afzit.

Algoritmiek8 Het Handelsreizigersprobleem met driehoeksongelijkheid Voor het handelsreizigersprobleem zonder speciale extra eisen zijn geen polynomiale tijd benaderingsalgoritmen bekend met een constante approximatie- ratio. Waarschijnlijk bestaan die ook niet. Vaak geldt echter de driehoeksongelijkheid: d(v,w)  d(v,x) + d(x,w) vw x Bijv.: bij instanties waar afstanden geometrisch zijn Bijv.: bij instanties waar afstanden geometrisch zijn

Algoritmiek9 Een benaderingsalgoritme voor het Handelsreizigersprobleem met driehoeksongelijkheid Maak een minimum opspannende boom T. Geef de knopen van T in preorder volgorde Preorder volgorde is: Loop door de boom heen, maar sla over waar je al geweest bent.

Algoritmiek10 Analyse Schrijf: –OPT: lengte optimale tour –OPT – e: lengte optimale tour met 1 kant weggelaten –wT: totale gewicht kanten op T –R: lengte tour van algoritme wT  OPT – e  OPT R  2 wT. Dus: R  2* OPT Driehoeksongelijkheid; Uitleg op bord. Driehoeksongelijkheid; Uitleg op bord.

Algoritmiek11 Begrippen Een algoritme gebruikt polynomiale tijd, wanneer er een constante r is, zodat het algoritme bij inputgrootte n O(n r ) tijd gebruikt. Een algoritme A is een c-relatief approximatie algoritme voor een optimaliseringsprobleem, als voor iedere input instantie X met optimale waarde OPT(x) en antwoord gegeven door A: A(x): –OPT(x)  A(x)  (1+c) * OPT(x) (minimaliseringprobleem) –(1 – c) * OPT(x)  A(x)  OPT(x) (maximaliseringprobleem)

Algoritmiek12 Subsetsum maximalisatie Goudzoeker Jim heeft goudklompen gevonden met gewichten g 1, …, g n. Helaas kan hij hooguit G gewicht dragen. Hij zoekt dus een deelverzameling van de goudklompen met –Gewicht ten hoogste G –Gewicht zo groot mogelijk (mits ten hoogste G.) –Goudklompjes kunnen niet gedeeld worden (geen fractionele oplossingen). Kan met Dynamisch Programmeren worden opgelost, in O(n G) tijd. Maar als G een heel groot getal is (Jim geeft alle gewichten in milligrammen aan…) dan kost dit erg veel tijd.

Algoritmiek13 Knapsack Een inbreker kan hooguit G gewicht dragen. Hij kan voorwerpen 1, …, n meenemen, met gewichten g 1, …, g n, en waardes w 1, …, w n. Alle gewichten en opbrengsten positieve gehele getallen. Wat is het maximum totale waarde die de inbreker kan meenemen? Dus: zoek deelverzameling voorwerpen met som gewichten hooguit G, met som waardes zo groot mogelijk. Generaliseert het vorige probleem (nl: we krijgen subset sum maximalisatie als we alle g i = w i nemen in Knapsack.)

Algoritmiek14 Greedy heuristiek voor Subset maximalisatie Begin met S de lege verzameling Herhaal, totdat voor elk voorwerp niet in S, het gewicht van S en dat voorwerp meer dan G is: –Van alle voorwerpen die nog in S gestopt kunnen worden, neem het zwaarste en stop dat in S. Output S.

Algoritmiek15 Kwaliteit van de heuristiek Geeft een benadering die hooguit een factor 2 van de optimale oplossing af zit, d.w.z.: 1-relatieve benadering. Bewijs: –Als er een voorwerp met gewicht tussen G/2 en G is: triviaal. –Als alle voorwerpen samen gewicht hooguit G hebben: triviaal. –Anders: greedy algoritme vindt oplossing met totaalgewicht tussen G/2 en G. (Onder G/2 kan er nog wat bijgestopt worden.) In slechtste geval benaderingen met factor 2-  ; voor willekeurig kleine  : Neem voorwerpen met gewichten G/2+1, G/2, G/2.

Algoritmiek16 1 e Greedy heuristiek voor Knapsack probleem Sorteer de voorwerpen op `soortelijke waarde’: w[1]/g[1]  w[2]/g[2]  w[3]/g[3]  …  w[n]/g[n] Neem S de lege verzameling; gewicht=0. For i=1 to n do –If gewicht + g[i]  G then Stop voorwerp i in S; gewicht += g[i]. Output S.

Algoritmiek17 Analyse 1 e heuristiek voor Knapsack Kan willekeurig slecht zijn: neem een willekeurig grote x > 2; G = x en twee voorwerpen: –g[1]= 1; w[1]=2 –g[2]=x; w[2]=x. Heuristiek geeft oplossing: {1}: waarde 2. Optimaal is oplossing {2}: waarde x.

Algoritmiek18 2 e Greedy heuristiek voor Knapsack probleem Laat S de verzameling gevonden door het 1 e greedy algoritme zijn, met waarde W. Laat j het voorwerp met de hoogste waarde (en gewicht hooguit G) zijn. If (w[j] > W) then –Output {j}. Else Output S. Voor praktische verbetering: Probeer nog wat voorwerpen bij j te stoppen. Voor bewijs kwaliteit niet nodig. Voor praktische verbetering: Probeer nog wat voorwerpen bij j te stoppen. Voor bewijs kwaliteit niet nodig.

Algoritmiek19 Kwaliteit 2 e heuristiek Eerst dit: De greedy heuristiek geeft een optimale oplossing als we fractionele oplossingen toelaten. Stelling: De waarde van de oplossing van deze tweede heuristiek is altijd binnen een factor 2 van de optimale waarde. Bewijs: Neem aan: elk voorwerp heeft gewicht hooguit G. (Mag.) Als alle voorwerpen samen gewicht hooguit G hebben: triviaal. Anders…

Algoritmiek20 Stel l is het eerste voorwerp dat niet in de verzameling gestopt is. Het greedy algoritme heeft in elk geval de eerste l–1 voorwerpen. Als we fractionele oplossingen toelaten, dan is het greedy algoritme daarvoor optimaal, en geeft de eerste l – 1 voorwerpen plus een gedeelte van het l de voorwerp. Noteer: OPTF: optimale fractionele oplossing; OPT: optimale niet-fractionele oplossing; Z oplossing gevonden door de heuristiek. Benaderingsalg. geeft minstens dit En ook dit …

Algoritmiek21 Einde bewijs Het meest waardevolle voorwerp j heeft waarde meer dan w[l], dus het algoritme geeft minstens output w[l]. waarde van heuristiek  2* OPT. QED.

Algoritmiek22 Polynomiale tijd approximatie schema’s Een algoritme is een approximatieschema, als het naast de `gewone’ input ook een waarde  krijgt, zodat het bij gegeven  een  –relatief approximatie algoritme is. Een algoritme is een polynomiale tijd approximatie schema, als het een approximatieschema is, en voor elke  bij input grootte n in O(n r ) tijd werkt, voor constante r. Een algoritme is een volledig (fully) polynomiale tijd approximatie schema, als het een approximatieschema is, en voor elke  bij input grootte n in O((1/  s n r ) tijd werkt, voor constante r, s.

Algoritmiek23 Een FPTAS voor Knapsack Combineert: –Schalen. –Dynamisch programmeren. DP algoritmen voor Knapsack: –Kan in O(nG) tijd –Kan ook in O(nW) tijd, met W de optimale waarde van de oplossing.

Algoritmiek24 DP voor Knapsack I Definieer K(i,r) als minimum totaalgewicht van een deelverzameling van de eerste i voorwerpen met totaalwaarde precies r. K(0,0) = 0. K(0,r) = + , als r>0. K(i,r) = min (K(i – 1,r), K(i – 1,r – w i ) + g i ) als i>0, r – w i  0. K(i,r) = K(i – 1,r), als i>0, r – w i  0.

Algoritmiek25 DP voor Knapsack II Doe ½-relatief benaderingsalgoritme voor Knapsack. Als deze waarde X geeft, weten we: optimale waarde is hooguit 2X. Maak array K[0…n,0… 2X]. For i=0 to n do –For r = 0 to 2X do If i=0 and r=0 then K[i,r] = 0; If i=0 and r>0 then K[i,r] =  ; If i>0 and r  w[i] then K[i,r] = min (K(i – 1,r), K(i – 1,r – w[i]) + g[i]) ) If i>0 and r  w[i] then K[i,r] = K(i – 1,r)

Algoritmiek26 DP voor Knapsack III r = 2X; Repeat until K[n,r]  G r = r – 1 Output r Mogelijk: uitbreiding die de corresponderende verzameling als output geeft. Werkt in O(nW) tijd; W de opbrengst van de optimale oplossing. (X  W  2X) Duur, als W groot!

Algoritmiek27 Schalen Gegeven voorwerpen met waardes w[1], …, w[n] en gewichten g[1], …, g[n], max gewicht G. Neem een geschikt gekozen getal k. (Hoe? Komt later.) Bereken een nieuwe instantie:  w[1]/k , …,  w[n]/k , g[1], …, g[n], max gewicht G. Los die nieuwe geschaalde instantie op met het DP algoritme: O(n G/k ) tijd. Neem corresponderende oplossing voor originele instantie.

Algoritmiek28 Feasibility De verzameling, opgeleverd door het geschaalde probleem heeft maximum gewicht G, dus is ook oplossing voor oorspronkelijke probleem.

Algoritmiek29 Kwaliteit als functie van k Definieer: –opt is optimale waarde oorspronkelijke probleem, met bijbehorende verzameling K –optS is optimale waarde geschaalde probleem met bijbehorende verzameling K’ –optSK is de waarde van verzameling K voor de geschaalde instantie –Z is waarde gevonden door heuristiek. opt  Z optSK  optS Z  k * optS  k * optSK

Algoritmiek30 Kwaliteit als functie van k: II Dus: als k  opt/n, dan hebben we Z  opt –  n opt/n = (1 –  ) opt.

Algoritmiek31 Approximatieschema Gegeven  instantie van Knapsack Doe ½-relatieve approximatie algoritme, en krijg benadering met waarde X. Zet k =  X / n  Als k=0 of k=1, dan doe dynamisch programma direct; anders schaal waardes uit de input met factor k, en doe dynamisch programma. Vertaal de oplossing van de geschaalde versie terug naar een oplossing voor het originele probleem.

Algoritmiek32 Tijd Vinden van ½-relatieve benadering: eerst sorteren kost O(n log n) tijd, daarna O(n): O(n log n). Tijd DP algoritme: –k=0,1: O(nX) = O(n 2 /  ), want  X/n < 2. –k>1: O(n X/k) = O(n 2 /  ). (k =  X / n  Totaal: O(n 2 /  ).

Algoritmiek33 Subsetsum maximalisatie Kan opgelost worden als speciaal geval van knapsack. Direct schalen van subsetsum maximalisatie geeft probleempjes met kwaliteit of feasibility.