TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Relevanta dokument
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!

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.

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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).

Tentamen Datastrukturer för D2 DAT 035

Tentamen, Algoritmer och datastrukturer

Tentamen Datastrukturer, DAT037 (DAT036)

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

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 10 Datastrukturer (DAT037)

Föreläsning 9 Datastrukturer (DAT037)

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

Tentamen Datastrukturer D DAT 035/INN960

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

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

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

Föreläsning 9 Innehåll

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 035/INN960

Dugga Datastrukturer (DAT036)

Algoritmer och datastrukturer 2012, föreläsning 6

Lösningsförslag till tentamen Datastrukturer, DAT037,

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.

Lösningar Datastrukturer TDA

Trädstrukturer och grafer

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

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning 9 Innehåll

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer (DAT037)

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

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

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

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

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

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

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

Föreläsning 14 Innehåll

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

Föreläsning Datastrukturer (DAT037)

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

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

Föreläsning Datastrukturer (DAT036)

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

13 Prioritetsköer, heapar

Tentamen Datastrukturer (DAT036)

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

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Lösningsförslag till tentamen

Föreläsning 8 Datastrukturer (DAT037)

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

Tentamen Datastrukturer (DAT036)

Facit Tentamen TDDC (7)

Tentamen i Algoritmer & Datastrukturer i Java

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

Föreläsning 4 Datastrukturer (DAT037)

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

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

Föreläsning 13 Datastrukturer (DAT037)

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 D DAT 036/DIT960

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

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

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

Exempeltenta GruDat 2002/2003

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.

Föreläsning 7 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Algoritmer och datastrukturer

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

Föreläsning Datastrukturer (DAT037)

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

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

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

Föreläsning 10 Innehåll

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Seminarium 13 Innehåll

Föreläsning 6 Datastrukturer (DAT037)

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

Datastrukturer. föreläsning 10. Maps 1

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

Träd Hierarkiska strukturer

Föreläsning Datastrukturer (DAT036)

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

Tentamen kl Uppgift 4. Uppgift 5

Algoritmer och datastrukturer 2012, fo rela sning 8

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Transkript:

(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 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!

(6) Uppgift Välj ett svarsalternativ. Motivering krävs ej. Varje korrekt svar ger två poäng. Garderingar ger noll poäng.. När skiljer sig vanligen den genomsnittliga tidskomplexiteten (AC) från värstafallkomplexiteten (WC)? a. Vissa sorteringsalgoritmer b. Beräkning av maximala delsegmentsumman i ett fält c. Att vända innehållet i ett fält baklänges d. Sökning i en osorterad länkad lista. Om fältdubblering används vid implementering av en hashtabell och kvadratisk sondering används, vilket genomsnittligt minnesutnyttjande får man i tabellen? a. 0% b. % c. 7.% d. 0% e. 7%. I kursen har vi arbetat med problemet att beräkna största rektangelsumman i en heltalsmatris. Vad kan vi säkert säga om tidskomplexiteten? a. Problemet är Ω(n ) b. Problemet är Ω(n ) c. Bästa kända algoritm är O(n ) d. Bästa kända algoritm är O(n ). I vad bör man lagra elementen om man vill beräkna elementens median effektivt? a. Hashtabell b. Binär hög c. Länkad lista d. Binärt sökträd e. FIFO-kö f. Stack. Ange en minsta övre begränsning för kodavsnittets tidskomplexitet. Du kan anta att TreeSet är effektivt implementerad som ett balanserat sökträd. TreeSet<Integer> t = new TreeSet<>(); //... add m elements to t (omitted) int[][]a = new int[n][n]; //... add elements to a (omitted) int count = 0; for ( int i = 0; i < a.length; i++ ) for ( int j = 0; j < a[0].length; j++ ) if ( t.contains(a[i][j] ) count++; a. O(n ) b. O(n m) c. O(n log n) d. O(n log m) e. O(n ) (0 p)

(6) Uppgift Följande typ kan användas för att representera noder i ett binärt träd. public class TreeNode { char element; TreeNode left,right; public boolean isleaf() { return left == null && right == null; Skriv en funktion som returnerar en lista av alla löv i ett träd. public static List<Character> getleaves(treenode t) Listan skall innehålla elementen som finns i löven. Exempel: För trädet nedan skall en lista med D, H, F och G returneras. A B C D E F G H (0 p) Uppgift a) Vid genomlöpning av ett binärt träd besöktes noderna inorder: B, D, A, G, E, J, H, K, C, I, F och preorder: A, B, D, C, E, G, H, J, K, F, I. Rita trädet! ( p) b) Rita ett valfritt AVL-träd med höjden och minimalt antal noder. ( p) Uppgift a) Ange villkor för att ett träd skall vara en binär hög. ( p) b) Utför deletemin();insert();deletemin(); på den binära högen nedan och rita resultatet som ett träd. - 0 8 6 8 9 0 6 7 8 9 ( p)

(6) Uppgift a) Beräkna de kortaste viktade avstånden från nod B till alla övriga noder med Dijkstras algoritm i grafen nedan. Ange i vilken ordning noderna besöks. Ange för varje nod samtliga approximationer av det kortaste avståndet till noden som beräknas i algoritmen. E 8 B 9 6 6 A 7 7 D 0 7 F 8 C 0 G b) Ange alla möjliga topologiska ordningar av noderna i grafen: (6 p) A C E B D F (6 p)

(6) Uppgift 6 I hashtabellen nedan tillämpas kvadratisk sondering för kollisionshantering. Hashfunktionen är hash(x) = x % M, där M är tabellstorleken. 0 6 a) Utför insättningssekvensen insert(8);insert(0);insert();insert(); i tabellen och visa hur resultatet blir. ( p) b) Vad händer om du försöker utföra insert() efter att de fyra elementen har satts in i a? Varför fungerar det inte? Hasha om elementen till en större tabell av lämplig storlek. ( p) Uppgift 7 Ett uppspännande träd i en sammanhängande oriktad graf är en delmängd av grafens bågar som förbinder alla noder med varandra. I det här exemplet är ett sådant träd ritat med fet linje: 6 0 7 7 0 6 7 9 8 9 8 8 0 Det kan finnas flera möjliga sådana träd. I denna uppgift skall vi inrikta oss på uppspännande träd med minimal sammanlagd bågkostnad. Trädet ovan har just denna egenskap. Grafbågar representeras med typerna:

6 (6) public class Edge implements Comparable<Edge> { public double cost; public int src,dest; public Edge(int src,int dest,double cost) { this.src = src; this.dest = dest; this.cost = cost; public int compareto(edge other) { return cost < other.cost? - : cost > other.cost? : 0; public class EdgeComparator implements Comparator<Edge> { public int compare(edge lhs,edge rhs) { return lhs.compareto(rhs); Bågarnas riktning spelar ingen roll i uppgiften, det viktiga är vilka två noder en båge förbinder. Implementera metoden minimaltree. Metoden skall ha signaturen: public static List<Edge> minimaltree(list<edge> edges) inparametern innehåller grafens bågar och returvärdet skall vara en lista med bågar som bildar ett minimalt uppspännande träd. Använd lämpliga datastrukturer i lösningen. Några tips: Välj bågarna i storleksordning när du bygger trädet. Du kommer att behöva räkna ut antalet noder i grafen. Gör det i en separat privat hjälpmetod och använd även där en lämplig datastruktur. ( p)