ALGORITMER OG DATASTRUKTURER

Like dokumenter
ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Algdat Eksamensforelesning. Nils Barlaug

Avsluttende eksamen i IT1105/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.

Innhold. Innledning 1

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Øvingsforelesning 12 Maks flyt

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

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

All good things. Fjortende forelesning

ALGORITMER OG DATASTRUKTURER

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

Algdat - Øvingsforelesning. Maks flyt

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Oppgave 1. Sekvenser (20%)

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

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

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

IN Algoritmer og datastrukturer

Maks Flyt og NPkompletthet

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Eksamenshefte TDT4120 Algoritmer og datastrukturer

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

Dijkstras algoritme Spørsmål

INF Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

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

deeegimnoorrrsstt Sjette forelesning

Pensum: fra boken (H-03)+ forelesninger

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

Eksamen i Algoritmer og Datastrukturer Torsdag 12. januar 1995, Kl

Rundt og rundt og. Trettende forelesning

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

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

IN Algoritmer og datastrukturer

Algdat - øvingsforelesning

INF Algoritmer og datastrukturer

All good things. Fjortende forelesning

for bare trær Andre forelesning

Avanserte flytalgoritmer

Algoritmer og Datastrukturer

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

O(V 2 ) bwfs(v, i=1) λ[v] = i for each neighbor u of v if 0 < λ[u] < i. bwfs(u, i+1) if λ[u] = 0

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

UNIVERSITETET I OSLO

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Eksamensoppgave i MA0301 Elementær diskret matematikk løsningsforslag

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Longest increasing. subsequence Betingelser. Longest. common subsequence. Knapsack Grådig vs. DP Moro: 2D-Nim Spørsmål. Forside. Repetisjon.

UNIVERSITETET I OSLO

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

UNIVERSITETET I OSLO

deeegimnoorrrsstt Sjette forelesning

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

Kjøretidsanalyse. Hogne Jørgensen

INF Algoritmer og datastrukturer

Norsk informatikkolympiade runde

Eksamensoppgave i MA1201 Lineær algebra og geometri

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

Øvingsforelesning Korteste vei: Alle til alle

A new study has found that cockroaches are morons in the morning and geniuses in the evening in terms of their learning capacity.

Live life and be merry

Transkript:

Stud. nr: Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap LØSNINGSFORSLAG, AVSLUTTENDE EKSAMEN I TDT4120 ALGORITMER OG DATASTRUKTURER Lørdag 12. august 2006 Kl. 09.00 13.00 Faglig kontakt under eksamen: Magnus Lie Hetland, tlf. 918 51 949 Hjelpemidler: Ingen trykte eller håndskrevne hjelpemidler tillatt. Bestemt, enkel kalkulator tillatt. Sensurdato: 2. september 2006. Resultater gjøres kjent på http://studweb.ntnu.no og sensurtelefon 815 48 014. Viktig: Les hele oppgavesettet før du begynner. Les oppgaveformuleringene grundig. Det er angitt i poeng hvor mye hver deloppgave teller ved sensur. Gjør antagelser der det er nødvendig. Skriv kort og konsist. Skriv fortrinnsvis i rutene på oppgavearket. Lange forklaringer som ikke direkte besvarer oppgaven tillegges liten vekt.

Stud. nr: Side 2 av 6 Oppgave 1 (20%) Hver av de følgende deloppgavene består av 5 utsagn. Ved hvert av disse utsagnene skal du sette kryss ved «ja» eller «nei». Sett kryss ved «ja» hvis du mener utsagnet er sant og ved «nei» hvis du mener at utsagnet er usant eller ikke stemmer (evt. ikke gir mening). Ikke kryss av for «nei» hvis du er enig i et utsagn som bruker ordet «ikke». Kryss da av for «ja», som betyr at utsagnet stemmer. Hvert utsagn der krysset er satt riktig gir 1 poeng, et utsagn uten kryss gir 0 poeng, og et utsagn der krysset er satt galt gir 1 poeng. En negativ totalsum for en deloppgave (a e) rundes opp til 0. Les oppgavene nøye. Oppgavetekstene er utformet slik at svarene ikke skal være opplagte. Svar bare dersom du er sikker på at du har forstått oppgaven og at du vet svaret. a) Ta stilling til følgende påstander om sorteringsalgoritmen MERGESORT. 1. Den utnytter overlappende delproblemer. 2. Den er asymptotisk mer effektiv enn HEAPSORT. 3. Den har i verste tilfelle kjøretid (n 2 ). 4. Den egner seg godt til rekursiv implementasjon. b) Betrakt rekurrens-ligningen T(n) = 2T( n/2 ) + n. 1. Rekurrensen er typisk for dynamisk programmering. 2. Rekurrensen er typisk for splitt-og-hersk-algoritmer. 3. T(n) (n log n). 4. Rekurrensen beskriver bl.a. best-case-kjøretiden til QUICKSORT. c) Ta stilling til følgende utsagn om selection-problemet. 1. Det kan løses i O(n) tid i verste tilfelle. 2. Det krever sortering av datasettet. 3. RANDOMIZEDSELECT bruker grådighet. 4. RANDOMIZEDSELECT bruker memoisering. d) Betrakt et problem P som kan løses med en grådig algoritme. 1. Det vil lønne seg å bruke dynamisk programmering for å løse P.

Stud. nr: Side 3 av 6 2. Lokalt optimale valg vil gi en optimal løsning for P. 3. Problemet P har optimal delstruktur. 4. Kjøretiden for å løse P vil kunne bli mer enn lineær. e) Betrakt problemet VERTEX-COVER å finne et vertex cover med størrelse k på en graf G = (V, E). 1. Størrelsen til et cover er antall noder det består av. 2. Det finnes en kjent reduksjon fra VERTEX-COVER til HAM-CYCLE. 3. Det finnes en kjent reduksjon fra VERTEX-COVER til MINIMAL- SPANNING-TREE. 4. Parameteren k kan ikke være større enn E /2. Oppgave 2 (35%) a) Beskriv FLOYD-WARSHALL med pseudokode. Svar (10%): FLOYD WARSHALL(W) n rows[w] D (0) W for k 1 to n for i 1 to n for j 1 to n D (k) [i, j] min(d (k 1) [i, j], D (k 1) [i, k] + D (k 1) [k, j]) b) Betrakt en urettet, sammenhengende, vektet graf G. Anta at alle kantene i G har ulike vekter. Gi en kort begrunnelse for hvorfor den letteste kanten (den med lavest kostnad) i et hvilket som helst snitt (cut) i G må være med i et minimalt spenntre over G. Svar (8%): Hvis ikke kan den den byttes ut med en lettere kant, som gir et lettere tre, og vi får en selvmotsigelse. Merk: Her er det ikke nok å vise hva Prims og Kruskals algoritmer ville ha gjort. Man må i så fall påpeke at det kun finnes ett mulig minimalt spenntre (ettersom alle kantene er forskjellige), så enhver algoritme ville ha måttet gjøre de samme valg. FORD-FULKERSON er en generell metode for å finne maksimal flyt i flytnettverk. Den generelle metoden har ikke garantert polynomisk kjøretid. EDMONDS-KARP er en variant av FORD- FULKERSON som har polynomisk kjøretid på grunn av måten den velger flytforøkende veier/stier på. c) Hvordan velger EDMONDS-KARP flytforøkende stier? (Svar kort.)

Stud. nr: Side 4 av 6 Svar (8%): Den velger de korteste (de med færrest kanter), f.eks. vha. BFS. Å svare at den velger den kanten som gir størst flytøkning e.l. er galt, og gir ingen uttelling. Betrakt følgende tabell, A: [2, 2, 4, 0, 3, 4, 3]. Denne tabellen skal sorteres med tellesortering (COUNTING-SORT). Anta at du på forhånd vet at verdiene i tabellen kun kan falle i området fra og med 0 til og med 5. Anta at telle-tabellen din heter C og resultat-tabellen din heter B (som i læreboka). e) Oppgi innholdet i tabellen B og C for hvert tall som settes inn i B (det vil si, rett etter at tallet har blitt satt inn og C har blitt oppdatert). Oppgi kun de første 3 trinnene. Sett en strek () for eventuelle uinnfylte plasser i tabellene. Merk at et tall alt er fylt inn i C. Svar (9%): Trinn 1: B: [,,,,,, ] C: [,, 3,,, ] B: [,,,, 3,, ], C: [1, 1, 3, 4, 7, 7] Trinn 2: B: [,,,,,, ] C: [,,,,, ] B: [,,,, 3,, 4], C: [1, 1, 3, 4, 6, 7] Trinn 3: B: [,,,,,, ] C: [,,,,, ] B: [,,, 3, 3,, 4], C: [1, 1, 3, 3, 6, 7] Oppgave 3 (20%) Betrakt følgende pseudokode: PLOFFSKIN(gromboolian, chankly, bore) if chankly bore return 42 for pelican chankly bore print gromboolian[pelican] jee (chankly bore) / 4 PLOFFSKIN(gromboolian, chankly+jee, bore jee) a) Anta at A er en 1-indeksert tabell med lengde n. Hva blir kjøretiden til PLOFFSKIN(A, 1, n)? Oppgi kjøretiden i -notasjon. Vis hovedtrekkene i utregningen. Svar (10%): Antall print-operasjoner er:

Stud. nr: Side 5 av 6 T(n) = T( n/2 ) + n (evt. T( n/2 ) + (n)) Gjetter T(n) O(n), som for SELECT. Bruker induksjon på T(n) c n: T(n) c (n/2) + n = (c/2 + 1) n c n (stemmer hvis c 2). Tilsvarende (omvendt) for (n). Bruk av andre løsningsmetoder som f.eks. Masterteoremet gir også full score. Det følgende er en variant av Dijkstras algoritme som er litt forskjellig fra algoritmen slik den er presentert i læreboka. Anta at køen Q er implementert med en uordnet, lenket liste. DIJKSTRA(G, w, s) 1 INITIALIZE-SINGLE-SOURCE(G, s) 2 S 3 Q V[G] 4 while Q 5 d min 6 for each vertex v Q 7 if d[v] < d min 8 d min d[v] 9 u v 10 Q Q {u} 11 S S {u} 12 for each vertex v Adj[u] 13 RELAX(u, v, w) b) Hva er kjøretiden til algoritmen ovenfor? Oppgi kjøretiden i -notasjon. Gi en kort begrunnelse for svaret. Svar (10%): ( V 2 ) Begrunnelse: I iterasjon k av linje 4 13 gjennomfører løkken på linje 6 9 V k+1 iterasjoner. Kostnaden blir altså V + ( V 1) + + 1 som er ( V 2 ). Enklere forklaringer som er inne på rett spor gir også full score hvis kjøretiden er riktig. Oppgave 4 (25%) Butikkjeden «8 12» skal bygge butikker langs hovedgata, som går mellom øst og vest gjennom Metropolis sentrum. De har fått tilbud om å kjøpe flere bygninger, med posisjoner x[1] x[n] (i meter fra starten av gata, i stigende rekkefølge fra vest-enden). Kostnaden ved å kjøpe disse bygningene ser man bort fra; det er her kun langsiktig fortjeneste som skal vurderes. Den årlige fortjenesten for en butikk kommer an på plasseringen, og fortjenesten for posisjon x[i] er gitt ved f[i] > 0. Bystyret har satt ned foten, og bestemt at det må minst være 500 meter mellom butikkene. Du har fått i oppdrag å beregne det lovlige utvalget av butikkposisjoner som gir størst total årlig fortjeneste.

Powered by TCPDF (www.tcpdf.org) Stud. nr: Side 6 av 6 Innledende analyser fra butikkjedens egne datafolk tyder på at man bør beregne en tabell y[1] y[n], der x[y[i]] er posisjonen til det østligste huset vest for x[i] som har en lovlig avstand til x[i]. Hvis y[i] = 0, betyr det at det ikke finnes noen lovlige posisjoner vest for x[i]. a) Beskriv kort en algoritme som beregner tabellen y så effektivt som mulig. Hva blir kjøretiden? (Oppgi svaret i -notasjon.) Svar (10%): j 1 for i 1 to n while x[j] < x[i] 500 j j + 1 y[i] j 1 Kjøretid: (n) Evt. kan man beregne x[i] 500 og bruke binærsøk for å finne dette, med kjøretid (n log n). Dette vil ikke gi full uttelling, men er atskillig bedre enn en løsning med kvadratisk kjøretid. b) Anta at tabellen y fra deloppgave a) er tilgjengelig (det vil si, at den alt har blitt beregnet). Beskriv kort en algoritme som så effektivt som mulig finner den optimale fortjenesten med lovlig plasserte butikker. Hva blir kjøretiden? (Oppgi svaret i -notasjon.) Svar (15%): Bruker dynamisk programmering. Optimale delproblemer F[i] angir beste mulige fortjeneste fra vest-enden til og med hus nummer i. Den optimale løsningen inkluderer enten f[i] eller ikke. Hvis hus i inkluderes, blir det neste mulige huset (bakover) nummer y[i], og resten av fortjenesten blir F[y[i]]. Hvis huset ikke tas med, blir den optimale løsningen rett og slett F[i 1]. Algoritmen blir: F[0] 0 F[1] f[1] for i 2 to n F[i] max{f[i] + F[y[i]], F[i 1]} return F[n] Merk: En grundig forklaring kreves ikke. Forklaringer som beskriver dette som DAG-Longest-Path (dvs. omvendt av DAG-Shortest-Path) er fullgode. Kjøretid: (n)