Løsningsforslag: Deloppgave om heuristiske søkemetoder, ALGKON 2003, ordinær eksamen

Like dokumenter
Løsningsforslag: Deloppgave om heuristiske søkemetoder ALGKON 2002, kontinuasjonseksamen

Løsningsforslag: Deloppgave om heuristiske søkemetoder, ALGKON 2003, kontinuasjonseksamen

Løsningsforslag: Deloppgave om heuristiske søkemetoder ALGKON 2001, ordinær eksamen

Løsningsforslag: Deloppgave om heuristiske søkemetoder ALGKON 2002, ordinær eksamen

Heuristiske søkemetoder II

Heuristiske søkemetoder I: Simulert størkning og tabu-søk

Heuristiske søkemetoder II: Simulert størkning og tabu-søk

MAT1030 Plenumsregning 1

MAT1030 Diskret Matematikk

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

MAT1030 Diskret matematikk

Heuristisk søk 1. Prinsipper og metoder

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

MAT1030 Diskret Matematikk

Heuristiske søkemetoder III

Heuristiske søkemetoder I

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon.

Mer om representasjon av tall

Oppsummering av Uke 3. MAT1030 Diskret matematikk. Binære tall. Oppsummering av Uke 3

INF-MAT Geir Hasle - Leksjon 3 2

Oversikt. Heuristisk søk 1. Kombinatorisk optimering Lokalt søk og simulert størkning Populasjonsbasert søk. Prinsipper og metoder

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Forelesning 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann januar Vi som skal undervise. Hva er diskret matematikk?

MAT1030 Diskret matematikk

MAT1030 Forelesning 14

Algoritmer og Datastrukturer

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

Kapittel 6: Funksjoner

LØSNINGSFORSLAG EKSAMEN HØST 2012 I TIØ4120 OPERASJONSANALYSE, GRUNNKURS

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

Algoritmer og Datastrukturer

Vi som skal undervise. MAT1030 Diskret matematikk. Hva er diskret matematikk? Hva er innholdet i MAT1030?

MAT1030 Diskret Matematikk

Velkommen til MAT1030!

!"!#$ INF-MAT Geir Hasle - Leksjon 2 2

MAT1030 Forelesning 19

I Kapittel 3 så vi på hvordan data, som hele tall og reelle tall, kan representeres som bitsekvenser

MAT1030 Forelesning 2

MAT1030 Forelesning 4

MAT1030 Diskret Matematikk

Kapittel 4: Logikk (fortsettelse)

MAT1030 Diskret Matematikk

MAT1030 Forelesning 28

KONTROLLSTRUKTURER. MAT1030 Diskret matematikk. Kontrollstrukturer. Kontrollstrukturer. Eksempel (Ubegrenset while-løkke)

Løsningsforslag: Deloppgave om heuristiske søkemetoder

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Forelesning 2. Flere pseudokoder. Representasjoner av tall. Dag Normann januar 2008 KONTROLLSTRUKTURER. Kontrollstrukturer. Kontrollstrukturer

MAT1030 Plenumsregning 3

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Forelesning 30. Kompleksitetsteori. Dag Normann mai Informasjon. Oppsummering

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 1992

Dynamisk programmering

Generell induksjon og rekursjon. MAT1030 Diskret matematikk. Generell induksjon og rekursjon. Generell induksjon og rekursjon.

Oppsummering fra sist

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

Hvordan løse problemer med programmering?

Oppsummering av Kapittel 3. MAT1030 Diskret matematikk LOGIKK. Logikk. Forelesning 5: Logikk

ALGORITMER OG DATASTRUKTURER

G høgskolen i oslo. Emnekode:!;_unstiq intelliqens lv 145A Gruppe(r) : Dato: Tillatte

INF1010 notat: Binærsøking og quicksort

EKSAMEN med løsningsforslag

MAT1030 Diskret matematikk

UNIVERSITETET I OSLO

Kommentarer til eksempelinnleveringene

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Mengder, relasjoner og funksjoner

MAT1030 Forelesning 14

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Forelesning 24. Grafer og trær. Dag Normann april Vektede grafer. En kommunegraf

Kapittel 6: Funksjoner

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo

INF-MAT-5380

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

MAT1030 Forelesning 25

EKSAMEN KANDIDATNUMMER: EKSAMENSDATO: 10. juni Ingeniørutdanning. TID: kl EMNEANSVARLIG: Hans Petter Hornæs

Forelesning 30: Kompleksitetsteori

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Forelesning 3. Karnaughdiagram

MAT1030 Diskret Matematikk

Plenumsregning 12. Diverse oppgaver. Roger Antonsen mai Eksamen 12/6-06 Oppgave 2. Plan

Lars Vidar Magnusson

TDT4110 IT Grunnkurs Høst 2014

Oppgave 1. Sekvenser (20%)

Bruk piazza for å få rask hjelp til alles nytte!

Kort innføring i problemløsningsmetodikk

Grådige algoritmer. Lars Vidar Magnusson Kapittel 16. Aktivitetvelgingsproblemet Huffmankoder

TALLSVAR. Det anbefales at de 9 deloppgavene merket med A, B, teller likt uansett variasjon i vanskelighetsgrad. Svarene er gitt i <<< >>>.

Dynamisk programmering Undervises av Stein Krogdahl

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Programmering Høst 2017

Kap. 4: Ovenfra-ned (top-down) parsering

SANNSYNLIGHETSREGNING

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Transkript:

Løsningsforslag: Deloppgave om heuristiske søkemetoder, ALGKON 2003, ordinær eksamen 14. september 2003 Deloppgave a 50-års jubileet for simulert størkning: I juni 1953 publiserte fire amerikanske fysikere, deriblant en av atombombens fedre, Edward Teller, artikkelen Equation of State Calculations by Fast Computing Machines (fritt oversatt til norsk Tilstandsligningsberegninger med Hurtige Regnemaskiner) i det anerkjente tidsskriftet The Journal of Chemical Physics (fritt oversatt til norsk Journal for Kjemisk Fysikk). Denne artikkelen handler om hvordan man kan bruke datamaskiner til å beregne hvordan elementærpartikler i et aller annet stoff vil organisere seg seg imellom for å minimere kreftene som virker mellom partiklene. I denne artikkelen framsetter de fire fysikerne grunnlaget for den algoritmen som senere er blitt kjent som simulert størkning (engelsk: simulated annealing). Man kan spørre seg hvorfor en algoritme som i dag brukes i alt fra kretskortutlegg til flytrafikkplanlegging har sitt utspring i en artikkel om en slik problemstilling. Forklar og utred hvilken fysisk analogi simulert størkning er basert på. Svar kort og konsist. Løsningsforslag deloppgave a Som oppgaveteksten angir dreier Tellers artikkel seg om hvordan elementærpartikler ordnes innbyrdes i en lavenergi likevektstilstand. For at elementærpartikler skal kunne finne slike lavenergi likevektstilstander må enorme antall av dem finne sin respektive plass i en kompleks struktur. Den optimale konfigurasjonen representerer egentlig en løsning på et gigantisk optimaliseringsproblem der alle disse elementærpartiklene har funnet sin plass i forhold til alle de andre. 1

Et godt eksempel på en slik struktur finner man i en diamant. En diamant er en mer eller mindre perfekt ordning av karbonatomer i en helt spesiell innbyrdes (krystall-)struktur. For at en slik struktur skal oppstå må karbonatomene først være utsatt for svært høyt trykk og temperatur og befinne seg i en tilstand der de flyter rundt hverandre innbyrdes. I denne tilstanden vil atomene prøve et utall innbyrdes konstellasjoner og etterhvert organisere seg i små grupper som har optimal innbyrdes konfigurasjon. I denne fasen er temperaturen ennå så høy at en gruppe atomer som har funnet en gunstig innbyrdes konstellasjon fortsatt ofte vil brytes opp for å danne nye konstellasjoner. Med tiden faller trykk og temperatur og atomene vil etterhvert flyte mindre fritt innbyrdes. I denne fasen vil gruppene av atomer med perfekt innbyrdes konfigurasjon vokse. Samtidig vil det bli mindre og mindre sannsynlig at slike gunstige konstellasjoner brytes opp. Dette fortsetter inntil temperaturen er så lav at den innbyrdes konfigurasjonen ikke lenger endres. Dersom denne prosessen skjer under gunstige trykk- og temepraturforhold vil store diamanter kunne oppstå. Simulert størkning er en iterativ optimaliseringsalgoritme som simulerer denne prosessen. Ved hjelp av en temperaturparameter T som reduseres etter hver iterasjon (typisk etter en geometrisk formel T n+1 = αt n ) tillater man først at algoritmen forkaster tilsynelatende gunstige løsninger til fordel for mer uheldige løsninger. Etterhvert som T avtar gjøres denne sannsynligheten mindre. Dette skjer ved at en ny løsning Y genereres og at forskjellen i optimalitet P(Y) P(X) mellom Y og en eksisterende løsning X beregnes. P er her en funksjon som måler en løsnings optimalitet. Dersom den nye løsningen er mer optimal (P(Y) > P(X)) velges den nye løsningen Y foran den gamle X. Dersom den nye løsningen er mindre optimal enn den gamle (P(Y) P(X)) velges allikevel den nye løsningen med sannsynlighet proporsjonal med: exp[ P(Y) P(X) ] T Denne sannsynligheten er illustrert i figur 1. For høy T vil sannsynligheten for å velge en ny løsning Y som er mindre gunstig enn den eksisterende løsningen X være relativt høy. Etterhvert som T avtar vil denne sannsynligheten avta. Effekten av denne strategien er at algoritmen først hopper vilkårlig rundt i løsningsrommet mens den leter etter gunstige løsninger. Sannsynligheten for å forlate en gunstig løsning til fordel for en dårligere løsning vil i denne fasen være høy. Etterhvert som T faller vil denne sannsynligheten avta og istedet for å hoppe fra løsning til løsning vil algoritmen nå mer systematsik eksplorere nabolaget til hver løsning. 2

P 1 (P(Y) P(X))/T 0 Figur 1: Sannsynligheten for valg av en ny løsning Y gitt en eksisterende løsning X. Deloppgave b I denne oppgaven skal vi ta for oss det såkalte tilfredsstillbarhetsproblemet (engelsk: satisfiability problem). Dette problemet omtales ofte som SAT-problemet. Steven Skiena, forfatter av boken The algorithm design manual, omtaler spøkefullt dette problemet som alle NP-komplette problemers mor. Problemet kan enkelt formuleres som følger: Anta gitt en boolsk funksjon F på såkalt konjunktiv normal form. Dersom vi, for eksempel, betrakter en slik funksjon av 10 boolske variable x 0,x 1,...,x 9 kan F være gitt ved: F(x) = ( x 2 x 7 x 9 ) (x 3 x 5 ) (x 0 x 1 x 3 x 6 x 8 x 9 )... (x 4 x 5 ) der x i og x i betegner en variabel og dens inverse verdi respektive. Symbolene og betegner logisk ELLER og OG respektive. SAT-problemet består nå i å finne verdier for x 0,x 1,...,x 9 slik at F evaluerer til SANN (TRUE). For endel særtilfeller finnes effektive algoritmer for å løse dette problemet, men i sin generelle form er dette et svært komplisert problem. I en del situasjoner krever man ikke at F skal evaluere til SANN, men at et så stort som mulig antall av delleddene (ledd av typen ( x 2 x 7 x 9 ) ) i F skal være 3

SANNE. Hvordan vil du løse denne siste typen problem ved hjelp av simulert størkning? Forklar løsningsstrategien din og gi pseudokode for den algoritmen du foreslår. NB: Dette problemet kan løses på mange måter. Vi ber om en enkel løsning som illustrerer at du har forstått simulert størkning algoritmen, ikke en spesielt sofistikert løsning på denne varianten av SAT-problemet. Løsningsforslag deloppgave b Løsningsstrategien vår er som følger: 1. La en løsning X være et binært n-tuppel X = [x 0,x 1,...,x n 1 ]. Dersom element i i X er 0 betyr dette at den tilsvarende variabelen x i er 0 (det vil si USANN). Er element i i X lik 1 er den tilsvarende variabelen x i lik 1 (det vil si SANN). Universet består av alle slike n-tupler og inneholder 2 n mulige løsninger. 2. Velg et vilkårlig binært n-tuppel. Dette er vår oprinnelige løsning X. Dette er også vår opprinnelige beste løsningx opt. 3. La oss anta at vi har gitt funksjonen N X =countterms(x,f) som tar som input et slikt binært n-tuppel X samt definisjonen av funksjonen F, teller hvor mange av delleddene i definisjonen av den boolske funksjonen F som er tilfredsstilte (SANNE) og returnerer dette antallet i variabelen N X. Vi leter altså etter den X som gjør N X størst mulig (dersom N X er lik antall delledd i F vil naturligvis F selv evaluere til SANN). 4. Benytt N X =countterms(x,f) til å beregne N X assosiert med X. Dette er vår opprinnelige N opt. 5. Anta at funksjonen Y =newx(x) er gitt. Denne tar en løsning X og returnerer en nabo Y til denne løsningen. Med X s nabo mener vi her en løsning Y der ett element i n-tuplet som definerer X har byttet verdi fra 0 til 1 eller omvendt. Dette tilsvarer at den korresponderende variabelen inverteres. Nabolagssøkestrategien vår er derfor svært enkel, velg kort og godt en ny løsning der en enkelt vilkårlig variabel har byttet verdi. Hver løsning X får dermed n naboer. 6. Heuristikken vår blir derfor ganske enkelt å utføre dette nabolagssøket. 7. Benytt N Y =countterms(y,f) til å beregne N Y assosiert med den nye løsningen Y. 4

8. Dersom N Y > N X settes X = Y og N X = N Y. (Merk at vi her krever at N Y er større enn N X, dette er et maksimeringsproblem). 9. Dersom også N Y > N opt settes X opt = Y og N opt = N Y. 10. Dersom N Y N X settes allikevel X = Y og N X = N Y med sannsynlighet proporsjonal med exp[ N Y N X T ]. 11. Oppdater temperaturen i tråd med nedkjølingsstrategien. 12. Iterer inntil maksimalt anall iterasjoner er nådd. I tillegg til dette kommer selvfølgelig endel initialisering etc. Vi trenger også funksjonen urand som returnerer et tilfeldig tall uniformfordelt i intervallet [0, 1]. Dette er vist i pseudokoden i figur 2. Merk at det selvfølgelig finnes mange varianter av denne og lignende strategier. 5

Require: F,i max,t 0,α {countterms(, ), urand er eksterne} 1: i 0 2: X en vilkårlig løsning fra universet 3: X opt X 4: N X countterms(x,f) 5: N opt N X 6: T T 0 7: α verdi i intervallet (0,1). 8: while i i max do 9: Y newx(x) 10: N Y countterms(y,f) 11: if N Y > N X then 12: X Y 13: N X N Y 14: if N Y > N opt then 15: X opt Y 16: N opt N Y 17: end if 18: else 19: tmp exp[ N Y N X T ] 20: if urand < tmp then 21: X Y 22: N X N Y 23: end if 24: end if 25: i i+1 26: T αt 27: end while 28: return(x opt ) Figur 2: Pseudokode for løsning av den gitte varianten av SAT-problemet. 6