UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF 4130: Algoritmer: Design og effektivitet Eksamensdag:15. desember 2010.

Slides:



Advertisements
Liknende presentasjoner
Kombinatorikk for lærerstudenter
Advertisements

Vi har kjøpt en liten hytte på fjellet, og lurte på om du ville ta med deg familien eller noen venner og komme en tur i påsken for en liten påskepils med.
Tabeller av objekter Klassen ArrayList
4 Bruk øynene riktig.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
The Travelling Salesperson. LOG530 Distribusjonsplanlegging 2 2 Et forsyningsskip skal starte fra VestBase for å betjene 10 forskjellig installasjoner.
En innføring i spillet: Dobbeltkrig – Grønn
Godt verktøy er halve jobben
Noen matematiske nøtter
Ulike sorteringsmetoder Kompleksitet av dem
Komplett avstandstabell. LOG530 Distribusjonsplanlegging 2 2 Noen ganger er det behov for en komplett avstandstabell mellom alle nodene i et nettverk.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
René Descartes (1596–1650) Innførte koordinatsystemet
Vi har lært å bestemme: - Nullpunkter (y=0)
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
Eksempel AOA (Activity On Arc)
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Kompleksitetsanalyse
Øvingsforelesning 12 Redusering av problemer,
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
P-MP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter (lager) for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
Lokalisering og minimum maxavstand. LOG530 Distribusjonsplanlegging 2 2 I mange situasjoner ønsker en å finne lokaliseringer som minimerer maksimalavstanden.
The Postmans Problem. LOG530 Distribusjonsplanlegging 2 2 Mista har fått i oppdrag å vedlikeholde veiene i landsdelen. Dette er et eksempel på den klassiske.
Klargjøring fra forrige gang
INF150 Programmering mandag 11.9
Kap 10 Graf.
Dynamisk programmering
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Forelesning 17 - kap 9 Korteste vei i grafer Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Hovedfagspresentasjon
NÅ SKAL VI LÆRE OM LIKNINGER.
PROSJEKT: UADRESSERT REKLAME Omnibus: 23. august – 30 august 2006
Diskrete stokastiske variable
INF 4130 Eksamen 2008 Gjennomgang.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Magnus Haug Algoritmer og Datastrukturer
De 222 mest brukte ordene i det norske språket..
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
En formel er gyldig hviss den sann i alle tolkninger Utsagnslogikk Tolkning = linje i sannhetsverditabell Altså: En formel er gyldig hviss den har T i.
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Praktisk Midtveisevaluering av kurset («femminutterslapper») i pausen. Undervisningsfri neste uke (ingen forelesninger eller grupper). NM i programmering.
En formel er gyldig hviss den sann i alle tolkninger Utsagnslogikk Tolkning = linje i sannhetsverditabell Altså: En formel er gyldig hviss den har T i.
Inf1000 (Uke 5) Arrayer, filer og tekst
UFLP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter (lager) for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
Lokalisering og max minimumavstand. LOG530 Distribusjonsplanlegging 2 2 Anta at nettverket angir en region hvor McBurger skal opprettes 3 konkurrerende.
Korteste vei. LOG530 Distribusjonsplanlegging 2 2 Ofte står en overfor ønsket om å finne korteste kjørerute fra et gitt utgangspunkt til et ønsket bestemmelsessted.
LOG530 Distribusjonsplanlegging
Politisk påvirkning.
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.
Kap. 9 – Computer Intelligence How Information Technology Is Conquering the World: Workplace, Private Life, and Society Professor Kai A. Olsen,
TDT4105 Informasjonsteknologi, grunnkurs
God undervisning og dybdelæring i matematikk
Kom i gang med programmering!
Utskrift av presentasjonen:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF 4130: Algoritmer: Design og effektivitet Eksamensdag:15. desember 2010 Tid for eksamen:Kl – 1300 (4 timer) Oppgavesettet er på:7 sider (inkl vedlegg) Vedlegg:Svar-ark for oppgave 6 Tillatte hjelpemidler:Alle trykte og skrevne Kontrollér at oppgavesettet er komplett før du begynner å besvare spørsmålene. Les oppgavene nøye, og lykke til!

Oppgave 1 Dynamisk Programmering (15%)

Hos en stor tomatprodusent skal klasetomater pakkes i kasser av fem kilo. Tomater har ulik både vekt og størrelse, tomatklaser kan bestå av ulikt antall tomater, så klasenes vekt varierer en del. Man kan altså ikke pakke et fast antall klaser i kassene hver gang. Klasetomater selges til en høyere pris enn vanlige tomater, så klasene skal ikke deles, men pakkes hele. Pakkingen skjer manuelt, men ved hjelp av et avansert system som veier klasene og gir pakkerne informasjon om hvilke tomatklaser som skal pakkes. Hver pakker har en mengde klaser foran seg i en serie hyller, systemet gjør et utvalg av klaser som til sammen veier fem kilo og tenner lamper ved de aktuelle hyllene, slik at pakkeren kan legge de valgte klasene ned i en kasse. Når kassen er ferdigpakket, blir de tomme hyllene automatisk fylt med nye klaser, og systemet finner et nytt utvalg (vi får altså en ny probleminstans). Hvis det for en pakker ikke er mulig å gjøre et utvalg på fem kilo, bytter systemet ut alle pakkerens klaser, slik at vi får en probleminstans det forhåpentligvis finnes en løsning for.

Oppgave 1 Dynamisk Programmering (15%) 1.a For enkelhets skyld skal vi nå anta at pakkesystemet opererer med vekter i hele decagram (1 decagram = 10 gram), slik at vi skal finne et utvalg av klaser som til sammen veier 500 decagram. (Et slikt system vil alltid ha en viss endelig oppløsning, så dette er ikke en unaturlig forenkling.) Vis hvordan du kan bruke dynamisk programmering til å lage en algoritme som først avgjør om et utvalg på 500 decagram finnes, og som på passelig vis har en datastruktur som gjør det lett å indikere hvilket utvalg av tomatklaser det dreier seg om. Hver pakker har n klaser foran seg. Forklar hvilken rekursive formel du baserer algoritmen din på, og skriv kode for algoritmen (pseudokode eller «ekte kode», velg det du er mest komfortabel med). Forklar også kort hvordan du benytter datastruk- turen til å finne det faktiske tomatklaseutvalget.

Oppgave 1 Dynamisk Programmering (15%) 1.a For enkelhets skyld skal vi nå anta at pakkesystemet opererer med vekter i hele decagram (1 decagram = 10 gram), slik at vi skal finne et utvalg av klaser som til sammen veier 500 decagram. (Et slikt system vil alltid ha en viss endelig oppløsning, så dette er ikke en unaturlig forenkling.) Vis hvordan du kan bruke dynamisk programmering til å lage en algoritme som først avgjør om et utvalg på 500 decagram finnes, og som på passelig vis har en datastruktur som gjør det lett å indikere hvilket utvalg av tomatklaser det dreier seg om. Hver pakker har n klaser foran seg. Forklar hvilken rekursive formel du baserer algoritmen din på, og skriv kode for algoritmen (pseudokode eller «ekte kode», velg det du er mest komfortabel med). Forklar også kort hvordan du benytter datastrukturen til å finne det faktiske tomatklaseutvalget. SUBSET SUM [SS] INSTANCE:A set of positive integers v 1, v 2, … v n ; a positive integer K. QUESTION: Is there a subset of v 1, v 2, … v n with a sum of exactly K? SUBSET SUM er NP-komplett. (3DM  SS så dere vel på forelesningen) Kan løses med DP i tid O(n * K) – ikke polynomisk siden det er log K som inngår som lengden av K når vi måler lengden av instansen.

Oppgave 1 Dynamisk Programmering (15%) 1.a For enkelhets skyld skal vi nå anta at pakkesystemet opererer med vekter i hele decagram (1 decagram = 10 gram), slik at vi skal finne et utvalg av klaser som til sammen veier 500 decagram. (Et slikt system vil alltid ha en viss endelig oppløsning, så dette er ikke en unaturlig forenkling.) Vis hvordan du kan bruke dynamisk programmering til å lage en algoritme som først avgjør om et utvalg på 500 decagram finnes, og som på passelig vis har en datastruktur som gjør det lett å indikere hvilket utvalg av tomatklaser det dreier seg om. Hver pakker har n klaser foran seg. Forklar hvilken rekursive formel du baserer algoritmen din på, og skriv kode for algoritmen (pseudokode eller «ekte kode», velg det du er mest komfortabel med). Forklar også kort hvordan du benytter datastruk- turen til å finne det faktiske tomatklaseutvalget.

Oppgave 1 Dynamisk Programmering (15%) Strengt tatt bør vi kanskje si noe om at det såkalte optimalitets- prinsippet holder, men siden SUBSET SUM er et kjent problem, og oppgaven spør direkte etter en DP-løsning, lar vi det være.

Oppgave 1 Dynamisk Programmering (15%) Oppdelingen i mindre og mindre delproblemer (eller oppbyggingen i større og større) er nesten enklest å se hvis vi begynner med tabellen med en gang. i  012n j0  1 2 K «Kan vi finne et utplukk av de i første elementene, med sum j ?»

Oppgave 1 Dynamisk Programmering (15%) T[i,j] er TRUE om det finnes et utvalg av de i første elementene med sum j, FALSE ellers. i  012n j0  1 2 K «Kan vi finne et utplukk av de i første elementene, med sum j ?»

Oppgave 1 Dynamisk Programmering (15%) T[i,j] er TRUE om det finnes et utvalg av de i første elementene med sum j, FALSE ellers. i  012n j0  1 2T/F K «Kan vi finne et utplukk av de 2 første elementene, med sum 2 ?»

Oppgave 1 Dynamisk Programmering (15%) T[i,j] er TRUE om det finnes et utvalg av de i første elementene med sum j, FALSE ellers. i  012n j0  1 2 K! «Kan vi finne et utplukk av de n første elementene, med sum K ?»

Oppgave 1 Dynamisk Programmering (15%) TRUE hvis T[i-1, j-v i ] = TRUE(ta med v i ) T[i,j] = 012  i-1in 0 1T 2  jT K! «Kan vi finne et utplukk av de i første elementene, med sum j ?» {

Oppgave 1 Dynamisk Programmering (15%) TRUE hvis T[i-1, j-v i ] = TRUE(ta med v i ) T[i,j] =TRUE hvis T[i-1, j] = TRUE (ikke ta med v i ) 012  i-1in  jTTTT K! «Kan vi finne et utplukk av de i første elementene, med sum j ?» {

Oppgave 1 Dynamisk Programmering (15%) TRUE hvis T[i-1, j-v i ] = TRUE(ta med v i ) T[i,j] =TRUE hvis T[i-1, j] = TRUE(ikke ta med v i ) FALSE ellers. 012  i-1in 0 1F 2  jFF K! «Kan vi finne et utplukk av de i første elementene, med sum j ?» {

Oppgave 1 Dynamisk Programmering (15%) TRUE hvis T[i-1, j-v i ] = TRUE(ta med v i ) T[i,j] =TRUE hvis T[i-1, j] = TRUE(ikke ta med v i ) FALSE ellers. T[0,0] = TRUE(kan lage sum 0 med ingen tall) 012  i-1in 0T 1 2  j K! «Kan vi finne et utplukk av de i første elementene, med sum j ?» {

Oppgave 1 Dynamisk Programmering (15%) TRUE hvis T[i-1, j-v i ] = TRUE(ta med v i ) T[i,j] =TRUE hvis T[i-1, j] = TRUE(ikke ta med v i ) FALSE ellers. T[0,0] = TRUE(kan lage sum 0 med ingen tall) En ekstra tabell U[0..n] lagrer utplukket ved å sette U[i]=TRUE om det er «ta-med-regelen» som gir innslaget i T. 012  in U «Kan vi finne et utplukk av de i første elementene, med sum j ?» {

Oppgave 1 Dynamisk Programmering (15%) BOOLEAN U[][]; INT i, j; U[0,0]=TRUE FOR i=0 TO n DO FOR j=0 TO 500 DO IF U[i-1, j-V[i]]==TRUE OR U[i-1,j]==TRUE THEN U[i,j]=TRUE ELSE U[i,j]=FALSE OD

Oppgave 1 Dynamisk Programmering (15%) 1.b Hva er kjøretiden til algoritmen din fra oppgave 1.a? Gjør en enkel kjøretidsanalyse og angi med O-notasjon. O(500n), kjøretiden styres av FOR-løkkene, det er n tomatklaser, og vi skal opp til 500 decagram.

Oppgave 1 Dynamisk Programmering (15%) 1.c Generelt vil vektgrensen være en del av probleminstansen (vi kan jo anta at tomatene ikke bare pakkes femkiloskasser, men i flere ulike typer kasser, kurver etc.). En slik generell instans vil altså være på formen v 1,v 2,…,v n ;K, hvor v i -ene er tomatklasenes vekt og K er vektgrensen, alle størrelsene i problemet kan nå være så store man bare vil. En probleminstans for tomatproblemet vårt (dette er en JA-instans) kan da for eksempel se slik ut: 45,53,77,78,52,80,67,71,49,102,46;500 Gi et forslag til et lengdemål for denne instansen. Hva vil du generelt angi som lengden av en slik instans? Er kjøretiden til algoritmen din (angitt i oppgave 1.b) polynomisk i forhold til lengdebegrepet ditt? Forklar. Lengden av en instans er antall tegn, her 37 (teller kommaer og semikoloner). Generelt vil en instans av n elementer med vekter inntil K decagram (elementer som er større er ingen vits å ta med) ha lengde n log K + log K (evt. kan man vel si Σ i log v i + log K). Algoritmen ikke polynomisk, tidselementet K er ikke polynomisk i log K.

Oppgave 2 Søk (20%) En robot skal bevege en gripehånd for å ta tak i et objekt. Roboten representerer verden med et tredimensjonalt koordinatsystem, og har med sine sensorer funnet ut at objektet som skal gripes finnes i punktet (x,y,z) relativt til gripehåndens utgangspunkt (0,0,0). Robotens koordinatsystem er så finmasket at den bare bruker heltallige koordinater, og bare beveger hånden parallelt med koordinatsystemets akser, ikke diagonalt. Den beveger altså hånden bare opp, ned, til venstre, til høyre, fram og tilbake. Det kan være ulike former for hindringer mellom punktene (0,0,0) og (x,y,z), det er derfor visse punkter i koordinatsystemet som er ulovlige posisjoner for gripehånden.

Oppgave 2 Søk (20%) 2.a Forklar/vis hvordan koordinatsystemet, der noen koordinater altså er ulovlige, kan representeres med en tilstandsromsgraf, som vi kan søke i for å finne en måte å bevege hånden fra (0,0,0) til (x,y,z) på. Koordinatsystemet er jo i prinsippet uendelig, men roboten har en begrenset rekkevidde, så tilstandsromsgrafen blir endelig: armens maksimale utslag langs de tre aksene er henholdsvis x max, y max og z max. (Du kan anta at punktet (x,y,z) er innenfor robotens rekkevidde.) For hvert punkt (i,j,k) lager vi et punkt-objekt, en node i tilstandsromsgrafen vår. Vi lager ikke punkter med indekser mindre enn  x max,  y max eller  z max eller større enn x max, y max eller z max. For et generelt punkt (i,j,k) vil dets naboer være (i-1,j,k), (i,j-1,k), (i,j,k-1), (i+1,j,k), (i,j+1,k), (i,j,k+1), forutsatt at de ligger i det lovlige intervallet. Det spesielle er at noen punkter er ulovlige, disse punktene lar vi bare være å koble inn som naboer av de noder de naturlig ville vært naboer for, de vil altså ikke være med i den sammenhengende grafen vi søker i (alternativt kan de ulovlige punktene droppes helt).

Oppgave 2 Søk (20%) 2.b Roboten bruker A*-algoritmen til å styre gripehånden på en effektiv og god måte (langs korteste vei). Vil en eksakt heuristikk for A*- algoritmen, altså en heuristikk som for alle noder gir den eksakte verdien av den korteste stien fram til målnoden, være hensiktsmessig? Forklar. Denne heuristikken vil virke, men den vil jo kunne brukes til å løse problemet alene. Det er opplagt bra med en så nøyaktig heuristikk som mulig, men den eksakte «heuristikken» vil være meget kostbar, for kostbar, til å være hensiktsmessig.

Oppgave 2 Søk (20%) 2.c Velg en hensiktsmessig, monoton heuristikk for algoritmen (det er flere muligheter), og forklar kort hvorfor heuristikken du valgte er monoton. Manhattan distance (3D), eller vektorlengde, begge er kortere enn den faktiske veien vi må gå.

Oppgave 2 Søk (20%) 2.d Vi kan også løse dette problemet med en variant av dynamisk programmering, beskrevet nedenfor. Punktene i koordinatsystemet representeres fortsatt som noder i en graf. Oppdelingen i del­problemer er kanskje litt uvant, i og med at den neste noden som skal få sin verdi ikke er statisk bestemt. (Rekkefølgen til de hittil uløste delproblemene kan altså endre seg mens algoritmen kjører. Vi har jo stort sett bare sett på algoritmer hvor rekkefølgen har vært fast, men det er i prinsippet ingen forskjell, vi løser stadig større og større delproblemer helt til vi har den endelige løsningen.)

Oppgave 2 Søk (20%) Alle nodene har en heltalls-variabel avst som har den beregnede avstand fra (0,0,0) når noden er ferdig behandlet. Fram til noden er ferdig behandlet vil verdien bare være et estimat. Vi har hele tiden en mengde, S, av sette noder, disse nodene er ferdig behandlet med ferdig beregnet verdi i avst. De resterende nodene er usette noder, disse nodene er ikke ferdig behandlet og har ennå ikke ferdig beregnet verdi i avst. i.Initielt har noden (0,0,0) avst = 0. Alle andre noder har avst = . Vi legger (0,0,0) over i S, den har korrekt verdi i avst, og vi oppdaterer avst for alle dens naboer til 1 (for kanten mellom (0,0,0) og noden). Nå har vi løst det første, minste delproblemet. ii.Det generelle delproblem er å velge en av de usette nodene, si v, fastsette v sin avst-verdi, og legge den over i S. Vi velger som v den usette noden med lavest avst-verdi (er det flere like, velger vi bare en av dem, vilkårlig). Node v flyttes over i S uten å forandre avst, og for alle usette noder u som er nabo av v setter vi avst til (dette er altså den rekursive formelen som beregnes): u.avst = min{ u.avst, v.avst + 1 }. iii.Punkt ii gjentas så inntil målnoden (x,y,z) blir en sett node.

Oppgave 2 Søk (20%) For å holde styr på hvilken usette node som har lavest avst-verdi bruker vi en prioritetskø med nodenes avst-verdi som nøkkel. (Det er altså denne prioritetskøen som gir oss større og større delproblemer; og ettersom avst-verdiene i nodene kan endres, vil rekkefølgen ikke være statisk.) Vil begge algoritmene (vi forutsetter at A*-algoritmen bruker en monoton heuristikk) finne optimale løsninger, det vil si beregne korrekt korteste sti? Forklar kort. Hvilke forskjeller er det i effektivitet mellom algoritmene? (Vi er kun ute etter generelle betraktninger om algoritmenes effektivitet, ingen detaljert kjøretidsanalyse.) Dette er Dijkstras algoritme for korteste sti i grafer. Dijkstras algoritme er A* uten heuristikk, et slags bredde først søk med en prioritetskø istedenfor den vanlige FIFO-køen. Algoritmen stopper når målet er nådd, så den finner ikke avstanden til alle andre noder, men den er ikke like målrettet som A* ettersom den ikke bruker noen heuristikk for å rette søket. Både Dijkstra og A* med monoton heuristikk finner korrekte korteste stier, det er ikke tilnærmingsalgoritmer.