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

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

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

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

Robin Ekman och Axel Torshage. Hjälpmedel: Miniräknare

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

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

Graphs (chapter 14) 1

where β R. Find the numbers β for which the operator är diagonalizable, and state a basis of eigenvectors for each of these β.

24 poäng. betyget Fx. framgår av. av papperet. varje blad.

Tentamen MMG610 Diskret Matematik, GU

Kontrollskrivning Introduktionskurs i Matematik HF0009 Datum: 25 aug Uppgift 1. (1p) Förenkla följande uttryck så långt som möjligt:

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

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

Lösningar Datastrukturer TDA

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

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

Kurs: HF1903 Matematik 1, Moment TEN2 (Analys) Datum: 21 augusti 2015 Skrivtid 8:15 12:15. Examinator: Armin Halilovic Undervisande lärare: Elias Said

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Styrteknik: Binära tal, talsystem och koder D3:1

TENTAMEN Kurs: HF1903 Matematik 1, Moment: TEN2 (analys) Datum: Lördag, 9 jan 2016 Skrivtid 13:00-17:00

Pre-Test 1: M0030M - Linear Algebra.

Föreläsning Datastrukturer (DAT036)

Tentamen i Matematik 2: M0030M.

Lösningsförslag: Tentamen i Modern Fysik, 5A1246,

Vid tentamen måste varje student legitimera sig (fotolegitimation). Om så inte sker kommer skrivningen inte att rättas.

Rastercell. Digital Rastrering. AM & FM Raster. Rastercell. AM & FM Raster. Sasan Gooran (VT 2007) Rastrering. Rastercell. Konventionellt, AM

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

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

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

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

Övning 3 - Tillämpad datalogi 2012

Preschool Kindergarten

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

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

x 2 2(x + 2), f(x) = by utilizing the guidance given by asymptotes and stationary points. γ : 8xy x 2 y 3 = 12 x + 3

Datastrukturer. föreläsning 9. Maps 1

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

Tentamen 2008_03_10. Tentamen Del 1

Föreläsning Datastrukturer (DAT036)

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

spänner upp ett underrum U till R 4. Bestäm alla par av tal (r, s) för vilka vektorn (r 3, 1 r, 3, 22 3r + s) tillhör U. Bestäm även en bas i U.

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Calculate check digits according to the modulus-11 method

Tentamen Datastrukturer (DAT036/DAT037/DIT960)


Föreläsning 7 Datastrukturer (DAT037)

General comment the exam was not well done at all. The usual faults were to blame

Om oss DET PERFEKTA KOMPLEMENTET THE PERFECT COMPLETION 04 EN BINZ ÄR PRECIS SÅ BRA SOM DU FÖRVÄNTAR DIG A BINZ IS JUST AS GOOD AS YOU THINK 05


Föreläsning Datastrukturer (DAT037)

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

State Examinations Commission

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

Referensexemplar. Vi önskar er Lycka till! 1. Välkommen till Frö-Retaget

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

Föreläsning 4 Datastrukturer (DAT037)

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Grafisk teknik. Sasan Gooran (HT 2006)

Föreläsning Datastrukturer (DAT036)

(D1.1) 1. (3p) Bestäm ekvationer i ett xyz-koordinatsystem för planet som innehåller punkterna

Support Manual HoistLocatel Electronic Locks

Tentamen Datastrukturer (DAT036)

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Module 6: Integrals and applications

Webbregistrering pa kurs och termin

Isometries of the plane

TENTAMEN Kurs: HF1903 Matematik 1, moment TEN2 (analys) Datum: 22 dec 2016 Skrivtid 8:00-12:00

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik

Kapitel 6, 7, o 8: ARP Vägval Från användare till användare. Jens A Andersson (Maria Kihl)

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

Räkneövningar populationsstruktur, inavel, effektiv populationsstorlek, pedigree-analys - med svar

Symboliska konstanter const

Uppskatta ordersärkostnader för tillverkningsartiklar

Undervisande lärare: Fredrik Bergholm, Elias Said, Jonas Stenholm Examinator: Armin Halilovic

Module 1: Functions, Limits, Continuity

Tillämpad programmering

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Tentamen i Matematik 1 HF1901 (6H2901) 8 juni 2009 Tid:

Ett hållbart boende A sustainable living. Mikael Hassel. Handledare/ Supervisor. Examiner. Katarina Lundeberg/Fredric Benesch

Ekosteg. En simulering om energi och klimat

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

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

Trädstrukturer och grafer

247 Hemsjukvårdsinsats för boende i annan kommun

Föreläsning Datastrukturer (DAT036)

Från användare till användare. (Maria Kihl)

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Vakuumpumpar/-ejektorer Large

Föreläsning 6 Datastrukturer (DAT037)

Transkript:

FACIT TILL OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 140818 kl. 08:15 13:15 Ansvarig Lärar: Donald F. Ross Hjälpmdl: Inga. Algoritmrna finns i d rspktiv uppgiftrna. Btygsgräns: *** OBS *** Kurs: Tntamn: Labbarna: Max 60p, Md bröm godkänd 50p, Ick utan bröm godkänd 40p, Godkänd 30p (varav minimum 15p från tntamn, 15p från labbarna) Max 30p, btyg 5: 26p-30p, btyg 4: 21p-25p, btyg 3: 15p-20p Max 30p, btyg 5: 26p-30p, btyg 4: 21p-25p, btyg 3: 15p-20p SKRIV TYDLIGT LÄS UPPGIFTERNA NOGGRANT Ang alla antagandn. DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 1 av 14

(1) G tt kortfattat svar till följand uppgiftr ((a)-(j)). (a) Vad är big-o för n funktion som skrivr ut n adjacncy matrix? Varför? O(n 2 ) matrix is 2D which implis 2 nstd for loops to display th contnt. (b) Vad gör Dijkstras algorithm? Calculats th lngth of th shortst PATH btwn a givn nod (th start nod) and th rmaining nods in th graph. (c) Vad gör Floyds algorithm? All pairs shortst path algorithm. Calculats th lngth of th shortst PATH btwn ach pair of nods ((a, b) a!= b)) in th graph. (d) Vad gör Warshalls algorithm? Calculats th transitiv closur of th graph, i.. if thr is a PATH btwn any pair of nods (a, b). () Vad gör Topologisk sortring? Givn a DAG as input, producs a squnc which rprsnts a partial ordring of th nods in th DAG (Dirctd Acyclic Graph). (f) Vad är n hap? A data structur, which may b rprsntd as an array or as a (binary) tr with th proprty that th parnt nod has a valu which is gratr than (or lss than) its childrn. Is usd to implmnt a priority quu (PQ) (g) Vad är fördln md hashning? Th add and find oprations ar O(1). (h) Vad är n rkursiv funktion? A function which calls itslf usually in a conditional call othrwis th function will disappar in an ndlss squnc of rcursiv calls. (i) Vad är tt AVL-träd? A BST, Binary Sarch Tr, with an addd constraint that th hight of th lft and right sub-trs may not diffr by mor than 1. (j) Vad är dubbl hashning? A conflict rsolution tchniqu whr th f(i) function is a scond hash function. Giv an xampl. Totalt 5p DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 2 av 14

(2) Hap Diskutra ingånd hur kodn till hap oprationr (s Bilaga A) fungrar? Använd skvnsn, 13, 18, 33, 72, 9, 11, 44, 27, 15, 66 som tt xmpl. Anta att dt största värdt hamnar i rotn. 5p Apply hapify to th abov squnc of valus. Solution 1 calculat th valus using th algorithm Input:, 13, 18, 33, 72, 9, 11, 44, 27, 15, 66 Array siz = 11 NB: i, l, r and largst ar positions in th array and not valus Exrcis: draw th corrsponding trs for ach instanc of th array. stp 1: for i = 5 downto 1 do Hapify(A, i) th call to Hapify(A, 5) i = 5 A =, 13, 18, 33, 72, 9, 11, 44, 27, 15, 66 i = 5; (valu 72) l = 10; (valu 15) r = 11; (valu 66) largst = 5; (valu 72) largst = 5 (valu 72) largst = i hnc no swap giving, 13, 18, 33, 72, 9, 11, 44, 27, 15, 66 th call to Hapify(A, 4) i = 4 A =, 13, 18, 33, 72, 9, 11, 44, 27, 15, 66 i = 4; (valu 33) l = 8; (valu 44) r = 9; (valu 27) largst = 8; (valu 44) largst = 8 (valu 44) largst!= i hnc swap A[4] and A[8] giving, 13, 18, 44, 72, 9, 11, 33, 27, 15, 66 Hapify(A, 8) has no ffct on A (A[8] is a laf nod) th call to Hapify(A, 3) i = 3 A =, 13, 18, 44, 72, 9, 11, 33, 27, 15, 66 i = 3; (valu 18) l = 6; (valu 9) r = 7; (valu 11) largst = 3; (valu 18) largst = 3 (valu 44) largst = i hnc no swap giving, 13, 18, 44, 72, 9, 11, 33, 27, 15, 66 th call to Hapify(A, 2) i = 2 A =, 13, 18, 44, 72, 9, 11, 33, 27, 15, 66 i = 2; (valu 13) l = 4; (valu 44) r = 5; (valu 72) largst = 5; (valu 72) largst = 5 (valu 72) largst!= i hnc swap A[2] and A[5] giving, 72, 18, 44, 13, 9, 11, 33, 27, 15, 66 DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 3 av 14

Hapify(A, 5) is a rcursiv call rorganiz th sub-tr th call to Hapify(A, 1) i = 5 A =, 72, 18, 44, 13, 9, 11, 33, 27, 15, 66 i = 5; (valu 13) l = 10; (valu 15) r = 11; (valu 66) largst = 11; (valu 66) largst = 11 (valu 66) largst!= i hnc swap A[11] and A[5] giving, 72, 18, 44, 66, 9, 11, 33, 27, 15, 13 Hapify(A, 11) has no ffct on A (A[11] is a laf nod) i = 1 A =, 72, 18, 44, 66, 9, 11, 33, 27, 15, 13 i = 1; (valu ) l = 2; (valu 72) r = 3; (valu 18) largst = 2; (valu 72) largst = 2 (valu 72) largst!= i hnc swap A[1] and A[2] giving 72,, 18, 44, 66, 9, 11, 33, 27, 15, 13 Hapify(A, 2) is a rcursiv call rorganiz th sub-tr i = 2 A = 72,, 18, 44, 66, 9, 11, 33, 27, 15, 13 i = 2; (valu 13) l = 4; (valu 44) r = 5; (valu 66) largst = 5; (valu 66) largst = 5 (valu 66) largst!= i hnc swap A[2] and A[5] giving 72, 66, 18, 44,, 9, 11, 33, 27, 15, 13 Hapify(A, 5) is a rcursiv call rorganiz th NEXT sub-tr i = 5 A = 72, 66, 18, 44,, 9, 11, 33, 27, 15, 13 i = 5; (valu ) l = 10; (valu 15) r =11; (valu 13) largst = 5; (valu ) largst = 5 (valu ) largst = i hnc no swap giving 72, 66, 18, 44,, 9, 11, 33, 27, 15, 13 Rturn from th 2 lvls of rcursion and th algorithm is finishd. Explain th basic principls bhind hapify Itrat ovr all th PARENTS i.. lowr(n/2) Compar th parnt LC and RC and mov th largst valu to th parnt Rpat th procss rcursivly for th LC/RC if a swap took plac DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 4 av 14

Solution 2 pictorial xplanation 13 18 33 72 9 11 44 27 15 66 13 18 33 72 9 11 44 27 15 66 13 18 33 72 9 11 44 27 15 66 13 18 44 72 9 11 33 27 15 66 13 18 44 72 9 11 33 27 15 66 13 18 44 72 9 11 33 27 15 66 13 18 44 72 9 11 33 27 15 66 72 18 44 66 9 11 33 27 15 13 72 18 44 66 9 11 33 27 15 13 72 66 18 44 9 11 33 27 15 13 DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 5 av 14

Rmov: Swap th lmnt to b rmovd with th last lmnt in th hap and thn rmov th lmnt. R-hapify th rsultant hap. (S abov). You may us an xampl. Exampl: 72, 66, 18, 44,, 9, 11, 33, 27, 15, 13 dlt 72 hapify 13, 66, 18, 44,, 9, 11, 33, 27, 15, 13 (s abov for hapify) DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 6 av 14

(3) Rkursion Skriv (psudo)kod till n rkursiv funktion (llr två rkursiva funktionr) för att räkna fram antalt kantr (dgs) i n graf. Ang alla antagand. 5p Assumptions: Structur: typdf struct nodlm * nodrf; typdf struct nodlm { char nnam; int ninfo; nodrf dgs; nodrf nods; nodlm; + corrsponding gt/st functions pr attribut and had/tail oprations for both th nod list (nods) and th dg list (dgs). G is a rfrnc to th graph, th is_mpty(r) function is dfind. static int b_ndgs(nodrf E) { rturn is_mpty(e)? 0 : 1 + b_ndgs(tail(e)); static int b_siz(nodrf G) { rturn is_mpty(g)? 0 : b_ndgs(gt_dgs(nhad(g))) + b_siz(ntail(g)); DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 7 av 14

(4) Grafoprationr En graf kan bskrivas som n virtull (llr abstrakt) maskin. I graflaborationn, filn bgraph.h är faktiskt n bskrivning av dnna virtull maskin. Innhållt gs ndan. /**************************************************************************/ /* function prototyps - oprations on th Graph (a virtual machin) */ /**************************************************************************/ /* Graph = (V, E) whr V is a st of vrtics/nods and E a st of dgs */ /* Thr ar a limitd numbr of oprations (9) which can b applid to G */ /**************************************************************************/ void b_display_adjlist(); /* display G as an adjacncy list */ void b_display_adjmatrix(); /* display G as an adjacncy matrix*/ void b_addnod(char c); /* add a vrtx (nod) to G */ void b_rmnod(char c); /* rmov a vrtx (nod) from G */ void b_adddg(char cs, char cd, int v);/* add an dg (with wight) to G*/ void b_rmdg(char cs, char cd); /* rmov an dg from G */ int b_is_nmmbr(char c); /* is a nod a mmbr of G? */ int b_is_mmbr(char cs, char cd); /* is an dg a mmbr of G? */ int b_siz(); /* th numbr of nods in G */ /**************************************************************************/ I front-nd:n kan man spcifira förvillkor (prconditions) till varj opration ovan md hjälp av n llr flra av dssa 9 funktionr. Skriv (psudo)kod till föjland front-nd-funktionr på så sätt att änvändarn int bhövr mäta in mr information än absolut nödvändigt. Anta att dt finns tt visst antal användargränssnittfunktionr som kan ta mot information samt skicka tillbaka informationsmddland. (i) f_display_adjlist() // display adjacncy list 1p (ii) f_rmnod() // rmov nod 1p (iii) f_rmdg() // rmov dg 3p Totalt 5p (i) f_display_adjlist() void f_display_adjlist() { if (b_siz()==0) ui_putgraphempty(); ls { ui_puttitllist(); b_display_adjlist(); DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 8 av 14

(ii) f_rmnod() void f_rmnod() { char c; if (b_siz()==0) ui_putgraphempty(); ls { c = ui_gtnod(); if (!b_is_nmmbr(c)) ui_putnonoderror(c); ls b_rmnod(c); (iii) f_rmdg() void f_rmdg() { char cs, cd; if (b_siz()==0) ui_putgraphempty(); ls { cs = ui_gtnod(); if (!b_is_nmmbr(cs)) ui_putnonoderror(cs); ls { cd = ui_gtnod(); if (!b_is_nmmbr(cd)) ui_putnonoderror(cd); ls if (!b_is_mmbr(cs, cd)) ui_putnoedgerror(cs, cd); ls { b_rmdg(cs, cd); if (ui_ismodu()) { if (!b_is_mmbr(cd, cs)) ui_putnoedgerror(cs, cd); ls b_rmdg(cd, cs); DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 9 av 14

(5) Labbkod (a) I graflabbn har n studnt skrivit följand kod för att ta bort n kant (dg) från an adjacncy lista. Förklara ingånd hur kodn fungrar. Använd gärna xmpl. Ang alla antagand. Vilka är förutsättningarna för att kodn ska fungra? void rm(char cs, char cd) { st_dgs(b_findn(cs, G), b_rm(cd, gt_dgs(b_findn(cs, G)))); 2p Assumptions: (i) G is a rfrnc to th graph, (ii) th graph is rprsntd as an adjacncy list (AL) (iii) (cs, cd) dfin th dg. Working from th insid out (functional thinking) b_findn(cs, G) givs a rfrnc to th nod in th AL; gt_dgs(n) thn givs a rfrnc to th dg list for this nod and b_rm(, Elist) rmovs cd from this dg list and rturns a (nw) rfrnc to th dg list which is rconnctd to th dg list of th nod cs by st_dgs(n, Elist) (b) I trädlabbn har n studnt skrivit kod för att söka ftr tt värd i tt BST (binärt sökträd). Sdan har studntn kommit på att dnna kod kund lätt anpassas för att söka ftr tt värd i tt kompltt träd. Dssa funktionr finns ndan. Vad har studntn skrivit för xxx och yyy? Ang alla antagand. static int b_findb(trrf T, int v) { rturn is_mpty(t)? 0 : v < gt_valu(nod(t))? b_findb(lc(t), v) : v > gt_valu(nod(t))? b_findb(rc(t), v) : 1; static int b_findc(trrf T, int v) { rturn is_mpty(t)? 0 : xxx? 1 xxx v == gt_valu(nod(t)) : yyy; yyy b_findc(lc(t), v) b_findc(rc(t), v); 1p (c) Skriv (psudo)kod för att lägga till tt lmnt i tt binärt träd. Ang alla antagand. 2p T: Add(T,v) { if IsEmpty(T) thn rturn v if IsEmpty(v) thn rturn T if valu(v) < valu(t) thn rturn cons(add(lft(t), v), T, right(t)) if valu(v) > valu(t) thn rturn cons(lft(t), T, Add(right(T), v)) rturn T Totalt 5p DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 10 av 14

(6) Dijkstra + SPT (Shortst Path Tr) Tillämpa dn givna Dijkstra_SPT algoritmn (ndan) på dn riktad grafn, (a, b, 12), (a, d, 11), (a,, 9), (b, c, 7), (c,, 5), (d, c, 3), (d,, 1) SPT = Shortst Path Tr - dvs kortast väg trädt (KVT) från n nod till alla d andra. Börja md nod a. Visa varj stg i dina bräkningar. Ang *alla* antagandn och visa *alla* bräkningar och mllanrsultat Rita varj stg i konstruktionn av SPT:t dvs visa till och md d nodr och kantr som läggs till mn sdan tas bort. (3p) Förklara principrna bakom Dijkstras_SPT algoritm. (2p) Totalt 5p Dijkstras algoritm md n utökning för SPT Dijkstra_SPT ( a ) { S = {a for (i in V-S) { D[i] = C[a, i] --- initialis D - (dg cost) E[i] = a --- initialis E - SPT (dg) L[i] = C[a, i] --- initialis L - SPT (cost) for (i in 1..( V -1)) { choos w in V-S such that D[w] is a minimum S = S + {w forach ( 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] a b c d a 12 11 9 b 7 c 5 d 3 1 DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 11 av 14

Initialis D, E, L D: 12 11 9 E: a a a a L: 12 11 9 w is (min valu in D) S = {a, V-S = {b,c,d v = b min (D[b], D[]+C (,b)) min(12, 9+ ) no chang v = c min (D[c], D[]+C (,c)) min(, 9+ ) no chang v = d min (D[d], D[]+C (,d)) min(11, 9+ ) no chang D: 12 11 9 E: a a a a L: 12 11 9 b 12 11 a 7 d 3 1 9 c 5 ---------------------------------------------------------------------------------------------------------------- D: 12 11 9 E: a a a a L: 12 11 9 w is d (min valu in D) S = {a,d, V-S = {b, c v = b min (D[b], D[d]+C (d,b)) min(12, 11+ ) no chang v = c min (D[c], D[d]+C (d,c)) min(, 11+3) chang a-d-c 14 D: 12 14 11 9 E: a d a a L: 12 3 11 9 b 12 11 a 7 d 3 1 9 c 5 DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 12 av 14

---------------------------------------------------------------------------------------------------------------- D: 12 14 11 9 E: a d a a L: 12 3 11 9 w is b (min valu in D) S = {a,d,b, V-S = {c v = c min (D[c], D[b]+C (b,c)) min(14, 12+7) no chang D: 12 14 11 9 E: a d a a L: 12 3 11 9 b 12 11 a 7 d 9 3 1 ---------------------------------------------------------------------------------------------------------------- This is th final rsult. Costs: a b (12), a d c (14), a d (11), a (9) SPT dgs: a b (12), d c (3), a d (11), a (9) c 5 Principl marks for a good xplanation! b 12 a b 12 a b 12 a b 12 a 11 11 11 11 7 d 9 7 d 9 7 d 9 d 9 3 1 3 1 3 1 7 3 1 c c 5 5 5 5 c c DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 13 av 14

Bilaga A Hap Algoritmr Hapify(A, i) l = Lft(i) r = Right(i) if l <= A.siz and A[l] > A[i] thn largst = l ls largst = i if r <= A.siz and A[r] > A[largst] thn largst = r if largst!= i thn swap(a[i], A[largst]) Hapify(A, largst) nd if nd Hapify Build(A) for i = [A.siz / 2] downto 1 do Hapify(A, i) nd Build Rmov (H, r) lt A = H.array A[r] = A[A.siz] A.siz-- Hapify(A, r) nd Rmov Add (H, v) lt A = H.array A.siz++ i = A.siz whil i > 1 and A[Parnt(i)] < v do A[i] = A[Parnt(i)] i = Parnt(i) nd whil A[i] = v nd Add DFR Datastrukturr och algoritmr, DAV B03, omtntamn 140818 - facit Sidan 14 av 14