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 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

FACIT TILL TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03

Lösningar Datastrukturer TDA

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

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning Datastrukturer (DAT036)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Föreläsning 13. Träd

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

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

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

Föreläsning 8 Datastrukturer (DAT037)

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

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037)

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

Tentamen Datastrukturer för D2 DAT 035

Datastrukturer. föreläsning 9. Maps 1

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

Trädstrukturer och grafer

Tentamen i Algoritmer & Datastrukturer i Java

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 5: Grafer Del 1

Datastrukturer. föreläsning 9. Maps 1

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

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Föreläsning 5: Dynamisk programmering

Föreläsningsanteckningar F6

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning Datastrukturer (DAT037)

Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver pseudokod.

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

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

Datastrukturer. föreläsning 8. Maps 1

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

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer (DAT036)

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

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

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

FÖRELÄSNING 11 DATALOGI I

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)

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

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 4: Giriga algoritmer. Giriga algoritmer

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

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

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

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

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

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

Fredag 10 juni 2016 kl 8 12

Föreläsning 6 Datastrukturer (DAT037)

Datastrukturer och algoritmer

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

DAI2 (TIDAL) + I2 (TKIEK)

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

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer (DAT036)

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

Tentamen Datastrukturer (DAT036)

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

Tentamen, Algoritmer och datastrukturer

Rekursiva algoritmer sortering sökning mönstermatchning

Magnus Nielsen, IDA, Linköpings universitet

Datastrukturer och Algoritmer D0041D

Tentamen Datastrukturer D DAT 035/INN960

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

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.

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

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

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

Tentamen Datastrukturer (DAT037)

Tentamen MMG610 Diskret Matematik, GU

Optimering Kruskal s algoritm Prim-Jarník s algoritm

Föreläsning 9 Innehåll

Datastrukturer. föreläsning 10. Maps 1

Graphs (chapter 14) 1

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

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

Föreläsning 9 Datastrukturer (DAT037)

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

Tommy Färnqvist, IDA, Linköpings universitet

Transkript:

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150112 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 funktion? (i) Vad är ett AVL-träd? (j) Vad är dubbel hashning? DFR Datastrukturer och algoritmer, DAV B03, tentamen 150112 Sidan 1 av 5

(2) Ge ett kortfattat svar till följande uppgifter ((a)-(e)). (a) Kan noden med det maximala värdet i ett vänsterbarn i ett BST (Binärt SökTräd) ha ett högerbarn? Förklara varför! (b) Skriv rekursiv pseudokod till en funktion för att hitta det minimala värdet i ett högerbarn i ett BST (Binärt SökTräd). (c) Ge en rekursiv definition av ett BT (Binärt Träd) (d) Skriv en rekursiv sök ( find ) funktion för ett BT (Binärt Träd) OBS ej BST! (e) Förklara hur Du skulle representera ett BT (Binärt Träd) med hjälp av en array. Vad är förhållandet mellan trädet och arrayen? (3) 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. Visa varje steg i Dina beräkningar. (4) Rekursion Skriv pseudokod till två rekursiva funktioner (alltså en funktion plus en hjälpfunktion) för att räkna fram antalet kanter ( edges ) i en graf. Ange alla antagande. (5) Diskussionsuppgift Vad menas med implentationsabstraktion? Presentera för- och nackdelar till implementationsabstraktion. Ledar det fram till att man producerar bättre kod? Diskutera ingående. Ge alla antagande. DFR Datastrukturer och algoritmer, DAV B03, tentamen 150112 Sidan 2 av 5

(6) AVL-Träd Visa hur Du skulle ta fram de 4 rotationsfunktionerna från första principer. 2p Förklara vad balansfaktorn (balance factor) är och använd denna för att ta fram balansfunktionen från första principer. Skriv balansfunktionen i pseudokod. Tillämpa Din pseudokod på trädet nedan 50 3p 38 55 30 40 45 (7) Kruskals algoritm Beskriv principerna bakom Kruskals algoritm. Vad blir resultatet av en tillämpning av algoritmen? Använd grafen nedan (oriktad) som exempel. (a,20,b), (a,36,c), (a,34,d), (b,22,c), (b,24,e), (c,28,d), (c,30,e), (c,38,f), (d,26,f), (e,36,f) 3p Hur skulle man kunna anpassa idéer från Kruslals algoritmen för att ta fram en heuristik för att ge en lösning till det resande försäljare-problemet (Travelling Salesman Problem)? 2p DFR Datastrukturer och algoritmer, DAV B03, tentamen 150112 Sidan 3 av 5

(8) 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, tentamen 150112 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 150112 Sidan 5 av 5