DD1321, Tentamen i tillämpad programmering och datalogi Lördagen den 18 dexember 2010 kl 13 18



Relevanta dokument
Fredag 10 juni 2016 kl 8 12

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

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

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

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.

Måndag 13 mars 2017 kl Rita en KMP-automat för CAMCORDERCAMERA samt ange next-vektorn.

Tentamen, Algoritmer och datastrukturer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

::= HIHI HIHIHI ::= HAHA HAHAHA

Tentamen Datastrukturer D DAT 035/INN960

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

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

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Lösningar Datastrukturer TDA

Sätt att skriva ut binärträd

Föreläsning 4 Datastrukturer (DAT037)

Teoretisk del. Facit Tentamen TDDC (6)

Programmering II (ID1019) :00-11:00

Föreläsning 4 Datastrukturer (DAT037)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

Abstrakta datatyper Laboration 2 GruDat, DD1344

Tentamen Datastrukturer för D2 DAT 035

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

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

Datastrukturer och algoritmer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tildatenta Lösningsskiss

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Tentamen i Algoritmer & Datastrukturer i Java

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

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

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

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

Föreläsning 13 Innehåll

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

DAI2 (TIDAL) + I2 (TKIEK)

TDIU01 / 725G

Tentamen Datastrukturer D DAT 036/INN960

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

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

Föreläsning 9 Innehåll

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

Grundläggande datalogi - Övning 2

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

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

TDDC30 Programmering i Java, datastrukturer och algoritmer

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Tentamen *:58/ID100V Programmering i C Exempel 3

Exempeltenta GruDat 2002/2003

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

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

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

Programmering II (ID1019) :00-17:00

Programkonstruktion och. Datastrukturer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen i Algoritmer & Datastrukturer i Java

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

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

13 Prioritetsköer, heapar

Tenta i Grundläggande programmering DD klockan

Tentamen TEN1 HI

Seminarium 13 Innehåll

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

Tv när du vill användarmanual. Tv när du vill. användarmanual

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

Tentamen TEN1 HI

Tillämpad Programmering (ID1218) :00-13:00

Magnus Nielsen, IDA, Linköpings universitet

Uppgift 1 ( Betyg 3 uppgift )

Datalogi, grundkurs 1

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Föreläsning 5: Dynamisk programmering

Länkade listor, stackar och köer

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

Föreläsning 5 Innehåll

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

Föreläsning 13 Innehåll

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

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

Föreläsning 11. Giriga algoritmer

Tentamen TEN1 HI

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Datastrukturer. föreläsning 10. Maps 1

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Tentamen Datastrukturer D DAT 036/INN960

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

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Programmering II (ID1019) :00-12:00

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å

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

HI1024 Programmering, grundkurs TEN

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

PROGRAMMERINGSTEKNIK TIN212

Transkript:

KTH, Nada, Alexander Baltatzis DD1321, Tentamen i tillämpad programmering och datalogi Lördagen den 18 dexember 2010 kl 13 18 Maxpoäng 100p, godkänt 50p. Bonus max 10p adderas. Resultatet anslås på mina sidor. Hjälpmedel : Pythonkramaren del1 samt handskrivna formelblad på officiellt papper. (16p) 1. Lek med vatten En vattenballong går sönder om man släpper ner den från en viss höjd annars är den helt oskadd. Kalle vill undersöka från vilket våningsplan i sitt trapphus vattenballongerna börjar gå sönder. Han har endast två ballonger att prova med för att ta reda på det. (a) Beskriv en algoritm för att lösa problemet med så få släpp som möjligt. Antag att det finns 15 våningar. Utför din algoritm och skriv hur många ballongsläpp det blir samt från vilka våningsplan om lösningen är (b) 4:e våningsplanet (d.v.s ballongen går sönder fr.o.m 5:e) (c) 8:e våningsplanet (d) 12:e våningsplanet Det gäller att släppa ballong nummer ett på ett listigt sätt när den väl går sönder kan bara prova sekventiellt med ballong nummer två. Antag att vi släpper ballong 1 på våning N. Om den går sönder söker vi sekventiellt från 1 till N-1 d.v.s maximalt N provningar. Om ballongen håller släpper vi nästa N - 1 våningar högre upp (vi har redan ödslat ett släpp tidigare). Det här går att lösa matematiskt. N + N-1 + N-2 + N-3... + 1 = N * (N + 1) / 2 jmfr Gauss, första elementet plus sista (medelvärdet) genom två * antalet element. Med antal våningar = 15 blir det N*(N+1)/2=15N*(N+1)=30N=5=>5* (5+1) = 30 Släppen blir på

N 5 N + N-1 9 N - N-1 + N-2 + N-3 12 N - N-1 + N-2 14 Man kan också använda dynamisk programmering gör att komma fram till hur släppvektorn ska bli. (16p) 2. Tomten är borta Flera rykten cirkulerar om att tomten är försvunnen i år. Ett stort TV-bolag tror sig ha hittat säker information om detta. Informationen är komprimerad med ett Huffmanträd se figur. D A P N M Å (a) Var befinner sig Tomten? 10111 100110100111011100101000 PÅ PAPPAMÅNAD (b) Hitta på en statistisk fördelning för bokstäverna som skulle kunna bygga huffmanträdet ovan. Beskriv kortfattat hur huffmanträdet byggs upp och rita ut alla summeringar som gjorts i trädet. Varje bokstav har en vikt (statistisk fördelning, hur många gånger bokstaven förekommer). Huffmanträdet byggs upp genom att slå ihop de lättaste bokstäverna till en ny vikt. De som är lättast i detta träd är M och Å som slås ihop till en ny nod med den sammanlagda vikten t.ex. 7 + 6 = 13. Nästa som ska slås ihop är D och N och de måste då vardera ha mindre vikt än 13 men större vikt än M och Å. T.ex D=9 och N=8 ger DN=17 som sammanslagen vikt. Därefter ska MÅ(13) slås ihop med P som måste ha mindre vikt än DN=17. T.ex. P=16 adderat med MÅ 13 ger PDN=29. Därefter ska DN=15 slås ihop med A som måste vara mindre än 29 t.ex. 21. P A D N M Å 16 21 9 8 7 6

(16p) 3. På TV Titti Ruta vill varje vecka lägga in alla tevekanalers programtablåer i ett program för att inte missa något. Hon vill på datorns skärm kunna se vilka program som går i veckan och genom att trycka på dem få programmet att spela in dem när de börjar visas. Hon har lyckats ordna så att hennes dator automatiskt laddar ned hennes kanalers program. Kanalerna är just nu TV4, TV6, SVT1, SVT2, barnkanalen och SVT24 men det kan bli fler. Titti överväger att köpa ett större kanalpaket under julen. (a) Beskriv utförligt datastrukturer för att hålla reda på programinformationen och inspelningarna. Man kan lätt tänka sig en programvektor för varje kanal sorterad på starttid. Insättning i vektor är inte så lätt och därför är kanske träd med starttid som nyckel smartare. Sedan behövs en till vektor (eller hashmap) där vektorelementen är en post med kanalnamn och pekare till programvektorn (eller kanalträd). Inpspelningarna borde kunna ligga som poster i en kö (eller smartare prioritetskö prioriterat på starttid) där varje post åtminstone har kanalnamn, starttid, sluttid (eller längd). (b) Beskriv en algoritm för att ta reda på om två inspelningar krockar. Använd dina datastrukturer. Exemplifiera algoritmen med exempel SVT2 24/12 19:25 Ghostbusters (slutar 21:10) TV4 24/12 21:00 Tomten är far till alla barnen Om ett program krockar så gäller att den senare programmet börjar innan det första slutat d.v.s krockande starttid < sluttid samt att sluttiden är efter att första börjat d.v.s. krockande sluttid > starttid. Ett sätt att kolla alla krockar är att kopiera hela inspelningskön och samtidigt räkna elementen. Plocka ut första elementet i kopiekön, jämföra med alla element i ursprungliga kön (plocka ur och stoppa tillbaka sist N ggr). Ett smartare sätt vore att ha en prioritetskö. Vi plocka ur från prioritetskön (till någon temporär lista) och behöver egentligen bara jämföra med nya

översta elementet i prioritetskön. Om det inte är någon krock där så kan det inte vara krock med någon annan. Efteråt stoppar vi tillbaka alla elementen i prioritetskön. Det är lite oklart vad som händer om tre program krockar men det går att lösa. (c) Ibland kommer det en tablåändring. Beskriv en algoritm för att lägga till ett extrainsatt program i din datastruktur. SVT1 26/12 Extrainsatt Rapport med anledning av katastrofen i Långtbortistan Leta upp kanalen i kanalvektorn (eller hashmap). Gå igenom programtidsvektorn tills duhittar tiden den ska läggas in. Är det en sorterad vektor så är binärsökning smart. Lägg in det nya programmet. Här är det mycket smartare att använda ett träd istället för programtidsvektor eftersom insättning i träd är mycket billigare (d) Beskriv en algoritm för att flytta på program, se till så att eventuella inspelningar inte påverkas (om krock sker spela in den ena). TV4 22-Nyheterna sänds 22:10 när matchen är klar Långfilmen börjar 10-minuter senare än angivet... Ta reda på tidsförkjutning, exempel 10 minuter.slå upp kanalens programtidsvektor. Leta upp (med binärsökning) första programmet som drabbas. Ändra på start och sluttid i posten. Gör samma sak med efterföljande poster ända till nya nya sluttiden (sluttid + förskjutning) är mindre än nästa programs starttid (nattuppehåll). Kvalitativa och läsbara lösningar ger mer poäng. (12p) 4. Quicksort Det är så mycket som ska fixas och sorteras innan jul. Som tur är har mamma läst tilpro och kan illustrera hur quicksort fungerar. a) Rita upp steg för steg hur quicksort sorterar: 8 1 0 3 5 2 4 7 96->0123456789

Pivotelementet antas vara elementet längst till höger i varje delvektor. (d.v.s pivot = 6 första gången). b) Hur effektiv är quicksort i allmänhet med avseende på snabbhet och minnesåtgång. Vad är worst case? (12p) 5. Fiskdamm På kalaset är det dags för fiskdammen. Bakom ett skynke sitter Adam med en stor hög små presenter, framför skynket står Eva med ett metspö som ett barn i taget får fiska upp en present med. Eftersom presenterna är fler än barnen och olika värdefulla har de kommit överens om följande regler: Den som fått minst (i kr) är den som får fiska nästa gång. Om fler fått lika litet får den yngsta av dom fiska. Om man fiskar upp en sak som man redan fått får man kasta tillbaka den och genast börja fiska igen. Beskriv en algoritm och ange lämpliga datastrukturer, dels för alla barnen, dels för alla presenter! Presenterna läggs i en kö och barnen i en prioritetskö sorterad på värde+ålder där värdet mäts i ören. (12p) 6. En överraskning Eva ger en överraskningspresent till Adam men innan han öppnar den säger han att han redan vet vad som är i för det har han fått reda på från två operoende håll. Eva blir bestört. Hon har bara talat om det för sin bästa vän. Eva är fast besluten att ta reda på vilka som skvallrat. Det visar sig att varje person enbart talat om det i största förtroende till 1-2 bästisar. Hjälp Eva med att utförligt beskriva en algoritm för att snabbt och effektivt få reda på den kortaste skvallerkedjan. Ange vilka datastrukturer som behövs. Bredden först lösning, se lab5

(16p) 7. Länkar Givet p, q som pekar på länkade noder def write(p): if p!= None: write(p.next) print p.data Vad skriver funktionen write ut om man anropar med p L U J None q G S class Nod: init (self, x): self.data = x self.next = None (a) write(p) (b) write(q.next) (c) Hur ser minnet ut efter följande satser w = p.next p.next = w.next p.next.next = w w.next = q q.next.next.data = A