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

Relevanta dokument
Tildatenta Lösningsskiss

DD1320 Tillämpad datalogi. Lösnings-skiss till tentamen

Övning 6 - Tillämpad datalogi 2012

Föreläsning 9 Innehåll

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

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Länkade listor, stackar och köer

Fredag 10 juni 2016 kl 8 12

Övning 7 - Tillämpad datalogi DD1320, TENTAMEN I TILLÄMPAD DATALOGI Tisdagen den 12 januari 2010 kl 14 18

Tentamen, Algoritmer och datastrukturer

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Lösningar Datastrukturer TDA

Föreläsning 9 Datastrukturer (DAT037)

Träd Hierarkiska strukturer

Hashtabeller! (& kanske lite sortering)

Tentamen kl Uppgift 4. Uppgift 5

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 7: Prioritetskö, trappa heapsort, hashning

Programkonstruktion och. Datastrukturer

DAI2 (TIDAL) + I2 (TKIEK)

Föreläsning 4 Datastrukturer (DAT037)

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

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

Övning 6. Komprimering, kryptering, dokumentering & testning

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

Programmering för språkteknologer II, HT2014. Rum

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Dugga Datastrukturer (DAT036)

Föreläsning 13 och 14: Binära träd

Tentamen i Algoritmer & Datastrukturer i Java

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Övning 4. Hashning, sortering, prioritetskö, bästaförstsökning. Hitta på en perfekt hashfunktion för atomer. Hur stor blir hashtabellen?

Grundläggande Datalogi för F

Föreläsning 9 Innehåll

13 Prioritetsköer, heapar

Tentamen Datastrukturer D DAT 035/INN960

Övning 1 - Abstrakta datatyper

Grundläggande Datalogi för F

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

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

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

Föreläsning Datastrukturer (DAT036)

Lösningsförslag DD1320/DD

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer, DAT037 (DAT036)

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

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Föreläsning 4 Datastrukturer (DAT037)

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

Tentamen Datastrukturer D DAT 035/INN960

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)

Trädstrukturer och grafer

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

Några svar till TDDC70/91 Datastrukturer och algoritmer

Exempeltenta GruDat 2002/2003

Algoritmer, datastrukturer och komplexitet

Teoretisk del. Facit Tentamen TDDC (6)

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Abstrakta datatyper Laboration 2 GruDat, DD1344

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 5 Datastrukturer (DAT037)

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Tentamen i Algoritmer & Datastrukturer i Java

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

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

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

Seminarium 13 Innehåll

Övning 2. (Länkade) Listor, noder

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Datastrukturer. föreläsning 6. Maps 1

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

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

Programmering II (ID1019) :00-12:00

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

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

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

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

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Tentamen Datastrukturer (DAT037)

Sätt att skriva ut binärträd

Tentamen TEN1 HI

Magnus Nielsen, IDA, Linköpings universitet

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 8 Datastrukturer (DAT037)

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Föreläsning Datastrukturer (DAT036)

Tentamen TEN1 HI

Programmering II (ID1019) :00-11:00

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

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

Datastrukturer. föreläsning 10. Maps 1

Facit Tentamen TDDC (7)

Föreläsning 14 Innehåll

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tenta i Grundläggande programmering DD klockan

Föreläsning 3 Datastrukturer (DAT037)

Transkript:

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

1 KMP P I P P I N i 1 2 3 4 5 6 Next[i] 0 1 0 2 1 3

2 Huffmankodning: Algoritmen 1. Sortera tecknen som ska kodas i stigande förekomstordning. 2. Rita grenar från de två tecken som är ovanligast och låtsas att vi har ett nytt tecken med summan av procentandelen. Numrera ena grenen med 0 och andra med 1. 3. Upprepa punkt 2 tills alla tecken kommit med. Roten bör bli 100%. 4. Börja från roten och följ grenarna ut till ett löv. Samla nollor och ettor på vägen - dessa ger koden för lövets tecken.

2 Huffmankodning:Trädet 100 55 45 30 14 23 6 8 10 13 16 22 25 D R I E G A L

2 Flytta om noderna: mindre värden till vänster 0 100 1 0 45 55 1 0 1 22 23 25 30 0 1 0 1 A = 00 L = 10 10 13 14 16 0 1 I = 010 E = 011 G = 111 6 8 111 00 10 00 1100 1101 010 011 G A L A D R I E D = 1100 R = 1101

3 Algoritm - binära tal Numrera vinflaskorna med binära tal: flaska nr 0 1 2 3... 999 A B C D E F G H I J 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1... 1 1 1 1 1 0 0 1 1 1 ingen dricker J dricker ur flaska 1 I dricker ur flaska 2 J och I dricker ur flaska 3 A,B,C,D,E,H,I,J ur flaska 999 Om ingen dör vet man att det var flaska 0. Om bara Jonatan dör vet man att det var flaska 1. Om både Jonatan och Ingela dör var det flaska 2, osv

4a Hashning Nyckeln är gästens namn, t ex "BILBO" Noderna som lagras i tabellen innehåller gästens namn (behövs för krockhanteringen) samt kommit (True/False) för att hålla reda på om gästen kommit. Krockhantering - krocklistor Hashtabllens storlek n = 1000 (beror av krockhanteringen) Hashfunktion f(gästens namn) Slå ihop ASCII-koderna (ord-funktionen i Python) för varje bokstav till ett tal och ta det modulo n (hashtabellens storlek). Exempel: f("bilbo") = 6673766679 % 1000 = 679

4 a 0 1 2 679 999 namn:legolas kommit: False namn:bilbo kommit: True namn: Frodo kommit: True

4 b & c b) I en min-heap är föräldern mindre än bägge barnen. På alla nivåer! b) 1 < 3 och 1 < 2 c) 3 < 5 och 3 < 4 d) 2 < 6 c) Nod 1 plockas ut, nod 6 fyller igen hålet, jämför med bägge barnen (3 och 2), 2 är minst så nod 2 och nod 6 byter plats. Klart!

5 a) Räknesortering är bra om de m kategorierna är mycket färre än de n objekten som ska sorteras, alltså m << n. b) För en abstrakt datatyp anger man operationerna men säger inte hur dom ska implementeras. Exempel: En kö har operationerna put (lägg sist i kön), get (ta första från kön) och isempty (kolla om kön är tom)

5 c) Det tar O(nlogn) att lägga in i ett balanserat träd (bästa fallet) och O(n) om trädet är som en lista (värsta fallet). Visa med bild! d) Att en algoritm går i polynomisk tid innebär att den är O(n k ) för något k>0. Tumregel: problem som inte går att lösa i polynomisk tid är för svåra för att lösa med dagen datorer. e) I ett Bloomfilter lagras bara True/False, så krockar kan inte lösas genom nyckeljämförelse. Flera hashfunktioner minskar sannolikheten för fel pga krock.

6 Problemträdet (första åtta noderna) I varje nod lagras de tre bägarnas innehåll, samt en referens till föräldernoden. Breddenförst ger kortaste lösningen.

6 Algoritm: breddenförst 1. Läs in önskad bägarvolym B 2. Skapa en tom startnod och lägg den i kön 3. Plocka ut en nod N ur kön och hitta alla dess barn genom att fylla på nodens tre bägare (en i taget) att hälla från varje bägare till varje annan bägare att tömma nodens tre bägare (en i taget) 4. Skapa nya noder för alla rimliga barn, med referens till N 5. Om någon av noderna har B i en bägare bryter vi och skriver ut lösningen 6. De nya noder som inte är dumbarn läggs in i kön, och även i dumbarnsstrukturen 7. Upprepa från punkt 3. 8. Om kön blir tom finns ingen lösning för B

6 Datastrukturer Datastrukturer: Kö Noder med attribut: bägare (t ex lista med heltal) bägarnas maxvolym (klassattribut) förälder (referens till nod) Hashtabell för dumbarnen (kan t ex innehålla bägarvärden som tupler)

6 Funktioner Metoder i Nodklassen: utskrift, rimlighetskontroll En funktion som skapar alla barn till en nod Funktioner för att fylla, hälla och tömma bägare En utskriftsfunktion som skriver ut den följd av bägarnoder som ger önskad bägarvolym

7 a) Caesarchiffer ARAGORN BSBHPSO b) Transpositionschiffer DERNHELM DE RN HE LM DRHLENEM

7 c) Problemet här är att hon måste kunna berätta för de övriga hur chiffreringen ska gå till. Med RSA kan hon publicera sin offentliga nyckel på torgets anslagstavla där alla kan läsa den. Men det är bara hon själv som kan kryptera med hjälp av den privata nyckeln.

8 a) i text Basfall1: Om stacken är tom är den sorterad Poppa ett element (a) Basfall 2: Om stacken bara innehöll ett element är den sorterad Rekursiv tanke: Poppa ett element till (b) Och pusha det på stacken igen Om a och b är i rätt ordning och resten av stacken (med b som översta element) är sorterad så är hela stacken sorterad. Pusha tillbaka a

8 a) i Python def ordnad(s): if s.isempty(): return True a = s.pop() if s.isempty(): return True else: b = s.pop() OK = a > b s.push(b) OK = OK and ordnad(s) s.push(a) return OK

8 b) Vi jämför varje element med det intill vilket ger n-1 jämförelser om stacken har n element. I varje anrop gör vi också (i värsta fallet) två anrop till isempty, två anrop till push, och två anrop till pop, alltså 6*n anrop. Men oavsett vilken operation man räknar blir resultatet O(n)