Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdEsther Hendrickx Laatst gewijzigd meer dan 8 jaar geleden
1
Heuristieken en benaderingsalgoritmen Algoritmiek
2
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
3
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
4
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. 12 34 4 5 2 2 3 2 12 34 4 5 2 2 3 2 12 34 4 5 2 2 3 2 13 11
5
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.
6
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.
7
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.
8
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
9
Algoritmiek9 Een benaderingsalgoritme voor het Handelsreizigersprobleem met driehoeksongelijkheid Maak een minimum opspannende boom T. Geef de knopen van T in preorder volgorde. 1 3 4 5 2 3 4 5 2 1 Preorder volgorde is: Loop door de boom heen, maar sla over waar je al geweest bent.
10
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.
11
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)
12
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.
13
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.)
14
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.
15
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.
16
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.
17
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.
18
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.
19
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…
20
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 …
21
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.
22
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.
23
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.
24
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.
25
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)
26
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!
27
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.
28
Algoritmiek28 Feasibility De verzameling, opgeleverd door het geschaalde probleem heeft maximum gewicht G, dus is ook oplossing voor oorspronkelijke probleem.
29
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
30
Algoritmiek30 Kwaliteit als functie van k: II Dus: als k opt/n, dan hebben we Z opt – n opt/n = (1 – ) opt.
31
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.
32
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 / ).
33
Algoritmiek33 Subsetsum maximalisatie Kan opgelost worden als speciaal geval van knapsack. Direct schalen van subsetsum maximalisatie geeft probleempjes met kwaliteit of feasibility.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.