NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Like dokumenter
NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

MED TIDESTIMATER Løsningsforslag

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

PG4200 Algoritmer og datastrukturer Forelesning 10

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Norges Informasjonsteknologiske Høgskole

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

PG4200 Algoritmer og datastrukturer Forelesning 12

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Oppgave 1. Sekvenser (20%)

PG4200 Algoritmer og datastrukturer Forelesning 7

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

EKSAMEN. Emne: Algoritmer og datastrukturer

Algoritmer og Datastrukturer

København 20 Stockholm

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger

PG 4200 Algoritmer og datastrukturer Innlevering 2

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Algoritmer og Datastrukturer

Innledning. IN2010/INF Algoritmer og datastrukturer. Tirsdag 27. november 2018 Kl (4 timer)

UNIVERSITETET I OSLO

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

PG4200 Algoritmer og datastrukturer forelesning 10. Lars Sydnes 21. november 2014

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

UNIVERSITETET I OSLO

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

Algoritmer og Datastrukturer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

PG4200 Algoritmer og datastrukturer forelesning 3. Lars Sydnes 29. oktober 2014

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

ALGORITMER OG DATASTRUKTURER

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

EKSAMEN. Emne: Algoritmer og datastrukturer

Løsningsforslag EKSAMEN

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Grunnleggende Grafteori

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Grunnleggende Grafalgoritmer

Algoritmer og Datastrukturer IAI 21899

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

EKSAMEN. Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

OPPGAVE 5b og 8b Java Kode

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Binær heap. En heap er et komplett binært tre:

Eksamen i tdt4120 Algoritmer og datastrukturer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Binære trær: Noen algoritmer og anvendelser

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

UNIVERSITETET I OSLO

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag til INF110 h2001

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

EKSAMEN med løsningsforslag

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID:

Algoritmer og datastrukturer Løsningsforslag

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF Algoritmer og datastrukturer

Løsningsforslag 2017 eksamen

ALGORITMER OG DATASTRUKTURER

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Vi skal se på grafalgoritmer for:

EKSAMEN. Emne: Algoritmer og datastrukturer Eksamenstid: kl til kl. 1300

Sortering med Comparable og Comparator

INF Algoritmer og datastrukturer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

IN våren 2019 Onsdag 16. januar

Transkript:

Oppgavesettet består av 7 (syv) sider. NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Tillatte hjelpemidler: Ingen Side av 7 Varighet: 3 timer Dato:.august 203 Fagansvarlig: Lars Sydnes lars.sydnes@nith.no 93 03 56 85 Oppgavesettet består av 7 oppgaver. Husk å lese oppgavene nøye. Oppgi hvilke forutsetninger du bruker. Oppgave a) Angi orden til de følgende vekstfunksjonene. Bruk O-notasjon. Det er ikke nødvendig å begrunne svaret. (i) f(n) = 3 n 2 log n + 45n 2 (ii) g(n) = n(n + ) + 3 2n 2 b) I det følgende refererer vi til Kodesnutt på side. Vi antar at dosomething har konstant kjøretid. (i) Bruk O-notasjon til å beskrive hvordan kjøretiden til F avhenger av n. Det er ikke nødvendig å begrunne svaret. (ii) Bruk O-notasjon til å beskrive hvordan kjøretiden til G avhenger av n. Det er ikke nødvendig å begrunne svaret. Kodesnutt : Java-kode tilhørende Oppgave. public static void F(int n) { for (int i = ; i < n ; i*=2) dosomething(); // O() public static void G(int n) { for (int i = ; i < n; i+=2) F(i); // OBS: tidligere fua(i) dosomething();// O()

Side 2 av 7 Oppgave 2 a) Hva er forskjellen på en stakk og en kø? b) Forklar problemet med følgende kodesnutt: public static void print(list<object> list) { for (int i = 0; i < list.size(); i++) System.out.println(list.get(i)); Her er List javas liste-grensesnitt. De mest kjente implementasjonene av dette grensesnittet er ArrayList, LinkedList og Vector. c) Hva er en rekursiv funksjon? Angi de viktigste bestanddelene i rekursive funksjoner. d) Beskriv typiske bruksområder for hash-tabeller. e) Hva er rehashing? f) Figuren nedenfor representerer et AVL-tre. Legg tallet 3 inn i treet, skriv opp balansefaktorene og rebalanser treet. Svaret skal bestå av flere figurer som viser de ulike stadiene treet går gjennom. 0 4 2 5

Side 3 av 7 Oppgave 3 Her skal vi se på fem ulike sorteringsalgoritmer: (i) Quick sort (ii) Insertion sort (iii) Bubble sort (iv) Selection sort (v) Merge sort Tabell a og Tabell b på side 3 viser en liste under sortering. a) Hvilken av sorteringsalgoritmene (i-v) er brukt i Tabell a? b) Hvilken av sorteringsalgoritmene (i-v) er brukt i Tabell b? 4 9 2 6 5 3 7 4 9 2 6 5 3 7 4 9 2 5 6 3 7 2 4 9 3 5 6 7 (a) 4 2 6 5 3 7 9 2 4 5 3 6 7 9 2 4 3 5 6 7 9 (b) Tabell : Utvalgte sorteringsstadier.

Side 4 av 7 Oppgave 4 I denne oppgaven skal vi studere følgende nettverk: A 3 C D 3 B a) Skriv opp en mulig naboskapsmatrise (adjacency matrix) for dette nettverket. b) Angi et minimum spanning tree for denne grafen. c) Finnes det en Hamiltonsk rundreise i denne grafen? d) Anta at vi bruker Dijkstras algoritme til å lete etter den korteste veien fra A til B i nettverket over. Dijkstras algoritme benytter seg av en min-heap som holder styr på alle de mulige veivalgene. Skissér hvordan denne min-heapen utvikler seg. Tips: Mulige veier i grafen kan representeres ved lister av typen (A, D, C; 4). (Besøkte noder; total lengde). Oppgave 5 I denne oppgaven ser vi på klassen BinarySearchTree som er implementert i Kodesnutt 2 på side 5. a) Hvilken type tre-traversering møter vi i metoden BinarySearchTree.print()? b) Hva blir output om vi legger tallene 3, 4, 2, 5, inn i søketreet og deretter kaller BinarySearchTree.print()? c) Skriv ferdig metoden BinarySearchTree.contains.

Side 5 av 7 Kodesnutt 2: BinarySearchTree, tilhørende oppgave 5 public class BinarySearchTree { private Node root; /* Implementasjon av add,remove,... */ public boolean contains(comparable thetarget) { /* TODO */ public void print(){ root.print(); private class Node { Node left; Node right; Comparable element; Node(Comparable theelement) { element = theelement; void print() { if (left!= null) left.print(); System.out.println(node.element); if (right!= null) right.print();

Side 6 av 7 Oppgave 6 En funksjon usequeue tar n objekter inn og ut av et PriorityQueue-objekt. Klassen PriorityQueue er implementert slik: public class PriorityQueue { private T[] data; private int count; public PriorityQueue() { data = (T[]) new Object[0]; public void enqueue(t element) { ensurecapacity(); data[count++] = element; sort(data,0,count); public T dequeue() { if (count == 0) return null; return data[--count]; private void expandcapacity(){ if (count < data.length) return; data = Arrays.copyOf(data,data.length*2); a) Drøft kjøretiden til usequeue i tilfellet der sort implementerer Merge sort. b) Drøft kjøretiden til usequeue i tilfellet der sort implementerer Insertion sort. c) Hvorfor bør vi foretrekke å strukturere arrayen data som en heap fremfor som en sortert liste?

Side 7 av 7 Oppgave 7 Anta at vi skal arbeide med tabeller som er for store til å lagres i datamaskinens minne. Mesteparten av en slik tabell må altså til enhver tid lagres på harddisken. Foreslå en algoritme for sortering av slike tabeller og drøft ressursbruken. Du kan gjerne beskrive algoritmen på en relativt uformell måte, men det bør ikke være tvil om hva algoritmen faktisk gjør. Tips: (i) Slike algoritmer er ikke en del av pensum. Spørsmålet her er om du kan bruke kunnskapen din i en ny sammenheng. (ii) Her finnes det mange gode svar, og det er like viktig å drøfte løsningen som å finne fram til den raskeste algoritmen. Slutt på oppgavesettet