Løsningsforslag: Deloppgave om heuristiske søkemetoder ALGKON 21, ordinær eksamen 14. september 23 Innledning En klikk i en graf G er en komplett subgraf av G. Det såkalte maksimum-klikk problemet består i å finne en klikk i G med maksimal kardinalitet. Maksimum klikk problemet er N-komplett og for store grafer må man løse dette problemet med heuristiske søkemetoder. Universet består av alle mulige subsett av nodene i grafen G, mulige løsninger består av alle subsett av noder i grafen G som utgjør klikker. Deloppgave a Hva er en heuristisk søkemetode? Hva er fordelene og ulempene med heuristiske søkemetoder. Når ønsker man å benytte slike metoder. Gi eksempler på ulike designstrategier. Løsningsforslag deloppgave a En heuristisk søkemetode er en optimaliseringsalgoritme som anvender en eller flere heuristikker for å lete etter en optimal løsning på et gitt optimaliseringsproblem. Ordet heuristikk kommer av det greske ordet heuriskein som betyr å finne. I sammenheng med søkealgoritmer benyttes gjerne ordet heuristikk for å indikere en algoritme for å gjøre (små) endringer ved en eksisterende løsning for om mulig å finne en bedre løsning. Heuristiske søkemetoder anvendes typisk på optimaliseringsproblemer der universet χ er så stort at et uttømmende søk blant alle mulige løsninger er uøkonomisk eller umulig. Den store fordelen ved heuristiske søkemetoder er at de kan anvendes på nettopp slike problemer, de finner ofte gode (om ikke optimale) løsninger på problemer med enorme universer. Den største ulempen er naturligvis at man ikke har noen garanti for at den optimale løsningen finnes. Videre er det ofte ikke trivielt å fastsette de ulike parametrene som styrer de forskjellige heuristiske søkemetodenes ytelse. Valg av søkealgoritme og tilsvarende parametre krever ofte betydelig eksperimentering. Det finnes et stort antall ulike designstrategier, for eksempel fjell-klatring (hill climbing), simulert størkning (simulated annealing) og tabu-søk (tabu search). 1
Deloppgave b Du har bestemt deg for å angripe maksimum-klikk problemet med den såkalte simulert størkning (simulated annealing) algoritmen. I grafen du arbeider med er det 5 noder. Som mål for optimaliteten til en mulig løsning X velger du kardinaliteten til X, det vil si (X) = X. Anta at du har en algoritme som løser maksimum klikk problemet basert på simulert størkning. Anta at denne algoritmen benytter målet for optimalitet gitt over. Du har bestemt deg for å bruke 3 iterasjoner og en geometrisk nedkjølingsprosedyre med α = 96. Du vurderer tre ulike initialtemperaturer, henholdsvis: T = 1, T = 1 og T = 1. Hvilken T bør du velge. Argumenter for valget ditt. Illustrer. Løsningsforslag deloppgave b Gitt målet for optimalitet ser vi at avviket mellom to løsninger X og Y der (Y ) < (X) vil ligge i intervallet[ 49, 1]. Vi ønsker et størkningsforløp der man initielt har stor sannsynlighet for valg av løsninger Y der (Y ) < (X). Mot slutten av størkningsforløpet ønsker man at slike valg skal bli mindre og mindre sannsynlige. La oss derfor plotte sannsynligheten for et slikt valg,, som funksjon av antall iterasjoner for tre ulike. Husk at med simulert størkning er gitt ved: = exp( T ) i det tilfelle at <. La oss se på forløpene for = 5, = 3 og = 49. Figurene 1, 2 og 3 viser disse forløpene. Legg merke til at med T = 1 vil vi for all verdier av innledningsvis ha for lav sannsynlighet for å velge en løsningy der (Y ) < (X), algoritmen vil derfor låse seg fast i et lokalt maksimum. Ved T = 1 er det motsatte tilfelle, ved slutten av iterasjonene vil sannsynligheten for å velge en mindre optimal løsning være for høy, dette resulterer i et randomisert søk etter en mulig bedre løsning. Det er bare initialtemperatur T = 1 som gir det ønskede forløpet, tidlig i iterasjonene har valg av løsninger Y der (Y ) < (X) stor sannsynlighet, ved slutten av iterasjonene vil et slikt valg være lite sannsynlig. Derfor vil algoritmen først lete randomisert i universet, etterhvert som en en bedre og bedre løsning finnes utforskes dennes nabolag mer og mer grundig. Deloppgave c Gi pseudokode for en løsning på maksimum-klikk problemet basert på simulert størkning. Forklar strategien du velger. Løsningsforslag deloppgave c La oss først definere et par hjelpefunksjoner vi trenger for å implementere løsningen vår: getrandnode: Denne funksjonen tar som input en liste noder og returnerer en vilkårlig valgt node blant disse. 2
nodesconnectedto: Denne funksjonen tar som input en liste L 1 noder samt grafen G og returnerer en ny liste L 2 noder fra G der alle noder i L 2 har en kant til minst en node i L 1. intersectnodes: Denne funksjonen tar som input to lister noder og returnerer en liste med noder som finnes i begge listene. Løsningsstrategien vår er som følger: 1. Velg vilkårlig en node n 1 blant alle nodene i grafen. Dette er vår opprinnelige løsning X. Dette er også vår opprinnelige beste løsningx opt. 2. Generer en liste L 1 med noder i grafen som har en kant til en eller flere noder i X. 3. Velg et vilkårlig element n 2 fra L 1. 4. Den nye løsningen Y er nå Y = {n 2 inersectnodes(nodesconnectedto(n 2, G), oldm)}. Dette er altså listen sammensatt av den nye løsningen n 2 og alle de noder i den eksisterende løsningen som har en kant til n 2. Merk at vi nå kan være sikre på at den nye løsningen er en klikk, alle nodene i den eksisterende løsningen var jo forbundet parvis med kanter, dessuten har vi valgt n 2 slik at den har en kant til alle de nodene i den gamle løsningen som overføres til den nye. 5. Dersom (Y ) (X) (husk (X) = X ) setter vi X = Y. Dersom (X) > (X opt ) setter vi også X opt = X. 6. Dersom (Y ) < (X) lar vi allikevel X = Y med en sannsynlighet proporsjonal med exp[((y ) (X))/T] der T er temperatur, alt dette fullstendig i tråd med simulert størkning strategien. 7. Iterer fra 2 intil det maksimale antallet iterasjoner er nådd. Med denne strategien blir pseudokoden derfor som vist i figur 4. Merk at det selvfølgelig finnes mange varianter av denne og lignende strategier. 3
1 Figur 1: Størkningsforløp for = 5 ved initialtemperatur T = 1, T = 1 1 Figur 2: Størkningsforløp for = 3 ved initialtemperatur T = 1, T = 1 4
1 Figur 3: Størkningsforløp for = 49 ved initialtemperatur T = 1, T = 1 Require: G, c max, T, α {getrandnode( ), nodesconnectedto(, ), intersectnodes(, ), randomu( ) og ( ) er eksterne} 1: c 2: T T 3: X getrandn ode(g) 4: X best X 5: while c c max do 6: Y nodesconnectedt o(x, G) 7: Y getrandnode(y ) 8: Y {Y intersectn odes(nodesconnectedt o(y, G), X)} 9: if (Y ) > (X) then 1: X Y 11: if (X) > (X best ) then 12: X best X 13: end if 14: else 15: r randomu(, 1) 16: if r < e ((Y ) (X))/T then 17: X Y 18: end if 19: end if 2: c c + 1 21: T αt 22: end while 23: return(x best ) Figur 4: seudokode for løsning av maksimum klikk problemet basert å simulert størkning 5