Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

Like dokumenter
ALGORITMER OG DATASTRUKTURER

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

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

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

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

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

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

ALGORITMER OG DATASTRUKTURER

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Oppgave 1. Sekvenser (20%)

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

deeegimnoorrrsstt Sjette forelesning

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

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

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

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

ALGORITMER OG DATASTRUKTURER

EKSAMEN. Emne: Algoritmer og datastrukturer

EKSAMEN. Emne: Algoritmer og datastrukturer

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

Eksamenshefte TDT4120 Algoritmer og datastrukturer

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

EKSAMEN med løsningsforslag

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

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

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

Kjøretidsanalyse. Hogne Jørgensen

UNIVERSITETET I OSLO

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

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

UNIVERSITETET I OSLO

EKSAMEN. Algoritmer og datastrukturer

Innhold. Innledning 1

Algoritmer og Datastrukturer IAI 21899

Eksamensoppgave i TDT4120 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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Algoritmer og Datastrukturer

LO118D Forelesning 2 (DM)

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

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

SIF8010 ALGORITMER OG DATASTRUKTURER

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

UNIVERSITETET I OSLO

Løsningsforslag for utvalgte oppgaver fra kapittel 3

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

INF 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 i MA0301 Elementær diskret matematikk løsningsforslag

All good things. Fjortende forelesning

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

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

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

Løsningsforslag EKSAMEN

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

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

UNIVERSITETET I OSLO

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

deeegimnoorrrsstt Sjette forelesning

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

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Minimum Spenntrær - Kruskal & Prim

København 20 Stockholm

Norsk informatikkolympiade runde

UNIVERSITETET I OSLO

Transkript:

IT1105/TDT4120 2007 06 12 1/6 Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer Eksamensdato Torsdag 6. desember Eksamenstid 1500 1900 Sensurdato Torsdag 10. januar Språk/målform Bokmål Kontakt under eksamen Magnus Lie Hetland (tlf. 91851949) Tillatte hjelpemidler Alle trykte/håndskrevne; bestemt, enkel kalkulator Vennligst les hele oppgavesettet før du begynner, disponer tiden og forbered evt. spørsmål til faglærer kommer til eksamenslokalet. Gjør antagelser der det er nødvendig. Skriv kort og konsist. Lange forklaringer og utledninger som ikke direkte besvarer oppgaven tillegges liten eller ingen vekt. Skriv fortrinnsvis på anvist plass (dvs. uten å legge ved ark). Svarskjema for oppgave 1 (Se oppgavetekst side 2. Galt = 0 poeng, ubesvart = 1 poeng, riktig = 4 poeng.) Ja Nei Kort begrunnelse a Da må vi sjekk alle potensielle naboer. b V.h.a. randomisering unngår vi at konsekvent worst-case for bestemte inputs. c Bruk Select. d Usammenhengende grafer har ikke spenntrær. e Ja eller nei, avh. av begr. For heltall kan uheldige stivalg gi eksponensiell kjøretid. For reelle vekter kan det hende den ikke terminerer. f Kan reduseres til f.eks. SUBSET-SUM i polynomisk tid. g Problemstørrelsen er O(lg n) så den har lineær kjøretid. h Heaps bygges i O(n) tid, trær i Ω(n lg n) tid. (Enkelte har fått godkjent andre avkrysninger basert på andre begrunnelser.)

IT1105/TDT4120 2007 06 12 2/6 Svarskjema for oppgave 2 (Se oppgavetekst side 3. Galt = 0 poeng, ubesvart = ¼ poeng, riktig = 1 poeng.) Rekursive kall Størrelse, delproblem Arbeid i hvert kall Rekurrens Ett Redusert med 1 Konstant T(n) = T(n 1) + Θ(1) Θ(n) Kjøretid Ett Halvert Konstant T(n) = T(n/2) + Θ(1) Θ(lg n) Ett Redusert med 1 Lineært T(n) = T(n 1) + Θ(n) Θ(n 2 ) Ett Halvert Lineært T(n) = T(n/2) + Θ(n) Θ(n) To Redusert med 1 Konstant T(n) = 2T(n 1) + Θ(1) Θ(2 n ) To Halvert Konstant T(n) = 2T(n/2) + Θ(1) Θ(n) To Redusert med 1 Lineært T(n) = 2T(n 1) + Θ(n) Θ(2 n ) To Halvert Lineært T(n) = 2T(n/2) + Θ(n) Θ(n lg n) Oppgave 3 til 4 besvares i ruter i oppgaveteksten. Oppgave 1 (32%) For hvert av delspørsmålene nedenfor, kryss av for «Ja» eller «Nei», og gi en kort, stikkordspreget begrunnelse for svaret ditt. Bruk svarskjema på side 1. Merk: Besvarelser for denne oppgaven honoreres som følger: Galt svar eller gal begrunnelse for en deloppgave gir 0 poeng, ubesvarte deloppgaver gir 1 poeng og riktig besvarte deloppgaver (med riktige begrunnelser), 4 poeng. En vurdering av egne kunnkaper blir altså premiert hvis du er mindre enn 25% sikker på svaret ditt (inkl. begrunnelse) lønner det seg å la deloppgaven stå ubesvart. a. Det er lettere å finne kantgraden til en node hvis vi bruker nabomatriserepresentasjon enn hvis vi bruker nabolister. b. Hvordan vi implementerer Quicksort har mye å si for hvor sårbar den er for ugunstige datasett. c. Anta at du sorterer n tall for så å hente ut 10 med indekser spredd så jevnt som mulig fra 1 til n. Kunne du ha funnet de samme elementene uten å sortere, i lineær tid? d. På grunn av UNION/FIND-SET-mekanismen kan Kruskals algoritme finne minimale spennetrær også for usammenhengende grafer. e. Den grunnleggende metoden i pensum for å finne maksimal flyt har i verste tilfelle eksponensiell kjøretid f. Enkelte NP-komplette problemer dreier seg om å finne en optimal permutasjon av n elementer. Det er mulig at noen av disse problemene har en worst-case-kjøretid på Ω(n!)

IT1105/TDT4120 2007 06 12 3/6 g. En algoritme tar inn heltallet n som eneste input og bruker binærsøk for å finne en heltallsverdi i intervallet [1, n] som er optimal (i en eller annen forstand). Anta at hver operasjon i binærsøket tar konstant tid, og at binærsøket dominerer den totale kjøretiden. Algoritmen har lineær kjøretid. h. Å bygge en heap har samme forventede, asymptotiske kjøretid som å bygge et søketre. Oppgave 2 (8%) I svarskjemaet på side 2 ser du en oversikt over kjøretiden til et sett med rekursive algoritmer. Fyll ut det som mangler. Anta T(0) = T(1) = Θ(1). Merk: Besvarelser for denne oppgaven honoreres som følger, for hver rad som helhet: Galt svar gir 0 poeng, manglende svar gir ¼ poeng og riktige svar (på begge spørsmål), 1 poeng. En vurdering av egne kunnkaper blir altså premiert hvis du er mindre enn 25% sikker på svaret ditt for en rad lønner det seg å la deloppgaven stå ubesvart. De fleste bør kunne fylles ut «etter husk» (standard-eksempler) eller ved direkte anvendelse av Mastermetoden. De to eksponensielle er litt mer uvanlige. T(n) = 2T(n 1) + Θ(1) løses f.eks. med iterasjonsmetoden: T(n) = 2T(n 1) + Θ(1) = 2(2T(n 2) + Θ(1)) + Θ(1) = 2(2(2T(n 3) + Θ(1)) + Θ(1)) + Θ(1) = 8T(n 8) + Θ(1 + 2 + 4) = 2 i T(n i) + Θ(1 + 2 + + 2 i 1 ) [Sett så i=n] = 2 i Θ(1) + Θ(2 n 1 ) = Θ(2 n ) Den enda mer uvanlige T(n) = 2T(n 1) + Θ(n) kan også løses på samme vis. Evt. kan man se at forskjellen bare er at alle nodene i rekurrenstreet (og dermed også svaret) er multipliserte med Θ(n). (Man kan evt. verifisere svaret ved induksjon.) Oppgave 3 (27%) Anta at du skal implementere en datastruktur som lar deg holde rede på to ting: (1) Rekkefølgen elementer legges til og plukkes ut i, og (2) hvorvidt et element finnes i strukturen. Du ønsker altså en struktur som både kan fungere som en FIFO-kø og en mengde. a. Hvordan vil du implementere en slik struktur? Legg vekt på asymptotisk kjøretid. Hva blir kjøretiden for de ulike operasjonene? (Bruk Θ-notasjon og begrunn svaret). Svar (12%): Her kan man rett og slett kombinere en lenket liste for FIFO-køen og en hashtabell for medlemsskap, med pekere inn i køen. Alle operasjoner tar konstant tid.

IT1105/TDT4120 2007 06 12 4/6 Anta at du har et kart av en øygruppe i form av et rutenett der hver rute enten er hav/sjø eller land. (Anta at alle kantrutene er hav.) Du ønsker å skrive en algoritme med lineær kjøretid som teller hvor mange øyer som finnes på kartet. Merk: Hvert selvstendige, sammenhengende segment med land telles som én øy. Mao. skal innlandsøyer også telles. b. Beskriv kort en slik algoritme. Svar (8%): Besøk alle rutene. Når du finner en ny øy, traverser hele øya (f.eks. m/dfs) og fargelegg den med en ny farge. Antall øyer = antall farger. Du har laget en rekursiv algoritme som finner både maksimum og minimum i en tabell. Den gjør dette ved å rekursivt finne maksimum og minimum i hver halvdel, og så velge maksimum og minimum fra de to delsvarene. Anta at størrelsen på tabellen er n = 2 k, for et heltall k. c. Hvor mange sammenligninger vil algoritmen din bruke? Begrunn svaret. Hint: Svaret blir ikke n 1 eller 2n 2. Hvert par på bunn-nivå (2 k 1 stk) krever én sammenligning. Hver av de 2 k 1 1 kombinasjonene av disse krever to sammenligninger. Totalt: 2 k 1 + 2(2 k 1 1) = 2 k 1 + 2 k 2 = 3n/2 2. Oppgave 4 (7%) Betrakt følgende algoritme. DOLOREM(ipsum, quia, dolor) amet ipsum[dolor] consectetur quia 1 for adipisci quia to dolor 1 if ipsum[adipisci] amet: consectetur consectetur + 1 ipsum[adipisci] ipsum[consectetur] ipsum[consectetur+1] ipsum[dolor] return consectetur+1 NUNQUAM(ipsum, quia, dolor, velit) sit DOLOREM(ipsum, quia, dolor) if sit < velit: NUNQUAM(ipsum, sit+1, dolor, velit) else if sit > velit: NUNQUAM(ipsum, quia, sit 1, velit) Merk: Rettinger er gjort i koden over. a. Hva gjør algoritmen NUNQUAM? (Det vil si, hva beregner den hva er hensikten med den? En oppsummering av hvilke trinn den utfører vil gi liten eller ingen uttelling.) Anta at ipsum er en 1-indeksert sekvens. Gjør andre naturlige antagelser om hvilke argumenter NUNQUAM kalles med.

IT1105/TDT4120 2007 06 12 5/6 Antar at velit, quia og dolor er heltall. Antar at NUNQUAM kalles med quia=1 og dolor=length(ipsum). Den finner da de velit minste elementene i ipsum (disse blir stående i starten av sekvensen). (DOLOREM er PARTITION, og NUN- QUAM er en forenklet versjon av RANDOMIZED-SELECT.) Merk: Feil i pseudokoden ble rettet opp/opplyst under eksamen. Pga. dette vil denne oppgaven tas ut av sensur der dette er til fordel for studenten. Oppgave 5 (26%) Anta at du har et lokalt datanettverk der alle maskinene er koblet sammen, direkte eller indirekte. Kablene du har brukt har ulik pris (i hele kroner) og kvalitet (et reelt tall større eller lik 0 og mindre enn 10). Det er ikke nødvendigvis noen direkte sammenheng mellom pris og kvalitet. Du skal velge ut et sett kabler som skal selges, og stiller følgende krav til løsningen: Alle maskiner må fremdeles være sammenkoblede, direkte eller indirekte etter at de valgte kablene er fjernet. Alle gjenværende koblinger må holde en viss minimumskvalitet, k. Gitt disse to kravene skal du finne et sett kabler som gir deg en høyest mulig salgssum. a. Beskriv kort en effektiv algoritme som løser problemet generelt. Svar (12%): Fjern alle kanter som er for dårlige og finn det billigste spenntret. Det er kablene som skal være igjen. Merk: Hvis det finnes broer i grafen med kvalitet mindre enn k vil ikke dette være mulig. Det trekkes ikke om studenten ser bort fra dette. Etter å ha tenkt deg om kommer du med et tilleggskrav: Hvis det er flere optimale kabelsett skal du velge slik at de gjenværende kablene har en høyest mulig total kvalitet Du skal altså fremdeles finne et sett som gir høyest mulig utsalgspris, som ikke bryter opp nettet, og som lar hver gjenværende kabel ha en kvalitet på minst k. Å la det gjenværende nettet ha høyest mulig totalkvalitet kommer som et tilleggskrav. b. Beskriv kort en effektiv algoritme som løser problemet generelt. Som før i a, men definer kostnad som 10 pris kvalitet. Evt. kan man endre algoritmen så den velger dem med høyest kvalitet blant kabler med lik pris. Du har bestemt deg for å bruke operativsystem fra en bestemt kommersiell leverandør. Du har kjøpt én lisens (som gjelder for én maskin) for hver utgave av

IT1105/TDT4120 2007 06 12 6/6 deres nyeste operativsystem. Målet er å få hver av datamaskinene dine til å kjøre ett av et sett med ulike serverprogrammer du har skrevet. Problemet er at (1) ikke alle operativsystem-versjonene kan kjøre på alle maskinene og (2) ikke alle serverprogrammene dine kan kjøre på alle operativsystem-versjonene. c. Beskriv kort en effektiv algoritme som avgjør om det er mulig å få kjørt alle server-programmene (anta at det ikke er mulig å kjøre to serverprogrammer på samme maskin). Bruk f.eks. en maks-flyt-løsning tilsvarende som for bipartitt matching bare at dette blir tripartitt, så hver midt-node må «splittes» og få en kapasitet på 1 (dvs. representeres med to noder med en kant imellom, som har kapasitet 1).