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

Relevanta dokument
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. 14:15 19:15

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

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

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

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

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

FACIT TILL TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03

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

Lösningar Datastrukturer TDA

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

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

Föreläsning Datastrukturer (DAT037)

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

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen MMG610 Diskret Matematik, GU

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

Datastrukturer. föreläsning 9. Maps 1

Föreläsning Datastrukturer (DAT036)

Trädstrukturer och grafer

Tentamen Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

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

Graphs (chapter 14) 1

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

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

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

Tentamen Datastrukturer (DAT036)

Föreläsning 8 Datastrukturer (DAT037)

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

Föreläsning 9 Datastrukturer (DAT037)

Datastrukturer. föreläsning 9. Maps 1

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

Tentamen, Algoritmer och datastrukturer

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

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

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 9 Innehåll

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

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

DAI2 (TIDAL) + I2 (TKIEK)

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

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Lösningsförslag till tentamen Datastrukturer, DAT037,

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

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

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

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

Tentamen Datastrukturer (DAT036)

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Datastrukturer och Algoritmer D0041D

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

1. (3p) Bestäm den minsta positiva resten vid division av talet med talet 31.

Föreläsning 6 Datastrukturer (DAT037)

Fredag 10 juni 2016 kl 8 12

Föreläsning 7 Datastrukturer (DAT037)

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Föreläsning 13. Träd

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 7. Träd och binära sökträd

Datastrukturer. föreläsning 8. Maps 1

Programmering för språkteknologer II, HT2011. Rum

Tentamen Datastrukturer (DAT037)

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

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

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer, DAT037 (DAT036)

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Föreläsningsanteckningar F6

Föreläsning 7. Träd och binära sökträd

Magnus Nielsen, IDA, Linköpings universitet

Föreläsning Datastrukturer (DAT037)

Träd. Rot. Förgrening. Löv

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Föreläsning 9 Innehåll

Datastrukturer. föreläsning 3. Stacks 1

Grundläggande Datalogi

Facit Tentamen TDDC (7)

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Lösningsförslag till tentamen

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

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

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

Tentamen Datastrukturer (DAT036)

Transkript:

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 140818 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. (1) Ge ett kortfattat svar till följande uppgifter ((a)-(j)). (a) Vad är big-o för en funktion som skriver ut en adjacency matrix? Varför? (b) Vad gör Dijkstras algorithm? (c) Vad gör Floyds algorithm? (d) Vad gör Warshalls algorithm? (e) Vad gör Topologisk sortering? (f) Vad är en heap? (g) Vad är fördelen med hashning? (h) Vad är en rekursiv funktion? (i) Vad är ett AVL-träd? (j) Vad är dubbel hashning? DFR Datastrukturer och algoritmer, DAV B03, omtentamen 140818 Sidan 1 av 5

(2) Heap Diskutera ingående hur koden till heap operationer (se Bilaga A) fungerar? Använd sekvensen 46, 13, 18, 33, 72, 9, 11, 44, 27, 15, 66 som ett exempel. Anta att det största värdet hamnar i roten. 5p (3) Rekursion Skriv (pseudo)kod till en rekursiv funktion (eller två rekursiva funktioner) för att räkna fram antalet kanter (edges) i en graf. Ange alla antagande. 5p (4) Grafoperationer En graf kan beskrivas som en virtuell (eller abstrakt) maskin. I graflaborationen, filen begraph.h är faktiskt en beskrivning av denna virtuell maskin. Innehållet ges nedan. /* function prototypes - operations on the Graph (a virtual machine) */ /* Graph = (V, E) where V is a set of vertices/nodes and E a set of edges */ /* There are a limited number of operations (9) which can be applied to G */ void be_display_adjlist(); /* display G as an adjacency list */ void be_display_adjmatrix(); /* display G as an adjacency matrix*/ void be_addnode(char c); /* add a vertex (node) to G */ void be_remnode(char c); /* remove a vertex (node) from G */ void be_addedge(char cs, char cd, int v);/* add an edge (with weight) to G*/ void be_remedge(char cs, char cd); /* remove an edge from G */ int be_is_nmember(char c); /* is a node a member of G? */ int be_is_emember(char cs, char cd); /* is an edge a member of G? */ int be_size(); /* the number of nodes in G */ I front-end:en kan man specifiera förvillkor (preconditions) till varje operation ovan med hjälp av en eller flera av dessa 9 funktioner. Skriv (pseudo)kod till föjlande front-end-funktioner på så sätt att änvändaren inte behöver mäta in mer information än absolut nödvändigt. Anta att det finns ett visst antal användargränssnittfunktioner som kan ta emot information samt skicka tillbaka informationsmeddelande. (i) fe_display_adjlist() // display adjacency list 1p (ii) fe_remnode() // remove node 1p (iii) fe_remedge() // remove edge 3p DFR Datastrukturer och algoritmer, DAV B03, omtentamen 140818 Sidan 2 av 5

(5) Labbkod (a) I graflabben har en student skrivit följande kod för att ta bort en kant (edge) från an adjacency lista. Förklara ingående hur koden fungerar. Använd gärna exempel. Ange alla antagande. Vilka är förutsättningarna för att koden ska fungera? void reme(char cs, char cd) set_edges(b_findn(cs, G), b_reme(cd, get_edges(b_findn(cs, G)))); 2p (b) I trädlabben har en student skrivit kod för att söka efter ett värde i ett BST (binärt sökträd). Sedan har studenten kommit på att denna kod kunde lätt anpassas för att söka efter ett värde i ett komplett träd. Dessa funktioner finns nedan. Vad har studenten skrivit för xxx och yyy? Ange alla antagande. static int b_findb(treeref T, int v) return is_empty(t)? 0 : v < get_value(node(t))? b_findb(lc(t), v) : v > get_value(node(t))? b_findb(rc(t), v) : 1; static int b_findc(treeref T, int v) return is_empty(t)? 0 : xxx? 1 : yyy; (c) Skriv (pseudo)kod för att lägga till ett element i ett binärt träd. Ange alla antagande. 1p 2p DFR Datastrukturer och algoritmer, DAV B03, omtentamen 140818 Sidan 3 av 5

(6) Dijkstra + SPT (Shortest Path Tree) Tillämpa den givna Dijkstra_SPT algoritmen (nedan) på den riktade grafen, (a, b, 12), (a, d, 11), (a, e, 9), (b, c, 7), (c, e, 5), (d, c, 3), (d, e, 1) 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. (3p) Förklara principerna bakom Dijkstras_SPT algoritm. (2p) 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 Datastrukturer och algoritmer, DAV B03, omtentamen 140818 Sidan 4 av 5

Bilaga A Heap Algoritmer 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 Datastrukturer och algoritmer, DAV B03, omtentamen 140818 Sidan 5 av 5