ORDINARIE TENTAMEN 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

OMTENTAMEN 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

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. 09:00 14:00

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

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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

Föreläsning Datastrukturer (DAT036)

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

Tentamen Datastrukturer, DAT037 (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å

Föreläsning 8 Datastrukturer (DAT037)

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 13. Träd

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Trädstrukturer och grafer

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

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)

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

Magnus Nielsen, IDA, Linköpings universitet

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

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

Tentamen, Algoritmer och datastrukturer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

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

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

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

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

Tentamen Datastrukturer för D2 DAT 035

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

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

Föreläsning Datastrukturer (DAT037)

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

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

Fredag 10 juni 2016 kl 8 12

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).

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Datastrukturer och algoritmer

Facit Tentamen TDDC (7)

DAI2 (TIDAL) + I2 (TKIEK)

Tentamen TEN1 HI

Rekursiva algoritmer sortering sökning mönstermatchning

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Datastrukturer. föreläsning 9. Maps 1

Dugga Datastrukturer (DAT036)

Lösningsförslag till tentamen Datastrukturer, DAT037,

Föreläsning 5: Dynamisk programmering

Tentamen Datastrukturer D DAT 035/INN960

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

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT037)

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

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

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

Föreläsning 13 Innehåll

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

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

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

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen Datastrukturer (DAT036)

FÖRELÄSNING 11 DATALOGI I

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 7 Datastrukturer (DAT037)

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

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

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

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

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

Föreläsning 9 Innehåll

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

Föreläsning Datastrukturer (DAT037)

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

Seminarium 13 Innehåll

Algoritmer, datastrukturer och komplexitet

Föreläsning 6 Datastrukturer (DAT037)

Tentamen MMG610 Diskret Matematik, GU

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

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

Föreläsningsanteckningar F6

Datastrukturer. föreläsning 8. Maps 1

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

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

Föreläsning 5: Grafer Del 1

TDDB56 DALGOPT Algoritmer och Optimering Tentamen , 8 13

Transkript:

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160119 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. *** 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 en funktion som skriver ut en adjacency matrix? Varför? (b) Vad gör Dijkstras algoritm? (c) Vad gör Floyds algoritm? (d) Vad gör Warshalls algoritm? (e) Vad gör Topologisk sortering? (f) Vad är en heap? (g) Vad är fördelen med hashning? (h) Vad är en rekursiv definition? (i) Vad är ett AVL-träd? (j) Vad är dubbel hashning? DFR Datastrukturer och algoritmer, DAV B03, tentamen 160119 Sidan 1 av 5

(2) Ge ett kortfattat svar till följande uppgifter ((a)-(e)). (a) Skriv abstrakt rekursiv pseudokod för en back-end Boolsk find funktion för att hitta ett värde i en sekvens. Skriv om funktionen så att den returnerar en referens till ett element eller NULLREF i stället för sant eller falsk. (b) Skriv abstrakt rekursiv pseudokod till en funktion för att lägga till (add) ett värde i en sekvens. Skriv om denna funktion med bara två rader i stället för de tre rader som man får om man programmerar enligt sekvensmönstret. Dvs hur kan man kombinera 2 operationer? (c) Skriv abstrakt rekursiv pseudokod till en funktion för att ta bort (remove) ett värde från en sekvens. Förklara hur denna funktion fungerar om inte värdet finns i sekvensen. (d) Skriv abstrakt rekursiv pseudokod till funktionen T2Q från labb 1. T2Q förvandlar ett binärt träd till en array. (e) Skriv den rekursiva definitionen av ett AVL-träd. (3) Heap Totalt 10p 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. Visa varje steg i Dina beräkningar. (4) Rekursion Skriv abstrakt rekursiv pseudokod till en funktion som tar bort (remove) ett värde från ett binärt sökträd. Vilka aspekter måste man ta hänsyn till när man skriver en sådan funktion? Ange alla antagande. (5) Diskussionsuppgift Man använder Big-oh när man pratar om en algoritmens prestanda. Vad betyder Big-oh? Vilka aspekter måste man ta hänsyn till när man tillämpar Big-oh. Vilka är de för- och nackdelarna? Svara ingående. Ange alla antagande. DFR Datastrukturer och algoritmer, DAV B03, tentamen 160119 Sidan 2 av 5

(6) AVL-Träd Skriv abstrakt pseudokod till de 4 rotationsfunktionerna från första principer. Skriv abstrakt pseudokod för att ombalancera (re-balance) ett AVL-träd. Tillämpa dessa funktioner på AVL-trädet nedan efter att man har tagit bort 60 från trädet. Visa varje steg i dina beräkningar fram till lösningen. Förklara hur du använder din pseudokod vid varje steg 3p 50 38 55 30 40 60 45 DFR Datastrukturer och algoritmer, DAV B03, tentamen 160119 Sidan 3 av 5

(7) 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. () 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, tentamen 160119 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, tentamen 160119 Sidan 5 av 5