OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

Relevanta dokument
TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00

FACIT TILL TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

FACIT TILL TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Lösningar Datastrukturer TDA

FACIT TILL OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

FACIT till ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning Datastrukturer (DAT036)

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer

Trädstrukturer och grafer

Föreläsning Datastrukturer (DAT036)

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

FÖRELÄSNING 11 DATALOGI I

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Datastrukturer. föreläsning 8. Maps 1

Tentamen Datastrukturer D DAT 036/DIT960

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Programmeringsteknik II

Tentamen Datastrukturer, DAT037 (DAT036)

Sätt att skriva ut binärträd

Datastrukturer. föreläsning 9. Maps 1

Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).

Föreläsning 8 Datastrukturer (DAT037)

Magnus Nielsen, IDA, Linköpings universitet

Tentamen, Algoritmer och datastrukturer

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Tentamen Datastrukturer (DAT036)

TDDC74 Programmering, abstraktion och modellering. Tentamen

Datastrukturer. föreläsning 6. Maps 1

Algoritmer och datastrukturer

Rekursiva algoritmer sortering sökning mönstermatchning

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Tentamen i Algoritmer & Datastrukturer i Java

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen i Algoritmer & Datastrukturer i Java

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Tentamen Datastrukturer, DAT037 (DAT036)

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Tentamen: Programutveckling ht 2015

Föreläsning 13. Träd

Föreläsning Datastrukturer (DAT037)

Föreläsning 10. Grafer, Dijkstra och Prim

Tentamen Datastrukturer D DAT 035/INN960

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Tentamen Datastrukturer (DAT037)

Föreläsning 5: Grafer Del 1

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Kurser inom våra tre ämnen

Datastrukturer och algoritmer

EDAA01 Programmeringsteknik - fördjupningskurs

Introduktionsmöte Innehåll

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Datastrukturer. föreläsning 9. Maps 1

Föreläsning 5: Dynamisk programmering

Föreläsning 13. Rekursion

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 6 Datastrukturer (DAT037)

TDDC70/TDDC91 Datastrukturer och algoritmer Övningsuppgifter hösten 2013

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Tentamen Datastrukturer (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

Fredag 10 juni 2016 kl 8 12

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Föreläsning 7 Datastrukturer (DAT037)

Graphs (chapter 14) 1

DAI2 (TIDAL) + I2 (TKIEK)

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037)

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer (DAT036)

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

TDDB56 DALGOPT Algoritmer och Optimering Tentamen , 8 13

Föreläsningsanteckningar F6

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Transkript:

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170331 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS *** Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd 40p, Godkänd 30p (varav minimum 20p från tentan, 10p från labbarna) Tenta: Max 40p, Med beröm godkänd 34p, Icke utan beröm godkänd 27p, Godkänd 20p Labbarna: Max 20p, Med beröm godkänd 18p, Icke utan beröm godkänd 14p, Godkänd 10p SKRIV TYDLIGT LÄS UPPGIFTERNA NOGGRANT Ange alla antaganden. (1) Ge ett kortfattat svar till följande uppgifter (a)-(j). (a) Vad är big-o för Dijkstras algoritm? (b) Vad är big-o för Floyds algoritm? (c) Vad är big-o för lägga-till-operationen i hashning? (d) Vad gör Warshalls algoritm? (e) Vad gör en postorder traversering av ett binärt träd? (f) Vad är en graf? (g) Vad representerar kanterna i en graf? (h) Vad är ett Free Tree? (i) Vad händer när man lägger till en kant till i ett Free Tree? (j) Vad är abstraktion? DFR Datastrukturer och algoritmer, DAV B03, Resit Exam 170331 Sidan 1 av 6

(2) Ge ett kortfattat svar till följande uppgifter (a)-(e). (a) Skriv rekursiv (pseudo)kod för hitta-operation (find) i ett binärt träd (OBS ej BST). (b) Förklara hur lägga till operationen (add) i en heap fungerar. Se koden nedan. OBS ge inte en översättning kod svenska! Förklara principen och/eller ge ett exempel. Add(H, v) let A = H.array A.size++ i = A.size while i > 1 and A[Parent(i)] < v do A[i] = A[Parent(i)] i = Parent(i) end while A[i] = v end Add (c) Skriv abstrakt rekursiv (pseudo)kod för hitta-operation (find) i en sekvens. Funktionen ska returnera en referens till elementet eller NULLREF om inte värdet finns. (d) Beskriv hur man förvandla ett generellt träd till ett binärt träd. (e) Ge definitionen av ett komplett träd (complete tree). 5p (3) AVL-träd (a) Ge en definition av ett AVL-träd (b) Beskriv med exempel de fyra rotationsoperationerna på ett AVL-träd. 2p (c) Beskriv hut man bestämmer vilken rotationsoperation som behövs för att ombalancera ett AVL-träd. 2p DFR Datastrukturer och algoritmer, DAV B03, Resit Exam 170331 Sidan 2 av 6

(4) Topologisk sortering Vid ett universitet har vissa kurser förkunskapskrav. I datavetenskap kräver kompilatorkonstruktion (DAV D02) programspråk (DAV C02) som förkunskap. Datastrukturer och algoritmer (DAV B03) är ett förkunskapskrav till programspråk, avancerad programmering i C++ (DAV C05), samt projektarbete i Java (DAV C08). Datastrukturer och algoritmer kräver diskret matematik (MAA B06) samt programutvecklingsmetodik (DAV A02). Operativsystem (DAV B01) kräver i sin tur programutvecklingsmetodik och datorsystemteknik (DAV A14) och är förkunskapskrav till C och UNIX (DAV C18), tillämpad datasäkerhet (DAV C17) samt realtidssystem (DAV C01). Objektorienterade designmetoder (DAV D11) kräver bägge avancerad programmering i C++ och software engineering (DAV C19). Hur kan man visa att kompilatorkonstruktion och objektorienterade designmetoder kräver diskret matematik? I vilken ordning ska en student som vill läsa på D-nivå ta alla de ovannämnda kurserna? Metoden som kan användas för att komma fram till en lösning heter topologisk sortering. En variant av topologisk sortering är följande algoritm: Topological Sort tsort(v) -- prints reverse topological order of a DAG from v { mark v visited for each w adjacent to v if w unvisited tsort(w) display(v) Tillämpa den givna algoritmen (ovan) till problemet för att hitta ordning i vilken en student ska läsa kurserna. Använd denna ordning i kurslistan: MB06, A02, A14, B01, B03, C01, C02, C05, C08, C17, C18, C19, D02, D11 Beskriv ett annat sätt att utföra en topologisk sortering? (5) Rekursion 4p Förklara utförligt de för- och nackdelarna med rekursion. Förklara vad en rekursiv definition samt en rekursiv funktion är. Vilka programmeringsmönster finns som direkt resultat av de rekursiva definitionerna för en sekvens och ett binärt träd? Ge exempel och (pseudo)kod för att illustrera din diskussion. 5p DFR Datastrukturer och algoritmer, DAV B03, Resit Exam 170331 Sidan 3 av 6

(6) Hashning I hashning har följande metoder för kollisionshantering presenterats, nämligen 1) Open addressing (closed hashing/linear probing) f(i) = i 2) Quadratic probing f(i) = i * i 3) Double hashing f(i) = i * H 2 (key) Där i är värdet på antalet kollisioner (d.v.s. 1, 2, ). Allmänt sett kan man beskriva kollisionshantering som H(key) + f(i) i varje fall. Anta att H(key) = key mod 10. Hash space = array H[10]. Anta att H 2 (key) = 7 (key mod 7). Dessa metoder kan betraktas som en historisk utveckling d.v.s. att varje metod försöker att lösa problem med den föregående metoden men i sin tur kan introducera nya problem. Tillämpa dessa 3 metoder på sekvensen 4, 36, 44, 5, 7, 64, 24 och visa varje steg i Dina beräkningar samt diskutera för- och nackdelarna med dessa metoder. 3p Vilka resultat är mätbara när man tillämpar dessa metoder? Under vilka omständigheter skulle dubbelhashningsmetoden ovan bete sig på ett likadant sätt som linjärprobning? DFR Datastrukturer och algoritmer, DAV B03, Resit Exam 170331 Sidan 4 av 6

(7) Graf algoritmer (a) Tillämpa Dijkstra_SPT algoritm på den oriktade grafen nedan. Visa varje steg i Dina beräkningar. Rita en bild av grafen och ge kostnadsmatrisen. Börja med nod a. Rita en bild av varje mellanresultatet. (a, b, 10), (a, d, 30), (a, e, 100), (b, c, 50), (c, e, 10), (d, c, 20), (d, e, 60) Dijkstra_SPT ( a ) { S = {a for (i in V-S) { D[i] = C[a, i] E[i] = a L[i] = C[a, i] for (i in 1..( V -1)) { choose w in V-S such that D[w] is a minimum S = S + {w foreach ( v in V-S ) if (D[w] + C[w,v] < D[v]) { D[v] = D[w] + C[w,v] E[v] = w L[v] = C[w,v] 3p DFR Datastrukturer och algoritmer, DAV B03, Resit Exam 170331 Sidan 5 av 6

(b) Tillämpa Prims algoritm på den oriktade grafen nedan. Visa varje steg i Dina beräkningar. Rita en bild av grafen och ge kostnadsmatrisen. Börja med nod a. Rita en bild av varje mellanresultatet. Anta att närlistan (adjacency list) skapas i alfabetisk ordning. (a-3-b, a-3-c, a-3-d, b-3-c, b-3-e, c-3-d, c-3-e, c-3-f, d-3-f, e-3-f). Prim s Algoritm -- antagande: att det finns en kostnadsmatrix C Prim (node v) //v is the start node { U = {v; for i in (V-U) { low-cost[i] = C[v,i]; closest[i] = v; while (!is_empty (V-U) ) { i = first(v-u); min = low-cost[i]; k = i; for j in (V-U-k) if (low-cost[j] < min) { min = low-cost[j]; k = j; display(k, closest[k]); U = U + k; for j in (V-U) if ( C[k,j] < low-cost[j] ) { low-cost[j] = C[k,j]; closest[j] = k; (c) Förklara ingående principen bakom Prims algoritm. OBS: Skriv inte en rad för rad översättning från koden till svenska (engelska) utom ge en beskrivning (dvs en tolkning) av hur algoritmen fungerar vid varje steg. Använd gärna bilder i Din beskrivning. 3p Sedan ge en sammanfattning av principen i två eller tre meningar. 4p Totalt 10p DFR Datastrukturer och algoritmer, DAV B03, Resit Exam 170331 Sidan 6 av 6