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



Like dokumenter
NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

MED TIDESTIMATER Løsningsforslag

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

PG4200 Algoritmer og datastrukturer Forelesning 12

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

Norges Informasjonsteknologiske Høgskole

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

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

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

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

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

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

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

PG4200 Algoritmer og datastrukturer Forelesning 10

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

Løsningsforslag EKSAMEN

PG4200 Algoritmer og datastrukturer Forelesning 7

Et eksempel: Åtterspillet

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

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

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

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

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

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

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

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Anvendelser av grafer

UNIVERSITETET I OSLO

INF1010 notat: Binærsøking og quicksort

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

Quicksort. Fra idé til algoritme.

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2014

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

Algoritmer og Datastrukturer

INF Algoritmer og datastrukturer

Ordliste. Obligatorisk oppgave 1 - Inf 1020

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

Rekursiv programmering

EKSAMEN. Emne: Algoritmer og datastrukturer

Logaritmiske sorteringsalgoritmer

INF Algoritmer og datastrukturer

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

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

Algoritmeanalyse. (og litt om datastrukturer)

INF 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

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Norges Informasjonsteknologiske Høgskole

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Vi skal se på grafalgoritmer for:

Kapittel 14, Hashing. Tema. Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

UNIVERSITETET I OSLO

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

Binære trær: Noen algoritmer og anvendelser

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Norsk informatikkolympiade runde

Pensum: fra boken (H-03)+ forelesninger

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

Norges Informasjonsteknologiske Høgskole

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

IN Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Løsnings forslag i java In115, Våren 1998

Kapittel 12: Rekursjon

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

Rekursjon. Binærsøk. Hanois tårn.

Løsningsforslag eksamen INF1020 høsten 2005

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

Vi skal se på grafalgoritmer for:

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Algoritmer og Datastrukturer

Løsningsforslag 2017 eksamen

PG 4200 Algoritmer og datastrukturer Innlevering 2

Algoritmer - definisjon

Datastrukturer for rask søking

Definisjon: Et sortert tre

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

INF Algoritmer og datastrukturer

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

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

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

Liste som abstrakt konsept/datatype

Algoritmer og datastrukturer Løsningsforslag

Løsnings forslag i java In115, Våren 1999

Kap.8 Sortering og søking sist oppdatert 16.03

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Grunnleggende Datastrukturer

Transkript:

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 20 ette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. et er altså ikke et eksempel på en perfekt besvarelse, men snarere en diskusjon av oppgavene. Oppgave a) f(n) tilhører vekstklassen O(n 2 log n), g(n) tilhører vekstklassen O(2 n ). b) F har kjøretid av orden O(log n). ersom man antar at fua har konstant kjøretid, kan man konkludere med at G har kjøretid av orden O(n). Her er det et poeng at studenten behandler fua på en bevisst måte, og klargjør forutsetningene. Noen har implisitt antatt at fua har samme kjøretid som F. et er ikke helt korrekt, men sensor har likevel tatt det for god fisk. Oppgave 2 a) Stakker og køer er beholdere med to hoved-operasjoner: isse kan kalles legg til og ta ut. I en stakk følger disse operasjonen last in, first out-prinsippet: Operasjonen ta ut fjerner alltid det sist tillagte elementet fra beholderen. I en kø følger operasjonene first in, first out-prinsippet: Operasjonen ta ut fjerner alltid det elementet som har vært lengst i beholderen. b) enne metoden fungerer fint for ArrayList-objekt, og hele løkken har kjøretid av orden O(n). ersom vi anvender den på LinkedList -objekter, så krever operasjonen get(i) sekvensiell gjennomgang av listen, og har dermed kjøretid av orden O(n). Totalt sett får løkken kjøretid av orden O(n 2 ). c) En rekursiv funksjon er en funksjon som kaller seg selv. e viktigste bestanddelene er Stoppbetingelsen: Rekursjonen må koke ned til et basistilfelle som håndteres direkte.

Ett eller flere rekursive funksjonskall. Utover dette vil en rekursiv funksjon gjerne gjøre en del for- og etterarbeid. d) Hash-tabeller brukes for lagring og søk etter data, typisk i form av hashmengder (HashSet) og hashavbildninger (HashMap). e) ersom man skal legge nye objekter inn i hashtabeller som har brukt opp kapasiteten sin, må vi utvide kapasiteten ved å kopiere den underliggende arrayen over i en ny og større array. Siden objektenes indeks avhenger av tabellstørrelsen (index = hashode % capacity), må indeksen til alle objektene beregnes på nytt før objektene kan lagres på riktig plass i den nye arrayen. f) For en liste av lengde n har Heap sort kjøretid av orden O(n log n). g) Tre med balansefaktorer: (2) 0 (0) 4 (-) 2 () 5 (0) (0) alansert tre: 2 4 0 5 Oppgave a) (v) Merge sort. b) (iii) ubble sort 2

Oppgave 4 a) Naboskapsmatrisen kan fremstilles slik: A A b) et følgende er et minmum spanning tree for grafen: A c) Ja. Vi har for eksempel følgende Hamiltonske rundreise: A d) Vi angir veier i grafen som lister av noder, med den totale veilengden i parentes: A, () A,, (2) A (0) A, () A,, (4) A, () A, () A,,, () A,, (4) A,,, () A,, (4) A,, (4) Utifra dette konkluderer ijkstras algoritme med at den korteste veien fra A til er som følger:

A Oppgave 5 a) Inorder traversal. b), 2,, 4, 5. c) public boolean contains(omparable thetarget) { Node current = root; int cmp; } while (current!= null) { cmp = target.compareto(current.element); if (cmp == 0) return true; else if (cmp < 0) current = current.left; else if (cmp > 0) current = current.right; } return false; Oppgave 6 a) I dette tilfellet vil sort-steget ha kjøretid av orden O(n log n). enqueue -operasjonen har dermed kjøretid av orden O(n log n). dequeue har konstant kjøretid. ermed vil usequeue har kjøretid av orden O(n 2 log n), siden den medfører n kall av enqueue. b) Her vil sort-steget ha overraskende kort kjøretid: Siden arrayen data til enhver tid er sortert, vil Insertion sort ha kjøretid av orden O(n). enqueue-operasjonen har dermed kjøretid av orden O(n). dequeue 4

har konstant kjøretid. ermed vil usequeue har kjøretid av orden O(n 2 ), siden den medfører n kall av enqueue. c) ersom vi bruker en heap kan vi implementere både enqueue og dequeue med kjøretid av orden O(log n). ermed vil usequeue ha kjøretid av orden O(n log n). Oppgave 7 Her berører vi temaet ekstern sortering. en typiske fremgangsmåten er å laste segmenter av dataene opp i arbeidsminnet og utføre konvensjonell sortering der. e sorterte segmentene skrives tilbake til harddisken hvor de blir flettet sammen på en systematisk måte. Se f.eks: External Sorting on Wikipedia MergeSort (Som beskrevet over) Man kan dele tabellen opp i segmenter som er tilstrekkelig små til å lastes opp i datamaskinens minne. isse segmentene sorteres på konvensjonell måte, f.eks ved hjelp av Quicksort. e sorterte segmentene kan så flettes sammen, på sammen måte som i vanlig Merge sort, bortsett fra at vi nå arbeider på systemets harddisk. I denne enkleste løsningen vil vi mye av kjøretiden gå med på å lese og skrive på harddisken. Med fornuftig bufring kan vi redusere denne ulempen betraktelig. Scoring (Situasjonsbetinget løsning) ersom hovedproblemet med tabellen vår ikke er antallet objekter, men objektenes størrelse, kan det tenkes å være mulig å hente ut sorteringsnøkkel fra dataene (en poengsum/score). ermed kan man lage en tabell i arbeidsminnet over sorteringsnøkler og opprinnelig indeks. enne kan sorteres på konvensjonelt vis, og brukes til å konstruere en sortert liste på harddisken. 5