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

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

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

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

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 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.

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

EKSAMEN. Algoritmer og datastrukturer

EKSAMEN. Emne: Algoritmer og datastrukturer

Algoritmer og Datastrukturer

EKSAMEN med løsningsforslag

Algoritmer og Datastrukturer

Binære trær: Noen algoritmer og anvendelser

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

UNIVERSITETET I OSLO

Definisjon av binært søketre

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

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

PG4200 Algoritmer og datastrukturer Forelesning 7

Et eksempel: Åtterspillet

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

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Eksamen

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

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

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

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

Definisjon: Et sortert tre

UNIVERSITETET I OSLO

Emnekode: I-Dato: I ~ Antall oppgaver: I I Aiie -sk:i=rftlige - bme trykte og håndskrevne, samt alle typer

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

København 20 Stockholm

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

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

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:

KONTINUASJONSEKSAMEN

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

Hashing: Håndtering av kollisjoner

UNIVERSITETET I OSLO

Lars Vidar Magnusson

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

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øsnings forslag i java In115, Våren 1998

UNIVERSITETET I OSLO

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

Obligatorisk oppgave 1 INF1020 h2005

Algoritmer og Datastrukturer

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

KONTINUASJONSEKSAMEN

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

Innhold. Innledning 1

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Oppgave 1. Løsningsforslag til eksamensoppgave. ITF20006 Algoritmer og datastrukturer Postorden traversering:

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

INF2220: Forelesning 2

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 99HINDB / 99HINEA / 00HDESY ( 2DA / 2DB / 2EA / DESY )

UNIVERSITETET I OSLO

Løsningsforslag EKSAMEN

Notater til INF2220 Eksamen

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Eksamen

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

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

INF2220: Forelesning 2

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

Løsningsforslag til INF110 h2001

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

~ta11 oppgaver: 4. Nle skriftlige hjelpemidler-både trykte og håndskrevne, er tillatt

Algoritmer og Datastrukturer

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

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

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

E K S A M E N. EKSAMENSDATO: 15. desember 1994 TID: Kladd og oppgavearkene leveres sammen med besvarelsen. Kladd merkes med "KLADD".

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Algoritmer og Datastrukturer IAI 21899

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

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

Norges Informasjonsteknologiske Høgskole

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Norges Informasjonsteknologiske Høgskole

UNIVERSITETET I OSLO

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

Algoritmer og datastrukturer Løsningsforslag

Pensum: fra boken (H-03)+ forelesninger

Transkript:

EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består av 12 sider, inkludert denne forsiden og 1 vedlegg. Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Oppgavesettet har 4 oppgaver, hver av dem har flere deloppgaver. Innen hver oppgave vektes alle deloppgaver likt. Les oppgavetekstene nøye før du begynner på besvarelsen. Legg vekt på å skrive en ryddig og lett forståelig besvarelse. Sensurfrist: 18. juni 2018 Karakterene er tilgjengelige for studenter på studentweb senest 2 virkedager etter oppgitt sensurfrist. www.hiof.no/studentweb Side 1 av 12

Oppgave 1: Flervalgsoppgave (30%) Denne oppgaven har 15 delspørsmål. Alle spørsmålene har to, tre eller fire svaralternativer (nummerert fra a til b, c eller d), men bare ett av dem er riktig. Du skal for hvert spørsmål angi hvilket av alternativene du mener er det riktige. Skriv svarene dine på denne formen 1 : Spørsmål: Spørsmål: 1 2 3 4... 14 15 Svar: a b c d b a 1. Hvilken av følgende datastrukturer lagrer alltid dataene i sortert rekkefølge? a) Stack b) Lenket liste c) Heap d) Ingen av alternativene a c ovenfor er sorterte. 2. Hvilken av følgende datastrukturer lagrer alltid dataene i sortert rekkefølge? a) Binært søketre b) AVL-tre c) B-tre d) Alle alternativene a c ovenfor er sorterte. 3. Hvilken av følgende datastrukturer er mest effektiv å bruke til å implementere en prioritetskø som skal lagre et stort antall elementer? a) Stack b) Kø c) Heap d) Hashtabell 4. Kjøretiden til flettesortering (merge sort) av en array avhenger av: a) Lengden på arrayen som skal sorteres. b) Verdiene og rekkefølgen på dataene som skal sorteres. c) Antall like verdier i arrayen. d) Alle de tre faktorene som er nevnt i alternativene a c ovenfor. (Oppgave 1 fortsetter på neste side) 1 Svarene angitt her er bare eksempler og ikke nødvendigvis riktige. Side 2 av 12

5. Hvilken av følgende sorteringsmetoder kan ikke garantere at arbeidsmengden alltid er O(n log n): a) Merge sort b) Quicksort c) Heapsort d) Alle alternativene a) c) ovenfor har arbeidsmengder som garantert er O(n log n). 6. Hvilken av følgende sorteringsmetoder er raskest for svært lange arrayer med flere titalls millioner floating point tall, der dataene er tilfeldig (random) fordelt? a) Shell sort b) Heapsort c) Quicksort d) Merge sort 7. Følgende binære søketre skal traverseres: Nodene oppsøkes i denne rekkefølgen: 27 14 35 10 19 31 42. Hvilken traverseringsmetode er brukt? a) Preorder b) Inorder c) Postorder d) Bredde-først 8. Er det binære søketreet i spørsmål 7 også et AVL-tre? a) Ja b) Nei 9. Er det binære søketreet i spørsmål 7 også et B-tre? a) Ja b) Nei (Oppgave 1 fortsetter på neste side) Side 3 av 12

10. I en maks-heap er verdien til en foreldernode alltid større eller lik verdien i barna. Hvilken av disse fire figurene er en maks-heap? 11. En heap implementeres vanligvis med bruk av en array. Hvilken av disse fire arrayene representerer en maks-heap? a) 25, 12, 16, 13, 10, 8, 14 b) 25, 14, 16, 13, 10, 8, 12 c) 25, 14, 16, 13, 10, 8, 17 d) 25, 13, 16, 12, 14, 8, 12 12. Load factor L for en hashtabell er forholdet mellom antall dataelementer n som er lagret, og lengden H på hastabellen: L = n H Under kjøring av et program som bruker hashing, ble verdien L = 1.4 beregnet. Hvilken teknikk ble brukt i programmet for å håndtere kollisjoner i hashtabellen? a) Åpen adressering med lineær probing b) Åpen adressering med kvadratisk probing c) Hashing med kjeding d) Rehashing (Oppgave 1 fortsetter på neste side) Side 4 av 12

13. Figuren nedenfor viser en hashtabell med lengde lik 10, etter det er satt inn 6 heltall. Det brukes åpen adressering med lineær probing. Hashverdien h for en dataverdi k beregnes som resten ved heltallsdivisjon med hashlengden: h(k) = k mod 10. Dvs. at hashindeksen til et heltall alltid er lik det siste sifferet i tallet. Hvilken av de fire rekkefølgene nedenfor er brukt ved innsetting av de 6 tallene? a) 46 42 34 52 23 33 b) 34 42 23 52 33 46 c) 46 34 42 23 52 33 d) 42 46 33 23 34 52 14. Hvilken hjelpedatastruktur brukes i dybde-først traversering av en graf? a) Heap b) Kø c) Hashtabell d) Ingen av alternativene a c ovenfor. 15. Følgende urettede graf er gitt: Hvilken av disse fire rekkefølgene av noder er en (standard kø-basert) bredde-først traversering av grafen? a) M N O P Q R b) N Q M P O R c) Q M N P R O d) Q M N P O R (Slutt på oppgave 1) Side 5 av 12

Oppgave 2: Stack og kø (15%) I deloppgavene a) c) nedenfor er det gitt tre Java-funksjoner som bruker enten en stack eller en kø. Dataene som lagres på stack eller i kø er enkle heltall. Alle funksjonene har en parameter n som er et positivt heltall. Beskriv kort hva som skrives ut ved et kall på hver av funksjonene. Det er tilstrekkelig å angi hva som skrives ut for en gitt verdi av n, f.eks. for n = 10. a) void metode_a(int n) stack S = new stack(); for (int i = 1; i <= n; i++) S.push(i); for (int i = 0; i < n; i++) System.out.print(S.pop() + " "); System.out.println(); b) void metode_b(int n) queue Q = new queue(); for (int i = 1; i <= n; i++) Q.enqueue(i); for (int i = 0; i < n; i++) System.out.print(Q.dequeue() + " "); System.out.println(); c) void metode_c(int n) stack S = new stack(); S.push(0); S.push(1); for (int i = 3; i <= n; i++) int f2 = S.pop(); int f1 = S.pop(); S.push(f1); S.push(f2); S.push(f1 + f2); for (int i = 1; i <= n; i++) System.out.print(S.pop() + " "); System.out.println(); (Oppgave 2 fortsetter på neste side) Side 6 av 12

d) Alle de tre funksjonene i deloppgavene a) c) ovenfor har samme (asymptotiske) arbeidsmengde. Hva er arbeidsmengden til hver funksjon, angitt med O-notasjon? Gi en kort begrunnelse for svaret. (Slutt på oppgave 2 ) Side 7 av 12

Oppgave 3: B-trær (20%) I denne oppgaven skal det brukes B-trær av orden 4. Dataene som skal lagres i B-trærne består bare av heltall. a) I et B-tre av orden 4: i) Hva er minste og største antall verdier som kan lagres i en node? ii) Hva er minste og største antall barn som en indre node i treet kan ha? Når en node i B-treet ikke har plass til en ny verdi, skal noden deles på følgende måte: Den minste verdien i noden skal legges i en ny node til venstre. De to største verdiene i noden skal legges i en ny node til høyre. Den nest minste verdien skal sendes opp til nivået ovenfor i treet. Følgende 12 verdier skal settes inn i B-tre av orden 4, som i utgangspunkt er tomt, i denne gitte rekkefølgen: 16 4 8 12 7 11 15 6 7 2 3 5 b) Tegn en figur som viser hvordan B-treet ser ut etter at de tre første verdiene 16, 4, og 8 er satt inn. c) Tegn en figur som viser hvordan B-treet du tegnet i deloppgave b) ser ut etter at de tre neste verdiene 12, 7, og 11 er satt inn. d) Tegn en figur som viser hvordan B-treet du tegnet i deloppgave c) ser ut etter at de resterende verdiene 15, 6, 7, 2, 3 og 5 er satt inn. e) Hva er høyden av dette B-treet etter at alle de 12 verdiene er satt inn? (Slutt på oppgave 3) Side 8 av 12

Oppgave 4: Binære søketrær (35%) I denne oppgaven skal det brukes vanlige binære søketrær (ikke AVL-trær), der hver node i treet bare inneholder et enkelt heltall i tillegg til pekere/referanser til nodens venstre og høyre barn. Det er tillatt med flere like verdier i treet. Ved innlegging av en verdi som finnes i treet fra før, skal denne havne til høyre for en node med samme verdi. Følgende 12 verdier skal settes inn i et søketre som i utgangspunkt er tomt, i denne gitte rekkefølgen: 16 4 8 12 7 11 15 6 7 2 3 5 a) Tegn en figur som viser hvordan treet ser ut etter at de 12 verdiene ovenfor er satt inn. b) Hva er høyden på søketreet som du tegnet i deloppgave a) ovenfor? c) Tegn en figur som viser hvordan treet du tegnet i deloppgave a) ovenfor ser ut etter at verdien 4 er fjernet fra treet. I deloppgavene d), f) og g) nedenfor, skal du skrive eller skissere Java-metoder for binære søketrær. En ufullstendig implementasjon av binært søketre med enkle heltallsdata er gitt i klassen intsearchtree i vedlegg 1. d) Klassen intsearchtree i vedlegg 1 inneholder en funksjon: public int numodd() som skal beregne antallet oddetall (heltall som ikke er delelige med 2) som er lagret i søketreet. For f.eks. et søketre som bare inneholder de 12 verdiene som brukes i deloppgave a) ovenfor, vil denne funksjonen returnere verdien 6 fordi søketreet inneholder de 6 oddetallene 7, 11, 15, 7, 3 og 5. Funksjonen numodd kaller en intern hjelpefunksjon: private int countodd(treenode r) som gjør selve opptellingen av antall oddetallsverdier. Skriv funksjonen countodd. Funksjonen skal være rekursiv. e) Hva er arbeidsmengden for funksjonen countodd, uttrykt med O-notasjon, for et søketre som inneholder n verdier? (Opppgave 4 fortsetter på neste side) Side 9 av 12

f) Klassen intsearchtree i vedlegg 1 inneholder en funksjon: public void print(int a, int b) der verdien av parameteren a skal være mindre eller lik verdien av b. Funksjonen print skal skrive ut alle verdiene i søketreet som er større eller lik a og mindre eller lik b, i sortert rekkefølge. For f.eks. et søketre som bare inneholder de 12 verdiene som brukes i deloppgave a) ovenfor, skal funksjonskallet print(4,9) resultere i utskriften: 4 5 6 7 7 8 Funksjonen print kaller en intern hjelpefunksjon: private void printrange(treenode r, int a, int b) som gjør selve utskriften. Skriv funksjonen printrange. Funksjonen skal være rekursiv og helst så effektiv som mulig. g) I et binært tre er hjørnenodene definert som de nodene som ligger hhv. lengst til venstre og lengst til høyre på hvert nivå i treet. Det finnes enten en (hvis det bare er én enkelt node i et nivå) eller to hjørnenoder for hvert nivå i treet. I det binære treet i figuren nedenfor har hjørnenodene (fra øverste nivå og nedover i treet) verdiene 8, 3 og 10, 1 og 14, og til slutt 4 og 13. Beskriv, enten med tekst eller kode, en algoritme for å skrive ut bare verdiene i alle hjørnenodene i et binært tre. Hint: Ta utgangspunkt i algoritmen for bredde-først traversering av binære trær. (Slutt på oppgave 4) Side 10 av 12

Vedlegg 1 Enkel og ufullstendig implementasjon av binært søketre med heltall public class intsearchtree // Indre klasse for nodene i treet // private class treenode private int value; private treenode left, right; private treenode(int v) value = v; left = right = null; private treenode root; // Roten i søketreet // Konstruktør for å opprette tomt søketre // public intsearchtree() root = null; // Funksjon for å sjekke om treet er tomt // public boolean isempty() return root == null; // Innsetting av ny verdi i søketre // public void insert(int value) if (root == null) root = new treenode(value); return; treenode current = root, parent = null; while (current!= null) parent = current; current = (value < parent.value)? parent.left : parent.right; current = new treenode(value); if (value < parent.value) parent.left = current; else parent.right = current; Side 11 av 12

// Beregner antallet oddetall som er lagret i treet // public int numodd() return countodd(root); private int countodd(treenode r) // Skal programmeres i oppgave 4 d) // Skriver ut alle verdier x i treet som er slik at a <= x <= b // public void print(int a, int b) printrange(root, a, b); System.out.println(); private void printrange(treenode r, int a, int b) // Skal programmeres i oppgave 4 f) // Slutt på klassen intsearchtree Side 12 av 12