TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Relevanta dokument
TENTAMEN: Algoritmer och datastrukturer. Läs detta!

DAI2 (TIDAL) + I2 (TKIEK)

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

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

Lösningsförslag till tentamen

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 14 Innehåll

Tentamen Datastrukturer, DAT037 (DAT036)

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen, Algoritmer och datastrukturer

Tentamen Datastrukturer D DAT 035/INN960

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

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

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 (DAT037)

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen i Algoritmer & Datastrukturer i Java

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren 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)

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Föreläsning 4 Datastrukturer (DAT037)

Algoritmer och datastrukturer 2012, fo rela sning 8

Föreläsning Datastrukturer (DAT036)

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

Föreläsning 9 Innehåll

Tentamen TEN1 HI

Dugga Datastrukturer (DAT036)

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

Föreläsning 4 Datastrukturer (DAT037)

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

Tentamen Datastrukturer D DAT 036/INN960

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

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

Föreläsning 9 Innehåll

Exempeltenta GruDat 2002/2003

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

Tentamen i Algoritmer & Datastrukturer i Java

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

Tentamen Datastrukturer (DAT036)

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.

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

13 Prioritetsköer, heapar

Tentamen Datastrukturer D DAT 036/INN960

TDDC30 Programmering i Java, datastrukturer och algoritmer

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

CHALMERS TENTAMEN. 2012/2013, lp 1 DAT042. Uno Holmer. Java API (utdelas av skrivningsvakten) Erland Holmström tel besöker tentamen

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

Föreläsning 9 Datastrukturer (DAT037)

Objektorienterad programmering D2

Tentamen Datastrukturer (DAT036)

Föreläsning 1 Datastrukturer (DAT037)

Lösningar Datastrukturer TDA

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,

Föreläsning Datastrukturer (DAT037)

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å

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Tentamen Datastrukturer (DAT036)

TENTAMEN: Objektorienterad programutveckling, fk. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

Tentamen Datastrukturer D DAT 035/INN960

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

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

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

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

Datastrukturer. föreläsning 3. Stacks 1

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Föreläsning 13 Datastrukturer (DAT037)

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Tentamen Datastrukturer (DAT036)

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

Länkade strukturer, parametriserade typer och undantag

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

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

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Facit Tentamen TDDC (7)

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

Transkript:

1 (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem). Skriv rent dina svar. Oläsliga svar r ä t t a s e j! Programkod skall skrivas i Java 5 eller senare version, vara indenterad och renskriven, och i övrigt vara utformad enligt de principer som lärts ut i kursen. Onödigt komplicerade lösningar ger poängavdrag. Programkod som finns i tentamenstesen behöver ej upprepas. Givna deklarationer, parameterlistor, etc. får ej ändras, såvida inte annat sägs i uppgiften. Läs igenom tentamenstesen och förbered ev. frågor. I en uppgift som består av flera delar får du använda dig av funktioner klasser etc. från tidigare deluppgifter, även om du inte löst dessa. Lycka till!

2 (6) Uppgift 1 Välj ett svarsalternativ. Motivering krävs ej. Varje korrekt svar ger två poäng. Garderingar ger noll poäng. 1. Vilken teknik misslyckas ibland med att lösa problemet? a. divide & conquer b. dynamisk programmering c. backtracking d. snål algoritm 2. Stackar och köer kan implementeras med fält eller med länkad lista. Vilket av lagringssätten har högst värstafallkomplexitet? a. fält b. länkad lista c. det är igen skillnad, alla operationer är O(1) d. det är igen skillnad i värstafallet, men i genomsnitt är fält sämre än listor 3. Dijkstras algoritm har tidskomplexiteten a. O( E 2 ) b. O( E ) c. O( E V 2 ) d. O( E log V ) e. O( E log E ) 4. Vilken datastruktur är lämplig för att effektivt beräkna lägesmått som t.ex. median i en föränderlig datasamling a. länkad lista b. sorterat fält c. binärt sökträd d. disjoint sets 5. Ange en minsta övre begränsning för T(n) som definieras av rekurensekvationerna T(1) = 1 T(n) = 3T(n/3) + n a. T(n) är O(n log 3 n) b. T(n) är O(n log n) c. T(n) är O(n + log 3 n) d. T(n) är O(n log 2 n) e. T(n) är O(n + log n) (10 p)

3 (6) Uppgift 2 Binära träd kan representeras med typen public class TreeNode<E> { E element; TreeNode<E> left,right; Konstruera metoden public static <E> LinkedList<E> getpreorder(treenode<e> t) Som returnerar elementen i trädet t i en lista. Elementen i listan skall ordnas enligt preorder. Ett tomt träd (null) skall ge en tom lista (alltså inte null). (9 p) Uppgift 3 a) Ange antalet element i ett fullt binärt träd som en funktion av trädets höjd H, H 0. (1 p) b) Ge ett rekursivt samband för det minimala antalet element i ett AVL-träd av höjd H, H 0. c) Rita det binära sökträdet nedan efter anropet remove(10): 10 7 16 4 9 12 19 8 14 (3 p) Uppgift 4 En binär hög har följande element - 5 7 8 12 14 9 10 20 13 15 18 0 1 2 3 4 5 6 7 8 9 10 11 a) Rita den binära högen som träd efter sekvensen insert(6);deletemin(); b) Rita den binära högen som träd efter sekvensen deletemin();insert(6); (3 p) (3 p)

4 (6) Uppgift 5 a) Varför används en prioritetskö och inte en FIFO-kö i Dijkstras algoritm? Motivera! b) Vilka krav måste en graf uppfylla för att noderna skall kunna ordnas topologiskt? (1 p) c) Konstruera en graf med fem noder sådan att BADCE, ABCDE, BDACE, ABDCE, BACDE, BACED, ABCED är de enda möjliga topologiska ordningarna av grafens noder. Tips: Grafen skall ha fyra bågar. (4 p) Uppgift 6 I en bankapplikation finns kontoobjekt av följande typ public class Account { private String accountno; private long balance; public Boolean equals(object o); public int hashcode(); //... other code omitted Metoden equals returnerar true om de jämförda kontoobjekten har likadana kontonummer. Metoden hashcode ger samma värde för två kontoobjekt som är lika när de jämförs med equals. k1 996633 37500 k2 991256 3641 k3 985588 79650 k4 983619 198000 k5 996421 834 k6 983619 0 a) Utför sekvensen insert(k1); insert(k2); insert(k3); insert(k4); remove(k2); insert(k5); insert(k6); i en hashtabell med 13 platser och visa med en figur hur resultatet blir. Kvadratisk sondering skall tillämpas. Du kan anta att hashcode()%13 ger följande värden: k1:8, k2:7, k3:11, k4:7, k5:10, k6:7. (4 p) b) Med utgångspunkt från resultatet i a, vad ger find(k4) för resultat? Motivera!

5 (6) Uppgift 7 En satslogisk (boolesk) formel består av satsvariabler: A, B, C, och logiska operatorer: & (konjunktion), (disjunktion) samt! (negation). Ex. f 1 : A!A f 2 : A &!A f 3 : A & B &!(A C) f 4 : (A B) & B &!C En formel är satisfierbar om det finns en tilldelning av sanningsvärden till satsvariablerna så att formeln blir sann. T.ex. är f 1 satisfierbar både med tilldelningen {A=true och med {A=false. Däremot är inte f 2 satisfierbar eftersom en av konjunkterna blir falsk oavsett vilket sanningsvärde A har. Inte heller f 3 är satisfierbar, men tilldelningen {A=false,B=true,C=false satisfierar f 4 och även {A=true,B=true,C=false. Uppgiften går ut på att konstruera en algoritm som avgör om en satslogisk formel är satisfierbar. För att avgöra problemet kan det krävas att alla möjliga sanningstilldelningar undersöks. Exempelvis kan tre variabler tilldelas sanningsvärden på åtta olika sätt. Följande gränssnitt beskriver sanningstilldelningar och formler. public interface Assignment { void assign(char variable,boolean value); boolean getvalue(char variable); public interface BooleanFormula { boolean getvalue(assignment a); Set<Character> getvariables(); Gränssnittet BooleanFormula implementeras av klasserna Variable, Conjunction, Disjunction samt Negation. Exempel: BooleanFormula a = new Variable('A'); BooleanFormula b = new Variable('B'); BooleanFormula c = new Variable('C'); BooleanFormula A_and_B = new Conjunction(a,b); BooleanFormula A_or_B = new Disjunction(a,b); BooleanFormula A_or_C = new Disjunction(a,c); BooleanFormula B_and_not_C = new Conjunction(b,new Negation(c)); BooleanFormula notsatisfiable = new Conjunction(A_and_B,new Negation(A_or_C)); BooleanFormula issatisfiable = new Conjunction(A_or_B,B_and_not_C); a) Skriv en klass som implementerar Assignment. Använd lämplig datastruktur. b) Skriv klassen Variable samt en av Conjunction, Disjunction eller Negation, välj själv vilken. Inför lämpliga instansvariabler och konstruktorer. (6 p)

6 (6) c) Skriv färdigt klassen public class Satisfiability { public static boolean issatisfiable(booleanformula f) { Ange också ordokomplexiteten för metoden issatisfiable som en funktion av antalet distinkta variabler i formeln. Tips: Inför en privat hjälpmetod för att skapa sanningstilldelningar. Genom att utnyttja kvot och rest vid division med två kan bitarna i ett heltals binära representation översättas till sanningsvärden. Talet 11 skrivs t.ex. binärt som 1011, vilket motsvarar sanningsvärdena true,false,true,true. Utnyttja resultatet från a). Exempel: Satisfiability.isSatisfiable(notSatisfiable); // false Satisfiability.isSatisfiable(isSatisfiable); // true Satisfiability.isSatisfiable(new Conjunction(a, new Negation(a))); // false Satisfiability.isSatisfiable(new Disjunction(a, new Negation(a))); // true (8 p)