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

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

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

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

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

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

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

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

FACIT TILL TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03

Tentamen MMG610 Diskret Matematik, GU

Föreläsning Datastrukturer (DAT036)

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

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

Graphs (chapter 14) 1

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning 8 Datastrukturer (DAT037)

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

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla

Föreläsning 7 Datastrukturer (DAT037)

Tentamen i Matematik 2: M0030M.

Isometries of the plane

x 2 2(x + 2), f(x) = by utilizing the guidance given by asymptotes and stationary points. γ : 8xy x 2 y 3 = 12 x + 3

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Övning 3 - Tillämpad datalogi 2012

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Solutions to exam in SF1811 Optimization, June 3, 2014

This exam consists of four problems. The maximum sum of points is 20. The marks 3, 4 and 5 require a minimum

Lösningar Datastrukturer TDA

Webbregistrering pa kurs och termin

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Support Manual HoistLocatel Electronic Locks

Module 6: Integrals and applications

Algoritmer och Komplexitet ht 08. Övning 6. NP-problem

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Datastrukturer. föreläsning 9. Maps 1

Beijer Electronics AB 2000, MA00336A,

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Tentamen Datastrukturer D DAT 036/DIT960

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik

NP-fullständighetsbevis

Dugga Datastrukturer (DAT036)

Datastrukturer. föreläsning 8. Maps 1

Föreläsning Datastrukturer (DAT037)

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

MÅLSTYRNING OCH LÄRANDE: En problematisering av målstyrda graderade betyg

Adding active and blended learning to an introductory mechanics course

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

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

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

Kurskod: TAMS28 MATEMATISK STATISTIK Provkod: TEN1 05 June 2017, 14:00-18:00. English Version

State Examinations Commission

12.6 Heat equation, Wave equation

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Datastrukturer. föreläsning 8. Lecture 6 1

Flervariabel Analys för Civilingenjörsutbildning i datateknik

Kurskod: TAMS11 Provkod: TENB 07 April 2015, 14:00-18:00. English Version

Styrteknik: Binära tal, talsystem och koder D3:1

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

1. Unpack content of zip-file to temporary folder and double click Setup

E: 9p D: 10p C: 14p B: 18p A: 22p

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

Sätt att skriva ut binärträd

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

Grafisk teknik. Sasan Gooran (HT 2006)

F ξ (x) = f(y, x)dydx = 1. We say that a random variable ξ has a distribution F (x), if. F (x) =

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

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

Pre-Test 1: M0030M - Linear Algebra.

Webbreg öppen: 26/ /

Föreläsning 6 Datastrukturer (DAT037)

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

PORTSECURITY IN SÖLVESBORG

Discrete Mathematics (English)

Boiler with heatpump / Värmepumpsberedare

Module 1: Functions, Limits, Continuity

S 1 11, S 2 9 and S 1 + 2S 2 32 E S 1 11, S 2 9 and 33 S 1 + 2S 2 41 D S 1 11, S 2 9 and 42 S 1 + 2S 2 51 C 52 S 1 + 2S 2 60 B 61 S 1 + 2S 2 A

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

Övning 1 - Abstrakta datatyper

2(x + 1) x f(x) = 3. Find the area of the surface generated by rotating the curve. y = x 3, 0 x 1,

Övning 1. Abstrakta datatyper. 1. Stacken. class Stack: """A representation of a last-in-first-out (LIFO) stack of objects."""

ASSEMBLY INSTRUCTIONS SCALE SQUARE - STANDARD

S 1 11, S 2 9 and S 1 + 2S 2 32 E S 1 11, S 2 9 and 33 S 1 + 2S 2 41 D S 1 11, S 2 9 and 42 S 1 + 2S 2 51 C 52 S 1 + 2S 2 60 B 61 S 1 + 2S 2 A

Preschool Kindergarten

Tentamen: Programutveckling ht 2015

(D1.1) 1. (3p) Bestäm ekvationer i ett xyz-koordinatsystem för planet som innehåller punkterna

Algebra och Diskret Matematik (svenska)


WindPRO version feb SHADOW - Main Result. Calculation: inkl Halmstad SWT 2.3. Assumptions for shadow calculations. Shadow receptor-input

Transkript:

FACIT TILL TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 140114 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna. 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 SKRIV TYDLIGT LÄS UPPGIFTERNA NOGGRANT Ange alla antaganden. DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 1 av 21

(1) Ge ett kortfattat svar till följande uppgifter ((a)-(j)). (a) En definition av en mängd An unordered collection of unique entities having a common property (attribute). (b) En definition av en sekvens An ordered collection of entities (not necessarily unique) having a common property (attribute) with a successor relationship defined between entities. (c) En definition av ett träd An unordered/ordered collection of entities (not necessarily unique) having a common property (attribute) with a descendant relationship defined between entities. (d) En definition av en graf An unordered collection of entities (not necessarily unique) having a common property (attribute) with a (general) relationship defined between entities. (e) En definition av ett AVL-träd A binary search tree (BST) with the additional property that the height of the left and right sub-trees may not differ by more than 1. Förklara Dina exempel ((f)-(j)) med några meningar (f) Ett exempel av ett fullt träd som inte är komplett (g) Ett exempel av ett komplett träd som inte är fullt f g (h) Ett exempel av ett free tree n nodes & (n-1) edges example MST (i) Ett exempel av en algoritm som är O(n 3 ) Floyd s / Warshall s DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 2 av 21

(j) Ett exempel av ett B-tree 7 11 5 9 13 2 5 7 9 11 13 3 6 8 10 12 14 4 Totalt 5p DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 3 av 21

(2) Ge ett kortfattat svar till följande uppgifter. (a) En definition av rekursion An entity which is PARTIALLY defined in terms of itself e.g. definition of a sequence S ::= H T ; H ::= element ; T ::= S A function which CONDITIONALLY calls itself (b) En definition av abstraktion MODELLING ABSTRACTION The process of selecting certain properties (attributes) of an entity to represent that entity in a given situation. COLLECTION ABSTRACTION The process of generalising common properties and operations of the set, sequence, tree and graph. IMPLEMENTATION ABSTRACTION The process of selecting certain properties of a Data Type independent of the implementation of that Data Type - hence the expression Abstract Data Type (c) Principerna bakom hashning A hash function hf maps a key value to an index in the hash space hf(key) index Main problem is collision handling a second function kf based on the number of collisions to give a new index hf(key) + kf(i) for the ith collision kf(i) may be kf: i i; kf: i i 2 ; kf: i i * hf 2 (key) an alternative is to chain the values giving rise to collisions in a linked list (d) Ett exempel samt beskrivning av en girig algoritm Dijkstra or Prim A locally best solution is chosen and previously calculated values are readjusted to see if a better solution may be obtained via the last selected node (locally best) (e) En definition av Big-Oh O(x) An upper bound indicator (usually worst case time performance) for a given algorithm. Totalt 5p DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 4 av 21

(3) Rekursion (a) Beskriv vilket mönster man hittar hos rekursiva funktioner (1p) R (i) An initial call And this is the structure of the function:- (ii) (iii) (iv) the stop condition usually with is_empty(x) a non recursive call the recursive call The recursive definition of a sequence is recursion S ::= H T H ::= element T ::= S // = empty // a non-recursive definition // the recursive part of the definition often tail The pseudocode which follows from the above definition is :- static listref b_add(valtype v, listref L) { return is_empty(l)? create_e(v) // stop : v < get_value(head(l))? cons(create_e(v), L) // non-recursive : cons(head(l), b_add(v, tail(l))); // recursive (tail) } Or if you prefer the code with if-statements:- stop + non-recursive + tail recursive static listref b_add(valtype v, listref L) { if (is_empty(l)) return create_e(v); if (v < get_value(head(l))) return cons(create_e(v), L); return cons(head(l), b_add(v, tail(l))); } DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 5 av 21

(b) Utifrån din definition i (a) ovan, skriv rekursiv pseudokod för att lägga till ett element i en sekvens i stigande ordning. Ange alla antaganden. Visa hur Din pseudokod fungerar med detta exempel lägga till 7 till (1,4,5) (2) static listref b_add(valtype v, listref L) { return is_empty(l)? create_e(v) : v < get_value(head(l))? cons(create_e(v), L) : cons(head(l), b_add(v, tail(l))); } Assume: cons: insert an element at the head of the list head: returns a reference to the head of the list tail: returns a reference to the tail of the list b_add(7, (1, 4, 5)) --- initial call cons(1, b_add(7, (4,5))) --- recursive call 1 cons(1, cons(4, b_add(7, (5)))) --- recursive call 2 cons(1, cons(4, cons(5, b_add(7, ( ))))) --- recursive call 3 --- empty case (stop condition) Start the returns from the recursive calls cons(1, cons(4, cons(5, (7)))) --- return from recursive call 3 cons(1, cons(4, (5,7))) --- return from recursive call 2 cons(1, (4, 5, 7)) --- return from recursive call 1 (1, 4, 5, 7) --- return from initial call DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 6 av 21

(c) Utifrån din definition i (a) ovan, skriv rekursiv pseudokod för funktionen T2Q( ) (träd till kö) från trädlabben Ange alla antaganden. Visa hur Din pseudokod fungerar med detta exempel: (2p) Totalt 5p 3 5 6 4 1 8 One solution might be:- static void T2Q(treeref T, int qpos) { hqarr[qpos] = T; if (!is_empty(t)) { T2Q(LC(T), qpos*2); T2Q(RC(T), qpos*2+1); } } Note (i) there are 2 recursive calls and (ii) the contents of the Q are references to the tree nodes however these will be represented as the values of the node or (empty) Initial call T2Q(T, 1) and the hqarr is [-,-,-,-,-,-,-,-,-,-,-,-,-,-,-] Rewriting the initial tree as ( ((4) 5 ( )) 3 ((1) 6 (8)) ) gives Initial call T2Q(( ((4) 5 ( )) 3 ((1) 6 (8)) ), 1) and hqarr is [-,-,-,-,-,-,-,-,-,-,-,-,-,-,-] hqarr[1] = 3 [3,-,-,-,-,-,-] left sub-tree recursive call T2Q(((4) 5 ( )), 2) gives hqarr[2] = 5 [3,5,-,-,-,-,-,-,-,-,-,-,-,-,-] recursive call T2Q((( ) 4 ( )), 4) gives hqarr[4] = 4 [3,5,-,4,-,-,-,-,-,-,-,-,-,-,-] recursive call T2Q(, 8) gives hqarr[8] = [3,5,-,4,-,-,-,,-,-,-,-,-,-,-] recursive call T2Q(, 9) gives hqarr[9] = [3,5,-,4,-,-,-,,,-,-,-,-,-,-] recursive call T2Q(, 5) gives hqarr[5] = [3,5,-,4,,-,-,,,-,-,-,-,-,-] right sub tree recursive call T2Q(((1) 6 ( )), 3) gives hqarr[3] = 6 [3,5,6,4,,-,-,,,-,-,-,-,-,-] recursive call T2Q((( ) 1 ( )), 6) gives hqarr[6] = 1 [3,5,6,4,,1,-,,,-,-,-,-,-,-] recursive call T2Q(, 12) gives hqarr[12] = [3,5,6,4,,1,-,,,-,-,,-,-,-] recursive call T2Q(, 13) gives hqarr[12] = [3,5,6,4,,1,-,,,-,-,,,-,-] recursive call T2Q((( ) 8 ( )), 7) gives hqarr[7] = 8 [3,5,6,4,,1,8,,,-,-,,,-,-] recursive call T2Q(, 14) gives hqarr[14] = [3,5,6,4,,1,8,,,-,-,,,,-] recursive call T2Q(, 15) gives hqarr[15] = [3,5,6,4,,1,8,,,-,-,,,, ] DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 7 av 21

(4) Prims algoritm a) Tillämpa Prims algoritm (nedan) på den oriktade 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). Börja med nod a. Ange alla antaganden och visa alla beräkningar och mellanresultat. Vad representerar resultatet? Ange varje steg i din beräkning. Rita delresultatet efter varje iteration. (2p) b) Förklara principerna bakom Prims algoritm. (2p) c) Visa hur Du skulle använda principerna bakom Kruskals algoritm för att bekräfta resultatet från Prims algoritm. (1p) Totalt 5p Ange *alla* antaganden och visa *alla* beräkningar och mellanresultat 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; } } DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 8 av 21

Draw the graph (and possibly sketch the answer use Kruskalls for a quick check!): Cost 18 7 a 10 a b e 2 1 3 c 15 4 9 8 d f 4 b e 2 3 c 8 1 4 d f DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 9 av 21

Draw the cost matrix C and array D a b c d e f a 7 1 10 b 7 3 2 c 1 3 15 4 9 d 10 15 4 e 2 4 8 f 9 4 8 a b c d e f lowcost 7 1 10 closest a a a a a Minedge: lowcost: 7 1 10 closest: a a a a a U = {a,c} V-U = {b,d,e,f} min = 1; k = c Readjust costs: if C[k,j] < lowcost[j] then { lowcost[j] = C[k,j]; closest[j] = k } j = b; if C[c,b] < lowcost[b] then { lowcost[b] = C[c,b]; closest[b] = c } 3<7 c-3-b j = d; if C[c,d] < lowcost[d] then { lowcost[d] = C[c,d]; closest[d] = c } 15<10 no change j = e; if C[c,e] < lowcost[e] then { lowcost[e] = C[c,e]; closest[e] = c } 4< c-4-e j = f; if C[c,f] < lowcost[f] then { lowcost[f] = C[c,f]; closest[f] = c } 9< c-9-f 7 a 10 a 10 b 1 d b 3 1 d c c e f e 4 9 f DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 10 av 21

Minedge: lowcost: 3 1 10 4 9 closest: c a a c c U = {a,c,b} V-U = {d,e,f} min = 3; k = b Readjust costs: if C[k,j] < lowcost[j] then { lowcost[j] = C[k,j]; closest[j] = k } j = d; if C[b,d] < lowcost[d] then { lowcost[d] = C[b,d]; closest[d] = b} <10 no change j = e; if C[b,e] < lowcost[e] then { lowcost[e] = C[b,e]; closest[e] = b } 2<4 b-2-e j = f; if C[b,f] < lowcost[f] then { lowcost[f] = C[b,f]; closest[f] = b } <9 no change a 10 b 3 1 d e 2 c 9 f Minedge: lowcost: 3 1 10 2 9 closest: c a a b c U = {a,c,b,e} V-U = {d,f} min = 2; k = e Readjust costs: if C[k,j] < lowcost[j] then { lowcost[j] = C[k,j]; closest[j] = k } j = d; if C[e,d] < lowcost[d] then { lowcost[d] = C[b,d]; closest[d] = e} <10 no change j = f; if C[e,f] < lowcost[f] then { lowcost[f] = C[b,f]; closest[f] = e } 8<9 e-8-f a 10 b 3 1 d 2 c e 8 f DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 11 av 21

Minedge: lowcost: 3 1 10 2 8 closest: c a a b e U = {a,c,b,e,f} V-U = {d} min = 8; k = f Readjust costs: if C[k,j] < lowcost[j] then { lowcost[j] = C[k,j]; closest[j] = k } j = d; if C[f,d] < lowcost[d] then { lowcost[d] = C[f,d]; closest[d] = f} 4<10 d-4-f a b 3 1 d 2 c 4 e 8 f Minedge: lowcost: 3 1 4 2 8 closest: c a f b e U = {a,c,b,e,f, d} V-U = { } min = 4; k = d V-U is empty STOP. COST = 18 a b 3 1 d 2 c 4 e 8 f DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 12 av 21

Principles behind Prim s to derive the MST Minimal Spanning Tree for a graph Method:- 1. Choose a start node (usually a) and mark as visited U = {a} U is a component 2. Calculate the distances between a and the remaining nodes V-U and draw the MST calculated so far 3. Choose the closest node x to a and mark as visited U = {a,x} 4. If the distance x to any node y in V-U is shorter then readjust costs by removing the previous edge and adding the edge (x y) now we have a new MST 5. U represents the visited nodes and V-U the unvisited nodes choose the shortest edge from the visited nodes to a node in V-U and add this to U 6. Repear 4 & 5 until the MST has been found and V-U = (empty) Principles:- Prim s finds the shortest edge from the component (visited nodes) to the unvisited nodes and then adds this node x to the visited nodes (U) and readjusts the edges in the MST if an edge (x y) where y is in V-U is shorter than the previously chosed edge. DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 13 av 21

Double check with Kruskal s Build the Priority Queue (PQ) double check to ensure that all 10 edges are present in the PQ! a-c-1 b-e-2 b-c-3 c-e-4 d-f-4 a-b-7 e-f-8 c-f-9 a-d-10 c-d-15 Now work through the PQ to connect the 6 components: a, b, c, d, e, f a-c-1 gives 5 components a-1-c, b, d, e, f b-e-2 gives 4 components a-1-c, b-2-e, d, f b-c-3 gives 3 components a-1-c-3-b-2-e, d, f c-e-4 gives no result since c and e are in the same component a-1-c-3-b-2-e d-f-4 gives 2 components a-1-c-3-b-2-e, d-4-f a-b-7 gives no result since a and b are in the same component a-1-c-3-b-2-e e-f-8 gives 1 component a-1-c-3-b-2-e-8-f-4-d finished! a b 3 1 d 2 c 4 e 8 f DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 14 av 21

DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 15 av 21

(5) 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) } Vilken är den andra varianten? Tillämpa både varianter i din lösning till problemet ovan. Vilka begränsningar måste man ta hänsyn till? 5p DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 16 av 21

Step 1: Draw the graph MB06 B01 C01 C02 D02 A02 B03 C05 C08 C17 D11 C18 A14 C19 Step 2: Construct the adjacency matrix MB06 A02 A14 B01 B03 C01 C02 C05 C08 C17 C18 C19 D02 D11 MB06 1 A02 1 1 A14 1 B01 1 1 1 B03 1 1 1 C01 C02 1 C05 1 C08 C17 C18 1 C19 D02 D11 DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 17 av 21

Step 3: Apply Warshall s by inspection (you do not need to show every step) MB06 A02 A14 B01 B03 C01 C02 C05 C08 C17 C18 C19 D02 D11 MB06 1 1 1 1 1 1 A02 1 1 1 1 1 1 1 1 1 1 A14 1 1 1 1 B01 1 1 1 B03 1 1 1 1 1 C01 C02 1 C05 1 C08 C17 C18 C19 1 D02 D11 To show that OODM (D11) requires Discrete Mathematics (MB06) look at the row MB06 in the transitive closure to find that D11 is reachable from MB06 i.e. there is a path from MB06 to D11. Note also that the diagonal shows that there are no cycles in the graph. Hence the graph is a DAG. DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 18 av 21

Course order method 1: Use the in-degree for each node. Construct a list with the in-degree. ((MB06, 0), (A02, 0), (A14, 0), (B01, 2), (B03, 2), (C01, 1), (C02, 1), (C05, 1), (C08, 1), (C17, 1), (C18, 1), (C19, 0), (D02, 1), (D11, 2)) Remove the nodes with in-degree 0 and their edges and readjust the list. Add these nodes to the output list. Output: (MB06, A02, A14, C19) ((B01, 0), (B03, 0), (C01, 1), (C02, 1), (C05, 1), (C08, 1), (C17, 1), (C18, 1), (D02, 1), (D11, 1)) Repeat the process until the degree list is empty. Output: (MB06, A02, A14, C19, B01, B03) ((C01, 0), (C02, 0), (C05, 0), (C08, 0), (C17, 0), (C18, 0), (D02, 1), (D11, 1)) Output: (MB06, A02, A14, C19, B01, B03, C01, C02, C05, C08, C17, C18) ((D02, 0), (D11, 0)) Output: (MB06, A02, A14, C19, B01, B03, C01, C02, C05, C08, C17, C18, D02, D11) ( ) degree list is empty finished. Course order method 2: perform a depth-first search on the graph Construct the adjacency list: MB06: B03 A02: B01, B03 A14: B01 B01: C01, C17, C18 B03: C02, C05, C08 C01: C02: D02 C05: D11 C08: C17: C18: C19: D11 D02: D11: DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 19 av 21

Perform a topological sort: Start with node MB06: MB06 B03 C02 D02 Stop output D02 Stop output C02 C05 D11 Stop output D11 Stop output C05 C08 Stop output C08 Stop output B03 Stop output MB06 A02 B01 C01 Stop output C01 C17 Stop output C17 C18 Stop output C17 Stop output B01 Stop output A02 A14 Stop output A14 C19 Stop output C19 D02 D02, C02 D02, C02, D11 D02, C02, D11, C05 D02, C02, D11, C05, C08 D02, C02, D11, C05, C08, B03 D02, C02, D11, C05, C08, B03, MB06 D02, C02, D11, C05, C08, B03, MB06, C01 D02, C02, D11, C05, C08, B03, MB06, C01, C17 D02, C02, D11, C05, C08, B03, MB06, C01, C17, C18 D02, C02, D11, C05, C08, B03, MB06, C01, C17, C18, B01 D02, C02, D11, C05, C08, B03, MB06, C01, C17, C18, B01, A02 D02, C02, D11, C05, C08, B03, MB06, C01, C17, C18, B01, A02, A14 D02,C02, D11,C05,C08, B03, MB06,C01,C17,C18, B01, A02,A14,C19 Now reverse the list C19, A14, A02, B01, C18, C17, C01, MB06, B03, C08, C05, D11, C02, D02 The restriction is that the graph must be a DAG in order to perform a topological sort. This was shown above using Warshall s. DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 20 av 21

(6) Diskussion Diskutera ingående meningen bakom denna kurs. Vilka var de huvudidéer som studerats under kursens lopp och vilken relevans har dessa idéer för datavetenskap, för andra ämnen inom datavetenskap och för programmering? Ange gärna exempel för att stödja Din diskussion. 5p Open Question marks for good answers. DFR Datastrukturer och algoritmer, DAV B03, tentamen 140114 FACIT Sidan 21 av 21