Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Relaterede dokumenter
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Danmarks Tekniske Universitet

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n n (log n) 2. n 2 + log n 3 n. n n (log n)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Skriftlig Eksamen Diskret Matematik (DM528)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Grafer og graf-gennemløb

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Prioritetskøer og hobe. Philip Bille

Reeksamen i Diskret Matematik

Grafer og graf-gennemløb

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Sammenhængskomponenter i grafer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Introduktion til DM507

Grafer og graf-gennemløb

Danmarks Tekniske Universitet

Grafer og graf-gennemløb

DM02 Kogt ned. Kokken. Januar 2006

DM507 Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Rolf Fagerberg. Forår 2013

DM507 Algoritmer og datastrukturer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

DM507 Algoritmer og datastrukturer

Grafer og graf-gennemløb

Eksamensopgaver i DM17, Januar 2003

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Rolf Fagerberg. Forår 2012

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Beregnelighed (DM517)

DM507 - Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Sortering. Eksempel: De n tal i sorteret orden

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Transkript:

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se vejledning udsendt i kurset. Alle skriftlige hjælpemidler (lærebøger, notater, osv.) samt brug af computer er tilladt. Det er ikke tilladt at bruge internettet, undtagen til den elektroniske aflevering. Eksamenssættet består af 10 opgaver på 8 nummererede sider (1 8). Fuld besvarelse er besvarelse af alle 10 opgaver. De enkelte opgavers vægt ved bedømmelsen er angivet i procent. Der må gerne refereres til algoritmer og resultater fra lærebogen (Cormen et al., Introduction to Algorithms, tredie udgave), samt andre materialer fra kurset (f.eks. opgavesedler og slides). Henvisninger til andre kilder kan ikke bruges i besvarelsen af et spørgsmål. Bemærk, at hvis der er et spørgsmål, man ikke kan besvare, må man gerne besvare de efterfølgende spørgsmål og blot antage, at man har en løsning til de foregående spørgsmål.

Opgave 1 (10%) Denne opgaver handler om følgende rekursionsligninger: Spørgsmål a (5%): i) T (n) = 2 T (n/2) + 1 ii) iii) T (n) = 3 T (n/3) + n T (n) = 4 T (n/4) + n log n iv) T (n) = 5 T (n/5) + n 2 Angiv for hver rekursionsligning om den kan løses med Master Theorem fra lærebogen, og i givet fald hvilken case det er. Spørgsmål b (5%): Angiv løsningen T (n) for hver rekursionsligning som kan løses med Master Theorem. Opgave 2 (10%) Angiv for hvert af nedenstående udsagn, om de er sande eller falske. i) 1 er O(2) ii) 1 er Ω(2) iii) n er O(n 2 ) iv) n er Ω(n 2 ) v) 3x + 2x 2 + x 3 er Θ(x + 2x 2 + 3x 3 ) vi) log n er o(n/ log n) vii) n 1/2 er o(n/2 n ) viii) log n er ω(log n) ix) 2 n log n er ω(2 n ) x) n 2 / log n er O(n(log n) 2 ) 1

Opgave 3 (7%) Udfør Build-Max-Heap(A) på nedenstående array A. Angiv arrayets udseende bagefter ved at skrive elementerne i rækkefølge fra venstre mod højre. A: 1 2 3 4 5 6 7 8 9 2 1 5 4 8 6 7 9 3 Opgave 4 (6%) Nedenstående er en hashtabel H som bruger hashfunktionen h (x) = (7x + 4) mod 11 samt linear probing (i lærebogen kaldes h (x) for auxiliary hash function i denne sammenhæng). H: 0 1 2 3 4 5 6 7 8 9 10 67 20 17 33 16 2 15 Indsæt værdierne 18 og 26 (i den rækkefølge) Angiv udseendet af hashtabellen efter hver af de to indsættelser. Svar ved at skrive indholdet af H i rækkefølge fra venstre mod højre, med tomme pladser angivet som x. Opgave 5 (7%) En fil indeholder nedenstående tegn med de angivne hyppigheder. Der er 3300 tegn i alt. Tegn x y z æ ø å Hyppighed 1000 200 600 800 300 400 Lav et Huffman-træ på dette input. Angiv det resulterende kodeord for hvert af tegnene x, y, z, æ, ø og å, og angiv også hvor mange bits den kodede fil fylder (dvs. angiv den samlede længde i bits af de 3300 kodede tegn). 2

Opgave 6 (26%) Spørgsmål a (7%): Udfør BFS på grafen G 1 nedenfor, med start i knuden a. Du skal antage at en knudes naboliste er sorteret i alfabetisk orden efter naboknudernes navne. Som svar, angiv knuderne i den rækkefølge de udtages fra køen (med operationen Dequeue) under algoritmens kørsel. Angiv også for hver knude v slutværdien af v.d, dvs. afstanden fra a til v. j h i e f g a b c d G 1 Spørgsmål b (7%): Udfør DFS på grafen G 1 ovenfor, med start i knuden a. Du skal antage at en knudes naboliste er sorteret i alfabetisk orden efter naboknudernes navne. Som svar, angiv for alle knuder v starttiden (discovery time) v.d og sluttiden (finishing time) v.f. 3

Spørgsmål c (7%): Udfør Dijkstras algoritme på grafen G 2 nedenfor, med start i knuden a. Som svar, angiv knuderne i den rækkefølge de udtages fra prioritetskøen (med operationen Extract-Min) under algoritmens kørsel. Angiv også for hver knude v slutværdien af v.d, dvs. afstanden fra a til v. j 1 12 h 17 i 14 15 3 4 21 19 e f g 13 8 11 7 5 16 a b c d 6 9 2 G 2 Spørgsmål d (5%): Udfør Kruskals algoritme på grafen G 3 nedenfor. Som svar, angiv kanterne i det resulterende minimum spanning tree (MST). En kant med endepunkter u og v skrives som sædvanligt (u, v). j 1 12 h 17 i 14 15 3 4 21 19 e f g 13 8 11 7 5 16 a b c d 6 9 2 G 3 4

Opgave 7 (9%) Binære træer er forskellige hvis de har forskellig facon. Figuren herunder viser to forskellige binære træer med fem knuder. Spørgsmål a (3%): Hvor mange forskellige binære træer med tre (3) knuder findes der? Svar ved at angive antallet. I resten af opgaven ser vi på binære træer med nøgler i knuderne. To træer er forskellige hvis de har forskellig facon, eller hvis de har samme facon men forskellig nøgle i mindst én knude. Figuren herunder viser tre forskellige binære træer med fem knuder og nøglerne 1, 2, 3, 4, 5. 3 3 4 2 4 5 4 1 1 5 1 2 2 3 5 Spørgsmål b (2%): Hvor mange forskellige binære træer med tre knuder og nøglerne 1, 2, 3 findes der som overholder max-heaporder? Svar ved at angive antallet. 5

Spørgsmål c (2%): Hvor mange forskellige binære træer med tre knuder og nøglerne 1, 2, 3 findes der som overholder inorder? Svar ved at angive antallet. Spørgsmål d (2%): Hvor mange forskellige binære træer med tre knuder og nøglerne 1, 2, 3 findes der som overholder både inorder og max-heaporder? Svar ved at angive antallet. Opgave 8 (5%) Følgende kode har til formål at beregne 7 n for heltal n 0. GangeSyv(n) x = n r = 0 while x > 0 x = x 1 r = r + 7 return r Angiv for hvert af nedenstående udsagn om det er en løkke-invariant for algoritmen (dvs. altid er sandt når testen i starten af while-løkken udføres) for alle input der er heltal n 0. (Du behøver ikke argumentere for svarene.) i) r = 7n ii) r < 7n iii) n x = 7r iv) 7x + r = 7n v) x 0 6

Opgave 9 (8%) Angiv for hver af følgende algoritmer deres asymptotiske køretid i Θ-notation som funktion af n. Input n er for alle algoritmerne et positivt heltal. Algoritme1(n) for i = 1 to n j = i while j > 0 j = j 1 Algoritme2(n) i = 1 while i < n i = i 2 Algoritme3(n) i = 1 while i < n i = i n Algoritme4(n) i = 1 while i < n s = 0 while s < n s = s + i i = i 2 Opgave 10 (12%) Denne opgave handler om hvordan heltal kan skrives som summer af kvadrater. Nogle eksempler på dette er: 7 = 2 2 + 1 2 + 1 2 + 1 2 25 = 5 2 25 = 4 2 + 3 2 33 = 4 2 + 4 2 + 1 2 33 = 4 2 + 3 2 + 2 2 + 2 2 For et ikke-negativt heltal n lader vi K(n) være det mindste antal heltal hvis sum af kvadrater giver n. Dvs. for k = K(n) findes der k heltal a 1,..., a k således at n = a 2 1 + + a 2 k, mens dette ikke gælder for k < K(n). Som eksempel er K(25) = 1 og K(33) = 3. 7

K(n) kan bestemmes ved følgende rekursive formel: { 0 hvis n = 0 K(n) = 1 + min{k(n a 2 ) a er et positivt heltal hvor a 2 n} hvis n 1 Spørgsmål a (3%): Angiv K(19), samt en måde at skrive 19 som summen af dette antal kvadrater. Spørgsmål b (3%): Beskriv en algoritme baseret på dynamisk programmering, der givet n beregner K(n). Angiv algoritmens asymptotiske køretid og pladsforbrug som funktion af n. Spørgsmål c (3%): Beskriv en udvidelse af algoritmen som også finder k heltal a 1,..., a k som opfylder n = a 2 1 + + a 2 k, med k = K(n). Spørgsmål d (3%): Argumenter for at den rekursive formel for K(n) er korrekt. 8