Norges Informasjonsteknologiske Høgskole



Like dokumenter
MED TIDESTIMATER Løsningsforslag

Norges Informasjonsteknologiske Høgskole

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

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

Algoritmer og Datastrukturer

Norges Informasjonsteknologiske Høgskole

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

PG 4200 Algoritmer og datastrukturer Innlevering 2

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

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

Løsningsforslag EKSAMEN

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

Oppgave 1. Sekvenser (20%)

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

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

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

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

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

PG4200 Algoritmer og datastrukturer Forelesning 10

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

PG4200 Algoritmer og datastrukturer Lab 1. 8.januar I dag skal vi undersøke en rekke velkjente databeholdere i Java:

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

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

PG4200 Algoritmer og datastrukturer Forelesning 7

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

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

OPPGAVE 5b og 8b Java Kode

EKSAMEN. Emne: Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

EKSAMEN med løsningsforslag

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

København 20 Stockholm

TOD063 Datastrukturer og algoritmer

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato:

INF Seminaroppgaver til uke 3

Pensum: fra boken (H-03)+ forelesninger

Algoritmer og Datastrukturer

Pensum: fra boken (H-03)+ forelesninger

PG 4200 Algoritmer og datastrukturer Innlevering 1. Frist: 2.februar kl 21.00

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

PG4200 Algoritmer og datastrukturer Forelesning 2

EKSAMEN. Algoritmer og datastrukturer

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

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

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

PG4200 Algoritmer og datastrukturer Forelesning 12

Kapittel 9: Sortering og søking Kort versjon

UNIVERSITETET I OSLO

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

Algoritmer - definisjon

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

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

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

UNIVERSITETET I OSLO

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

UNIVERSITETET I OSLO

Rekursiv programmering

Eksamen Objektorientert Programmering 2013

Kap.8 Sortering og søking sist oppdatert 16.03

INF Notater. Veronika Heimsbakk 10. juni 2012

UNIVERSITETET I OSLO

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

TDT4100 Objektorientert programmering

Kapittel 8: Sortering og søking

UNIVERSITETET I OSLO

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Algoritmer og Datastrukturer

Løsningsforslag til INF110 h2001

UNIVERSITETET I OSLO

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Ordliste. Obligatorisk oppgave 1 - Inf 1020

En algoritme for permutasjonsgenerering

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

UNIVERSITETET I OSLO

INF1010. Grensesnittet Comparable<T>

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Transkript:

Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig: Lars Sydnes lars.sydnes@westerdals.no 93 03 56 85 Oppgavesettet består av 7 oppgaver. Husk å lese oppgavene nøye. Alle svar skal begrunnes, med mindre annet er oppgitt. Alle punktene vektes likt. Oppgave 1 a) Bruk O-notasjon til å angi ordenen til de følgende vekstfunksjonene: (i) f(n) = 1 (n + 1)n + n log n 2 (ii) g(n) = 27.1 + 8n 2 + 81n 2 log n Du behøver ikke å begrunne svaret. b) Angi hvordan kjøretiden til funksjonene f og g i kodesnutten nedenfor avhenger av n. Svaret skal begrunnes og uttrykkes med O-notasjon. Det oppgis at dosomething har konstant kjøretid. 1 void f(int n){ 2 for(int i = 1; i < n; i*=2) 3 dosomething(i); 4 } 5 6 void g(int n){ 7 if (n <= 0){ 8 return; 9 } else { 10 dosomething(n); 11 g(n-1); 12 } 13 } 14 15 void dosomething(int n){ 16 // Something O(1) 17 }

Side 2 av 6 Oppgave 2 a) Her skal vi sammenligne sekvensielt søk med binært søk. Hva er fordelen med binært søk? Hva er fordelen med sekvensielt søk? b) Forklar hva som foregår under panseret i følgende kodesnutt: for (String str : list) System.out.println(str) c) Ta for deg et binært søketre uten balanseringsmekanisme som kun aksepterer ett eksemplarer av hvert objekt. Lag en skisse av treet etter innsetting av sekvensen 2, 1, 7, 8, 2, 8, 1, 8, 2, 8, 4, 5, 9. d) Skriv en metode contains som utfører et rekursivt søk i et binært søketre der nodene tilhører klassen Node: class Node<T extends Comparable<T>> { T data; Node<T> left; Node<T> right; } Oppgave 3 a) Beholderen java.util.hashset bruker java-objektenes innebygde metoder equals og hashcode. Hvilken betingelse må equals og hashcode tilfredsstille for at beholderen skal fungere slik den skal? Forklar hva som kan gå galt om denne betingelsen brytes. b) Forklar hvordan egenskapene til objektenes hashcode-metode kan påvirke ytelsen til java.util.hashset.

Side 3 av 6 Oppgave 4 Tabell 1 nedenfor illustrerer en sorteringsalgoritme. Angi hvilken av sorteringsmetodene (i)-(v) som er brukt. (i) Quick sort (ii) Insertion sort (iii) Bubble sort (iv) Selection sort (v) Merge sort 2 7 1 8 1 8 2 8 2 1 7 8 1 8 2 8 2 1 7 1 8 8 2 8 2 1 7 1 8 2 8 8 1 2 7 1 8 2 8 8 1 2 1 7 8 2 8 8 1 2 1 7 2 8 8 8 1 1 2 7 2 8 8 8 1 1 2 2 7 8 8 8 Tabell 1: Illustrasjon av en sorteringsmetode.

Side 4 av 6 Oppgave 5 Figur 1 er en grafisk fremstilling av målinger av kjøretid for søk etter Double-objekter i ulike beholdere fra Java Collections Framework: (i) java.util.hashset sammen med standard hashcode. (ii) java.util.hashset sammen med en hashcode som på grunn av en feil kun gir verdiene 0, 1, 2, 3. (iii) java.util.treeset. (iv) java.util.linkedlist. Målingene fra de ulike beholderne er merket A, B, C og D (i tilfeldig rekkefølge). Drøft hvilke målinger (A, B, C, D) som kan høre sammen med hvilke beholdere (i, ii, iii, iv). Obs: Her finnes det ikke noe fasitsvar. kjøretid (nanosekunder) 100000 10000 1000 A B C D 100 100 1000 Antall elementer Figur 1: Køretid for kall av contains-metoden for fire ulike implementasjoner av java.util.collection.

5 Side 5 av 6 Oppgave 6 a) Drøft hvilken betydning datastrukturen heap har for kjøretiden til Dijkstras algoritme. b) Gå gjennom Dijkstras algoritme steg for steg på jakt etter den korteste veien fra A til B i den følgende vektede grafen: 2 A 6 9 B 9 1 4 F G 3 C 2 9 E 5 D /** * Person interface for representation of * individuals in a family tree. * * For all implementations of this interface, * A.getName().compareTo(B.getName()) < 0 * shall imply that A.compareTo(B) < 0. * * The methods getfather() and getmother() * returns null if the current parent is * unknown. */ public interface Person extends Comparable<Person> { String getname(); Person getfather(); Person getmother(); Iterable<Person> getchildren(); } Kodesnutt 1: Grensesnittet Person

Side 6 av 6 Oppgave 7 I et datasystem som brukes i forbindelse med slektsgranskning er personene representert ved objekter av typen Person, definert i kodesnutt 1 på side 5. a) Skriv en metode void oldebarn(person a) som skriver ut navnene til oldebarna til personen a i alfabetisk rekkefølge. Løsningen skal skrives i java eller annen java-lignende kode. b) Beskriv en algoritme som avgjør om to personer har felles forfedre eller -mødre. Vi kan tenke oss at dette implementeres som en javafunksjon boolean fellesopphav(person a, Person b) som returnerer true hvis personene har felles opphav og false hvis de ikke har det Løsningen skal formuleres som java-kode eller lignende. c) La n være antall generasjoner som er representert i slektsgranskningssystemet. Bruk O-notasjon til å beskrive hvordan worst case-kjøretid for funksjonen fellesopphav avhenger av n. Slutt på oppgavesettet