UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Notater til INF2220 Eksamen

København 20 Stockholm

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

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

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Algoritmer og Datastrukturer

INF Algoritmer og datastrukturer

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

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

UNIVERSITETET I OSLO

IN Algoritmer og datastrukturer

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

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

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

EKSAMEN med løsningsforslag

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

UNIVERSITETET I OSLO

EKSAMEN. Algoritmer og datastrukturer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer

INF Algoritmer og datastrukturer

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

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

INF2220: Forelesning 2

INF Algoritmer og datastrukturer

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

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

EKSAMENSOPPGAVE. NB! Det er ikke tillatt å levere inn kladd sammen med besvarelsen

UNIVERSITETET I OSLO

Oppgave 1. Sekvenser (20%)

Definisjon av binært søketre

INF1010 Binære søketrær ++

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer IAI 21899

Balanserte binære søketrær

INF2220: Forelesning 2

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

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

Løsnings forslag i java In115, Våren 1998

Innledning. IN2010/INF Algoritmer og datastrukturer. Tirsdag 27. november 2018 Kl (4 timer)

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

IN Algoritmer og datastrukturer

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Binære trær: Noen algoritmer og anvendelser

UNIVERSITETET I OSLO

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

INF1020 Algoritmer og datastrukturer. Dagens plan

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

UNIVERSITETET I OSLO

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

INF Algoritmer og datastrukturer

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

INF Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

KONTINUASJONSEKSAMEN

Trær. Består av sammenkoblede noder Hver node har 0 eller flere barne-noder. Må være asyklisk. Et tre med n noder har n-1 kanter.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

UNIVERSITETET I OSLO

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

UNIVERSITETET I OSLO

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Pattern matching algorithms. INF Algoritmer og datastrukturer. Lokalisering av Substrenger. Brute force

UNIVERSITETET I OSLO

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Eksamen 22. februar 2011

EKSAMEN. Emne: Algoritmer og datastrukturer

KONTINUASJONSEKSAMEN

INF2220: Time 4 - Heap, Huffmann

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 99HINDB / 99HINEA / 00HDESY ( 2DA / 2DB / 2EA / DESY )

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

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

Algoritmer og datastrukturer Løsningsforslag

KONTINUASJONSEKSAMEN

Transkript:

Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 13. desember 2011 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 7 sider. Vedlegg: INF2220 lgoritmer og datastrukturer Ingen Tillatte hjelpemidler: lle trykte eller skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Innhold 1 Prioritetskø (vekt 10%) side 2 2 Kompleksitet (vekt 10%) side 2 3 inære Søketrær (vekt 15%) side 3 4 inærtre (vekt 10%) side 4 5 Grafer (vekt 13%) side 4 6 Rebusløp (vekt 15%) side 5 7 Tekstalgoritmer (vekt 12%) side 6 8 Det Nederlandske Flagget (vekt 15%) side 7 Generelle råd: Skriv leselig (uleselige svar er alltid feil... ) Husk å begrunne svar. Hold kommentarene dine korte og presise. Hvis du bruker kjente datastrukturer som (list, set, map, binær-tre) trenger du ikke forklare hvordan de fungerer. Generelt: hvis du bruker abstrakte datatyper fra biblioteket kan du bruke disse uten å forklare hva de gjør. Vekten til en oppgave indikerer vanskelighetsgraden og tidsbruken du bør bruke på den oppgaven, ut i fra våre estimat. Dette kan være greit å benytte for å disponere tiden best mulig, dvs. ikke bruk mye tid på en oppgave med liten prosentsats (gå videre). Lykke til! Ragnhild Kobro Runde og Ingrid hieh Yu (Fortsettes på side 2.)

Eksamen i INF2220, 13. desember 2011 Side 2 Oppgave 1 Prioritetskø (vekt 10%) En max heap er en binær heap hvor ordningskravet er slik at barn alltid er mindre eller lik sine foreldre. Gitt verdiene 13, 24, 5, 6, 18, 57, 9, 12, 35, 8, 16,3, 20, 35 og 14 1a Innsetting (vekt 5%) Vis array-representasjonen du får ved å sette inn verdiene en om gangen i en initielt tom max heap. 1b Lineær tid-oppbygging av heap (vekt 5%) La være array-representasjonen av et komplett binært tre med verdiene gitt over. Vis array-representasjonen av max heapen du får ved å bruke lineær tid buildheap-algoritmen på. Oppgave 2 Kompleksitet (vekt 10%) Hva er worst-case kompleksiteten av følgende implementasjoner: 2a For-løkker (vekt 3%) for i = 1 to n { for j = i to n { for k = i to j { print ( i, j, k ) ; 2b Rekursjon (vekt 7%) float foo () { n =. length ; i f (n==1) { return [ 0 ] ; l e t 1,1, 3,4 be arrays of size n/2 for ( i =0; i <= (n/2) 1; i ++) { for ( j =0; j <= (n/2) 1; j ++) { 1[ i ] = [ i ] ; 2[ i ] = [ i + j ] ; 3[ i ] = [n/2+ j ] ; 4[ i ] = [ j ] ; (Fortsettes på side 3.)

Eksamen i INF2220, 13. desember 2011 Side 3 b1 = foo (1 ) ; b2 = foo (2 ) ; b3 = foo (3 ) ; b4 = foo (4 ) ; Oppgave 3 inære Søketrær (vekt 15%) Gitt følgende klasse for nodene i et binært søketre: class innode { innode l e f t, right ; int element ; 3a alansering av trær (vekt 7.5%) To populære metoder for å rebalansere et binært søketre er skew og split som vist på følgende figur: P skew P R S split R S 1. Forklar hvorfor skew og split bevarer søketre-egenskapene. 2. Implementer skew og split uten hjelpemetoder. egge metodene skal ta roten i det aktuelle subtreet (P for skew i eksempelet) som parameter, rotere som vist og returnere den nye roten ( for skew i eksempelet). Du kan anta at nodene tilsvarende og P, R og S på figuren eksisterer (dvs at de ikke er null). (Fortsettes på side 4.)

Eksamen i INF2220, 13. desember 2011 Side 4 3b -trær (vekt 7.5%) Et -tre er et rød-svart tre hvor kun høyre-barn kan være røde. Hver node i treet inneholder i tillegg informasjon om sitt nivå slik at: a. lle bladnoder har nivå = 1. b. lle svarte noder har nivå en mindre enn sin forelder. c. lle røde noder har nivå likt som sin forelder. Utvid innode-klassen over med de nødvendige attributtene og skriv en metode som sjekker om et rød-svart tre er et gyldig -tre i henhold til de gitte kravene. Du kan anta at treet er et gyldig rød-svart tre. Lag gjerne hjelpemetoder hvis du finner det mest hensiktsmessig. Oppgave 4 inærtre (vekt 10%) Et komplett binærtre med N elementer er lagret i en array, i posisjon 1 til N. Hvor stor må arrayen være for 1. et binærtre med to ekstra nivåer? 2. et binærtre med N noder hvor den dypeste noden er på dybde 2 log N? 3. en binærtre med den dypeste noden på dybde 4.1 log N? Oppgave 5 Grafer (vekt 13%) 5a Lengste vei i en graf (vekt 5%) Skriv en metode longestpath slik at den, gitt en vektet rettet asyklisk graf G = (V, E), returnerer vekten av den lengste veien i grafen i tid O( V + E ). (Grafen kan inneholde kanter med negative vekter.) egrunn hvorfor denne algoritmen tilfredstiller tidskravet. Hva må algoritmen gjøre for å returnere den korteste veien? Du kan skrive metoden i pseudokode, men den må være detaljert. Det må komme klart fram hva initialiseringen består av og hva hovedløkkene gjør. 5b Kruskal og Prim (vekt 5%) Gitt følgende graf: (Fortsettes på side 5.)

Eksamen i INF2220, 13. desember 2011 Side 5 6 H 4 2 5 G 4 3 2 1 11 E F 3 3 6 10 11 2 D 1 8 J 4 7 I 1. Finn et minimum spenntre for grafen ved hjelp av Kruskals og Prims algoritmer. Vis tydelig resultatet etter hvert trinn av algoritmene ved å liste kantene i den rekkefølgen de er valgt. 2. Er dette treet unikt? 3. Når kan vi garantere at treet er unikt? 5c Spenntre (vekt 3%) Gitt en sammenhengende urettet graf G med unike vekter på kantene og la S være et minimalt spenntre av G. Er det slik at kanten med den nest minste vekten e G må være en kant i S? Forklar. Oppgave 6 Rebusløp (vekt 15%) Universitetet i Uqbar skal arrangere rebusløp for de nye studentene sine. Tilsammen er det N lag som alle skal innom de samme M postene, hvor N M. Universitetet ønsker et oppsett hvor alle lagene starter samtidig, og at det er max ett lag om gangen på hver post. For enkelhets skyld antar vi at alle lagene bruker like lang tid på hver post (og mellom postene). To lag skal heller ikke ha samme rekkefølge på to av postene (dersom lag 1 skal gå direkte fra post 1 til post 2, skal ingen andre lag kunne gjøre det samme på noe punkt i rebusløpet). Gitt klassen RebusLop under, hvor konstruktøren setter N og M til å være henholdsvis antall lag og antall poster. I tillegg initialiseres arrayen oppsett. Du skal nå implementere metoden lagoppsett som fyller oppsett-arrayen med et komplett oppsett for rebusløpet i henhold til reglene over - dersom et slikt eksisterer. For N = M = 4 kan arrayen for eksempel bli seende slik ut: (Fortsettes på side 6.) (Lag 0) 0 1 2 3 (Lag 1) 1 3 0 2 (Lag 2) 2 0 3 1 (Lag 3) 3 2 1 0

Eksamen i INF2220, 13. desember 2011 Side 6 Radene i arrayen representerer altså i hvilken rekkefølge de enkelte lagene kommer til de ulike postene. estem selv eventuelle parametre til metoden lagoppsett. Når et mulig oppsett er ferdig, skal metoden kalle skrivut. Innmaten i denne skal du imidlertid ikke implementere. Utvid gjerne klassen RebusLop med flere variable hvis du finner det hensiktsmessig, og angi eventuelt hvordan disse skal initialiseres i konstruktøren. Det er også tillatt å lage flere hjelpemetoder hvis du ønsker det. class RebusLop { int N, M; int [ ] [ ] oppsett ; // Eventuelle andre variable RebusLop ( int antalllag, int antallposter ) { N = antalllag ; M = antallposter ; oppsett = new int [N] [M] ; // Eventuell i n i t i a l i s e r i n g av andre variable void lagoppsett (... ) { // TODO void skrivut ( ) { // Innhold ikke t a t t med, skriver ut det ferdige oppsettet. Oppgave 7 Tekstalgoritmer (vekt 12%) 7a oyer Moore (vekt 4%) eregn good suffix shift til nålen:a b c a b c a c a b 7b oyer Moore (vekt 4%) En mismatch er funnet under leting etter nålen a b c a b c a c a b som angitt nedenfor: Høystakk: a a c a b c a a b c a b c a b c a c a b Nål: a b c a b c a c a b Hvor i høystakken vil oyer Moore-algoritmen lete etter neste match? (dvs. hvor langt vil oyer More skifte nålen etter denne mismatch?) 7c Huffmankoding (vekt 4%) Lag en Huffmankode for strengennonconcurrence. Vis dekodingstabellen. (Fortsettes på side 7.)

Eksamen i INF2220, 13. desember 2011 Side 7 Oppgave 8 Det Nederlandske Flagget (vekt 15%) Spillet Det nederlandske flagget består av et antall røde, hvite og blå brikker på rekke. Målet med spillet er å bytte om på brikkene slik at alle de røde brikkene ligger til venstre, alle de blå brikkene til høyre, og alle de hvite brikkene i midten. De eneste lovlige operasjonene er å undersøke en brikkes farge og å bytte om på to brikker. nta at utgangsstillingen er representert i en char-array hvor de eneste mulige array-verdiene er R, H og (det er altså ingen ledige plasser i arrayen). Lag en metode som sorterer arrayen i henhold til kriteriene over med så få ombyttinger som mulig. Hint: Tenk på arrayen som bestående av fire (dynamisk store) deler ferdigsorterte røde, ferdigsorterte hvite, usorterte, og ferdigsorterte blå. Initielt vil da alle brikkene tilhøre den usorterte delen, og de tre andre delene være tomme.