Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Like dokumenter
Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Eksamen i tdt4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

ALGORITMER OG DATASTRUKTURER

Algdat Eksamensforelesning. Nils Barlaug

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

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TMA4140 Diskret matematikk

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Øvingsforelesning Korteste vei: Alle til alle

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Grunnleggende Grafalgoritmer II

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Eksamensoppgave i TMA4140 Diskret matematikk

Lineær sortering. Radix sort

Øvingsforelesning 12 Maks flyt

Fra A til B. Syvende forelesning

Lars Vidar Magnusson

SIF8010 ALGORITMER OG DATASTRUKTURER

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

EKSAMEN. Emne: Algoritmer og datastrukturer

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs (løsningsforslag)

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

Maks Flyt og NPkompletthet

Grunnleggende Grafteori

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

Eksamenshefte TDT4120 Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare!

Agenda. 1 Sortering, heap og select. 2 Binære trær. 3 Grafer, BFS og DFS. 4 Spenntrær og Korteste vei. 5 Maks flyt. 6 Dynamisk programmering

Oppgave 1. Sekvenser (20%)

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

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Pensum: fra boken (H-03)+ forelesninger

Algoritmer og Datastrukturer

Algdat - Øvingsforelesning. Maks flyt

Eksamensoppgave i MA0301 Elementær diskret matematikk løsningsforslag

EKSAMEN med løsningsforslag

Dijkstras algoritme Spørsmål

Innhold. Innledning 1

IN Algoritmer og datastrukturer

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

EKSAMEN. Algoritmer og datastrukturer

n/b log b n = (lg n) a log b n = n log b a

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

for bare trær Andre forelesning

Løsningsforslag. Emnekode: Emne: Matematikk for IT ITF Eksamenstid: Dato: kl til kl desember Hjelpemidler: Faglærer:

deeegimnoorrrsstt Sjette forelesning

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Løsningsforslag - Korteste vei

UNIVERSITETET I OSLO

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:

E K S A M E N. EKSAMENSDATO: 15. desember 1994 TID: Kladd og oppgavearkene leveres sammen med besvarelsen. Kladd merkes med "KLADD".

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Notater til INF2220 Eksamen

Eksamensoppgave i TMA4140 Diskret matematikk

EKSAMEN. Oppgavesettet består av 16 oppgaver. Ved sensur vil alle oppgaver telle like mye med unntak av oppgave 6 som teller som to oppgaver.

All good things. Fjortende forelesning

INF2220: Time 12 - Sortering

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Transkript:

Institutt for datateknikk og informasjonsvitenskap Eksamensoppgave i TDT4120 Algoritmer og datastrukturer Faglig kontakt under eksamen Magnus Lie Hetland Telefon 918 51 949 Eksamensdato 4. desember, 2017 Eksamenstid (fra til) 09:00 13:00 Hjelpemiddelkode/tillatte hjelpemidler D Annen informasjon Oppgavearkene leveres inn, med svar i svarrute under hver oppgave Målform/språk Bokmål Antall sider (uten forside) 5 Antall sider vedlegg 0 Informasjon om trykking av eksamensoppgave Originalen er 1-sidig 2-sidig sort/hvit i farger Skal ha flervalgskjema Kvalitetssikret av Kontrollert av Dato Sign Pål Sætrom Merk: Studenter finner sensur i Studentweb. Har du spørsmål om din sensur må du kontakte instituttet ditt. Eksamenskontoret vil ikke kunne svare på slike spørsmål.

Kandidatnummer: Side 1 av 5 Les dette nøye (i) (ii) Les hele eksamenssettet nøye før du begynner! Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare! (iii) Skriv svarene dine i svarrutene og levér inn oppgavearket. Bruk gjerne blyant! Evt. kladd på eget ark først for å unngå overstrykninger, og for å få en egen kopi. (iv) Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt. Merk: Varianter av de foreslåtte svarene nedenfor vil naturligvis også kunne gis uttelling, i den grad de er helt eller delvis korrekte. Oppgaver med løsninger (5%) 1. (a) Hvilken traverseringsalgoritme i pensum kan brukes til å finne korteste vei i uvektede grafer? BFS (5%) (b) Én nøkkelingrediens i dynamisk programmering er optimal substruktur. Hva er den andre? Overlappende delproblemer. (5%) (c) Hva er kjøretiden til Randomized-Select i verste tilfelle (worst-case)? Θ(n 2 ) (5%) (d) Radix-Sort sorterer etter ett og ett siffer. I hvilken rekkefølge? Fra minst til mest signifikante. (5%) (e) Hva har grafen hvis Bellman-Ford feiler (dvs., returnerer false)? Negative sykler. (5%) (f) Hva representerer attributten v.π i (for eksempel) Prim og Dijkstra? Forgjengeren (predecessor) eller forelderen (parent) til v. (5%) (g) Hva er input til kretsen i NPC-beviset for CIRCUIT-SAT (dvs. y, der C(y) = A(x, y))? Et sertifikat. 2. I de følgende deloppgavene, sørg for å ikke «kaste bort» informasjon under forenklingen. Gi tette grenser og bruk den mest presise asymptotiske notasjonen du kan (av O, Ω eller Θ). (5%) (a) Forenkle uttrykket Θ(n) + O(n 2 ) + Ω(n 3 ). Ω(n 3 ) (5%) (b) Forenkle uttrykket Θ(n + n) + O(n 2 + n) + Ω(n (n + lg n)). Ω(n 2 ) (5%) (c) Løs rekurrensen T(n) = T(n/3) + lg n. Skriv svaret med Θ-notasjon. Θ(lg 2 n)

Kandidatnummer: Side 2 av 5 3. Dine venner Smartnes og Lurvik har laget hver sin algoritme som tar inn en binær maks-haug (binary max-heap) som input. Haugen er representert som en tabell A[1.. n] på vanlig måte. Alle elementene er forskjellige og haugen er komplett. 1 (5%) (a) Lurvik sin algoritme baserer seg på antagelsen at de n/2 minste elementene alltid vil ligge sist (dvs., i løvnodene). Stemmer det? Begrunn svaret kort. Nei, det stemmer ikke. Her er f.eks. 5 en løvnode mens 4 ikke er det: 7 6 4 1 5 2 3 Dette tilsvarer A = [7, 6, 4, 1, 5, 2, 3], der de siste n/2 elementene er understreket. (5%) (b) Smartnes mener hun har en algoritme som utnytter haug-strukturen og bygger et balansert binært søketre for elementene til A i lineær tid. Tror du hun kan ha rett? Begrunn svaret kort. Nei. Hun kunne også bygge haugen og inorder-traversere treet i lineær tid i verste tilfelle, og dermed bryte sorteringsgrensen på Ω(n lg n). Følgende algoritme ville altså være en slik umulig sorteringsalgoritme: Smartnes-Sort(A) 1 Build-Max-Heap(A) 2 Lag treet T fra A med Smartnes sin algoritme 3 Inorder-Tree-Walk(T. root) Dette gjelder selv om vi begrenser hvilke verdier n kan ha; om vi får inn et annet antall elementer, kan vi alltids legge til noen svært store verdier som uansett havner sist; det vil i verste tilfelle doble størrelsen på A. (5%) 4. Du skal simulere én iterasjon av Transitive-Closure. I figur 1 ser du den rettede grafen som tilsvarer T (3). Du skal beregne T (4) og tegne den tilhørende rettede grafen. Fyll inn kantene som mangler i figur 2. Angi retning tydelig. (Merk: Hver T (k) er en helt ny tabell. Dvs., vi gjenbruker ikke den samme i hver iterasjon.) Det er ikke nødvendig med en grundig simulering for å løse denne oppgaven. I iterasjon 4 trenger man bare se på kantene inn til 4 og ut fra 4. Det er bare én kant inn fra 5, så 5 «arver» 4 sine ut-kanter. (5%) 5. (a) Tegn et flytnettverk der kapasitetene er oddetall men der maksimal flytverdi er et partall. For eksempel: x 1/1 1/1 s 1/1 t 1 Alle interne noder har to barn og alle løvnoder er på samme nivå, dvs., n = 2 k 1 for et heltall k 1.

Kandidatnummer: Side 3 av 5 1 1 6 2 6 2 5 3 5 3 4 Figur 1: T (3) brukt i oppgave 4 4 Figur 2: T (4) svar på oppgave 4 (5%) (b) I et flytnettverk der kapasitetene er partall vil maksimal flytverdi være et partall. Hvorfor? Maks-flyt = min-cut, og kapasiteten til et snitt er en sum av kapasiteter, og dermed et partall. Her godtas flere forklaringer. F.eks.: (i) Om vi deler kapasitetene på 2 får vi heltallskapasiteter. Maksimal flytverdi blir et heltall (jf. heltallsteoremet), og vi kan så gange med 2 igjen. (ii) Flaskehalsen/oppdateringer i residualnettverket vil alltid være partall, og sum av partall er et partall. (5%) (c) Et team med forskere skal gjennomføre et sett med prosjekter. Hvert prosjekt består av flere oppgaver, og et visst antall av prosjektets oppgaver (f.eks. 7 av 12) må gjøres. Ulike prosjekt kan ha ulike antall. Hver oppgave skal utføres av én forsker. Hver forsker har en viss kapasitet, dvs., et antall oppgaver hun rekker å gjøre. Hver forsker er kompetent til å gjøre noen av oppgavene, men ikke nødvendigvis alle. Du skal avgjøre hvem som skal gjøre hvilke oppgaver, eller finne ut at det ikke går. Beskriv hvordan du kan løse dette som et maks-flyt-problem. Tegn gjerne et flytnettverk. For eksempel: Noder for forskere, oppgaver og prosjekter. Kanter fra kilde til forskere har kapasitet lik forskerens kapasitet. Kanter fra forskere til oppgaver de er kompetente til å gjøre har kapasitet 1. Kanter fra oppgaver til prosjekter har kapasitet 1. Kanter fra prosjekter til sluk har kapasitet lik antall oppgaver som må gjøres i prosjektet. Dersom alle kantene til sluket er fulle når man har funnet maksimal flyt, så lar problemet seg løse, og fulle kanter fra forsker til oppgave angir hvem som skal gjøre hva. 6. Din venn Klokland vil finne korteste vei til en node t (single-destination shortest-path) i en rettet graf G = (V, E) med vektfunksjon w : E R. Han har endret på Relax så den oppdaterer u basert på w(u, v) og v.d, i stedet for omvendt. Han bruker så denne nye Relax i en modifisert versjon av DFS: Først initialiserer han grafen som vanlig, og når den rekursive traverseringen returnerer til u etter å ha besøkt v (og farget den svart), bruker han sin Relax på kanten (u, v). (Om ønskelig, se pseudokode på s. 5 for presisering.) Klokland påstår at algoritmen fungerer for rettede, asykliske grafer. Du er skeptisk, og vil lage et moteksempel. Resultatet er grafen som er vist nedenfor. (3%) (a) Hva er resultatet av algoritmen om u besøkes først? Fyll inn u.d, t.d og v.d nedenfor.

Kandidatnummer: Side 4 av 5 2 3 2 0 u t v (7%) (b) Beskriv kort hvordan algoritmen kan endres så den blir korrekt for (vektede, rettede) asykliske grafer. (Her holder det med en svært kort forklaring.) Kall Relax også du når treffer svarte noder. (Dvs., redusér indenteringen på linje 5 i DFS-Visit med ett hakk; flytt Relax ut av if-utsagnet.) Synkende finish-time gir en topologisk sortering, og vi får slakket alle ut-kanter fra en node før den får tildelt finish-time, og vi vil kun slakke til svarte noder, som altså allerede har fått tildelt en finish-time. Dette tilsvarer en variant av DAG-Shortest-Path der vi slakker inn-kanter i stedet for ut-kanter, altså grunnleggende dynamisk programmering. 7. Du får oppgitt et spillbrett som vist i figur 3 (på side 5), med n 3 ruter, der du starter helt til venstre og skal flytte mot høyre. I rutene står det hvor langt du maksimalt kan flytte i ett trekk når du står på ruten. Målet er å komme frem til den siste ruten med så få trekk som mulig. (Du kan anta input er slik at at det alltid er mulig å komme frem til den siste ruten.) (7%) (a) Beskriv en algoritme som effektivt finner ut hvor mange trekk du må bruke. (Du trenger ikke finne ut hvilke trekk.) Beskriv den gjerne med egne ord, eller bruk formler, figurer, kode eller pseudokode etter eget ønske. Versjon 1: La r[1,..., n 1] være input og t[i] antall trekk frem til rute i. Da har vi t[1] = 0 og, for i > 1, t[i] = min{t[j] + 1 : j = 1... i 1, i j r[j]}. Svaret er t[n]. Løses med memoisering eller «bottom up», ved iterasjon (i = 2... n). Dette er ekvivalent med å bruke DAG-Shortest-Path med kantvekter 1. Versjon 2: Tolk tabellen som en graf, der lovlige hopp er kanter, og kjør BFS fra første rute. Det finner korteste vei til siste rute. Versjon 3: La antall trekk t være 1, la k = m = r[1] og gjenta det følgende for i = 2 til n 1: La k = k 1. La m være maks av m og i + r[i]. Hvis k = 0, la k = m i og t = t + 1. Forklaring: m er hvor langt vi kan komme med dette eller neste trekk, og k er hvor mye vi har igjen av dette trekket. Hvis vi trekket «går tomt» (k = 0), så må vi skifte til neste trekk (t = t + 1). Vi tillater at dette skiftet kan ha skjedd tidligere, uten at vi vet hvor; vi vet uansett at vi har m i trinn igjen av trekket, dvs., k = m i. (Den samme ideen kan naturligvis implementeres på flere måter.) (3%) (b) Hva blir kjøretiden i verste tilfelle? Oppgi svaret i Θ-notasjon. Forklar kort. For versjon 1 og 2: Vi får i 1 iterasjoner/kanter for t[i], der i = 2... n, så T(n) = Θ(1 + + (n 1)) = Θ(n 2 ). For versjon 3: Vi går igjennom tabellen én gang, så T(n) = Θ(n).

Side 5 av 5 3 5 5 3 1 4 1 2 5 3 5 2 1 1 A B C D E F G H I J K L M N O Figur 3: Eksempel til oppgave 7. I første trekk kan du flytte fra rute A til B, C eller D. Flytter du til D kan du så flytte til E, F eller G i ett trekk. (Merk: Eksempel-løsningen er ikke optimal. Dette er en feil. Eksemplet er vilkårlig, og parentesen ble lagt til så man ikke skulle legge vekt på det men tilfeldigvis så er det optimalt.) Pseudokode til oppgave 6 Det følgende er en mer detaljert beskrivelse av algoritmen som omtales i oppgave 6. Initialize-Single- Source er som beskrevet i pensum. Pseudokoden er ment som et supplement, og det er mulig å besvare oppgaven uten den. Merk at det ikke er nødvendig å skrive pseudokode, eller referere til denne koden, i besvarelsen. Relax (u, v, w) 1 if u.d > v.d + w(u, v) 2 u.d = v.d + w(u, v) 3 u.π = v DFS (G, t) 1 Initialize-Single-Source(G, t) 2 for each vertex u G.V 3 u.color = white 4 for each vertex u G.V 5 if u.color == white 6 DFS-Visit (G, u) DFS-Visit (G, u) 1 u.color = gray 2 for each v G.Adj[u] 3 if v.color == white 4 DFS-Visit (G, v) 5 Relax (u, v, w) 6 u.color = black