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

Relevanta dokument
Försättsblad till skriftlig tentamen vid Linköpings Universitet

Teoretisk del. Facit Tentamen TDDC (6)

Facit Tentamen TDDC (7)

Facit Tentamen TDDC kl (6)

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Teoretisk del. Facit Tentamen TDDC (6)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

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

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

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

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

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

TDDC Terminologi Uppdaterad Fö #1

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

Tentamen Datastrukturer för D2 DAT 035

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

Tentamen TEN1 HI

Tentamen Datastrukturer (DAT037)

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

Tentamen Datastrukturer D DAT 035/INN960

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

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Tentamen i Algoritmer & Datastrukturer i Java

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

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

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.

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

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

Föreläsning 11 Datastrukturer (DAT037)

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Seminarium 13 Innehåll

Tentamen Datastrukturer D DAT 036/INN960

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

Tentamen Datastrukturer D DAT 035/INN960

Träd Hierarkiska strukturer

Tentamen Datastrukturer D DAT 036/INN960

Magnus Nielsen, IDA, Linköpings universitet

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 9 Datastrukturer (DAT037)

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

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

Algoritmer och datastrukturer 2012, fo rela sning 8

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen TEN1 HI

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Tommy Färnqvist, IDA, Linköpings universitet

SAMMANFATTNING TDDC30 Programmering i Java, datastrukturer och algoritmer

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

Länkade strukturer, parametriserade typer och undantag

Föreläsning 13 Innehåll

Lösningsförslag till tentamen Datastrukturer, DAT037,

::= HIHI HIHIHI ::= HAHA HAHAHA

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Lösningar Datastrukturer TDA

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

TDDC91 & TDDE22 & 725G97 Datastrukturer och algoritmer Datortentamen (DAT1) , 08 12

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 14 Innehåll

Tentamen kl Uppgift 4. Uppgift 5

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Föreläsning 9 Innehåll

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

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

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)

Tentamen Datastrukturer, DAT037 (DAT036)

Vad har vi pratat om i kursen?

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Tentamen, Algoritmer och datastrukturer

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

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

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Tentamen Datastrukturer D DAT 036/DIT960

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Tentamen Datastrukturer (DAT036)

Datastrukturer. Föreläsning 5. Maps 1

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

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

Föreläsning Datastrukturer (DAT037)

Tildatenta Lösningsskiss

Transkript:

Facit Tentamen TDDC30 2015-08-28 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är syftet med ett interface? (1p) Svar:Att ange vilka metoder som ska finnas, utan att behöva ange hur de ska vara implementerade eller vilken basklass klassen ska ärva av. b) Vad är skillnaden mellan en instansvariabel och en klassvariabel? (1p) Svar:En klass som innehåller en instansvariabel får en separat sådan variabel i varje instans. En klass som innehåller en klassvariabel(dvs. en statisk) har dock bara en sådan, som alla instanser av den klassen istället delar på. c) Vad innebär polymorfi? (1p) Svar:Att en gemensam typ kan representera flera olika undertyper, baserade på den gemensamma bastypen, och att man i undertyperna kan definiera eller omdefiniera('skriver över') metoder från bastypen för att ändra beteendet. d) Varför anses program skrivna i Java vara plattformsoberoende? (1p) Svar:Programkoden i Java kompileras till ett mellanläge mellan källkod och maskinkod som kallas bytecode, som sedan är det som distribueras för att köra programmet. Den representationen kan sedan tolkas av en Java virtual machine(jvm), programvaran som behövs för att köra ett program. Det som gör att program skrivna i Java anses vara plattformsoberoende är att samma bytecode kan tolkas av flera olika JVM'er på olika platformar. Själva Javaprogrammet behöver ej ändras när en platform byts, utan man installerar istället rätt JVM för just den platformen och kör sedan Java-programmet med den. e) Vad är skillnaden mellan en abstrakt klass, en vanlig klass och ett interface? (2p) Svar:Ett interface ej innehålla metod-implementationer, bara metod-deklarationer. En abstrakt klass kan innehålla både metod-implementationer och rena metod-deklarationer. Varken ett interface eller en abstrakt klass utgör en klass man kan instantiera, då metoder utan implementation är odefinierade. En vanlig klass kan bara innehålla metod-implementationer, ej några rena metod-deklarationer, och kan därför också instantieras. Alla svar motiveras väl.

Facit Tentamen TDDC30 2015-08-28 kl 08-12 2 (6) 2. (6p) "Datastrukturer" a) Värdena 7 1 3 2 6 5 ligger i en perfekt minheap. Rita upp hur heapen ser ut och hur värdena ligger i den. (2p) Svar:Obs: Det finns andra korrekta svar. 1 52 5 3 6 7 b) Organisera om siffrorna i trädet nedan så att trädet utgör ett binärt sökträd. (2p) ( Organisera om siffrorna innebär att pilarna och noderna förblir på samma plats, endast siffrorna får byta plats i bilden.) 9 52 57 5 8 71 Svar:Obs: Det finns andra korrekta svar. 6 73 76 53 57 2 78 1 75 79 c) Ett binärt träd har skrivits ut med en levelorder-traversering samt en inorder-traversering. Rita upp hur det motsvarande trädet ser ut. (2p) Levelorder-traversering: 3 5 2 1 Inorder-traversering: 5 3 1 2 Svar: 3 5 52 51

Facit Tentamen TDDC30 2015-08-28 kl 08-12 3 (6) 3. (6p) "Tidskomplexitet" a) Antag att en enkellänkad lista har tre olika insert-metoder. Ange tidskomplexiteten, samt motivera varför, för: (3p) * En insert-metod som alltid stoppar in elementet först i listan. Svar:O(1), kan direkt skapa en ny första-nod som pekar på den förra. * En insert-metod som alltid stoppar in elementet sist i listan. Svar:O(n), måste gå igenom alla element i listan för att hitta det nuvarande sista elementet för att sedan stoppa in det nya elementet där. * En insert-metod som stoppar in det nya elementet på den x'te platsen i listan, där x är en parameter som anges när metoden körs. Svar:O(n), måste gå igenom x-1 element för att hitta rätt plats att stoppa in det nya elementet på, där x är n i värsta fall. b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande metoder. (n är alltid ett positivt heltal.) (2p) int foo(int n) { int x = n*n; return x*x; int foofoo(int n) { for (int i = 0; i < 5; i = i+1) { foo(n); return 5; int sum(int n) { int sum = n*n; for (int i = 0; i < n; ++i) { sum += foofoo(i); return sum; Svar:foo) O(1) foofoo) O(1) sum) O(n) c) Förenkla följande uttryck för tidskomplexitet: (1p) Svar: O(5 + 2n + 2n²) O(n) + O(n 7 ) => O(n 7 )

Facit Tentamen TDDC30 2015-08-28 kl 08-12 (6). (6p) "Algoritmer" a) Sortera värdena [ 5 5 1 3 0 5 ] med countsort. Var noga med att ange vad som sker i varje steg, så att det går att följa processen från början till slut. Sorteringen ska leda till stigande ordning, dvs 1, 2, 3, osv. Ange tydligt vad som sker under sorteringen. (2p) Svar: [ 5 5 1 3 0 5 ] [ 1 1 0 1 2 3 ] Index: 0 1 2 3 5 [ 0 1 3 5 5 5 ] b) Sortera värdena [ 2 5 8 7 1 3 6 ] med insertionsort. Gör detta genom att byta plats på värden inom fältet, dvs. in-place. Sorteringen ska leda till stigande ordning, dvs 1, 2, 3, osv. Ange tydligt i svaret hur hela fältet ser ut innan varje platsbyte, samt vilka index som är på väg att byta plats, med maximalt ett byte per steg. (2p) Svar:[ 2 5 8 7 1 3 6 ] [ 2 5 7 8 1 3 6 ] [ 2 5 7 1 8 3 6 ] [ 2 5 1 7 8 3 6 ] [ 2 1 5 7 8 3 6 ] [ 1 2 5 7 8 3 6 ] [ 1 2 5 7 3 8 6 ] [ 1 2 5 3 7 8 6 ] [ 1 2 3 5 7 8 6 ] [ 1 2 3 5 7 6 8 ] [ 1 2 3 5 6 7 8 ] c) Vad innebär det att en sorteringsalgoritm är stabil? Ge exempel på en sorteringsalgoritm som kan implementeras stabil, och en som inte kan implementeras stabil. (2p) Svar:Att den inte byter inbördes ordning mellan två värden av samma storlek. Exempelvis insertionsort ovan kan implementeras stabil då den ej behöver byta plats på 2'orna som ett steg i sorteringen. T.ex. quicksort kan dock ej implementeras stabil.

Facit Tentamen TDDC30 2015-08-28 kl 08-12 5 (6) Praktisk del 5. (8p) Bokhögen Skolstarten har krypt på Anna och hon har fortfarande många bra böcker kvar att läsa. För att hinna klart med åtminstone de allra viktigaste innan nyår så måste hon prioritera! En maxheap där hon kan stoppa in alla sina böcker med en prioritet, och sedan plocka ut dom igen, en och en, när det är dags att läsa dom, vore..egentligen kanske overkill, men lite studieflykt är alltid välkommet! I det här fallet låter hon t.ex. favoritboken få prioritet 100 så att den är mest prioriterad, och sedan kommer de övriga in därefter. En nod från Annas heap: Värde Importera Annas projekt från given_files, och hjälp henne med programmet enligt nedan. a) Implementera färdigt Annas size-metod, så att den räknar antal element i heapen. Den ska implementeras iterativt! (3p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) b) Det vore smidigt om Anna kunde ändra sin bok-klass så att den kan lagra godtycklig data istället för bara en sträng. Då kan hon göra en datastruktur där hon t.ex. lagrar saker som bokens titel, författare och årtal. Uppdatera all relevant kod så att del b fungerar som den ska. Var noga med att eliminera alla varningar som dyker upp när du gör konverteringen! (2p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) c) Implementera färdigt Annas depth-metod, så att den räknar ut djupet av heapen. Den ska implementeras rekursivt! Kom ihåg att rotnoden, om den finns, är på djup 0. (3p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.)

Facit Tentamen TDDC30 2015-08-28 kl 08-12 6 (6) 6. (10p) Trädets två aspekter Stefan har knackat ihop ett binärt sökträd, eller åtminstone skelettet till vad som ska bli ett binärt sökträd. Det finns dock mer att göra, och det är där ni kommer in i bilden. En nod från Stefans binära träd: Värde Importera Stefans projekt från given_files, och hjälp honom med programmet enligt nedan. a) Ett binärt sökträd måste ha en add-metod. Stefan har förberett hur metoden ska se ut, men det är upp till er att implementera den. (8p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter, men kan vara svår att testa utan den övriga funktionaliteten.) b) För att kontrollera add-metoden vore en printinorder-metod på sin plats. Stefan har förberett även den. Ni får implementera den på valfritt vis, så länge den bygger på strukturen i det binära sökträdet. (2p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter, men kan vara svår att testa utan den övriga funktionaliteten.)