• No results found

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
8
0
0

Loading.... (view fulltext now)

Full text

(1)

TENTAMEN I

DATASTRUKTURER OCH ALGORITMER DVG B03

120612 kl. 08:15 – 13:15

__________________________________________________________________________________________

Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A – algoritmer

*** OBS ***

Ni som har läst från och med HT 2006 Betygsgräns:

Kurs: Max 60p, Med beröm godkänd50p, Icke utan beröm godkänd 40p, Godkänd 30p (varav minimum 15p från tentamen, 15p från labbarna)

Tentamen: Max 30p, betyg 5: 26p-30p, betyg 4: 21p-25p, betyg 3: 15p-20p Labbarna: Max 30p, betyg 5: 26p-30p, betyg 4: 21p-25p, betyg 3: 15p-20p

Ni som har läst tidigare än HT 2006 Betygsgräns:

Kurs: Max 60p, Med beröm godkänd50p, Icke utan beröm godkänd 40p, Godkänd 30p (varav minimum 20p från tentamen, 10p från labbarna)

Tentamen: Max 40p, betyg 5: 34p-40p, betyg 4: 27p-33p, betyg 3: 20p-26p Labbarna: Max 20p, betyg 5: 18p-20p, betyg 4: 14p-17p, betyg 3: 10p-13p

SKRIV TYDLIGT – LÄS UPPGIFTERNA NOGGRANT

*** OBS ***

Ni som har läst från och med HT 2006 ska svara endast på del A (30p)

Ni som har läst tidigare än HT 2006 ska svara på både del A och del B (40p)

(2)

RESIT EXAM IN

DATASTRUKTURES OCH ALGORITHMS DVG B03

120612 08:15 – 13:15

__________________________________________________________________________________________

Course Director: Donald F. Ross

Help information: Appendix A – algorithms

Students who have studied the course as from (>=) Autumn Term 2006

Grading Levels:

Course: Max 60p, pass with special distinction 50p, pass with distinction 40p, pass 30p (of which a minimum 15p from the exam, 15p from the labs)

Exam: Max 30p, grade 5: 26p-30p, grade 4: 21p-25p, grade 3: 15p-20p Labs: Max 30p, grade 5: 26p-30p, grade 4: 21p-25p, grade 3: 15p-20p

Students who have studied the course before (<) Autumn Term 2006 Grading Levels:

Course: Max 60p, pass with special distinction 50p, pass with distinction 40p, pass 30p (of which a minimum 20p from the exam, 10p from the labs)

Exam: Max 40p, grade 5: 34p-40p, grade 4: 27p-33p, grade 3: 20p-26p Labs: Max 20p, grade 5: 18p-20p, grade 4: 14p-17p, grade 3: 10p-13p

Write legibly – read all questions carefully

*** NB ***

Students who have studied the course as from (>=) Autumn Term 2006 shall answer the questions in part A ONLY (30p)

Students who have studied the course before (<) Autumn Term 2006 shall

answer the questions in part A AND part B (40p)

(3)

DEL A – PART A (30p)

(1) Algoritmer - Algorithms

Ge (i) en kort beskrivning av vad algoritmen gör samt (ii) principerna bakom algoritmen för följande algoritmer:-

(a) Prims (b) Dijkstras (c) Warshalls

(d) Topologisksortering (e) Binärsökning

Total 10p Give (i) a short description of what each algorithm does as well as (ii)

(a) Prims (b) Dijkstras (c) Warshalls

(d) Topologisksortering (e) Binärsökning

Total 10p (2) Rekursion / Recursion

Beskriv ingående varför rekursion är så pass viktigt inom datastrukturer och algoritmer.

Använd gärna exempel.

Describe in detail why recursion is so important in data structures and algorithms. Please use examples.

5p (3) Träd / Tree

Diskutera ingående den abstrakta datastrukturen ”träd”. Diskutera hur ADT:en träd har utvecklats från ett generellt träd till ett AVL-träd samt B-träd. Vilka är varje träds egenskaper och applikationer?

Discuss in detail the abstract data structure ”tree”. Discuss the development of the ADT tree from the general tree to an AVL tree and B-tree. What are the properties and uses of

(4)

(4) HEAP

Tillämpa den givna algoritmen ”BUILD” i bilaga A till följande sekvens. Ange en tolkning av varje rad i själva algoritmen.

Apply the given BUILD algorithm in appendix A to the following sequence. Give an interpretation of each line in the algorithm.

5, 98, 87, 44, 3, 21, 42, 52, 63

(3p)

Förklara PRINCIPEN bakom ”lägga till” genom att lägga till värdet 99 till heapen ovan.

Explain the PRINCIPLE behind ”add” by adding 99 to the above heap.

(1p)

Förklara PRINCIPEN bakom ”ta bort” genom att ta bort värdet 87 från heapen ovan.

Explain the PRINCIPLE behind ”remove” by removing 87 from the above heap.

(1p)

Totalt / Total 5p

(5)

(5) Graf – Dijkstra + SPT

Tillämpa den givna Dijkstra_SPT algoritmen i bilaga A på den riktade 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).

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 och Dijkstras_SPT algoritm.

(2p) Apply the given Dijkstra_SPT algorithm in Appendix A to the directed graph

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

SPT = Shortest Path Tree - i.e. the shortest path from a given node to any other node.

Start with node ”a”.

Show each step in your calculation.

State *all* assumptions and show *all* calculations and *all* results at each step.

Draw each step in the construction of the SPT – i.e. show the nodes and all edges wich are added and subsequently removed.

(3p) Explain the principles behind Dijkstra’s and Dijkstra’s SPT algorithm.

(2p)

Totalt / Total 5p

(6)

DEL B / PART B (10p)

(6) Hashning

o Förklara ingående principerna bakom hashing (1p)

o Använd sekvensen 24, 64, 7, 5, 44, 36, 4, hashfunktion H(x) = x mod 10; samt kollisionshanteringsteknik ”Quadratic Probing” (kvadratsprobning) för att visa stegvis hur hashing fungerar.

(2p)

o Använd samma sekvens och hashfunktion H(x) som ovan samt kollisionshanteringsteknik ”Double Hashing” (dubbelhashing) med hashfunktion H2(x) = 7 – (x mod 7) som andra hashfunktion och visa varje steg i din beräkning.

(2p) Totalt 5p (7) Binärt träd

(a) Ge en rekursiv definition av ett binärt träd

(2p)

(b) Skriva pseudokod för att hitta ett värde i ett binärt sökträd som avspeglar definitionen i (a) – dvs visa hur definitionen bestämmer hur koden kommer att se ut.

(3p)

Totalt 5p

(7)

Bilaga A – Algoritmerna / Appendix A - Algorithms

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

(8)

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]

} }

}

References

Related documents

Kultur- och utbildningsnämndens kulturutskott beslutar 2022-04-28 § 32 att kultur- och utbildningsförvaltningen får i uppdrag att till kultur-och utbildningsnämnden 2022-05-12

Syftet har varit att granska hur omsorgsnämnden säkerställer att det finns ett kvalitetsledningssystem, både för äldreomsorgens in- satser enligt socialtjänstlagen och för

Vid omsorgsnämndens fortsatta behandling yrkar Christina Karlsson (S) dels bifall till förvaltningens förslag och dels att omsorgsnämnden antar riktlinjer för mathållning

”bakåt” länk newNode:s ”framåt” länk = nodeAfter newNode:s ”bakåt” länk = nodeBefore. nodeBefore:s ”framåt” länk =

Verifiera en lösning genom att kolla att det är ett träd, att alla noder är med, samt att varje gradtal är högst k. Detta görs enkelt på

¾ It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20072. Datastrukturer

Working from the inside out (functional thinking) b_findn(cs, G) gives a reference to the node in the AL; get_edges(N) then gives a reference to the edge list for this node and