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

Like dokumenter
EKSAMEN. Dato: 28. mai 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

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

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

EKSAMEN med løsningsforslag

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

Algoritmer og datastrukturer Eksamen

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

Binære trær: Noen algoritmer og anvendelser

Algoritmer og Datastrukturer

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

Definisjon av binært søketre

Algoritmer og datastrukturer Eksamen 22. februar 2011

Algoritmer og datastrukturer Eksamen

EKSAMEN. Emne: Algoritmer og datastrukturer

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

PG4200 Algoritmer og datastrukturer Forelesning 7

Algoritmer og datastrukturer Eksamen

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

Definisjon: Et sortert tre

EKSAMEN. Emne: Algoritmer og datastrukturer

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

UNIVERSITETET I OSLO

Oppgave 1. Sekvenser (20%)

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

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Løsningsforslag

UNIVERSITETET I OSLO

Et eksempel: Åtterspillet

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

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

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

Algoritmer og Datastrukturer

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

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Algoritmer og datastrukturer Eksamen

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

KONTINUASJONSEKSAMEN

Et eksempel: Åtterspillet

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

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

København 20 Stockholm

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

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

Fagnr: A. Ant. vedlegg: 1 (2 sider)

Trær. Består av sammenkoblede noder Hver node har 0 eller flere barne-noder. Må være asyklisk. Et tre med n noder har n-1 kanter.

Algoritmer og datastrukturer Eksamen

INF2220: Forelesning 2

Liste som abstrakt konsept/datatype

Lars Vidar Magnusson

Algoritmer og datastrukturer Løsningsforslag

UNIVERSITETET I OSLO

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:

UNIVERSITETET I OSLO

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

Algoritmer og Datastrukturer

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

Løsningsforslag til INF110 h2001

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Notater til INF2220 Eksamen

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

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

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

Datastrukturer for rask søking

UNIVERSITETET I OSLO

INF2220: Forelesning 2

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Løsningsforslag EKSAMEN

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Obligatorisk oppgave 1 INF1020 h2005

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

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Algoritmer og datastrukturer Løsningsforslag

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

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

Fagnr: SO 131 A. Ant. vedlegg: 1 (2 sider)

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

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

Trær. En datastruktur (og abstrakt datatype ADT)

UNIVERSITETET I OSLO

Norges Informasjonsteknologiske Høgskole

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

KONTINUASJONSEKSAMEN

Fagnr: A. Ant. vedlegg: 1 (2 sider)

INF Algoritmer og datastrukturer

Transkript:

Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 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 2 vedlegg. Kontrollér 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: 26. januar 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 (25%) Denne oppgaven har 20 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: 1 2 3 4... 19 20 Svar: a b c d b a Spørsmål: 1. Følgende gjelder for en min-heap: a) Foreldernoder har verdier som er større eller lik verdiene i barna. b) Foreldernoder har verdier som er mindre eller lik verdiene i barna. c) Både alternativ a og alternativ b ovenfor er riktig. d) Både alternativ a og alternativ b ovenfor er feil. 2. Følgende gjelder for en max-heap: a) Den brukes til å lagre maksimumsverdier. b) Barnenoder har verdier som er ekte mindre enn verdien i foreldernoden. c) Barnenoder har verdier som er større enn verdien i foreldernoden. d) Den største verdien ligger lagret i rotnoden. 3. Hvilken hjelpe-datastruktur brukes i en bredde-først traversering av en graf? a) Stack b) Kø c) Hashtabell d) Ingen av alternativene a c ovenfor 4. Hvilken hjelpedatastruktur brukes i bredde-først traversering av et søketre? a) Stack b) Kø c) Hashtabell d) Ingen av alternativene a c ovenfor. 5. En lenket liste er en dynamisk datastruktur. a) Sant b) Usant (Oppgave 1 fortsetter på neste side) 1 Svarene angitt her er bare eksempler og ikke nødvendigvis riktige. Side 2 av 12

6. Kjøretiden til Quicksort avhenger: a) Bare av antall verdier som skal sorteres. b) Bare av metoden som brukes til å velge pivotelementer. c) Bare av rekkefølgen på dataene som skal sorteres. d) Av alle de tre faktorene som er nevnt i alternativene a c ovenfor. 7. Balansefaktorene i et AVL-tre brukes til å sjekke: a) Om treet skal få en ny rotnode etter innsetting av en verdi. b) Om alle barnenoder er på samme nivå. c) Når den siste rotasjonen i treet ble utført. d) Om treet har blitt ubalansert ved innsetting eller fjerning av verdier. 8. Hvilken av følgende traverseringsmetoder skriver ut verdiene i et vanlig binært søketre i stigende sortert rekkefølge? a) Preorder b) Inorder c) Postorder d) Bredde-først 9. Hvilken av følgende datastrukturer lagrer dataene i sortert rekkefølge? a) Stack b) Kø c) Hashtabell d) Ingen av alternativene a c ovenfor. 10. Hvilken av følgende søkemetoder er raskest (når arbeidsmengdene angis med O- notasjon) for svært store, sorterte arrays, der verdiene er relativt jevnt fordelt mellom minste og største verdi? a) Binært søk b) Ternært søk c) Interpolasjonssøk d) Sekvensielt søk 11. Hvilken sorteringsmetode egner seg best for arrayer som er nesten sorterte? a) Bubble sort b) Shell sort c) Innstikksortering (Oppgave 1 fortsetter på neste side) Side 3 av 12

12. Følgende vanlige binære søketre skal traverseres: Nodene oppsøkes i denne rekkefølgen: 27 14 10 19 35 31 42. Hvilken traverseringsmetode er brukt? a) Preorder b) Inorder c) Postorder d) Bredde-først 13. Verdien 15 skal settes inn i søketreet fra oppgave 12. Hvor havner den nye noden som inneholder 15? a) Til høyre for 19 b) Til venstre for 19 c) Som ny rotnode i treet d) Mellom 10 og 19 14. Verdien 35 skal fjernes fra søketreet i oppgave 12. Hvilken verdi vil ligge til høyre for rotnoden etter fjerningen? a) 31 b) 27 c) 19 d) 14 15. Hvordan ser infix-regneuttrykket (a + b) * (c + d) ut når det skrives med postfixnotasjon? a) a b * c d + + b) * + a b + c d c) a b + c d + * d) Ingen av alternativene a c ovenfor er riktige. (Oppgave 1 fortsetter på neste side) Side 4 av 12

16. Hvilken av følgende datastrukturer lagrer dataene i sortert rekkefølge? a) Binært søketre b) B-tre c) AVL-tre d) Alle alternativene a c ovenfor lagrer dataene sortert. 17. Effektiviteten til en hashtabell avhenger av: a) Hashfunksjonen b) Hashlengden c) Load factor d) Alle alternativene a c ovenfor. 18. En vanlig kø implementeres mest effektivt med bruk av: a) En array der starten på køen alltid ligger først i arrayen. b) En array der slutten på køen alltid ligger først i arrayen. c) En hashtabell d) En sirkulær array 19. En prioritetskø implementeres mest effektivt med bruk av: a) En heap b) En hashtabell c) Et AVL-tre d) En sirkulær array 20. Hvilken sorteringsmetode har alltid en arbeidsmengde som er O(n log n) for sortering av en array av lengde n? a) Shell sort b) Heapsort c) Quick sort d) Radixsortering (Slutt på oppgave 1) Side 5 av 12

Oppgave 2: Kø (25%) En toveiskø er en kø der en både kan ta ut og legge inn verdier i begge ender. I denne oppgaven skal det lages en toveiskø ved hjelp en enveis pekerkjede som kun har en hodepeker til første element i køen: I vedlegg 1 er det gitt en ufullstendig klasse twowayqueue, som implementerer en toveiskø med en slik enkeltlenket liste. Dataene i hver node i køen er bare et enkelt heltall. Du skal bruke denne klassen i de to deloppgavene nedenfor. Det skal ikke legges inn flere instansvariabler eller statiske variabler i klassen twowayqueue eller i den indre klassen node. a) Lag disse to metodene i klassen twowayqueue : public void addfirst(int value) public int removefirst() Den første metoden skal legge en ny node med angitt verdi først i køen. Den andre metoden skal fjerne den første noden og returnere nodens verdi. Du trenger ikke å skrive kode for å håndtere feilsituasjoner, som f.eks. fjerning fra tom kø. b) Lag disse to metodene i klassen twowayqueue : public void addlast(int value) public int removelast() Den første metoden skal legge en ny node med angitt verdi sist i køen. Den andre metoden skal fjerne den siste noden og returnere nodens verdi. Du trenger ikke å skrive kode for å håndtere feilsituasjoner, som f.eks. fjerning fra tom kø. (Slutt på oppgave 2) Side 6 av 12

Oppgave 3: Heap (25%) En min-heap er et komplett, balansert binært tre der verdiene er ordnet, men ikke sortert. Figur 1 nedenfor viser en min-heap med 12 noder, der verdiene er enkle heltall. Figur 1 a) Tegn en figur som viser hvordan treet i figur 1 ser ut etter innsetting av verdien 6. b) Tegn en figur som viser hvordan treet som du tegnet i deloppgave a ovenfor, ser ut etter innsetting av verdien 10. c) Tegn en figur som viser hvordan treet i figur 1 ser ut etter at den minste verdien er fjernet. d) En binært tre som er en heap kan lagres effektivt i en array, fordi det ikke er noen «hull» i treet. Her er en array som representerer en heap med 19 noder: Tegn denne heapen med 19 noder som et binært tre. (Slutt på oppgave 3) Side 7 av 12

Oppgave 4: Binært søketre (25%) I vedlegg 2 er det gitt en Java-klasse searchtree. Dette er en uferdig implementasjon av et binært søketre, der verdien i hver node er et enkelt heltall. I motsetning til i et vanlig binært søketre, skal det ikke være tillatt med like verdier i et søketre av klassen searchtree. Alle verdiene i treet skal være ulike. a) I klassen searchtree er det gitt en metode for å sette inn en ny verdi i treet: public boolean insert(int value) Denne metoden er ferdig kodet med standardmetoden for innsetting i et binært søketre, som tillater like verdier i treet. Skriv om metoden insert slik at den ikke legger inn en verdi i treet hvis den finnes fra før: Hvis metoden kalles med en verdi som ikke finnes fra før, skal denne verdien legges inn på vanlig måte. Hvis verdien finnes fra før skal metoden insert returnere false, og ingen innlegging skal gjøres i treet. Det holder at du i din besvarelse bare angir den delen av koden der det er endringer. b) Lag metoden public int depth(int value) i klassen searchtree. Den skal returnere dybden til den noden i treet som inneholder verdi. Dette er entydig siden treet ikke har like verdier. Dybden er det samme som avstanden (antall kanter) fra roten ned til noden. Det betyr spesielt at roten har dybde 0. Hvis verdi ikke ligger i treet, skal metoden returnere verdien -1. En gren i et binærtre består av alle nodene på en vei fra og med roten og ned til og med en bladnode. Anta at to forskjellige noder p og q ligger på samme gren i treet. Da sier vi at den av dem som ligger nærmest roten, er en forgjenger til den andre. Omvendt sier vi at den av dem som ligger lengst ned, er en etterkommer av den andre. Deres avstand er antall kanter på veien mellom dem. Hvis det ikke finnes en gren som inneholder begge de to nodene p og q, så må de to ha en nærmeste felles forgjenger f. I så fall sier vi at avstanden mellom p og q er lik avstanden fra p til f pluss avstanden fra q til f. Et eksempel som viser avstander i et binært tre er gitt på neste side. (Oppgave 4 fortsetter på neste side) Side 8 av 12

Figur 2 viser et binært søketre med 15 noder, der alle 15 heltallsverdier i treet er ulike: Figur 2 I figur 2 vil avstanden mellom 18-noden (noden med verdi 18) og 10-noden være lik 4. Nærmeste felles forgjenger til 15-noden og 27-noden er 18-noden. Dermed blir avstanden mellom dem (15-noden og 27-noden) lik 2 + 3 = 5. c) Lag metoden public int distance(int v1, int v2) i klassen searchtree. Den skal returnere avstanden mellom de to nodene som inneholder verdiene v1 og v2. Hvis en av verdiene (eller begge) ikke ligger i treet, skal metoden returnere -1. Du bestemmer selv hvilken løsningsteknikk du vil bruke, og om du vil bruke hjelpemetoder. (Slutt på på oppgave 4) Side 9 av 12

Vedlegg 1: Klassen twowayqueue public class twowayqueue // Toveis kø med enkel // lenket liste private final static class node private int value; private node next; private node(int v, node n) value = v; next = n; // end class node private node head; private int numnodes; public twowayqueue() head = null; numnodes = 0; public void addfirst(int value) // Skal kodes i oppgave 2 a) public int removefirst() // Skal kodes i oppgave 2 a) public void addlast(int value) // Skal kodes i oppgave 2 b) public int removelast() // Skal kodes i oppgave 2 b) // Indre nodeklasse // Verdien i noden // Peker til neste node // Konstruktør // Peker til start på kø // Antall noder i køen // Konstruktør // Sett inn først i kø // Ta ut først i kø // Sett inn sist i kø // Ta ut sist i kø // end class twowayqueue Side 10 av 12

Vedlegg 2: Klassen searchtree public class searchtree private static final class node private int value; private node left, right; // Søketre med heltall // En indre nodeklasse // Nodens verdi // Venstre og høyre barn private node(int v, node l, node r) // Konstruktør value = v; left = l; right = r; private node(int v) this(v, null, null); // Konstruktør // end class node private node root; private int n; // Roten i treet // Antall noder public searchtree() root = null; n = 0; // Konstruktør public int numnodes() // Returnerer antall // verdier i treet return n; public boolean empty() // Sjekker om treet er // tomt return n == 0; (Vedlegg 2 fortsetter på neste side) Side 11 av 12

public boolean insert(int value) // Setter inn en ny verdi // i treet. Skal skrives node p = root, q = null; // om i oppgave 4 a) int cmp = 0; while (p!= null) q = p; cmp = value p.value; p = cmp < 0? p.left : p.right; p = new node(value); if (empty()) root = p; else if (cmp < 0) q.left = p; else q.right = p; n++; return true; public int depth(int value) // Beregner dybden av // en node i treet // Skal kodes i oppgave 4 b) public int distance(int v1, int v2) // Beregner avstanden // mellom to noder // Skal kodes i oppgave 4 c) // end class searchtree Side 12 av 12