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



Like dokumenter
Algoritmer og datastrukturer Eksamen 22. februar 2011

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

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen

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

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

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

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

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

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Algoritmer og datastrukturer Løsningsforslag

Algoritmer og datastrukturer Løsningsforslag

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

EKSAMEN med løsningsforslag

Algoritmer og datastrukturer Løsningsforslag

EKSAMEN. Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Løsningsforslag

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

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

Algoritmer og datastrukturer Kapittel 5 - Delkapittel 5.1

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og Datastrukturer

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

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3

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

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

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Kapittel 5 - Delkapittel 5.4

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.4

Algoritmer og datastrukturer Kapittel 9 Delkapittel 9.2

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til Ant. oppgaver 6

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

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

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

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

Ol Emnekode: Faglig veileder: I L~~25 A - E!8 Viho~d~.1. F ntall oppga~ forsiden): ;;;handskr~vn-;

Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.3

Et eksempel: Åtterspillet

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

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

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

EKSAMEN. Objektorientert programmering

UNIVERSITETET I OSLO

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

Object [] element. array. int [] tall

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

INF Seminaroppgaver til uke 3

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

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

Løsningsforslag EKSAMEN

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

TOD063 Datastrukturer og algoritmer

Binære trær: Noen algoritmer og anvendelser

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

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

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

INF1010 Binære søketrær ++

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Løsningsforslag til INF110 h2001

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

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

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

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

UNIVERSITETET I OSLO

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

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

EKSAMEN. Emne: Algoritmer og datastrukturer

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Norges Informasjonsteknologiske Høgskole

UNIVERSITETET I OSLO

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

Definisjon av binært søketre

UNIVERSITETET I OSLO

Transkript:

G høgskolen i oslo Emne: Algoritmer og datastrukturer Emnekode: 80131A Faglig veileder: UlfUttersrud Gruppe(r) : Dato: 09.12.2004 Eksamenstid: 9-14 Eksamensoppgaven består av: Tillatte hjelpemidler Antall sider (inkl. forsiden): 3 Antall oppgaver 4 Antall vedlegg: 1 (2 sider) Alle skriftlige hjelpemidler - både trykte og håndskrevne. er tillatt Kandidaten må selv kontrollere at oppgavesettet er fullstendig. Ved eventuelle nklarheter oppgaveteksten skal du redegjøre for de forutsetninger du legger til grunn for løsningen. Råd og tips: Bruk ikke for lang tid på et punkt i en oppgave hvis du ikke får det til innen rimelig tid. Gå isteden videre til neste punkt. Hvis du i et senere punkt far bruk for det du skulle ha laget i et tidligere punkt, kan du fritt bruke resultatet som om det var løst og at løsningen virker slik som krevd i oppgaven. Prøv alle punktene. Det er ikke lurt å la noen punkter stå helt blanke. Til og med det å demonstrere i en eller annen form at du har forstått hva det spørres etter og/eller at du har en ide om hvordan det kunne løses, er bedre enn ingenting. Det er heller ikke slik at et senere punkt i en oppgave nødvendigvis er vanskeligere enn et tidlig punkt. Alle de 10 bokstavpunktene teller likt! Hvis du skulle trenge en datastruktur eller en metode som hører til java.util eller er laget i undervisningen, kan du fritt bruke det uten å måtte lage det selv. Men du bør kommentere at du gjør det! 1/ I f.- f-

Oppgave 1 A) Lag metoden public static int[] ffnn(int[] a, int verdil, int verd/2) der tabellen a på forhgnd er sortert stigende. Den kan inneholde Ilke verdier. Metoden skal returnere en inttabell som Inneholder I sortert rekkefølge nøyaktig de verdiene fra a som er større enn eller Ilk verdilog mindre enn eller Ilk verd/2. Verdiene verdilog verdi2 kan, men behøver ikke ligge i tabellen a. Hvis det ikke finnes slike verdier i a (dvs. verdier som er større enn eller lik verdilog mindre enn eller lik verdi2), returneres en tom tabell. Kravet er at metoden skal virke, men for å f~ topp score mg løsningen være effektiv. Eksempel: Hvis a Inneholder verdiene 2, 3, 5, 5, 7,8, 10, 12, 13 skal kallet ffnn(a,s,9) returnere en tabell som Inneholder S, S, 7, 8. B) Gitt tallene 5, 15, 10, 20, 17, 19, 18 og 22. Legg dem inn forløpende I et pa forhand tomt rød-svart tre og tegn det treet du tar n~r alle er lagt Inn. Legg s~ de samme verdiene fortløpende Inn I et p~ forhand tomt 2-3-4 tre og tegn det treet du f~r nar alle er lagt Inn. Bruk Innleggingsalgoritmen slik den er beskrevet i kompendlet. Gjør sa 2-3-4 treet om til et rød-svart tre og tegn treet. Bruk konsekvent Forme/2a fra kompendlet nar du "oversetter" en 2-3-4 node med to verdier til to node r I det rød-svarte treet. Oppgave 2 En prioritetskø skal organiseres som en usortert pekerkjede. Det betyr at vi m& lete gjennom hele pekerkjeden for & finne den som har høyest prioritet (dvs. den største verdien). Men innlegging av verdier blir lett siden nye verdier kan legges helt fø rst I pekerkjeden. I vedlegget er det satt opp et skjelett' for klassen ListePrioritetsKø. Den inneholder c/ass Node som en lokal klasse. Det skal Ikke legges inn flere instansvariabler I c/ass ListePrioritetsKø og c/ass Node enn de som allerede er satt opp. Klassen UstePrioritetsKø er generisk. En komparator brukes til sammenligningene. A) Lag metoden public void legglnn(object verdi). Den skal legge parameterverdien verdi Inn i en ny node og denne skal plasseres helt først I pekerkjeden. Prioritetskøen er tom hvis pekeren hode er nu". Lag metoden public boolean tom(). Klassen Inneholder Ingen antall-variabel. Dermed m~ pekerkjeden traverseres og nodene telles opp for at vi skal kunne finne antallet verdier I prioritetskøen. Lag metoden public Int antallq. Den skal returnere antallet verdier. B) Lag metoden public Object kikk(). Den skal returnere den verdien i prioritetskøen som har høyest prioritet (størst verdi). Hvis det er flere med samme høyeste prioritet er det likegyldig hvilken av dem som returneres. Lag metoden public Object taut(). Den skal returnere og fjerne fra prioritetskøen den verdien som har høyest prioritet (størst verdi). Hvis det er flere med samme høyeste prioritet er det likegyldig hvilken av dem som returneres (og fjernes). Oppgave 3 I vedlegget er det satt opp en datastruktur for et binært søketre (et sortert binærtre). Klassen heter BinTre. En konstruktør og metodene /egglnn og tom er ferdigkodet. Det er tillatt med Ilke verdier I treet. Det skal ikke legges inn flere Instansvariabler i c/ass B/n Tre og c/ass Node enn de som allerede er satt opp. A) Lag metoden public Object finnmaks(). Den skal returnere treets største verdi. Hvis treet er tomt skal metoden returnere nu". B) Metoden public Object finn(object verdi) har verdi som parameterverdi. Metoden skal returnere verdi hvis den finnes i treet og returnere den verdien i treet som kommer rett etter verdi I Inorden hvis verdi ikke finnes. Hvis verdi er større enn største verdi i treet skal metoden returnere nu". Lag metoden. C) Lag metoden public Object[l finn(object ver~il;'object verdi2). Metoden skal returnere -ai.;;.:

en Object-tabell som inneholder I sortert rekkefølge nøyaktig de verdiene I treet som er større enn eller lik verdilog mindre enn eller lik verdi2. Verdiene verdilog verdi2 kan, men behøver ikke ligge I treet. Hvis det Ikke finnes slike verdier I treet (dvs. verdier som er større enn eller Ilk verdilog mindre enn eller Ilk verdi2), returneres en tom tabell. Kravet er at metoden skal virke, men for ~ f~ topp score m~ løsningen være effektiv. Hvis du finner det vanskelig ~ f~ returnert de aktuelle verdiene som en tabell, vil du kunne f~ noe uteiling her hvis du I stedet f~r skrevet dem ut til skjermen. Du vii ogs~ kunne f~ noe utelling hvis du f r ut de rette verdiene uten at de er sortert. Oppgave 4 / A) Skriv ut nodeverdiene i binærtreet I FIgur 1 I preorden, Inorden, postorden og omvendt niv~orden. Omvendt niv~orden betyr nlv~ for nlv~ fra det øverste (O-te) nlv~et og nedover og fo~hvert nlv~ fra høyre mot venstre. B) Gitt flg. frekvensfordeling for tegnene A, B, C, D, E og F: ~ Frekvens' Figur 1 Tegn det treet som Huffmans algoritme gir for denne frekvensfordelingen. Tegn deretter det tilhørende kanoniske treet. Sett til slutt opp de bitkodene som det kanoniske treet (se avsnitt 5.4.7 og 5.4.8 I kompendiet) gir for tegnene. C) Et binærtre med positive hele tall som nodeverdier, vii være et Huffmantre hvis a) treet har minst 3 noder, b) treet er fullt, c) nodeverdien I hver Indre node er Ilk summen av verdiene i nodens to barn og d) nodeverdlene.ier avtagende I omvendt niv~orden. Hvis vi tilordner et tegn til hver bladnode I et slik tre, vil treet bli Huffmantreet til frekvensfordelingen gitt av bladnodeverdiene. Treet I Figur 1 er et eksempel p~ et tre som oppfyller kravene a), b), c) og d). Vi tenker oss at metoden private boolean erhuffmalj(node rot) ligger I en eller annen BinTre-klasse der den lokale nodeklassen ser slik ut: private static class Node private int verdi; private Node venstre, høyre; Parameteren rot er en peker til rotnoden i et binærtre der nodeverdiene garantert er positive tall. Metoden skal returnere true hvis treet oppfyller kravene a), b) c) og d) over og returnere false ellers. Lag metoden. Du bestemmer selv om du vii lage egne hjelpemetoder. Slutt pl oppgavesettet! 'Tegn A ~BIC D :;.J!- 12 3 2 7 15r4-3-

Vedlegg (2 sider) Algoritmer og datastrukturer - 09.12.2004 public class ListePrioritesKø implements PrioritetsKø private static final class Node private Object verdi; private Node neste; private Node(Object verdi, Node neste this.verdi = verdi; this.neste = neste; II class Node private Node hode; private Comparator c; p~lic ListePrioritesKø(Comparator C this.c = Ci hode = null; public void legginn(object verdi / kode mangler - Skal lages public Object kikk). public Object taut(). ~lic boolean tom () l I kode mangler - skal lages ~lic int antall() public void nu1.1sti!1() hode = null;. II class ListePrioritesKø IltltHilLIII/11 Illflll '111/flliff/

public class BinTre II et binært søketre private static final class Node II lokal nodeklasse private Object verdi; private Node venstre, høyre; private Node(Object verdi) this.verdi - verdi; / konstruktør I1 class Node private Node rot; private Comparator comp; I1 peker til rotnoden I1 en komparator public BinTre(Comparator c rot - null; comp = c )' II konstruktør public void legginn(object verdi) Node p = rot, q - null; int cmp = O; while (p!- null) J q ~ p; II q skal være forelder til p cmp = comp.compare(verdi,p.verdi); II bruker komparatoren p = cmp < O? p.venstre : p.høyre; II flytter p ii (q =- null) rot = new Node(verdi); else ii (cmp < O) q.venstre = new Node(verdi); else q.høyre - new Node(verdi); public boolean tom() return rot == null; public Object finnmaks() kode mangler - skal lages public Object finn(object verdi f public Object finn (Object verdi!, Object verdi2) II class BinTre 2