Tentamen i Algoritmer & Datastrukturer i Java

Relevanta dokument
Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

Tentamen Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

Dugga Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Lösningsförslag till exempeltenta 1

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Tentamen, Algoritmer och datastrukturer

Föreläsning 8: Exempel och problemlösning

Föreläsning 5 Innehåll

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Algoritmer. Två gränssnitt

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

DAT043 Objektorienterad Programmering

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

Seminarium 13 Innehåll

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

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

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 2 Datastrukturer (DAT037)

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

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

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Tentamen kl Uppgift 4. Uppgift 5

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer, DAT037 (DAT036)

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

Tentamen , Introduktion till Java, dtaa98, dtea53

Föreläsning 12: Exempel och problemlösning

Föreläsning 9 Datastrukturer (DAT037)

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

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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.

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

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

Tentamen Datastrukturer D DAT 036/DIT960

DAI2 (TIDAL) + I2 (TKIEK)

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Trädstrukturer och grafer

Lösningsförslag till exempeltenta 2

Lösningar Datastrukturer TDA

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 14. Träd och filhantering

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

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen. Programmeringsmetodik, KV: Java och OOP. 20 januari 2005

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

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

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

Objektorienterad programmering i Java

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Datastrukturer. föreläsning 3. Stacks 1

Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

PROGRAMMERING-Java TENTAMINA

Sökning och sortering

Tentamen Datastrukturer D DAT 036/INN960

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

Föreläsning 13. Träd

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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 Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

TDDC30 Programmering i Java, datastrukturer och algoritmer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Tentamen Datastrukturer D DAT 036/INN960

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

Föreläsning 3. Stack

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

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

Fredag 10 juni 2016 kl 8 12

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

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning REPETITION & EXTENTA

Föreläsning Datastrukturer (DAT036)

TENTAMEN OOP

Föreläsning 3. Stack

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

Tentamen TEN1 HI

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

Transkript:

Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg: Max 49 poäng _ >=20poäng ger betyg 3 _ >=30poäng ger betyg 4 _ >=40poäng ger betyg 5 Övrigt: Det finns två olika sorters frågekategorier, de som skall besvaras genom programmerings och de som skall besvaras genom förklaringar med text och illustrationer. Programmeringslösningarna skall i största mån vara skrivna i korrekt Java-syntax. Koden skall vara välstrukturerad och lättläst. Koden skall innehålla lämpliga ledtexter (utskrifter) som instruerar användaren vad som krävs av honom / henne. Om en lösning är uppenbart klumpig och det anses att tentanden skall känna till en smidigare lösning kan den klumpiga lösningen medföra poängavdrag. Förklaringslösningar bör, om tillämpningsbart, innehålla illustrationer på relevanta datastrukturer och använda algoritmer. Tänk på att vara noggrann och strukturerad. Det är Du som skall visa vad Du kan! Lycka Till! / Nicolina Månsson

Uppgift 1 Tidskomplexitet (4p+2p) a) Givet är en array a med n heltal, sorterade i växande ordning. Man vill undersöka om det finns två tal i arrayen vars summa är ett visst tal sum med följande algoritm: int i = 0; while (i < a.length) boolean found = binarysearch(a, sum -a[i]); if (found) return true; else i++; return false; Metoden binarysearch(int[] a, int x) söker med binärsökning efter talet x i vektorn a. 1) Förklara hur algoritmen fungerar. 2) Uppskatta exekveringstiden för algoritmen i form av Big- Oh notation. Motivera svaret. 3) När inträffar värsta fallet för den givna algoritmen och vad blir tidskomplexiteten då om vektorn har längden n? Du får använda kända resultat avseende tidskomplexiteten för binärsökning. b) Ange för nedanstående delar av olika algoritmer en uppskattning av exekveringstiden i form av Big-Oh notation. Motivera också din uppskattning. 1) for( int i=1; i<n; i++) x=x+1; for(int j=1; j<n/2; j++) x=x+2; 2) for(int i=n;i>=1;i=i/2) for( int j=1;j<n;j++) x=x+1;

Uppgift 2 Datastrukturer (9p+9p+2p) a) Du skall tillämpa dina kunskaper om länkade listor i en registerapplikation En register innehåller Person-objekt och skall implementeras som en länkad lista med metoderna add(person p), remove(person p), print(). Här är klassen Person som definierar en Person i en register applikation. 1) Komplettera klassen Person med metoden equals(). class Person String namn; String telnr; public Person (String inamn, String itelnr) namn=inamn; telnr=itelnr; public String tostring() return namn+ telnr; // skriv din här kod 2) Du behöver också en klass som definierar en Node i en Register. Komplettera klassen med lämpliga konstruerare. Förutsätt att Node klassen är i samma fil med Register klassen, då kommer du åt Person-objeket med punkt notation.

class Node Person pers; Node next; // skriv din här kod 3) Och till sist klassen som beskriver registret och som skall implementeras som en länkad lista. Komplettera klassen med lämpliga konstruerare samt metoderna -add(person p), lägger till ny person i registret -remove(person p), ta bort en viss person x från registret -print(), skriver ut registret class Register Node header; // skriv din här kod b) Stacken tillhör bland de enkla datastrukturerna som kan implementeras med array. I en applikation behöver jag en skräddarsydd Stack av Object som inte tillåter dubbletter. Implementera klassen Stack med metoderna push(object x) och pop(). Använd metoden equals()från klassen Object för att testa om objektet x finns redan på Stacken eller inte. Tänk på ett sätt att hantera stack duplicate, stack overflow och stack underflow.

c)i kursboken ges det programkod för en sk. wrap-around implementation av en kö. Förutsätt att det finns en konstruktor till klassen ArrayQueue som tillåter användaren att sätta storleken på datastrukturen. Givet nedanstående testkod, illustrera steg för steg hur den arraybaserade kön används och markera tydligt front och back indexen! public static void main(string [] args) ArrayQueue queue = new ArrayQueue(4); queue.enqueue(new Integer(5)); queue.enqueue(new Integer(2)); queue.enqueue(new Integer(6)); queue.enqueue(new Integer(1)); queue.enqueue(new Integer(8)); queue.enqueue(new Integer(3)); queue.enqueue(new Integer(0)); Uppgift 3 Kända algoritmer (3p+3p) a)beskriv kortfattat sorteringsalgoritmerna mergesort, quicksort och heapsort med ord eller pseudokod. (Skriv bara några få meningar eller pseudokodsrader per algoritm). b) Påverkas tidskomplexiteten för någon/några av algoritmerna om elementen redan är sorterade. I så fall hur? Motivera ditt svar.

Uppgift 4 Träd och tillämpningar(4p+2p+2p+4p) a) Beskriv kortfattat principen med Huffman komprimering och visa tydligt steg för steg hur Huffmanträdet genereras för följande indata. Visa också vilka koder respektive tecken får. a a b c d a a a b b b c c d b) Vi kan använda binära träd för att representera algebriska uttryck. Dessa träd kallas expressions tree. För följande träd: - + 9 5 * 2 ^ 3 4 Om man skriver ut innehållet i trädet genom att använda metoden printpostorder() kommer du att uppnå aritmetiska uttryck i postfix notation. Vilket blir uttrycken för ovanstående träd. c) För att beräkna aritmetiska uttryck i postfix notation används datastrukturen operator stack. Visa hur stacken förändras när du beräknar postfix uttrycket som du fått fram i uppgift a. d) Vi har sett två implementationer av balanserade binära sökträd. En så kallad AVL träd och den andra AA träd.

Förklara balanseringsprincipen för dessa två typer av träd. Använd lämpliga exempel för att göra det tydligt. Uppgift 5 Binär Heap och Graph(3p+2p) a)vilka av följande påståenden om minheapar är sanna. Om du tycker ett påstående är sant så motivera det. Om du tycker det är falskt förklara även då varför t ex genom ett motexempel. 1) En heap som innehåller n element kan i värsta fall ha höjden n. 2) Den array som representerar en minheap utgör en växande följd av element. 3) Om man går på en gren från roten och ner mot ett löv i en minheap så bildar de element man passerar en ickeavtagande följd. b)visa genom exempel och förklara hur breadh first algoritmen (kortaste vägen i en oviktad graf) fungerar.