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

Relevanta dokument
DAI2 (TIDAL) + I2 (TKIEK)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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: 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: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Tentamen, Algoritmer och datastrukturer

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

Föreläsning 9 Innehåll

Dugga Datastrukturer (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

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

Föreläsning 9 Datastrukturer (DAT037)

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.

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

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

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer (DAT036)

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

Tentamen Datastrukturer (DAT037)

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

Algoritmer och datastrukturer 2012, föreläsning 6

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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

Föreläsning 9 Innehåll

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning Datastrukturer (DAT036)

F4: Mer om OU1, OU2, listor och träd. Carl Nettelblad

Tentamen Datastrukturer (DAT036)

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

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

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

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

Tentamen Datastrukturer D DAT 035/INN960

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 i Algoritmer & Datastrukturer i Java

Algoritmer och datastrukturer 2012, fo rela sning 8

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

Tentamen i Algoritmer & Datastrukturer i Java

Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition

Exempeltenta GruDat 2002/2003

Tentamen Datastrukturer (DAT036)

Lösningar Datastrukturer TDA

Föreläsning 10 Datastrukturer (DAT037)

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

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

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

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

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

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

Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd

Sökning och sortering

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

Länkade strukturer, parametriserade typer och undantag

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

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

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. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

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

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

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

Föreläsning 4 Datastrukturer (DAT037)

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

Tentamen i Algoritmer & Datastrukturer i Java

Facit Tentamen TDDC (7)

Föreläsning Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037)

Lösningsförslag till tentamen

Föreläsning 13 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

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

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Datastrukturer. föreläsning 3. Stacks 1

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

Algoritmer och datastrukturer

List.java. List.java. Printed by Tom Smedsaas

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

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 3. Stack

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

Obligatorisk uppgift 5

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

Föreläsning 2 Datastrukturer (DAT037)

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å

Föreläsning 14 Innehåll

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

Transkript:

1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem). Programmen skall skrivas i Java 5 eller senare, vara indenterade och renskrivna, och i övrigt vara utformade enligt de principer som lärts ut i kursen. Skriv rent dina svar. Oläsliga svar r ä t t a s e j! 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 (8) Uppgift 1 Välj ett svarsalternativ på varje fråga. Motivering krävs ej. Varje korrekt svar ger två poäng. Garderingar ger noll poäng. 1. Vilka av metoderna 1-3 måste vara implementerade för typen T vid användning av resp. standardklass - i Java? Välj det alternativ som anger ett nödvändigt och tillräckligt urval av metoder.. TreeSet<T> 1. equals. HashSet<T> 2. compareto eller compare. rraylist<t> 3. hashode a. :1, :2, :2 b. :1+2, :1+2, :1 c. :3, :2, :1 d. :1+2, :1+3, :1 e. :2, :3, :1 2. Om fältdubblering används vid implementering av en hashtabell och kvadratisk sondering används, vilket genomsnittligt minnesutnyttjande får man ungefär i tabellen? a. 10% b. 25% c. 38% d. 50% e. 75% 3. nge en minsta övre begränsning för f(n), definierad av ekvationerna a. O(2 n ) b. O(n log n) c. O(n 2 ) d. O(log n) f(0) = 0 f(n) = 2f(n-1) + 1 (n > 0) 4. Sorteringsalgoritmer som baseras på successiva byten av närliggande element har för genomsnittliga indata tidskomplexiteten a. O(n log n) b. Ω(n 2 ) c. O(n 2 ) forts.

3 (8) 5. Metoden getreverse tar en enkellänkad lista som argument och returnerar innehållet i omvänd ordning i en standardlista. Vilken av de fyra metoderna är korrekt implementerad? public class ListNode { int element; ListNode next; public class Lists { private static rraylist<integer> result = new rraylist<integer>(); public static List<Integer> getreverse1(listnode l) { if ( l == null ) else { getreverse1(l.next); result.add(l.element); public static List<Integer> getreverse2(listnode l) { List<Integer> result = new rraylist<integer>(); if ( l == null ) else { getreverse2(l.next); result.add(l.element); public static List<Integer> getreverse3(listnode l) { if ( l == null ) return new rraylist<integer>(); else { List<Integer> result = getreverse3(l.next); result.add(l.element); public static List<Integer> getreverse4(listnode l) { if ( l == null ) return null; else { List<Integer> result = getreverse4(l.next); result.add(l.element); a. getreverse1 b. getreverse2 c. getreverse3 d. getreverse4 (10 p)

4 (8) Uppgift 2 Logiska uttryck med variabler och operatorerna &&, och! kan representeras som träd, t.ex.! && &&!! Konstruera en rekursiv javametod som skriver ut ett godtyckligt sådant uttrycksträd med parenteser runt alla deluttryck, utom runt variabler. public static void prettyprint( TreeNode t ) Trädet ovan skall t.ex. skrivas ut som ((!(&&(!))) ((!)&&)). Klassen TreeNode för representation av uttrycksträd finns i bilaga. (10 p)

5 (8) Uppgift 3 a) nge i vilken ordning noderna besöks vid preorder, postorder, resp. inorder genomlöpning av trädet E F G H I b) Visa hur VL-trädet nedan ser ut efter insättning av 53 och lämplig VL-rotation (6 p) 20 10 30 7 13 25 48 2 23 39 52 32 41 51 56 (4 p)

6 (8) Uppgift 4 a) Visa med en figur hur en initialt tom hashtabell med 11 platser ser ut efter sekvensen add(21); add(10); add( 43); remove(10); add(43); Kvadratisk sondering används vid insättning och hashfunktionen definieras hash(x) = x mod 11. Förklara vad som händer vid varje anrop ovan. (4 p) b) Hur många platser kan ockuperas i tabellen i a innan omhashning till en större tabell måste ske? Vilken är den minsta storlek man då bör välja om vi antar att det nya fältet skall vara minst dubbelt så stort? (3 p) Uppgift 5 Stoppa in talen 7, 27, 34 och 48 i trädet 12 så att det blir 23 56 a) en binär hög. b) ett binärt sökträd. u skall alltså rita två träd. (3 p) (3 p)

7 (8) Uppgift 6 a) För en av graferna g1 g4 är sekvenserna och möjliga topologiska ordningar av noderna. Vilken är grafen? Motivera svaret! Lista övriga topologiska ordningar för grafen i fråga. g1 g2 g3 g4 (3 p) etrakta grafen 15 2 8 13 11 E 7 5 16 b) I vilken ordning besöks noderna vid bestämning av de kortaste oviktade avstånden från till samtliga övriga noder? (1 p) c) I vilken ordning besöks noderna i ijkstras algoritm vid bestämning av de kortaste viktade avstånden från till samtliga övriga noder? (1 p) d) nge de kortaste viktade avstånden från till samtliga övriga noder. (1 p) e) Vilken datastruktur, förutom graftabellen, är vital i ijkstras algoritm? (1 p) Uppgift 7 Ett naturligt tal N är ett Hammingtal om det kan skrivas som en produkt av potenser av talen 2, 3 och 5, d.v.s. om det finns a, b, c 0, så att N = 2 a 3 b 5 c. e minsta Hammingtalen är 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25,... Implementera metoden public static void hamming( int n ) som skriver ut de N första Hammingtalen (N 0). Talen skall skrivas ut i växande följd och inget tal får skrivas ut två gånger. För poäng på uppgiften krävs att lämplig datastruktur används, algoritmen får inte baseras på bortdividerande av faktorer. (10 p)

8 (8) ilaga till uppgift 2 public class TreeNode { // Variable public TreeNode( String variable ) { nodetype = NodeType.VRILE; this.value = variable; left = right = null; // Unary expressions public TreeNode( String operator, TreeNode right ) { nodetype = NodeType.OPERTOR; this.value = operator; this.left = null; this.right = right; // just one operand // inary expressions public TreeNode( String operator, TreeNode left, TreeNode right ) { nodetype = NodeType.OPERTOR; this.value = operator; this.left = left; this.right = right; public enum NodeType { VRILE, OPERTOR public NodeType nodetype; public String value; // variable or an operator public TreeNode left, right; // The (left) and right operand(s)