NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Like dokumenter
NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

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

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole

MED TIDESTIMATER Løsningsforslag

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

Norges Informasjonsteknologiske Høgskole

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

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

PG4200 Algoritmer og datastrukturer Forelesning 10

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

PG 4200 Algoritmer og datastrukturer Innlevering 2

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

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

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

Algoritmer og Datastrukturer

EKSAMEN med løsningsforslag

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

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.

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

Algoritmer og Datastrukturer

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

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

København 20 Stockholm

Løsningsforslag til INF110 h2001

UNIVERSITETET I OSLO

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

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

Algoritmer og Datastrukturer IAI 21899

EKSAMEN. Algoritmer og datastrukturer

Definisjon av binært søketre

PG4200 Algoritmer og datastrukturer Forelesning 12

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

Algoritmer og Datastrukturer

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Algoritmer og Datastrukturer

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

EKSAMEN. Emne: Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

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

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

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

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

Binære trær: Noen algoritmer og anvendelser

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

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

UNIVERSITETET I OSLO

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

INF Algoritmer og datastrukturer

Algoritmer og Datastrukturer

INF1010 Binære søketrær ++

INF Algoritmer og datastrukturer

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

Definisjon: Et sortert tre

Kapittel 9: Sortering og søking Kort versjon

Løsningsforslag EKSAMEN

UNIVERSITETET I OSLO

INF2220: Time 12 - Sortering

UNIVERSITETET I OSLO

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

INF1010. grensesni-et Comparable<T> grensesni-et Iterable<T> rekursjon

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Eksamen

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

Pensum: fra boken (H-03)+ forelesninger

Algoritmer og datastrukturer Løsningsforslag

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

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon

UNIVERSITETET I OSLO

Kapittel 8: Sortering og søking

Datastrukturer for rask søking

Hvor raskt klarer vi å sortere?

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

Pensum: fra boken (H-03)+ forelesninger

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

Algoritmer og datastrukturer Eksamen

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Transkript:

Oppgavesettet består av 8 (åtte) sider. NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Tillatte hjelpemidler: Ingen Side 1 av 8 Varighet: 3 timer Dato: 4.juni 2013 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 1 Angi orden til de følgende vekstfunksjonene med O-notasjon. Det er ikke nødvendig å begrunne svaret. a) f a (n) = 3 + 2n + 5n 2 + 0.9n 3 b) f b (n) = 100 log n + 1.01 n I det følgende refererer vi til Kodesnutt 1 på side 2. c) Bruk O-notasjon til å beskrive hvordan kjøretiden til fua avhenger av n. d) Bruk O-notasjon til å beskrive hvordan kjøretiden til fub avhenger av n. Oppgave 2 a) Forklar forskjellen mellom binært og sekvensielt søk. Når kan man bruke binært søk? Når må man søke sekvensielt? b) Skriv en java-implementasjon av sekvensielt søk i en tabell. Metoden skal returnere 1 ved mislykket søk. Ved vellykket søk skal indeksen til det søkte objektet returneres.

Side 2 av 8 public static void fua(int n) { for (int i = 0; i < n ; i++) for (int j = 0; j < n; j++) dosomething(i,j); public static void fub(int n) { for (int i = 1 ; i < n; i*=2) fua(i); private static void dosomething(int i, int j) { System.out.printf("i = %d\tj = %d",i,j);// O(1) Kodesnutt 1: Java-kode tilhørende Oppgave 1. Vi gjør den forenklende antagelsen at dosomething har konstant kjøretid. loop 1: for (int i = 0; i < list.size(); i++) doaction(list.get(i)); Iterator<Object> iter = list.iterator(); loop 2: while (iter.hasnext()) doaction(iter.next()); loop 3: while (!list.isempty()) doaction(list.remove(0)); Kodesnutt 2: Listen list blir grundig iterert. Om man vil kan man anta at doaction har konstant kjøretid.

Side 3 av 8 Oppgave 3 Her refererer vi til Kodesnutt 2 på side 2. a) Drøft kjøretiden til de tre løkkene når list er en tabell-struktur som f.eks ArrayList. b) Drøft kjøretiden til de tre løkkene når list er en lenket liste som f.eks LinkedList. Oppgave 4 Her skal vi se på fem ulike sorteringsalgoritmer: (i) Quick sort (ii) Insertion sort (iii) Bubble sort (iv) Selection sort (v) Merge sort Tabell 1a og Tabell 1b på side 3 viser en liste under sortering. a) Hvilken av sorteringsalgoritmene (i-v) er brukt i Tabell 1a? b) Hvilken av sorteringsalgoritmene (i-v) er brukt i Tabell 1b? 4 9 2 1 6 5 3 1 9 2 4 6 5 3 1 2 9 4 6 5 3 1 2 3 4 6 5 9 1 2 3 4 6 5 9 1 2 3 4 5 6 9 1 2 3 4 5 6 9 1 2 3 4 5 6 9 (a) 4 9 2 1 6 5 3 4 9 2 1 6 5 3 4 9 2 1 6 5 3 2 4 9 1 6 5 3 1 2 4 9 6 5 3 1 2 4 6 9 5 3 1 2 4 5 6 9 3 1 2 3 4 5 6 9 (b) Tabell 1: Utvalgte sorteringsstadier.

Side 4 av 8 Se på den rekursive Quick sort-implementasjonen i Kodesnutt 3 på side 5. c) Hva er stoppbetingelsen her? Hva skjer når stoppbetingelsen er tilfredsstilt? d) Legg merke til den magiske konstanten 7 i Kodesnutt 3 på side 5. Her har programmererne tydeligvis bestemt seg for at 7 er et passelig stort tall. Hvilke overveielser forestiller du deg det kan ligge bak dette valget? Oppgave 5 a) Hva kjennetegner et balansert søketre? Hvorfor er balanserte søketrær å foretrekke fremfor ubalanserte? b) La T være et AVL-tre. For de to tilfellene (i) A = {1, 3, 4, 2 (ii) A = {1, 3, 2, 4 skal du fremstille treet T grafisk etter at elementene i listen A er lagt inn i det. c) Forklar kort hvordan man kan bruke hash-funksjoner til effektiv lagring og søk i data.

Side 5 av 8 private static void sort1(int x[], int off, int len) { if (len < 7) { for (int i=off; i<len+off; i++) for (int j=i; j>off && x[j-1]>x[j]; j--) swap(x, j, j-1); return; // Choose a partition element, int m = off + (len >> 1); // Small arrays, middle element /*forts. av quicksort-implementasjon*/ Kodesnutt 3: Utdrag av en implementasjon av Quick sort i klassen java.util.arrays (v 1.2) Oppgave 6 Denne oppgaven tar for seg Kodesnutt 4 på side 6. a) Anta at klassen BinarySearchTree ikke implementerer balansering. Forklar hvorfor worst case-kjøretid for treesort i dette tilfellet ikke kan være bedre enn O(n 2 ). Tips: Finn på et eksempel som gir lang kjøretid b) Anta at klassen BinarySearchTree implementerer balansering. Hvilken orden har nå kjøretiden til treesort? c) Vi ønsker å bygge en forbedret versjon av treesort. Kravene er at (i) sorteringen foregår ved å ta elementer inn og ut av et binært søketre (ii) det binære søketreet har ingen rebalanseringsmekanisme. Foreslå en forbedring av treesort som ikke bryter med disse to kravene.

Side 6 av 8 public static void treesort (Object[] A) { BinarySearchTree T = new BinarySearchTree(); for (Object obj : A) T.add(obj); int i = 0; for (Object obj : T) A[i++] = obj; class BinarySeachTree implements Iterable<Object> { /*...*/ public void add(object obj) { /*...*/ /*...*/ public Iterator<Object> iterator() { return iteratorinorder(); /*...*/ Kodesnutt 4: Tree sort. Denne sorteringsmetoden har ikke vært presentert i kurset. Klassen BinarySearchTree er en uspesifisert implementasjon av binært søketre. Algoritmen virker slik: (i) Elementene som skal sorteres legges inn i søketreet. (ii) Elementene tas ut av treet i sortert rekkefølge.

Side 7 av 8 Oppgave 7 public boolean solveproblem(network G) { double totallength = 0; for (Edge edge : G.getEdges()) totallength+=edge.weight(); for (VertexPair pair : G.getVertexPairs()) if (!pair.hasedge()) G.addEdge(pair, totallength); double sclength = findshortestcircuit(g); return sclength <= totallength; Kodesnutt 5: solveproblem Her skal vi arbeide med Kodesnutt 5 på side 7. Legg merke til følgende: Ordet circuit betegner her rundreiser i nettverket som besøker hver node eksakt én gang. Metoden findshortestcircuit returnerer lengden til den korteste rundreisen av denne typen. Vi antar at metoden findshortestcircuit kun godtar å arbeide med komplette grafer, altså grafer der alle nodene er direkte naboer. Forøvrig skal navnene gi tilstrekkelig informasjon om de ulike funksjonene og klassene.

Side 8 av 8 1 B 1 A 1 1 C D Figur 1: Eksempel a) Vi anvender metoden solveproblem i Kodesnutt 5 på eksempelet som er skissert i Figur 1 på side 8. Skissér hvordan grafen G ser ut etter de to for-løkkene. Hva returnerer solveproblem i dette eksempelet? b) Hvilket problem løser metoden solveproblem? Hva forteller informasjonen i denne oppgaven om hvilken kjøretid vi kan forvente for metoden findshortestcircuit? Slutt på oppgavesettet