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

Like dokumenter
Eksamenshefte TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

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

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Avsluttende eksamen 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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Øvingsforelesning 12 Maks flyt

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave 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

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Maks Flyt og NPkompletthet

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

Algdat - Øvingsforelesning. Maks flyt

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.

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Øvingsforelesning 9. Flytnettverk, maksimum flyt og maksimum bipartitt matching. Jon Marius Venstad

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

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

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

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

Algdat Eksamensforelesning. Nils Barlaug

EKSAMEN med løsningsforslag

Løsningsforslag: Deloppgave om heuristiske søkemetoder ALGKON 2002, ordinær eksamen

Avanserte flytalgoritmer

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

Norsk informatikkolympiade runde

Løsningsforslag for utvalgte oppgaver fra kapittel 9

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1. Sekvenser (20%)

SIF8010 ALGORITMER OG DATASTRUKTURER

Norsk informatikkolympiade runde

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Kjøretidsanalyse. Hogne Jørgensen

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

FASIT/LF FOR EKSAMEN TMA4140, H07

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

Løsningsforslag for utvalgte oppgaver fra kapittel 3

Algoritmer og Datastrukturer

TMA4140 Diskret Matematikk Høst 2016

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

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

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

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

Algoritmer og Datastrukturer

Grunnleggende Grafteori

Norsk informatikkolympiade runde

Vann i rør Ford Fulkerson method

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer

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

Algdat - øvingsforelesning

Om Kurset og Analyse av Algoritmer

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

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

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

INF2220: Time 12 - Sortering

Dijkstras algoritme Spørsmål

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2015

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

IN2010: Forelesning 11. Kombinatorisk søking Beregnbarhet og kompleksitet

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Uretta grafar (1) Mengde nodar Mengde kantar som er eit uordna par av nodar

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

EKSAMEN. Emne: Algoritmer og datastrukturer

Transkript:

TDT4120 2003-12-09 Stud.-nr: Antall sider: 1/7 Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl. 0900 1500 Faglig kontakt under eksamen: Arne Halaas, tlf. 41661982; Magnus Lie Hetland, tlf. 91851949. Hjelpemidler: Alle kalkulatortyper tillatt. Alle trykte og håndskrevne hjelpemidler tillatt. Oppgave 1 (5%) a. Anta at vi sammenligner implementasjoner av to algoritmer A 1 og A 2 på samme maskin. For input-størrelse n bruker A 1 9n 2 steg mens A 2 bruker 81n log 2 n steg. Hvert steg i A 2 krever dobbelt så mye tid som hvert steg i A 1. For hvilke verdier av n bruker A 1 kortere tid enn A 2? 1 < n < 126. (Oppgaveteksten gir oss ulikheten 18 2 n < n. Vi antar at n er et heltall.) Oppgave 2 (15%) Anta at du har tre tabeller, A, B og C, med positive reelle tall. Hver av tabellene har lengde n. a. Du vil finne et segment A[i... j] slik at A[i] A[i + 1]... A[ j] blir størst mulig. Hvordan vil du gå fram? Referer gjerne til algoritmer i pensum. Hva blir kjøretiden? Lager en tabell A der A [k] = log A[k] (for 1 k n) og bruker algoritmen fra øving 5, aksjespekulanten. Kjøretiden blir Θ(n). (Man kan eventuelt modifisere algoritmen så den finner maksimalt produkt heller enn maksimal sum.) b. Du ønsker å finne ut om det finnes tre tall a, b og c, slik at A inneholder a, B inneholder b og C inneholder c og slik at a + b + c = x for en gitt x. Beskriv kort (enten

TDT4120 2003-12-09 Stud.-nr: Antall sider: 2/7 med pseudokode eller dine egne ord) en algoritme som løser problemet i Θ(n 2 log n) tid, worst-case. Sorter C. For alle par a, b finn x (a + b) i C med binærsøk. c. Du ønsker å løse samme problem som i oppgave b, men kan nå anta at A, B og C er heltallstabeller, og at heltallene faller i et tallområde fra 1 til M. Beskriv kort (enten med pseudokode eller dine egne ord) en algoritme som løser problemet i Θ(n 2 ) tid, worst-case. Gi også (i stikkordsform) eventuelle antagelser om M og maskinvaren du bruker for at kjøretiden skal gjelde. Alternativ 1: Lag en Boolsk tabell T der T[c] c C. For hvert par a, b, slå opp x (a + b) i T. Antar at T får plass i minnet. Alternativ 2: Sorter B og C. For hvert tall a, start et søk etter x a fra 1 i B og fra n i C. Hvis summen av b og c er for stor, flytt nedover i C; ellers, flytt oppover i B. Denne er litt vanskeligere, men gjør ingen antagelser om M, og krever ikke at tallene er heltall. Begge alternativer gir full uttelling. Oppgave 3 (30%) Du har oppdaget følgende pseudokode i en gammel lærebok i algoritmer. Du er usikker på hvilket språk læreboken er skrevet på, og har litt problemer med å skjønne enkelte av ordene i pseudokoden: BRILLIG(A[1... N]): if N = 1: return A[1], A[1] slithy N/2 gyre, gimble BRILLIG(A[1... slithy]) wabe, mimsy BRILLIG(A[slithy + 1... N]) if gyre < wabe: borogroves gyre else borogroves wabe if gimble < mimsy: mome mimsy else mome gimble return borogroves, mome

TDT4120 2003-12-09 Stud.-nr: Antall sider: 3/7 a. Hva gjør algoritmen BRILLIG? Den finner minimum og maksimum i A. b. Anta at N = 256. Hvor mange sammenligninger av typen gyre < wabe og gimble < mimsy utføres totalt? (Vi er kun ute etter ett tall.) 510 c. Sett opp en eksakt rekurrens som uttrykker antall sammenligninger som en funksjon C(N). Anta at N = 2 M for et heltall M. C(1) = 0, C(N) = 2 C( N 2 ) + 2 for N > 1. d. Løs rekurrensen i oppgave c. Uttrykk svaret eksakt, uten bruk av asymptotisk notasjon. C(N) = log 2 N i=1 2 i = 2N 2 Du bestemmer deg for å optimalisere algoritmen. Du endrer utsagnet if N = 1: return A[1], A[1] til det følgende: if N = 2: if A[1] < A[2]: return A[1], A[2] return A[2], A[1] e. Sett opp en eksakt rekurrens som uttrykker antall sammenligninger som en funksjon C(N). Anta at N = 2 M for et heltall M. Rekurrensen skal også telle sammenligninger av typen A[1] < A[2]. C(2) = 1, C(N) = 2C( N 2 ) + 2 for N > 2 (Antar at M 1.) f. Løs rekurrensen i oppgave e. Uttrykk svaret eksakt, uten bruk av asymptotisk notasjon.

TDT4120 2003-12-09 Stud.-nr: Antall sider: 4/7 C(N) = N 2 + log 2 N 1 i=1 2 i = 3 2 N 2 Oppgave 4 (30%) a. Anta at du har en urettet graf. Du vet at hver node har maksimalt 3 naboer. Argumenter svært kort for at det er mulig å finne en to-farging av grafen som er slik at hver node maksimalt har 1 konflikt (nabo med samme farge). Hint: Bruk det totale antall konflikter i argumentasjonen. Start med vilkårlig tofarging. Hvis en node har mer enn 1 konflikt, skift farge. Dette reduserer det totale antallet konflikter (med 1 eller 3). Gjenta til antall konflikter ikke kan reduseres. Anta at du har oppgitt et flytnettverk definert ved følgende kapasitetsmatrise: 0 7 6 5 0 0 0 0 0 0 1 2 0 0 0 0 0 3 0 9 0 C = 0 0 0 0 5 0 3 0 0 0 0 0 0 6 0 0 0 0 0 0 8 0 0 0 0 0 0 0 Her kan vi for eksempel se at kapasiteten mellom node 4 og node 5 er C[4, 5] = 5. Anta at node 1 er kilden og at node 7 er sluket. b. Hvor mange mulige snitt finnes det mellom kilde og sluk? 2 (7 2) = 32 En alternativ tolkning (som ikke er i tråd med bokens definisjon, og derfor ikke gir full score) er at vi her kun er ute etter snitt som kan oppstå under kjøring av FORD-FULKERSON, det vil si alle snitt der nodene i S (den venstre halvdelen) kan nås fra s via andre noder i S. Det er 21 slike snitt. c. Hvordan kan man bruke FORD-FULKERSON til å finne et minimalt snitt? Skriv kort. Nodene som besøkes i siste iterasjon havner til venstre for snittet. d. Finn et minimalt snitt i flytnettverket. Beskriv snittet ved å oppgi alle nodene som befinner seg på samme side som kilden.

TDT4120 2003-12-09 Stud.-nr: Antall sider: 5/7 1 og 2 (Evt. kan man oppgi bare 2) e. Et sett med stier i en graf G = (V, E) er kant-disjunkte hvis ingen kant i E inngår i mer enn en av stiene i settet. Beskriv en algoritme som finner (det maksimale) antall kant-disjunkte stier mellom to gitte noder s og t i en urettet graf. Gi alle kanter kapasitet 1 og finn maksimal flyt fra s til t. f. Du ønsker å øke den maksimale flyten i et flyt-nettverk så mye som mulig, men du får bare lov til å endre kapasiteten på én kant. Hvordan finner du en slik kant? (Bruk pseudo-kode eller egne ord. Anta at du har algoritmer tilgjengelig for å finne maks-flyt og et minimalt snitt.) Hva blir kjøretiden (worst-case, i Θ-notasjon)? Vil det alltid være mulig å finne en slik kant? (Begrunn svaret.) Finn et minimalt snitt. For hver av kantene i snittet, sett kapasiteten på kanten til og finn deretter maksimal flyt. Velg kanten som gir størst økning. Ikke alltid mulig å øke maks-flyten: Det kan være flere (disjunkte) minimale snitt. Med EDMONDS-KARP blir kjøretiden Θ(VE 3 ). Oppgave 5 (5%) a. Følgende problem ble gitt på eksamen i fjor: Du har oppgitt et sett S bestående av N reelle tall, samt et reelt tall T og et heltall K N. Finnes det en delmenge Q av S med K elementer, der summen av elementene i Q er maksimalt lik T? Det finnes en algoritme som løser problemet i Θ(N) tid. Er det rimelig å tro at vi kan finne en like effektiv løsning på følgende problem? Begrunn svaret. Du har oppgitt et sett S bestående av N reelle tall, samt et reelt tall T og et heltall K N. Finnes det en delmenge Q av S med maksimalt K elementer, der summen av elementene i Q er lik T? En løsning på problemet kan (for K = N) brukes til å løse SUBSET-SUM-problemet. Dermed er problemet vårt NP-komplett, og det er ikke rimelig å tro at vi kan finne en Θ(N)-løsning.

TDT4120 2003-12-09 Stud.-nr: Antall sider: 6/7 Oppgave 6 (15%) SUM(N) top 1; S[top] N; S[0] 2; stacksum N WRITE( N = ) while top > 0 for i in 1... top 1 WRITE(S[i], + ) WRITELINE(S[top]) while S[top] = 1 top top 1 stacksum stacksum 1 if top > 0: S[top] S[top] 1 stacksum stacksum 1 while stacksum < N top top + 1 if N stacksum S[top 1] S[top] N stacksum stacksum N else S[top] S[top 1] stacksum stacksum + S[top] WRITE( = ) a. Hva skriver funksjonen SUM ut hvis N = 6? Anta at S er en tabell med så mye plass som er nødvendig. Anta at funksjonen WRITELINE skriver ut argumentene sine (uten mellomrom imellom) og starter en ny linje, mens WRITE skriver ut argumentene sine (uten mellomrom imellom) uten å starte en ny linje.

Powered by TCPDF (www.tcpdf.org) TDT4120 2003-12-09 Stud.-nr: Antall sider: 7/7 Svar (15%): N = 6 = 5 + 1 = 4 + 2 = 4 + 1 + 1 = 3 + 3 = 3 + 2 + 1 = 3 + 1 + 1 + 1 = 2 + 2 + 2 = 2 + 2 + 1 + 1 = 2 + 1 + 1 + 1 + 1 = 1 + 1 + 1 + 1 + 1 + 1 Merk: Hvis man tolker for-løkken slik at den i første iterasjonen setter i lik 1 og 0 blir første linje i koden slik: N = 6 + 2 + 6 Det trekkes ikke for dette.