Datastrukturer och algoritmer Frelsning 16 Datastrukturer och algoritmer

  • Slides: 51
Download presentation
Datastrukturer och algoritmer Föreläsning 16

Datastrukturer och algoritmer Föreläsning 16

Datastrukturer och algoritmer Innehåll 2 u Snabbrepetition u Exempeltentamen u Kursvärdering

Datastrukturer och algoritmer Innehåll 2 u Snabbrepetition u Exempeltentamen u Kursvärdering

Datastrukturer och algoritmer Mina målsättningar u Rolig och viktig kurs u Bli en bättre

Datastrukturer och algoritmer Mina målsättningar u Rolig och viktig kurs u Bli en bättre programmerare och inse att man blivit det Ø Känna till kända lösningar på typiska problem Ø Konstruera robusta och korrekta program Ø Konstruera och beskriva algoritmer och datatyper Ø Planera sitt arbete så att projekt blir klar i tid u Förstå Ø Tid och rum u Bli 3 komplexitetsbegreppet bättre på att kommunicera resultat

Datastrukturer och algoritmer Innehållsöversikt 4 u Algoritmer Ø Tids- och rumsfrågor Ø Designprinciper u

Datastrukturer och algoritmer Innehållsöversikt 4 u Algoritmer Ø Tids- och rumsfrågor Ø Designprinciper u Abstrakta u Sökning u Sortering datatyper

Datastrukturer och algoritmer Innehållsöversikt – Algoritmer 5 u Tids och rumsfrågor Ø Exekvering, implementering,

Datastrukturer och algoritmer Innehållsöversikt – Algoritmer 5 u Tids och rumsfrågor Ø Exekvering, implementering, underhåll Ø Tid vs rumskomplexitet Ø Analys av exekveringstider o o o Olika sätt, vad de står för och +/– Experimentell – Asymptotisk T(n) för en alg => O(n) – Primitiva operationer – Okulärbesiktning Att beskriva algoritmer

Datastrukturer och algoritmer Innehållsöversikt – Algoritmer 6 u Designprinciper Ø Idéer till 4 olika

Datastrukturer och algoritmer Innehållsöversikt – Algoritmer 6 u Designprinciper Ø Idéer till 4 olika algoritmtyper o o Brute force, D&C, Greedy och dynamisk programmering Exempel på varje +/Typiska användningar

Datastrukturer och algoritmer Innehållsöversikt – Abstrakta Datatyper (ADT) 7 u u Stack, Kö, Listor,

Datastrukturer och algoritmer Innehållsöversikt – Abstrakta Datatyper (ADT) 7 u u Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mm Beskrivningssätt Ø Organisation, Modell, Gränsytan (formell, informell) u Grundbegrepp Ø Vad är en organisation, sorterad ADT, mm Ø Primär vs. sekundär struktur Ø Absolut vs. relativ komplexitet u Sätt att implementera Ø +/-, när var hur Ø Komplexitet för de viktigaste operationerna u Vart hittar vi ADT typiskt Ø Hur olika ADT hänger ihop med varandra Ø Algoritmer på ADT

Datastrukturer och algoritmer Innehållsöversikt – Sökning (traversering) 8 u Vad är traversering u Olika

Datastrukturer och algoritmer Innehållsöversikt – Sökning (traversering) 8 u Vad är traversering u Olika metoder för sökning i sekvenser Ø Linjär & Binär Ø +/Ø Ställer de några krav på implementationen av ADTn?

Datastrukturer och algoritmer Innehållsöversikt – Sortering 9 u Varför sorterar vi? Ø Sorterad ADT

Datastrukturer och algoritmer Innehållsöversikt – Sortering 9 u Varför sorterar vi? Ø Sorterad ADT vs sortering av data Ø Sökningen blir snabbare…ibland u Hur kan vi sortera (olika former) Ø +/Ø När passar dom? Ø Stabil sortering u 5 -6 olika algoritmer, analys

Datastrukturer och algoritmer Förväntade studieresultat (1) 10 u Efter avslutad kurs ska studenten kunna:

Datastrukturer och algoritmer Förväntade studieresultat (1) 10 u Efter avslutad kurs ska studenten kunna: Ø redogöra för grundläggande begrepp relaterade till datastrukturer och algoritmer Ø redogöra för organisation och specifikation för grundläggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabell Ø redogöra för grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper Ø välja lämpliga datatyper och algoritmer för ett givet problem Ø välja och utföra lämpliga implementationer (konstruktioner) av de valda datatyperna och algoritmerna

Datastrukturer och algoritmer Förväntade studieresultat (2) 11 u Efter avslutad kurs ska studenten kunna:

Datastrukturer och algoritmer Förväntade studieresultat (2) 11 u Efter avslutad kurs ska studenten kunna: Ø analysera enklare algoritmer praktiskt och teoretiskt med avseende på prestanda Ø använda sig av grundläggande problemlösningsstrategier (som till exempel divide and conquer, brute force, greedy och dynamisk programmering) på nya problem Ø tillämpa de teoretiska kunskaperna och objektorienteringsparadigmen praktiskt på ett programmeringsprojekt, dvs. konstruera en komplett programvara inklusive dokumentation (med systembeskrivning och webbaserad API) utifrån givna riktlinjer Ø utforma en enkel arbetsplan för ett programmeringsprojekt som utförs i grupp samt dokumentera, följa upp och skriftligt utvärdera den gjorda planeringen.

Datastrukturer och algoritmer Tentan Ska kontrollera att de förväntade studieresultaten uppfyllts. u Definitionsfrågor u

Datastrukturer och algoritmer Tentan Ska kontrollera att de förväntade studieresultaten uppfyllts. u Definitionsfrågor u Ø Begrepp Ø Definiera, beskriv, ge exempel, . . . u Ø Visa hur en algoritm fungerar Ø Vilken datatyp passar bäst för detta problem, varför? Ø Jämför, analysera, förklara, . . . u 12 Förståelsefrågor Resultaten kommer att skickas via mail (@cs. umu. se)

Datastrukturer och algoritmer Exempeltenta 070531 13 u Enbart skissartade svar Ø dessa svar skulle

Datastrukturer och algoritmer Exempeltenta 070531 13 u Enbart skissartade svar Ø dessa svar skulle inte ge full poäng på en tentamen! u Tanken är att man ska få en hum vad som krävs och se hur vi tänkte när vi rättade. u Utöver kriterierna för varje uppgift gör man som rättare alltid en helhetsbedömning (av varje enskild uppgift och tentan i stort). u 40 p fördelat på 7 uppgifter

Datastrukturer och algoritmer Uppgift 1 – sortering (1 + 1 + 1 = 4

Datastrukturer och algoritmer Uppgift 1 – sortering (1 + 1 + 1 = 4 p) 14 a) b) c) d) Vad innebär det att en sorteringsalgoritm är stabil? Förklara med ett exempel på en sekvens av värden före och efter sortering. Ange två sorteringsalgoritmer som vi gått igenom på kursen som är stabila. Vad innebär det att en sorteringsalgoritm är ”in-place”? Ange två sorteringsalgoritmer som vi gått igenom på kursen som är ”in-place”.

Datastrukturer och algoritmer a) 15 Vad innebär det att en sorteringsalgoritm är stabil? Förklara

Datastrukturer och algoritmer a) 15 Vad innebär det att en sorteringsalgoritm är stabil? Förklara med ett exempel på en sekvens av värden före och efter sortering. Ø Den inbördes relationen mellan två objekt med samma nyckel bibehålls vid sortering. [(0, L), (2, C), (5, G), (8, A), (10, G) ] => [(8, A), (2, C), (5, G) , (10, G), (0, L)] b) Ange två sorteringsalgoritmer som vi gått igenom på kursen som är stabila. Ø Instickssortering, bubble sort, mergesort, bucket sort, radix sort.

Datastrukturer och algoritmer c) 16 Vad innebär det att en sorteringsalgoritm är ”in-place”? Ø

Datastrukturer och algoritmer c) 16 Vad innebär det att en sorteringsalgoritm är ”in-place”? Ø ” Konstant andel extra minne (motsv elementens storlek)”. Ø Inget extra minne som beror av n behövs för att kunna sortera utan det räcker med ett minne motsvarande ett element. d) Ange två sorteringsalgoritmer som vi gått igenom på kursen som är ”in-place”. Ø Instickssortering, selection sort, bubble sort, quick-sort, (mergesort inte så vanligt!) radix exchange sort (MSD radix sort)

Datastrukturer och algoritmer Uppgift 2 – grafer (2 + 2 = 4 p) 17

Datastrukturer och algoritmer Uppgift 2 – grafer (2 + 2 = 4 p) 17 Berit Byggare håller på att bygga en sommarstuga. Hon har delat in projektet i följande uppgifter: 1) skapa grunden 7) lägga golven 2) bygga ytterväggar 8) sätta in dörrar 3) bygga innerväggar 9) sätta in fönster 4) bygga skorstenen 10) lägga takplattor 5) bygga takstolarna 11) isolera ytterväggarna 6) måla innerväggar 12) flytta in. Det finns vissa restriktioner kring ordningen hon kan utföra uppgifterna u Grunden måste vara skapad innan man kan bygga ytterväggar och skorsten. u För att kunna bygga takstolarna måste Berit först bygga ytterväggar och skorsten. u Innerväggarna ska byggas senare än ytterväggarna. u Fönstren sätts in efter det att ytterväggarna är byggda. u Dörrarna sätts in efter det att innerväggarna är byggda. u Golvet kan läggas först när takplattorna är lagda och innerväggarna är byggda. u Berit kan lägga takplattorna först efter takstolarna är byggda. u Isoleringen av ytterväggarna kan göras först när fönstren och dörrarna är insatta. u Innerväggarna kan målas först när golvet är klart. u Berit kommer inte att flytta in förrän innerväggarna är målade och ytterväggarna isolerade.

Datastrukturer och algoritmer Uppgift 2 – grafer (2 + 2 = 4 p) 18

Datastrukturer och algoritmer Uppgift 2 – grafer (2 + 2 = 4 p) 18 a) representera restriktionerna ovan som en riktad graf där noderna representerar uppgifter och kanterna deras ordning. Grafen får inte introducera ytterligare direkta restriktioner än de som nämns ovan. (Använd de givna numren för att numrera noderna. )

Datastrukturer och algoritmer 19 • Grunden måste vara skapad innan man kan bygga ytterväggar

Datastrukturer och algoritmer 19 • Grunden måste vara skapad innan man kan bygga ytterväggar och skorsten. • För att kunna bygga takstolarna måste Berit först bygga ytterväggar och skorsten. • Innerväggarna ska byggas senare än ytterväggarna. • Fönstren sätts in efter det att ytterväggarna är byggda. • Dörrarna sätts in efter det att innerväggarna är byggda. • Golvet kan läggas först när takplattorna är lagda och innerväggarna är byggda. • Berit kan lägga takplattorna först efter takstolarna är byggda. • Isoleringen av ytterväggarna kan göras först när fönstren och dörrarna är insatta. • Innerväggarna kan målas först när golvet är klart. • Berit kommer inte att flytta in förrän innerväggarna är målade och ytterväggarna isolerade. 4 10 5 2 6 8 3 1 7 9 11 12

Datastrukturer och algoritmer Uppgift 2 – grafer (2 + 2 = 4 p) 20

Datastrukturer och algoritmer Uppgift 2 – grafer (2 + 2 = 4 p) 20 Visa i vilken ordning noderna besöks om man startar i nod (1) och gör en djupet-först sökning där man, om man har ett val, alltid väljer noden med lägst nummer. b) 4 10 5 2 6 8 3 1 7 9 1, 2, 3, 7, 6, 12, 8, 11, 5, 10, 9, 4 11 12

Datastrukturer och algoritmer Uppgift 3 – algoritmer och heap (4 p) 21 När meddelanden

Datastrukturer och algoritmer Uppgift 3 – algoritmer och heap (4 p) 21 När meddelanden skickas mellan två datorer via ett nätverk händer det att de kommer fram i fel ordning d. v. s. om ett meddelande m 1 sänds före ett annat meddelande m 2 så kan det inträffa att m 2 kommer fram före m 1. Detta beror på att meddelandena sänds via routrar som håller reda hur meddelandena skall skickas för att komma snabbast fram. Denna information uppdateras dynamiskt eftersom datorer tillkommer och utgår ur nätverket. Det kan då inträffa att när m 2 sänds har en bättre väg dykt upp och därför kommer m 2 fram tidigare. I många tillämpningar är det viktigt att meddelanden behandlas (t ex visas) i den ordning de sänts. Om de kommer fram i fel ordning måste mottagande dator se till att spara undan meddelanden i avvaktan på att det meddelande man förväntade sig kommer.

Datastrukturer och algoritmer Uppgift 3 – algoritmer och heap (4 p) 22 Exempel Om

Datastrukturer och algoritmer Uppgift 3 – algoritmer och heap (4 p) 22 Exempel Om vi tänker oss att meddelandena är numrerade så förväntar man sig först ett meddelande med nummer 1. Om vi antar att meddelandena anländer till datorn i följande ordning: 2, 3, 5, 1, 4 så kommer 2, 3 och 5 att sparas undan vid sin ankomst (eftersom man väntar meddelande 1). När meddelande 1 kommer kan det behandlas och man behandlar då även så många meddelanden som möjligt i sekvens av dem man sparat undan; i detta fall meddelandena 2 och 3. Man förväntar sig därefter meddelande 4. När detta kommer kan det behandlas och det sparade meddelandet med nummer 5 kan sedan också behandlas.

Datastrukturer och algoritmer Uppgift 3 – algoritmer och heap (4 p) 23 Uppgift För

Datastrukturer och algoritmer Uppgift 3 – algoritmer och heap (4 p) 23 Uppgift För att spara undan meddelanden som inte kan behandlas direkt vid ankomst kan tex en min-heap (dvs en heap som alltid har det minsta värdet i roten) användas. Prioriteten (nyckeln) för elementen i heapen är meddelandets nummer. Visa hur heapen kommer att se ut efter varje mottaget meddelande om följande sekvens mottages: 7, 2, 6, 3, 1, 5, 4. Observera att du skall följa beskrivningen i exemplet ovan dvs. när ett meddelande anländer läggs det i vissa fall in i heapen och i andra fall tar man bort ett antal meddelanden ur heapen. Det ska tydligt framgå vad som sker när element sätts in och tas bort ur heapen.

Meddelande Heapens utseende 7 Vad händer? Vi förväntar oss ett meddelande märkt 1. Stoppa

Meddelande Heapens utseende 7 Vad händer? Vi förväntar oss ett meddelande märkt 1. Stoppa in 7 i heapen. 7 Vi förväntar oss ett meddelande märkt 1. Stoppa in 2 i heapen. Stoppa in elementet på den första ”lediga” platsen i heapen. Bubbla uppåt tills det hamnat rätt 2 7 2 2 7 6 2 7 3 6 2 7 24 Vi förväntar oss ett meddelande märkt 1. Stoppa in 6 i heapen. Stoppa först in elementet på den första ”lediga” platsen i heapen. Det hamnade rätt direkt! 3 2 3 6 7 6 Vi förväntar oss ett meddelande märkt 1. Stoppa in 3 i heapen. Stoppa först in elementet på den första ”lediga” platsen i heapen. Bubbla uppåt tills det hamnat rätt.

1 2 3 6 7 3 7 6 6 25 7 5 Nu fick

1 2 3 6 7 3 7 6 6 25 7 5 Nu fick vi meddelande 1. Behandla 3 det. Sen ser vi att meddelande 2 finns lagrat. Ta ut 7 6 det ur heapen och behandla det. Ta först bort 2 ut heapen och ersätt det med elementet på ”sista plats” (7). Låt detta sedan bubbla 6 plats. nedåt på rätt Vi ser att även 3 finns på heapen. Ta ut det ur 7 heapen och behandla det. Ta först bort 3 ut heapen och ersätt det med elementet på 5 ”sista plats” (6). Låt detta sedan bubbla 7 nedåt på 6 rätt plats. (Det är redan på rätt

4 5 7 6 6 7 Nu kommer meddelande 4. Behandla det. Vi ser

4 5 7 6 6 7 Nu kommer meddelande 4. Behandla det. Vi ser att meddelande 5 finns på heapen, ta bort och behandla det. Ta först bort 5 ut 6 och ersätt det heapen med elementet på ”sista plats” (6). Låt 7 detta sedan bubbla nedåt på rätt plats. (Det är redan på rätt plats!) Vi ser meddelande 6 på heapen, tar bort 7 och behandlar. Till sist tar vi bort meddelande 7 ur heapen och behandlar det. Nu är heapen tom och inga fler meddelanden dyker upp. Uppgiften är klar. 26

Datastrukturer och algoritmer Uppgift 4 – komplexitetsanalys (2 + 2 = 6 p) 27

Datastrukturer och algoritmer Uppgift 4 – komplexitetsanalys (2 + 2 = 6 p) 27 Betrakta följande algoritm: for i = 1 to n for j = 1 to i do. Something(n) end a) b) c) Hur många gånger (exakt) anropas do. Something (Uttryck ditt svar med avseende på n)? Om do. Something har en komplexitet O(nlog(n)) där n är argumentet till funktionen. Vad har då algoritmen ovan som helhet för komplexitet? (Du behöver inte ange c och n 0. ) Ordo-begreppet säger något om en funktions asymptotiska beteende. I analys av algoritmer används begreppet för att tala om hur antalet operationer växer med storleken på indata. På vilket sätt kan ordobegreppet vara ett missledande mått för hur snabb en algoritm är?

Datastrukturer och algoritmer Betrakta följande algoritm: for i = 1 to n for j

Datastrukturer och algoritmer Betrakta följande algoritm: for i = 1 to n for j = 1 to i do. Something(n) end a) Hur många gånger (exakt) anropas do. Something (Uttryck ditt svar med avseende på n)? 1. Borde ha funderat på detta i OU 4! 2. Man kan prova sig fram, om n = 5 så ser man att loopen körs 1+2+3+4+5 = 15 ggr. 3. Provar man med lite olika siffror så inser man att loopen körs lika många gånger som 4. Denna summa är välkänd och det borde också vara välkänt att summans värde blir n*(n+1)/2. 28

Datastrukturer och algoritmer 29 b) Om do. Something har en komplexitet O(nlog(n)) där n

Datastrukturer och algoritmer 29 b) Om do. Something har en komplexitet O(nlog(n)) där n är argumentet till funktionen. Vad har då algoritmen ovan som helhet för komplexitet? (Du behöver inte ange c och n 0. )

Datastrukturer och algoritmer 30 c) Ordo-begreppet säger något om en funktions asymptotiska beteende. I

Datastrukturer och algoritmer 30 c) Ordo-begreppet säger något om en funktions asymptotiska beteende. I analys av algoritmer används begreppet för att tala om hur antalet operationer växer med storleken på indata. På vilket sätt kan ordo-begreppet vara ett missledande mått för hur snabb en algoritm är? Stora konstanter döljs av förenklingen: exempelvis är 10000 n en linjär algoritm. Den är ju dock knappast bättre (för små värden på n) än en algoritm som kräver 7 n 2 steg, trots att den senare ju är kvadratisk.

Datastrukturer och algoritmer Uppgift 5 – begrepp och definitioner (6 p) 31 u Para

Datastrukturer och algoritmer Uppgift 5 – begrepp och definitioner (6 p) 31 u Para ihop beskrivningarna med rätt begrepp. Svara på separat papper på formen 1 -A, 2 -C osv. Varje korrekt svar ger 1 p och varje felaktigt ger -1 p. Inget svar alls ger 0 p. Du kan inte få negativt antal poäng på uppgiften.

32 1 -K 2 -M 3 -G 4 -L 5 -N 6 -B

32 1 -K 2 -M 3 -G 4 -L 5 -N 6 -B

Datastrukturer och algoritmer 33 Uppgift 6 – träd (1 + 2 + 4 =

Datastrukturer och algoritmer 33 Uppgift 6 – träd (1 + 2 + 4 = 8 p) a) b) c) d) Rita ett komplett binärt träd som innehåller exakt 6 noder. Stoppa in olika värden i varje nod. Vad är det för skillnad på ett komplett och ett fullt binärt träd? Rita en array med 6 platser och visa vart var och en av de sex noderna skulle ligga om det binära trädet var implementerat som en array på det sätt som diskuterats på kursen. Då ett träd traverseras inorder fås noderna i följande sekvens: M, B, K, H, Q, F, Z Traverseras samma träd preorder får man istället noderna i ordningen: K, B, M, Z, Q, H, F Din uppgift är att rita trädet. Visa och motivera vad du gör!

Datastrukturer och algoritmer Uppgift 6 – träd 34 a) Rita ett komplett binärt träd

Datastrukturer och algoritmer Uppgift 6 – träd 34 a) Rita ett komplett binärt träd som innehåller exakt 6 noder. Stoppa in olika värden i varje nod. 2 3 7 b) 6 1 4 Vad är det för skillnad på ett komplett och ett fullt binärt träd? Ett komplett träd fyller en nivå i trädet från vänster till höger innan de går vidare till nästa. Ett fullt träd får man om varje nod i det binära trädet antingen har 0 eller 2 barn. Ett fullt binärt träd kan ha dålig balans.

Datastrukturer och algoritmer Uppgift 6 – träd 35 c) Rita en array med 6

Datastrukturer och algoritmer Uppgift 6 – träd 35 c) Rita en array med 6 platser och visa vart var och en av de sex noderna skulle ligga om det binära trädet var implementerat som en array på det sätt som diskuterats på kursen. 236714

Datastrukturer och algoritmer Uppgift 6 – träd 36 d) Då ett träd traverseras inorder

Datastrukturer och algoritmer Uppgift 6 – träd 36 d) Då ett träd traverseras inorder fås noderna i följande sekvens: M, B, K, H, Q, F, Z Traverseras samma träd preorder får man istället noderna i ordningen: K, B, M, Z, Q, H, F Din uppgift är att rita trädet. Visa och motivera vad du gör! Vi vet att K är rotnoden, eftersom den är först i preorderutskriften (sätt in i trädet). (Italics visar vilka element vi redan ”behandlat” och satt in i trädet. ) Inorder: M, B, K, H, Q, F, Z Preorder: K, B, M, Z, Q, H, F K Vi söker då åt K i inorderutskriften. Det som är till vänster i inorder kommer att ha roten K, eftersom det är den andra nod att besökas preorder (koppla in som vänster delträd till K). Inorder: M, B, K, H, Q, F, Z Preorder: K, B, M, Z, Q, H, F K / B

Datastrukturer och algoritmer 37 I inorder-delsträngen MBK ser vi att B: s vänstra delträd

Datastrukturer och algoritmer 37 I inorder-delsträngen MBK ser vi att B: s vänstra delträd består av K M, vilket även är nästa nod att besökas preorder (sätt in som / vänster delträd till B) B Inorder: M, B, K, H, Q, F, Z / Preorder: K, B, M, Z, Q, H, F. M Nästa nod att besöka i preorder är Z vilken antingen kan vara Bs högra barn eller K: s högra barn. Vi ser att inordertraverseringen blir felaktig om Z är barn till B så vi placerar in det som högerbarn till K. Inorder: M, B, K, H, Q, F, Z Preorder: K, B, M, Z, Q, H, F. Detta måste leda till att sekvensen HQF i inorderserien är ett vänsterdelträd till Z (annars kan inte Z komma sist i inorder). Eftersom Q kommer efter Z i preorder placerar vi in Q som rot med H resp F som vänster resp höger barn. K / B Z / M K / B Z / / M Q / H F En kontroll av inorder och preorder-traverseringen ger att vi fått ett korrekt träd.

Datastrukturer och algoritmer Uppgift 7 – datatyper (4 + 3 + 1 = 8

Datastrukturer och algoritmer Uppgift 7 – datatyper (4 + 3 + 1 = 8 p) 38 a) u u Beskriv datatypen Stack med modell och informell gränsyta på det sätt som görs i boken. Modell: En papperstrave, man kan bara lägga in nya element överst och läsa av och ta bort element från toppen. abstract datatype Stack(val) Empty () → Stack(val) Push (v: val, s: Stack(val)) → Stack(val) Top (s: Stack(val)) → val Pop (s: Stack(val)) → Stack(val) Isempty (s: Stack(val)) → Bool

Uppgift 7 – datatyper (4 + 3 + 1 = 8 p) Datastrukturer och

Uppgift 7 – datatyper (4 + 3 + 1 = 8 p) Datastrukturer och algoritmer b) 39 Beskriv i pseudokod hur man beräknar djupet på en stack (utan att stacken ändrats efter ett anrop till algoritmen) med hjälp av gränsytan i a). Algorithm Depth (s) Input: A Stack s Output: The number of elements in the Stack depth = 0 tmp = empty() while not is. Empty(s) do depth++ push(top(s), tmp) pop(s) while not is. Empty(tmp) do push(top(tmp), s) pop(tmp) return depth

Datastrukturer och algoritmer Uppgift 7 – datatyper (4 + 3 + 1 = 8

Datastrukturer och algoritmer Uppgift 7 – datatyper (4 + 3 + 1 = 8 p) 40 c) Är b) en effektiv lösning? Varför/varför inte? Kan du komma på ett annat sätt att lösa problemet (du behöver inte skriva psudokod). Inte effektiv, beroende av n. Lagra djupet som ett attribut

Uppgifter från en annan tenta

Uppgifter från en annan tenta

Datastrukturer och algoritmer Uppgift 2 - 13 p (4+6+1+2) 42 Du arbetar på ett

Datastrukturer och algoritmer Uppgift 2 - 13 p (4+6+1+2) 42 Du arbetar på ett företag som skall konstruera ett system på uppdrag av SMHI samlar dagligen in fakta från alla världens väderstationer till en stor databas som innehåller följande: namn (på väderstationen), temperatur, luftfuktighet och vindstyrka samt longitud och latitud (för platsen). Meteorologerna vill kunna sortera datat på godtyckligt fält i databasen. Det är extremt viktigt att programmet är snabbt för att man ska kunna göra en tillförlitlig prognos. Samtidigt är applikationen tänkt att köras på handdatorer därför är minnesutrymmet begränsat.

Datastrukturer och algoritmer Uppgift 2 - 13 p (4+6+1+2) 43 a) b) c) d)

Datastrukturer och algoritmer Uppgift 2 - 13 p (4+6+1+2) 43 a) b) c) d) Föreslå en lämplig sorteringsalgoritm som klarar av kraven på bästa sätt, motivera och redovisa ditt val. (Om du måste ge avkall på något av kraven för att kunna leverera systemet i tid så motivera varför). Föreslå en lämplig standarddatatyp, beskriv datatypen med modell, organisation, informell gränsyta samt implementation. Motivera ditt val av implementation. Skriv en algoritmbeskrivning (pseudokod) för den valda sorteringen, där du utnyttjar gränsyteoperationerna.

Datastrukturer och algoritmer a) Föreslå sorteringsalgoritm 44 u Denna del får poäng efter hur

Datastrukturer och algoritmer a) Föreslå sorteringsalgoritm 44 u Denna del får poäng efter hur mycket man har med i sin beskrivning: Ø Nämna en algoritm överhuvutaget Ø Nämna rätt algoritm (i detta fall in-place quicksort eller ev. radix exchange sort) Ø Diskutera minnesåtgång för vald algoritm Ø Diskutera snabbhet för vald algoritm Ø Nämna minst en annan algoritm som jämförelse och nämna dess minnesåtgång och snabbhet

Datastrukturer och algoritmer b) Föreslå och beskriv en datatyp u Även här ges poäng

Datastrukturer och algoritmer b) Föreslå och beskriv en datatyp u Även här ges poäng efter vad och vilka saker man tar upp Ø Ø Modell Organisation Implementation Gränsytan o o o u Korrekta metoder Korrekta parametrar Beskrivning av metoderna De vanligaste (och bästa) valen är lista eller fält. Ø Väljer man tabell får man avdrag eftersom man inte kan sortera en tabell. u I gränsytan behöver man inte ange exakt rätt namn på metoderna Ø Blandar man ihop metoder och tar tabellmetoder i listan eller tvärtom så ger det avdrag. Ø Likaså om man inte har med alla parametrar eller inte beskriver vad metoden ska göra. u Med implementation avses hur man väljer att realisera sin datatyp. Ø Tex Lista kan man välja att implementera som array eller länkad lista. 45

Datastrukturer och algoritmer c) Motivera val av implementation 46 u Här ska man motivera

Datastrukturer och algoritmer c) Motivera val av implementation 46 u Här ska man motivera sitt val av implementation och förklara varför man tex valt en array och inte en lista. u Om man i a) har sagt att databasen varierar i storlek bör man motivera en dynamisk datatyp här.

Datastrukturer och algoritmer d) Ge en algoritmbeskrivning 47 u Här finns det två tydliga

Datastrukturer och algoritmer d) Ge en algoritmbeskrivning 47 u Här finns det två tydliga krav: Ø algoritmen ska skrivas i pseudokod Ø man ska använda sig av gränsyteoperationerna från b)

Datastrukturer och algoritmer Uppgift 5 - 7 p (4+2+1) 48 Sätt in följande tal

Datastrukturer och algoritmer Uppgift 5 - 7 p (4+2+1) 48 Sätt in följande tal (i given ordning) i en hashtabell: 3, 4, 29, 16, 42, 6, 55, 0, 13, 2, 26, 130, och 19. a) Använd hashfunktionen h(x)= x mod y, välj ett lämpligt y. Gör detta både för öppen hashing och sluten hashing. För sluten hashing, använd linjär teknik (linear probing) för att hantera kollisioner. Redogör på ett tydligt sätt för alla kollisioner som uppkommer. b) Motivera valet av y i hashfunktionen! c) Hur kan man gå till väga om det var namn på personer (anders, bo, aron, arne, östen, sune, bertil, david, åsa, nisse, karin, berit, ada) som skulle lagras i hashtabellen? Förklara principen, dvs du behöver inte skapa hashtabellen?

Datastrukturer och algoritmer Sluten hashing: 49 u Fyllnadsgraden ska inte överstiga 75 % och

Datastrukturer och algoritmer Sluten hashing: 49 u Fyllnadsgraden ska inte överstiga 75 % och y ska vara ett primtal för att få bättre spridning. Ø Ett lämpligt y kan då i detta fall vara 17. Vid sluten hashing är hashtabellen en cirkulär vektor och när man använder linjär probing vid kollisioner sätter man in elementet på första lediga plats. u 3%17 = 3, 4%17 = 4, 29%17 = 12, 16%17 = 16, 42%27 = 8, 6%17 = 6, 55%17 = 4, 0%17 = 0, 13%17 = 13, 2%17 = 2, 26%17 = 9, 130%17 = 11, 19%17 = 2 u

Datastrukturer och algoritmer Öppen hashing: 50 Tabellen är en vektor av lista u Hashtabellen

Datastrukturer och algoritmer Öppen hashing: 50 Tabellen är en vektor av lista u Hashtabellen ska ha max fyllnadsgrad 2*y, där y är storleken på hashtabellen. u Ø I detta fall räcker det med y = 7.

Datastrukturer och algoritmer Kursvärdering 51 u Värderingen är öppnad och ni ska ha fått

Datastrukturer och algoritmer Kursvärdering 51 u Värderingen är öppnad och ni ska ha fått mail med lösenord och information. u Den är öppen fram till och med 13/6.