TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 120612 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A algoritmer Ni som har läst från och med HT 2006 Betygsgräns: *** OBS *** Kurs: Tentamen: Labbarna: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd 40p, Godkänd 30p (varav minimum 15p från tentamen, 15p från labbarna) Max 30p, betyg 5: 26p-30p, betyg 4: 21p-25p, betyg 3: 15p-20p Max 30p, betyg 5: 26p-30p, betyg 4: 21p-25p, betyg 3: 15p-20p Ni som har läst tidigare än HT 2006 Betygsgräns: Kurs: Tentamen: Labbarna: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd 40p, Godkänd 30p (varav minimum 20p från tentamen, 10p från labbarna) Max 40p, betyg 5: 34p-40p, betyg 4: 27p-33p, betyg 3: 20p-26p Max 20p, betyg 5: 18p-20p, betyg 4: 14p-17p, betyg 3: 10p-13p SKRIV TYDLIGT LÄS UPPGIFTERNA NOGGRANT *** OBS *** Ni som har läst från och med HT 2006 ska svara endast på del A (30p) Ni som har läst tidigare än HT 2006 ska svara på både del A och del B (40p) DFR DSA omtentamen 120612 Sidan 1 av 8 DSA Resit Exam 120612 Page 1 of 8
RESIT EXAM IN DATASTRUKTURES OCH ALGORITHMS DVG B03 120612 08:15 13:15 Course Director: Help information: Donald F. Ross Appendix A algorithms Students who have studied the course as from (>=) Autumn Term 2006 Grading Levels: Course: Exam: Labs: Max 60p, pass with special distinction 50p, pass with distinction 40p, pass 30p (of which a minimum 15p from the exam, 15p from the labs) Max 30p, grade 5: 26p-30p, grade 4: 21p-25p, grade 3: 15p-20p Max 30p, grade 5: 26p-30p, grade 4: 21p-25p, grade 3: 15p-20p Students who have studied the course before (<) Autumn Term 2006 Grading Levels: Course: Exam: Labs: Max 60p, pass with special distinction 50p, pass with distinction 40p, pass 30p (of which a minimum 20p from the exam, 10p from the labs) Max 40p, grade 5: 34p-40p, grade 4: 27p-33p, grade 3: 20p-26p Max 20p, grade 5: 18p-20p, grade 4: 14p-17p, grade 3: 10p-13p Write legibly read all questions carefully *** NB *** Students who have studied the course as from (>=) Autumn Term 2006 shall answer the questions in part A ONLY (30p) Students who have studied the course before (<) Autumn Term 2006 shall answer the questions in part A AND part B (40p) DFR DSA omtentamen 120612 Sidan 2 av 8 DSA Resit Exam 120612 Page 2 of 8
DEL A PART A (30p) (1) Algoritmer - Algorithms Ge (i) en kort beskrivning av vad algoritmen gör samt (ii) principerna bakom algoritmen för följande algoritmer:- (a) Prims (b) Dijkstras (c) Warshalls (d) Topologisksortering (e) Binärsökning Give (i) a short description of what each algorithm does as well as (ii) Total 10p (a) Prims (b) Dijkstras (c) Warshalls (d) Topologisksortering (e) Binärsökning (2) Rekursion / Recursion Total 10p Beskriv ingående varför rekursion är så pass viktigt inom datastrukturer och algoritmer. Använd gärna exempel. Describe in detail why recursion is so important in data structures and algorithms. Please use examples. (3) Träd / Tree Diskutera ingående den abstrakta datastrukturen träd. Diskutera hur ADT:en träd har utvecklats från ett generellt träd till ett AVL-träd samt B-träd. Vilka är varje träds egenskaper och applikationer? Discuss in detail the abstract data structure tree. Discuss the development of the ADT tree from the general tree to an AVL tree and B-tree. What are the properties and uses of each of these trees? 5p 5p DFR DSA omtentamen 120612 Sidan 3 av 8 DSA Resit Exam 120612 Page 3 of 8
(4) HEAP Tillämpa den givna algoritmen BUILD i bilaga A till följande sekvens. Ange en tolkning av varje rad i själva algoritmen. Apply the given BUILD algorithm in appendix A to the following sequence. Give an interpretation of each line in the algorithm. 5, 98, 87, 44, 3, 21, 42, 52, 63 (3p) Förklara PRINCIPEN bakom lägga till genom att lägga till värdet 99 till heapen ovan. Explain the PRINCIPLE behind add by adding 99 to the above heap. (1p) Förklara PRINCIPEN bakom ta bort genom att ta bort värdet 87 från heapen ovan. Explain the PRINCIPLE behind remove by removing 87 from the above heap. (1p) Totalt / Total 5p DFR DSA omtentamen 120612 Sidan 4 av 8 DSA Resit Exam 120612 Page 4 of 8
(5) Graf Dijkstra + SPT Tillämpa den givna Dijkstra_SPT algoritmen i bilaga A på den riktade grafen, (a-7-b, a-1-c, a-10-d, b-3-c, b-2-e, c-15-d, c-4-e, c-9-f, d-4-f, e-8-f). SPT = Shortest Path Tree - dvs kortaste väg trädet (KVT) från en nod till alla de andra. Börja med nod a. Visa varje steg i dina beräkningar. Ange *alla* antaganden och visa *alla* beräkningar och mellanresultat Rita varje steg i konstruktionen av SPT:et dvs visa till och med de noder och kanter som läggs till men sedan tas bort. Förklara principerna bakom Dijkstras och Dijkstras_SPT algoritm. (3p) Apply the given Dijkstra_SPT algorithm in Appendix A to the directed graph (a-7-b, a-1-c, a-10-d, b-3-c, b-2-e, c-15-d, c-4-e, c-9-f, d-4-f, e-8-f). SPT = Shortest Path Tree - i.e. the shortest path from a given node to any other node. Start with node a. Show each step in your calculation. State *all* assumptions and show *all* calculations and *all* results at each step. Draw each step in the construction of the SPT i.e. show the nodes and all edges wich are added and subsequently removed. Explain the principles behind Dijkstra s and Dijkstra s SPT algorithm. (3p) Totalt / Total 5p DFR DSA omtentamen 120612 Sidan 5 av 8 DSA Resit Exam 120612 Page 5 of 8
DEL B / PART B (10p) (6) Hashning o Förklara ingående principerna bakom hashing (1p) o Använd sekvensen 24, 64, 7, 5, 44, 36, 4, hashfunktion H(x) = x mod 10; samt kollisionshanteringsteknik Quadratic Probing (kvadratsprobning) för att visa stegvis hur hashing fungerar. o Använd samma sekvens och hashfunktion H(x) som ovan samt kollisionshanteringsteknik Double Hashing (dubbelhashing) med hashfunktion H2(x) = 7 (x mod 7) som andra hashfunktion och visa varje steg i din beräkning. (7) Binärt träd Totalt 5p (a) Ge en rekursiv definition av ett binärt träd (b) Skriva pseudokod för att hitta ett värde i ett binärt sökträd som avspeglar definitionen i (a) dvs visa hur definitionen bestämmer hur koden kommer att se ut. (3p) Totalt 5p DFR DSA omtentamen 120612 Sidan 6 av 8 DSA Resit Exam 120612 Page 6 of 8
Bilaga A Algoritmerna / Appendix A - Algorithms Heapify(A, i) l = Left(i) r = Right(i) if l <= A.size and A[l] > A[i] then largest = l else largest = i if r <= A.size and A[r] > A[largest] then largest = r if largest!= i then swap(a[i], A[largest]) Heapify(A, largest) end if end Heapify Build(A) for i = [A.size / 2] downto 1 do Heapify(A, i) end Build Remove (H, r) let A = H.array A[r] = A[A.size] A.size-- Heapify(A, r) end Remove 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 DFR DSA omtentamen 120612 Sidan 7 av 8 DSA Resit Exam 120612 Page 7 of 8
Dijkstras algoritm med en utökning för SPT Dijkstra_SPT ( a ) { S = {a} for (i in V-S) { D[i] = C[a, i] --- initialise D - (edge cost) E[i] = a --- initialise E - SPT (edge) L[i] = C[a, i] --- initialise L - SPT (cost) } } 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] } } DFR DSA omtentamen 120612 Sidan 8 av 8 DSA Resit Exam 120612 Page 8 of 8