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

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

OMTENTAMEN 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

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

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

Lösningar Datastrukturer TDA

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

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

Föreläsning Datastrukturer (DAT036)

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

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

Föreläsning 6 Datastrukturer (DAT037)

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)

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 Datastrukturer (DAT036)

Tentamen 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å

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 Datastrukturer (DAT037)

Tentamen Datastrukturer för D2 DAT 035

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

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

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

Föreläsning Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT037)

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

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

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen MMG610 Diskret Matematik, GU

Föreläsning 13. Träd

Datastrukturer. föreläsning 9. Maps 1

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

Föreläsning 5: Grafer Del 1

Optimering Kruskal s algoritm Prim-Jarník s algoritm

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

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

Algebra och Diskret Matematik A (svenska)

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

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Föreläsning 10 Innehåll

Magnus Nielsen, IDA, Linköpings universitet

DAI2 (TIDAL) + I2 (TKIEK)

Trädstrukturer och grafer

Datastrukturer. föreläsning 9. Maps 1

Övningsuppgifter #11, Programkonstruktion och datastrukturer

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

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

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

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

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

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

Algoritmer, datastrukturer och komplexitet

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

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

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Programmering II (ID1019)

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

Algoritmer, datastrukturer och komplexitet

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

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

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

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

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

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

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Dugga Datastrukturer (DAT036)

TNK049 Optimeringslära

Rekursiva algoritmer sortering sökning mönstermatchning

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

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

Tentamen, Algoritmer och datastrukturer

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Föreläsning Datastrukturer (DAT036)

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Tentamen i. TDDC67 Funktionell programmering och Lisp

Transkript:

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150609 kl. 14:15 19: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. Studenter som har läst kursen from HT2014 ska svara på samtliga uppgifter. Studenter som har läst kursen from HT2006 tom HT2013 ska välja uppgifter värt 30 poäng. Studenter som har läst kursen tom HT2005 ska svara på samtliga uppgifter. (1) Ge en kortfattad definition av följande begrepp ((a)-(j)). (a) Mängd (b) Sekvens (c) Träd (d) Binärt träd (e) AVL-träd (f) Graf (g) Enkel cykel i en graf (h) Artikuleringspunkt (articulation point) (i) Prestande (performance) (j) Big-oh (O(n)) DFR Datastrukturer och algoritmer, DAV B03, omtentamen 150609 Sidan 1 av 6

(2) Rekursion Beskriv ingående varför rekursion är så pass viktigt inom datastrukturer och algoritmer. Använd gärna exempel. Ge flera exempel där man använder sig av rekursion. (3) Heap 5p (a) Läs koden till heap operationer (se Bilaga A), Svara på följande uppgifter:- i. Vad är parameter i i Heapify(A, i)? ii. Skriv (pseudo) kod till funktionen Right(i) iii. I Heapify, vad gör koden nedan? Vad betyder koden? 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 iv. I Heapify, vad gör koden nedan? Vad betyder koden? if largest!= i then swap(a[i], A[largest]) Heapify(A, largest) end if v. Varför skriver man A.size/2 i funktion Build? vi. Hur fungerar funktion Remove? 3p (b) Givit heapen: 72, 66, 18, 44, 46, 9, 11, 33, 27, 15 Förklara stegvis hur funktionen Add fungerar när man lägger till värdet 68 i heapen. Rita en bild av den trädrepresentationen av heapen vid varje steg. (4) Binärt Träd (a) Ge en rekursiv definition av ett binärt träd. 1p (b) Utifrån din definition i (a) skriv pseudokod till en rekursiv version av den läggatill funktion (add) för ett binärt träd. Anta att dubbletter inte tillåtas. (c) Att ta bort ett element från ett binärt träd kan reduceras till ett annat problem, nämligen att ta bort roten från ett binärt träd. Då finns det fyra möjligheter. Vilka är dessa? Diskutera utförligt vad händer i varje fall. DFR Datastrukturer och algoritmer, DAV B03, omtentamen 150609 Sidan 2 av 6

(5) AVL-Träd Visa hur Du skulle ta fram de 4 rotationsfunktionerna från första principer. 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 (6) Rekursiva funktioner 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. 5p DFR Datastrukturer och algoritmer, DAV B03, omtentamen 150609 Sidan 3 av 6

(7) Prim Tillämpa den givna Prims algoritm (nedan) på den oriktade grafen, (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). Prim s Algoritm -- antagande: att det finns en kostnadsmatrix C 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; Börja med nod a. Visa varje steg i dina beräkningar. Ange *alla* antaganden och visa *alla* beräkningar och mellanresultat Visa att man har kollat på varje kant under algoritmens exekvering. Använd bilder. I vilka ordning har algoritmen kollat på kanterna? Vilka kanter ersätter andra kanter under algoritmensexekvering? (3p) () DFR Datastrukturer och algoritmer, DAV B03, omtentamen 150609 Sidan 4 av 6

(8) Dijkstra Algoritmen kan skrivas som nedan Dijkstra( a ) { S = {a for (i in V-S) D[i] = C[a, i]; while(!is_empty(v-s)) { choose w in V-S such that D[w] is a minimum S = S + {w foreach ( v in V-S ) D[v] = min(d[v], D[w] + C[w,v]); Visa hur du skulle utöka algoritmen för att bygga den Shortest Path Tree (kortaste väg trädet) samtidigt som man utför algoritmen. () Tillämpa den givna Dijkstra algoritmen (ovan) 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) Börja med nod a. Visa varje steg i Dina beräkningar. Ange *alla* antaganden och visa *alla* beräkningar och mellanresultat (3p) DFR Datastrukturer och algoritmer, DAV B03, omtentamen 150609 Sidan 5 av 6

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 150609 Sidan 6 av 6