København 20 Stockholm

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

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

UNIVERSITETET I OSLO

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

A 1 B 1 D 1 H 1 H 2 D 2 B 2 E 1 E 2 I 1 I 2...

UNIVERSITETET I OSLO

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

Oppgave 1. Sekvenser (20%)

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

EKSAMEN. Dato: 28. mai 2018 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. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

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

Algoritmer og Datastrukturer

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

EKSAMEN med løsningsforslag

EKSAMEN. Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Løsningsforslag til INF110 h2001

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Del 1(8%) 5 h. Del 2(42%)

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

Obligatorisk oppgave 1 INF1020 h2005

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Definisjon av binært søketre

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

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

Norsk informatikkolympiade runde

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

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

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

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

KONTINUASJONSEKSAMEN

Algoritmer og datastrukturer Eksamen 22. februar 2011

UNIVERSITETET I OSLO

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. NB! Det er ikke tillatt å levere inn kladd sammen med besvarelsen

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

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

UNIVERSITETET I OSLO

INF1010 Binære søketrær ++

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Merk: Olav Lysne og Anne Salvesen

Korteste vei i en vektet graf uten negative kanter

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

UNIVERSITETET I OSLO

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:

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

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

KONTINUASJONSEKSAMEN

INF Algoritmer og datastrukturer

Algoritmer og datastrukturer Eksamen

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

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

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

Eksamen IN1010/INF1010 våren 2018

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

INF2220: Forelesning 2

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

TDT4100 Objektorientert programmering

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

INF Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Definisjon: Et sortert tre

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 Algoritmer og datastrukturer Eksamensdag: 26. mai 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: Ingen Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Merk: Alle programmer skal skrives i Java. Hvis du har godkjente obligatoriske oppgaver fra tidligere, kan du besvare oppgaven i Simula, selv om vi anbefaler at du også da benytter Java. Du skal ikke gi noen fullstendig dokumentasjon av programmene, men du kan skrive noen få linjer som gir leseren nøkkelen til forståelse av programmet. Tegn gjerne gurer hvis dette gjør det lettere å forstå programmet. Du kan anta at leseren kjenner problemstillingen i oppgaven meget godt. Alle steder der det er spørsmål etter et program (eller en programbit) skal du skrive dette helt ut, og ikke bare henvise til liknende programmer f.eks. i læreboka. Imidlertid både kan og bør du bruke abstrakte datatyper fra pensum i programmene dine uten å implementere disse på nytt. Hvis du f.eks. bruker en kø i løsningen av et problem, trenger du ikke gi fullstendig kode for køen. Det er tilstrekkelig å kort denere køoperasjonene samt skissere datastrukturen som du ville brukt i en implementasjon. Les oppgavene nøye, og lykke til! Ragnhild Kobro Runde og Arild Waaler (Fortsettes på side 2.)

Eksamen i IN 115, 26. mai 2001 Side 2 Oppgave 1 Binære søketrær (25%) Vi skal i denne oppgaven arbeide med binære søketrær der vi tillater at det er ere forekomster av samme verdi. Følgende klassedenisjon skal brukes: class BinNode { int data; BinNode vsub; // venstre subtre BinNode hsub; // høyre subtre // Konstruktører BinNode( int element ) { data = element; vsub = hsub = null; } } BinNode( int element, BinNode v, BinNode h ) { data = element; vsub = v; hsub = h; } I tillegg har vi en variabel rot av type BinNode som refererer til roten i et binærtre. Treet er et binært søketre dersom enten rot er null eller følgende betingelser holder: både rot.vsub og rot.hsub er binære søketrær, alle data-verdiene i rot.vsub er mindre eller lik rot.data og alle dataverdiene i rot.hsub er større enn rot.data. 1-a Programmer en ikke-rekursiv metode int antall( BinNode t, int n ) som returnerer antall forekomster av tallet n ietbinært søketre med rot t. 1-b Programmer en metode boolean bst( BinNode t ) som returnerer true dersom treet med rot t er et binært søketre i henhold til denisjonen over og false ellers. (Fortsettes på side 3.)

Eksamen i IN 115, 26. mai 2001 Side 3 1-c Programmer en metode void skrivintervall( BinNode t, int min, int max ) Metoden skal gi en sortert utskrift av alle verdiene i treet med rot t som er iintervallet fra og med min til og med max. Duskal imidlertid ikke skrive ut samme tall mer enn en gang. Legg vekt på at metoden skal være så rask som mulig, også når treet er stort og inneholder mange forekomster av samme tall. Hvilken kompleksitet har metoden din? 1-d Et binærtre er komplett dersom hvert nivå i treet er fullt, med et mulig unntak for det laveste nivået, som skal være fylt fra venstre mot høyre. Programmer en boolsk metode boolean komplett( BinNode t ) som returnerer true dersom treet med rot t er komplett og false ellers. Oppgave 2 Sortering (25%) Et mobiltelefonselskap har en stor mengde samtaler hver dag. I løpet av en dag skrives informasjon om disse fortløpende til en l, slik at la ved dagens slutt inneholder informasjon om alle dagens samtaler i kronologisk rekkefølge. En slik l lagrer informasjon om T samtaler. Oppgaven går ut på å lage metoder som skal bli brukt til å generere dagens samtalelogg. Dette er en l der all samtaleinformasjon er ordnet primært etter kundenummer, sekundært etter start-tidspunkt for samtalene. Logg-la skal altså begynne med data for den første samtalen til brukeren med lavest kundenummer og skal slutte med data for den siste samtalen til brukeren med høyest kundenummer. Vi skal i denne oppgaven representere samtalene som objekter, og ikke bry oss om hvordan disse faktisk lagres på l. Vi lagrer da samtaledata som instanser av klassen SamtaleInfo, som blant annet har metodene int knr(); Dato tid(); // kundenummer til kunden bak samtalen // starttidspunkt for samtalen. Hver kunde har et entydig kundenummer. Samtaledata kan sorteres etter knr og etter tid. Du kan anta at Dato er en klasse som implementerer interfacet Comparable. (Fortsettes på side 4.)

Eksamen i IN 115, 26. mai 2001 Side 4 2-a Vi antar først at kundenumrene ligger i intervallet 1 til K og at nesten alle kundene vil ha minst en samtale pr. dag. Anta videre at internminnet alltid vil være vesentlig større enn informasjonen om alle samtalene for en dag. Programmer en Java-metode SamtaleInfo[] loggordner( SamtaleInfo[] samtale ) som tar inn dagens samtaler som en array av lengde T og returnerer en array av samtaler ordnet som en logg. Din metode skal være lineær i tid, og du skal vise dette. 2-b Vi skal nå (noe mer realistisk) anta at selskapet bruker et 8-sifret telefonnummer som kundenummer. Abonnentenes telefonnumre ligger spredt over et stort intervall. Det kan nå også være mange abonnenter som ikke har noen samtaler på en gitt dag, og at de dermed ikke bidrar til loggen på den dagen. Du skal fremdeles anta at internminnet har rikelig plass til alle samtalene. (i) Programmer en metode som gjør det samme som metoden i oppgave 2a. (ii) Gi en vurdering av kompleksiteten til metoden. 2-c Anta nå at internminnet ikke lenger er stort nok til å lagre alle samtalene på en gang. Hvordan vil du endre datastrukturen og algoritmen du brukte i 2b? Skriv kort og i stikkordsform. Oppgave 3 Grafer (40%) Et yselskap lagrer informasjon om sine reisetilbud som en vektet, urettet graf. Du kan anta at grafen er sammenhengende. Nodene angir byer (yplasser). En kant K mellom node A og node B angir at det går en direkte yreise fra A til B og en direkte yreise fra B til A. Vi skal i denne oppgaven lese vekten k til en kant mellom A og B som kostnaden til en direkte yreise mellom A og B (uansett vei). Grafen på neste side gir et bilde av hvordan en slik graf kan se ut. Den virkelige grafen er selvsagt mye større. I eksempelgrafen er kostnaden fra Oslo til Helsinki 50. En reiserute fra A til B er en liste av kanter K 1,...,K m, m 0, slik at man ved å følge kantene i angitt rekkefølge kommer fra A til B uten å besøke (Fortsettes på side 5.)

Eksamen i IN 115, 26. mai 2001 Side 5 noen noder mer enn en gang. Kostnaden til denne reiseruten deneres som k 1 +...+k m, der k i er kostnaden til kant K i.kostnaden fra en node til seg selv (dvs. en reiserute uten kanter) er 0. Prisen fra A til B bestemmes som kostnaden til den reiseruten fra A til B som har minst kostnad. (Merk at pris og kostnad brukes forskjellig!) Eksempelgraf: Oslo 50 30 Helsinki 40 40 København 20 Stockholm München 30 20 Milano 80 3-a Vi skal først se på grafen over. Bruk Dijkstras algoritme til å nne prisen fra Oslo til de andre byene. Du skal ikke forklare hvordan algoritmen virker i detalj, men vise noen situasjoner under utførelsen av algoritmen. Du må få med sluttresultatet og et par gurer til slik at mønsteret i algoritmen kommer tydelig frem. (Slutt oppgave 3a) Anta at prisen fra A til B er n. Det gis av og til ere mulige reiseruter fra A til B med pris n. Hvis N er en nabonode til B og prisen fra A til N er mindre eller lik n, tillater selskapet at man reiser via N uten tillegg i prisen. Man må da velge en reiserute fra A til N som har minimal kostnad, og etterpå reise direkte fra N til B. Vi sier da at ruten fra A til B via N er en valgbar reiserute fra A til B. Ut fra grafen ser vi at det er to valgbare reiseruter fra Oslo til København, siden vi også kan reise om Helsinki. Flyselskapet tillater at man gjør et opphold underveis på en reise. Hvis C er på en valgbar reiserute fra A til B, kan man gå av i C og fortsette reisen senere uten tillegg i prisen. Vi sier da at man reiser fra A til B med stopp i C. Hvis C ikke besøkes ienvalgbar reiserute fra A til B, kan man ikke reise fra A til B med stopp icuten å løse ny billett. (Fortsettes på side 6.)

Eksamen i IN 115, 26. mai 2001 Side 6 3-b (i) Hvorfor er en reiserute med minimal kostnad alltid valgbar? (ii) Hva er prisen fra Oslo til München med stopp i Helsinki? (iii) Kan man reise fra Oslo til München med stopp i Milano? 3-c Representasjonen av yselskapets graf skal bruke nabolister (i en eller annen form). Dener en datastruktur for yrute-grafen i form av Java-klasser. Du skal bruke denne datastrukturen i resten av oppgaven. Tegn så med piler og bokser hvordan en del av eksempelgrafen representeres i din datastruktur. 3-d Programmer Dijkstras algoritme for å nne prisen fra en by til alle andre byer. Bruk datastrukturen du denerte i 3c. 3-e Du skal nå skissere en algoritme for en metode som tar inn tre byer som argumenter: A, B og C. Metoden skal skrive ut alle valgbare reiseruter fra A til B med stopp i C, samt prisen. Vi tillater at C kan være lik null. Metoden skal da skrive ut alle valgbare reiseruter fra A til B, samt prisen. Angi hvordan du vil tilpasse metoden du skrev i 3d slik at den kan brukes til dette problemet. Det er tilstrekkelig med pseudokode og forklaringer (gjerne med gurer). 3-f La K være en kant fra A til B med kostnad k. Kanten er feilpriset dersom det nnes en annen reiserute fra A til B med kostnad mindre eller lik k. (i) Finn først alle feilprisede kanter i eksempelgrafen. (ii) Programmer deretter en metode som nner alle feilprisede kanter i en graf. Husk at grafen skal bruke den representasjonen du har denert i punkt 3c. Legg vekt på eektivitet. (Fortsettes på side 7.)

Eksamen i IN 115, 26. mai 2001 Side 7 Oppgave 4 Mønstre i brett (10%) Anta at vi har et N N-brett der hver rute kan være enten hvit eller sort. Vi angir koordinatene til et felt med en x-verdi og en y-verdi, begge i området fra 0 til N 1. Vi sier at to felt er naboer dersom de enten har samme x- verdi og y-verdiene kun er forskjellig med 1, eller de har samme y-verdi og x-verdiene er kun forskjellig med 1. En sort sky er en mengde av sorte felter slik at (1) en sky inneholder minst ett sort felt, (2) hvis en sky har mer enn ett felt, er ethvert felt i skyen nabo til et annet felt i skyen, (3) alle sorte felt på brettet som er nabo til et felt i skyen, er selv med i skyen. Vi representerer brettet som en 2-dimensjonal boolean array: boolean[][] brett = new boolean[n][n]; (i) Tegn en gur som illustrerer begrepet om en sort sky. (ii) Programmer deretter en metode som nner ut hvor mange sorte skyer det nnes på et gitt brett. Metoden har lov til å ødelegge representasjonen av brettet underveis.