Lösningsförslag till tentamen

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

DAI2 (TIDAL) + I2 (TKIEK)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Föreläsning Datastrukturer (DAT036)

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 9 Datastrukturer (DAT037)

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.

13 Prioritetsköer, heapar

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 9 Innehåll

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

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

Lösningar Datastrukturer TDA

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

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

Exempeltenta GruDat 2002/2003

Lösningsförslag till tentamen Datastrukturer, DAT037,

Lösningsförslag till tentamen Datastrukturer, DAT037,

Självbalanserande AVL-träd Weiss, avsnitt 4.4

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

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

OOP Objekt-orienterad programmering

Länkade strukturer. (del 2)

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Föreläsning REPETITION & EXTENTA

Lösningsförslag till tentamen

Lösningsförslag till exempeltenta 1

Tentamen, Algoritmer och datastrukturer

Lösningsförslag till tentamen

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

Dugga Datastrukturer (DAT036)

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

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

Föreläsning 3. Stack

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

Tentamen Datastrukturer, DAT037 (DAT036)

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Tentamen Datastrukturer, DAT037 (DAT036)

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Objektorienterad programutveckling, fk

Programmering A. Johan Eliasson

Datastrukturer. föreläsning 10. Maps 1

DAT043 Objektorienterad Programmering

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

BST implementering, huvudstruktur

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning Datastrukturer (DAT037)

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

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Lösningsförslag till tentamen

Föreläsning 4 Datastrukturer (DAT037)

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Kurskod D0010E Datum Skrivtid 5tim

Lösningsförslag till tentamen

public boolean containskey(string key) { return search(key, head)!= null; }

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 2. Länkad lista och iterator

Lösningsförslag till tentamen

Föreläsning 3. Stack

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Algoritmer och datastrukturer 2012, föreläsning 6

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen. Lösningsförslag

Den som bara har en hammare tror att alla problem är spikar

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Lösningsförslag till tentamen

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 10 Datastrukturer (DAT037)

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

Föreläsning 3-4 Innehåll

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

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å

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

Föreläsning 9 Innehåll

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.

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Lösningsförslag till exempeltenta 2

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Föreläsning 4 Innehåll

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 5: Grafer Del 1

Tentamen i Algoritmer & Datastrukturer i Java

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

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

Obligatorisk uppgift 5

Lösningsförslag till tentamen

Transkript:

till tentamen 1 (5) Kursnamn Algoritmer och datastrukturer Tentamensdatum Program DAI2+I2 Läsår 201/201, lp 4 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 ( p) public static <E> LinkedList<E> getpreorder(treenode<e> t) if ( t == null ) return new LinkedList<E>(); else LinkedList<E> result = getpreorder(t.left); result.addfirst(t.element); result.addall(getpreorder(t.right)); Uppgift 3 (1+2+3 p) Ett fullt träd av höjd H har 2 H+1-1 noder. b) Vi kan skapa ett minimalt AVL-träd av höjd H genom att sätta samman ett minimalt AVLträd av höjd H-2 och ett minimalt AVL-träd av höjd H-1 med en gemensam rot. Sambandet är alltså antalnoder(0) = 1 antalnoder(1) = 2 antalnoder(h) = antalnoder (H-2) + antalnoder (H-1) + 1 c) Det finns två möjliga resultat, till vänster placerades det största elementet i det vänstra delträdet i roten, i det högra det minsta elementet i det högra delträdet. 1 1 4 1 4 14 1 14 [l_1002.docx] Algoritmer och datastrukturer, LET35, DAI2+I2, 1/1, lp 4 Nr 1b

Uppgift 4 (3+3 p) Efter sekvensen insert();deletemin(); 2 (5) 14 10 20 13 15 1 b) efter sekvensen deletemin();insert(); 13 10 20 1 15 14 Uppgift 5 (2+1+4 p) En prioritetskö krävs för att garantera minimalitet. Det preliminära avståndet till en nod beräknas alltid från nodens grannar som vi redan vet har fått sina minimala avstånd fastställda. b) Grafen skall vara en DAG, alltså en riktad graf utan cykler. c) Följande DAG har de angivna topologiska ordningarna: A B C D E [l_1002.docx] Algoritmer och datastrukturer, LET35, DAI2+I2, 1/1, lp 4 Nr 1b

3 (5) Uppgift (4+2 p) Insättning av k1-k4 går bra, därefter stryks k2 (lazy deletion) och k5 sätts in. k sätts inte in eftersom objektet har samma kontonummer som k4. En insättning måste ju alltid föregås av en misslyckad sökning. 0 1 2 3 k4 4 5 k2 k1 10 k5 11 k3 b) find(k4) returnerar k4! Om inte lazy deletion tillämpats, skulle k satts in på plats. Det skulle då finnas två saldoobjekt för kontonumret 31. Vid sökning efter k4 med saldot 1000 hittas istället k med saldot 0! Uppgift (2++ p) public class MapAssignment implements Assignment private Map<Character,Boolean> assignments = new HashMap<>(); public void assign(char variable,boolean value) assignments.put(variable,value); public boolean getvalue(char variable) return assignments.get(variable); b) public class Variable implements BooleanFormula private char name; public Variable(char name) this.name = name; public boolean getvalue(assignment return a.getvalue(name); Set<Character> result = new HashSet<>(); result.add(name); [l_1002.docx] Algoritmer och datastrukturer, LET35, DAI2+I2, 1/1, lp 4 Nr 1b

4 (5) public class Conjunction implements BooleanFormula private BooleanFormula leftoperand,rightoperand; public Conjunction(BooleanFormula leftoperand, BooleanFormula rightoperand) this.leftoperand = leftoperand; this.rightoperand = rightoperand; public boolean getvalue(assignment return leftoperand.getvalue( && rightoperand.getvalue(; Set<Character> result = leftoperand.getvariables(); result.addall(rightoperand.getvariables()); public class Disjunction implements BooleanFormula private BooleanFormula leftoperand,rightoperand; public Disjunction(BooleanFormula leftoperand, BooleanFormula rightoperand) this.leftoperand = leftoperand; this.rightoperand = rightoperand; public boolean getvalue(assignment return leftoperand.getvalue( rightoperand.getvalue(; Set<Character> result = leftoperand.getvariables(); result.addall(rightoperand.getvariables()); public class Negation implements BooleanFormula private BooleanFormula operand; public Negation(BooleanFormula operand) this.operand = operand; public boolean getvalue(assignment return! operand.getvalue(; return operand.getvariables(); [l_1002.docx] Algoritmer och datastrukturer, LET35, DAI2+I2, 1/1, lp 4 Nr 1b

5 (5) c) public class Satisfiability private static Assignment makeassignment(set<character> variables,int bits) Assignment assignment = new MapAssignment(); for ( Character variable : variables ) assignment.assign(variable,bits % 2 == 1); bits /= 2; return assignment; public static boolean issatisfiable(booleanformula f) Set<Character> variables = f.getvariables(); for ( int i = 0; i < (int)math.pow(2,variables.size()); i++ ) if ( f.getvalue(makeassignment(variables,i)) ) return true; return false; [l_1002.docx] Algoritmer och datastrukturer, LET35, DAI2+I2, 1/1, lp 4 Nr 1b