ALGORITMER OG DATASTRUKTURER

Like dokumenter
ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

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

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Eksamen i tdt4120 Algoritmer og datastrukturer

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

ALGORITMER OG DATASTRUKTURER

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

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Notater til INF2220 Eksamen

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.

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

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

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

SIF8010 ALGORITMER OG DATASTRUKTURER

Oppgave 1. Sekvenser (20%)

LO118D Forelesning 2 (DM)

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

ALGORITMER OG DATASTRUKTURER

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

Øvingsforelesning Korteste vei: Alle til alle

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

All good things. Fjortende forelesning

Algdat Eksamensforelesning. Nils Barlaug

Eksamensoppgave i MA0301 Elementær diskret matematikk løsningsforslag

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Innhold. Innledning 1

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Eksamenshefte TDT4120 Algoritmer og datastrukturer

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

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

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Pensum: fra boken (H-03)+ forelesninger

INF Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

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

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Eksamensoppgave i MA0301 Elementær diskret matematikk løsningsforslag

Kjøretidsanalyse. Hogne Jørgensen

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

UNIVERSITETET I OSLO

INF2220: Forelesning 2

MAT1030 Diskret Matematikk

Choices, choices. Tiende forelesning. Dynamisk programmering: En serie med valg der valgmulighetene er avhengige av hva vi har valgt før.

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

Divide-and-Conquer II

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

UNIVERSITETET I OSLO

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

INF2220: Time 12 - Sortering

Dynamisk programmering

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

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

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

Øvingsforelesning 4. Topologisk sortering, Strongly Connected Components og Minimale spenntrær. Magnus Botnan

MAT1030 Forelesning 25

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

MAT1030 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.

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

Dynamisk programmering Undervises av Stein Krogdahl

Eksamensoppgave i MA1201 Lineær algebra og geometri

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

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 AVSLUTTENDE EKSAMEN I IT1105 ALGORITMER OG DATASTRUKTURER Mandag 29. mai 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: 19. juni 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.

Stud. nr: Side 2 av 6 Oppgave 1 (30%) 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.5 poeng, et utsagn uten kryss gir 0 poeng, og et utsagn der krysset er satt galt gir 1.5 poeng. En negativ totalsum for en deloppgave (a d) 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) Binære hauger (binary heaps) er sentrale, grunnleggende datastrukturer som inngår som komponenter i flere klassiske algoritmer. Betrakt en binær maks-haug (max-heap) med heltall, representert på vanlig måte som en tabell, A[1] A[n]. (Merk at haugen også kan tolkes som et binært tre, slik at i er en node, og A[i] er verdien i noden.) 1. Anta at i er delelig på 2. Foreldrenoden til i er da i / 2. 2. Haugen A kan i verste tilfelle (worst-case) få en høyde på Θ(n). Merknad: Høyden er alltid Θ(log n). 3. Haugen A kan i verste tilfelle (worst-case) bygges i lineær tid fra n heltall. 4. En binær maks-haug med kapasitet k n kan brukes til å finne de k minste tallene i A med kjøretid O(n log k). Merknad: Gjennomløpning av tabellen A. Ta hele tiden vare på de k minste. 5. Medianverdien til verdiene i haugen A kan finnes med kjøretid Θ(log n). b) Et klassisk algoritmisk problem er å finne den korteste veien (shortest path) mellom to noder i en vektet, rettet graf. Anta i det følgende at G = (V, E) er en slik graf, med positive heltall som kantvekter. Anta at G er en annen graf med vilkårlige kantvekter, og G enda en graf, der alle kantvektene er 1. Alle grafene kan inneholde sykler, og har m kanter og n noder. 1. Kruskals algoritme finner korteste vei (én-til-alle) i G ved hjelp av grådighet. Merknad: Kruskals algoritme finner ikke korteste vei. 2. Dijkstras algoritme vil finne korteste vei (én-til-alle) i G. Merknad: Dijkstras algoritme kan ikke brukes når vi har (eller kan ha) negative vekter. 3. Bredde-først-søk vil finne korteste vei (én-til-alle) i G. 4. Bellman-Ford finner korteste vei (alle-til-alle) i G med kjøretid O(mn). Merknad: Bellman-Ford finner korteste vei fra én til alle. 5. Bellman-Ford kan oppdage negative sykler i G med kjøretid O(mn).

Stud. nr: Side 3 av 6 c) Anta at du har to binære søketrær, B 1 og B 2. B 1 bruker ingen balanseringsmekanisme (det vokser vilkårlig etter hvert som elementer settes inn) mens B 2 er et rød-svart-tre (red-black tree). 1. I gjennomsnitt (average-case) vil B 2 være mer effektivt (asymptotisk) enn B 1. Merknad: Asymptotisk oppfører trærne seg helt likt i average-case. 2. I beste tilfelle (best-case) vil B 1 kunne få lavere høyde (asymptotisk) enn B 2. Merknad: B 2 har alltid logaritmisk høyde; B 1 har også det i bestes tilfelle. 3. I verste tilfelle (worst-case) vil B 2 alltid være mer effektivt (asymptotisk) enn B 1. Merknad: B 2 vil være balansert, mens B 1 ikke vil være det. 4. I verste tilfelle (worst-case) vil B 2 kunne ha røde noder med røde barnenoder. Merknad: Det er alltid ulovlig å ha røde noder med røde barnenoder. 5. I beste tilfelle (best-case) vil B 2 kunne ha svarte noder med svarte barnenoder. Merknad: Det er alltid lovlig å ha svarte noder med svarte barnenoder. d) Anta at du har to NP-komplette problemer A og B. Anta også at du har et problem C fra mengden P. 1. Hvis A befinner seg i P vil B også gjøre det. Merknad: Dette følger av definisjonen av NP-komplette problemer. 2. Hvis du kan redusere problemet C til problemet A i polynomisk tid så følger det at C er NP-komplett. Merknad: Hvis du kan redusere A til C, derimot, så vil C være NP-komplett. 3. Hvis P = NP vil det likevel finnes problemer i NP som ikke er NP-komplette. Merknad: Hvis P = NP så vil også NPC = P. (Følger av definisjonen av NPC.) 4. Hvis P NP så er NP-komplette problemer ikke beregnbare. Merknad: Alle NP-komplette problemer er beregnbare (siden de finnes i NP). 5. 1-0-ryggsekkproblemet (kjøretid O(nW)) er NP-komplett. Merknad: Dette medfører ikke at P = NP, siden problemstørrelsen er avhengig av log 2 W. Oppgave 2 (15%) Vi innfører følgende ekstraregler for bygging av Huffman-trær: 1. Ved sammenslåing av to deltrær, sett alltid inn det deltreet med lavest totalkostnad til venstre. 2. Hvis du skal slå sammen to deltrær med samme totalkostnad, sammenlign løvnodene lengst til venstre i de to deltrærne. Deltreet med løvnoden som kommer tidligst i alfabetet settes inn til venstre. 3. Kanter nedover til venstre merkes med 0, kanter nedover til høyre merkes med 1. Anta at du har en tekst med følgende tegnfrekvenser: f(a) = 1, f(b) = 2, f(c) = 3, f(d) = 4, f(e) = 5, f(f) = 6.

Stud. nr: Side 4 av 6 a) Tegn et Huffman-tre for teksten, i henhold til reglene gitt over. Svar: (10%) Her kan det gis opp til 5 poeng for et gyldig (eller nesten gyldig) Huffman-tre som ikke stemmer med reglene i oppgaven. b) Bruk treet i a) til å finne en binær koding for strengen «cafe». Oppgi den resulterende binære strengen. Svar: (5%) 10110001101 Her gis det full uttelling hvis et galt tre i a) har blitt brukt riktig i b). Delvis riktig svar kan gi opp til 3 poeng. Oppgave 3 (15%) Et k-regulært tre er et tre der hver interne node har k barnenoder. Du skal finne en funksjon L(n) for hvor mange løvnoder et slikt tre med n interne noder har. For eksempel vil L(1) = k. Merk at treet ikke trenger være balansert. a) Sett opp sammenhengen mellom L(n) og L(n 1) som en ligning (det vil si, en rekurrensligning), der n > 1. Hint: Hvor mange ekstra løvnoder får du hvis du bytter en løvnode ut med en ny intern node? Svar: (7%) L(n) = L(n 1) + k 1 Det kan gis 3 poeng dersom leddet «1» mangler. b) Løs ligningen (rekurrensen) fra a) og finn et asymptotisk uttrykk for L(n). Uttrykket skal også vise hvordan antallet løvnoder avhenger av konstanten k. Vis utregningen (kort). Bruk Θ- notasjon.

Stud. nr: Side 5 av 6 Svar: (8%) Utregning: (Litt mer utførlig enn det som kreves) L(n) = L(n 1) + k 1 = L(n 2) + 2k 2 = = L(n i) + ik i For i = n 1: L(1) + (n 1)k (n 1) = nk n + 1 Her gis det opp til 4 poeng for fornuftig utregning selv om svaret ikke blir helt riktig. Om rekurrensen i a) var feil vil det likevel kunne gis opp til 4 poeng. Om k utelates kan det gis opp til 4 poeng (for svaret Θ(nk)). L(n) Θ(nk) Oppgave 4 (20%) Du ønsker å rangere deltakerne i VM i Algoritmekonstruksjon ut fra ferdighetsnivå. Anta at det er mulig å finne en éntydig slik ordning. For å lette arbeidet ønsker du å begynne med å lage en delvis ordning, i form av en rettet, asyklisk graf, eller DAG. Prosedyren for å bygge denne DAG-en er enkel: Du plukker ut to kandidater, legger dem til i grafen som noder (hvis de ikke alt er med), og legger til en kant mellom dem, fra den beste til den dårligste. Dette gjentar du til ordningen er entydig, det vil si, til det finnes kun én topologisk ordning av grafen. Anta at det er n deltagere som skal ordnes. Du står fritt til å velge hvilke to kandidater du vil sammenligne til enhver tid. Du vet ikke noe om kandidatenes innbyrdes ordning før du begynner å sammenligne. a) Hvor få kanter kan du bruke, i det beste tilfellet (best-case), hvis du er så effektiv som mulig (dvs. bruker så få kanter som mulig)? Skriv svaret som en eksakt funksjon av n. Merk: Siden det er snakk om beste mulige tilfelle kan du anta at du har maksimal «flaks» ved utvelgelse av kandidater for sammenligning. Svar: (8%) Trenger n 1 kanter. Her kan det gis opp til 4 poeng for svar som f.eks. n kanter. b) Hvor mange kanter kan du bli nødt til å bruke, i verste tilfelle (worst-case), hvis du er så effektiv som mulig (dvs. bruker så få kanter som mulig)? Skriv svaret asymptotisk som en funksjon av n. Bruk Θ-notasjon. Svar: (12%) Θ(n log n) Tilsvarer sortering. Svar som n 2 kan gi opp til 3 poeng. Oppgave 5 (20%) Du har kjøpt opp n restauranter som ligger ved siden av hverandre i samme gate. Du ønsker å slå sammen alle restaurantene til én stor restaurant, men du kan bare slå sammen to om gangen, og disse to må ligge ved siden av hverandre. Størrelsen til den nye restauranten er summen av størrelsene til de to restaurantene som blir slått sammen. Kostnaden ved en sammenslåing er lik størrelsen på den resulterende restauranten. Den totale kostnaden ved n 1 sammenslåinger er summen av kostnadene til de individuelle sammenslåingene. Du ønsker å finne en sammenslåing med så lav total kostnad som mulig.

Stud. nr: Side 6 av 6 Anta at du har oppgitt størrelsene til de n restaurantene i en tabell S = S[1] S[n]. a) Du vil først beregne innholdet i tabellen L[1 n, 1 n], der L[i, j] er den totale lengden av restaurantene fra og med nummer i til og med nummer j. Du trenger kun beregne verdiene for i j. Skissér kort en enkel algoritme som beregner L. Svar: (3%) (Det er flere måter å gjøre dette på. Det gis full score selv om det skulle være små indeksfeil.) L[1, 1] S[1] for j 2 to n do L[1, j] L[1, j 1] + S[j] for i 2 to n do for j i to n do L[i, j] L[i 1, j] S[i 1] Du ønsker å finne en effektiv algoritme som bruker dynamisk programmering (DP) for å beregne den minimale totale kostnaden ved å slå sammen alle de n restaurantene. b) Hva blir de naturlige delproblemene i DP-løsningen? Svar: (7%) Et naturlig delproblem blir den totale kostnaden for bygningene fra i til j. c) Beskriv kort en algoritme som løser problemet. Hva blir kjøretiden i Θ-notasjon? Du kan anta at tabellen L fra a) allerede er beregnet og kan brukes her. Svar: (10%) Ekvivalent med eksemplet i boka, kapittel 15 (Matrix-chain multiplication), men med L som kostnad. Rekursive løsninger med memoisering aksepteres som fullgode. Det gis også full uttelling for mer overordnede beskrivelser, så lenge prinsippet i løsningen kommer klart frem. for i 1 to n do C[i, i] 0 for l 2 to n do for i 1 to n l + 1 do j i + l 1 C[i, j] for k i to j 1 do C[i, j] min{c[i, j], C[i, k]+c[k+1, j]+l[i, j]} return C[n, 1] Kjøretid: Θ(n 3 )