UNIVERSITETET I OSLO

Like dokumenter
INF Algoritmer og datastrukturer

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

København 20 Stockholm

UNIVERSITETET I OSLO

Notater til INF2220 Eksamen

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Algoritmer og datastrukturer

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

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

Pattern matching algorithms. INF Algoritmer og datastrukturer. Lokalisering av Substrenger. Brute force

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

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

IN Algoritmer og datastrukturer

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

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

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

Løsningsforslag EKSAMEN

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

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

Norges Informasjonsteknologiske Høgskole

UNIVERSITETET I OSLO

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

Algoritmer og datastrukturer Eksamen

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

INF2220: Forelesning 3

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

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

PG4200 Algoritmer og datastrukturer Forelesning 7

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

INF Løsning på seminaropppgaver til uke 8

UNIVERSITETET I OSLO

Ordliste. Obligatorisk oppgave 1 - Inf 1020

UNIVERSITETET I OSLO

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

Obligatorisk oppgave 1 INF1020 h2005

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

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 eksamen i INF1000 våren 2006

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

EKSAMEN. Emne: Algoritmer og datastrukturer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1000 HashMap. Marit Nybakken 2. november 2003

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

INF2220: Forelesning 3

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

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

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

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

MED TIDESTIMATER Løsningsforslag

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

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

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

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

GJØVIK INGENIØRHØGSKOLE

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 12. desember 2008 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: INF2220 Algoritmer og Datastrukturer Metode grensesnitt Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Innhold 1 Hashing (vekt 15%) side 1 2 Binærtre (vekt 15%) side 2 3 Tekstalgoritmer (vekt 20%) side 2 4 Grafer (vekt 20%) side 3 5 Fritekst søk (vekt 30%) side 4 Husk at svarene dine skal begrunnes. Oppgave 1 Hashing (vekt 15%) 1a Hashfunksjoner (vekt 7.5%) Finn to svakheter ved hashfunksjonen gitt under. int hashfunc ( String s, int tablesize ) { int hashvalue =0; for ( int i = 0; i < s. length ( ) ; i ++){ hashvalue += 7 * ( int ) s. charat ( i ) ; return hashvalue % tablesize ; (Fortsettes på side 2.)

Eksamen i INF2220, 12. desember 2008 Side 2 1b Åpen og Lukket Hashing (vekt 7.5%) Forklart kort problemene som kan oppstå ved sletting av elementer når en bruker lukket hashing (åpen adressering). Oppgave 2 Binærtre (vekt 15%) 2a Todeling av elementer (vekt 7.5%) Hvor mange ganger kan en dele tallet N i to før en får en verdi som er mindre eller lik 1? Begrunn svaret. 2b Binærheap (vekt 7.5%) Anta at en binærheap har N elementer, og høyde M. Hvor mange elementer må vi sette inn i heapen for at vi med med sikkerhet kan si at den vil få høyde M + 1? Begrunn svaret. HINT: Hvor mange noder er det på nederste nivå i et komplett binærtre, sammenlignet med resten av treet? Oppgave 3 Tekstalgoritmer (vekt 20%) 3a Boyer Moore (vekt 7.5%) Boyer Moore bruker en int-array som kalles bad-character-shift som har lengde 256, hvorfor er denne av lengde 256? Og hva inneholder den? 3b Huffmankoding (vekt 7.5%) Når vi komprimerer en fil med Huffmankoding, så teller vi opp antall forekomster av hver bokstav i filen, hvorfor gjør vi det? Forklar kort hvordan dette brukes til å generere Huffman koden. 3c Huffmankoding (vekt 5%) Når vi komprimerer en fil med Huffmankoding så lagrer vi binærsekvensene som representerer bokstavene uten noe form for skilletegn. Binær-sekvensene er ofte av forskjellig lengde, hvordan kan vi vite når et tegn slutter og når neste begynner? (Fortsettes på side 3.)

Eksamen i INF2220, 12. desember 2008 Side 3 Oppgave 4 Grafer (vekt 20%) 4a Topologisk Sortering (vekt 5%) F B E D C A Figur 1: Avhengighetsgraf Skriv to lovlige topologiske sorteringer av nodene i Figur 1. 4b Rekursive etterfølgere (vekt 7.5%) Anta at nodene i grafen gitt over er representert ved denne klassen: public class Node { char id ; Set<Node> children ; Node ( char id ) { this. id = id ; children = new HashSet<Node > ( ) ; void reachable ( Set<Node> set ) { // TODO void addchild ( Node n ) { children. add ( n ) ; Implementer funksjonen reachable som legger alle elementene (Nodene) som kan nås fra kall-noden, i mengden Set<Node> set. (Se eksempel). (Fortsettes på side 4.)

Eksamen i INF2220, 12. desember 2008 Side 4 Eksempel Hvis denne funksjonen blir kalt med Node-klasse-instansen til element A så skal alle elementene i grafen bli lagt til mengden set. Hvis funksjonen blir kalt med instansen til element B, så skal elementene B og F bli lagt til i mengden set, dvs. vi legger rekursivt til alle elementer som kan nås fra noden der metoden blir kalt. 4c Sykler (vekt 7.5%) Dersom grafen vår inneholder sykler/løkker vil ikke funksjonen reachable nødvendigvis terminere. Modifiser funksjonen slik at rekursjonen stopper dersom vi kommer til et element som allerede fins i mengden. Oppgave 5 Fritekst søk (vekt 30%) I denne oppgaven skal vi tenke oss at vi lager et fritekst søk for nyhetsartikler. Et fritekst søk er bare et vanlig søk etter en term (ord), slik som en kan gjøre på for eksempel google. For at et fritekst søk skal gå fort må vi preprosessere innholdet vi skal søke i for å lage en indeks. Det er dette som skiller et indeksert søk fra et vanlig søk, at vi har preprosessert all informasjonen det går an å søke i på forhånd. Dvs. google eller andre søkemotorer leter ikke igjennom hele Internet på 0.012 sekunder, men all informasjonen de har indeksert (preprosessert) kan slås opp i på 0.012 sekunder. Hva er en indeks? En indeks er en datastruktur der en raskt kan finne ut om en term (ord) eksisterer i materiale en har indeksert. Dvs. hvis ordet brannbil var tilstede i noen av artiklene vi har indeksert så bør datastrukturen vår kunne gi en rask tilbakemelding på at dette finnes, og hvor vi kan finne det hen. Vi skal starte med å lage en indeks som ofte blir kalt en reversindeks. Navnet kommer av at dette er en mapping mellom termer og de artiklene der termene forekommer, se tabellen under her for et utsnitt av en revers-indeks. Nøkkelord brannbil finanskrise rekordvarme Treff artikkel1, artikkel2, artikkel7, artikkel23, artikkel11 artikkel23, artikkel7 artikkel12, artikkel11, artikkel22 (Fortsettes på side 5.)

Eksamen i INF2220, 12. desember 2008 Side 5 Vi kan med en gang se at ordet eller termen rekordvarme forekommer i artiklene med navn: artikkel12, artikkel11, artikkel22. Vi kan representere en revers-indeks med en HashMap, der nøklene er ordene det går an å søke etter, dvs. ord funnet i en eller flere artikler, og hvor verdiene bare er lister av artikkelnavn. Map<String, LinkedList <String >> index = new HashMap<String, LinkedList <String > >(); /* * mapping fra : * * ord > l i s t e r av artikkelnavn */ Når artiklene er satt inn i datastrukturen index kan vi for eksempel gjøre søk etter enkle termer på denne måten. void search ( String word ) { LinkedList <String > l i s t ; i f ( index. containskey ( word ) ) { System. out. println ( " fant : "+word ) ; l i s t = index. get ( word ) ; for ( String a r t i c l e : l i s t ) { System. out. println ( a r t i c l e ) ; else { System. out. println ( " fant ikke : "+word ) ; 5a Implementer metoden indexarticle (vekt 7.5%) Dere kan anta at artikler på forhånd er blitt konvertert fra sitt originale format (pdf,ps,doc,html... ) til String arrayer. Du kan også anta at HashMapen index (se over) er global i klassen denne metoden implementeres. Du skal nå implementere følgende metode for å legge en ny artikkel inn i indeksen. void indexarticle ( String [ ] articlewords, String articlename ) { /* implementer metoden */ (Fortsettes på side 6.)

Eksamen i INF2220, 12. desember 2008 Side 6 5b Sletting (vekt 7.5%) Vi er også interessert i å kunne slette artikler fra indeksen vår, implementer metoden med signaturen under, som sletter en artikkel fra indeksen. void removearticle ( String articlename ) { /* implementer metoden */ 5c Kompleksitet (vekt 7.5%) Anta at vår indeks (HashMap) har hashet alle ord i indeksen til forskjellige verdier, dvs. kompleksiteten av å finne et ord i HashMapen (index) er lik 1. Anta også at vi har M forskjellige ord i indeksen vår, dvs. index. keyset ( ). s i z e ( ) == M Anta at vi har indeksert N forskjellige artikler, dvs. vi kan få returnert maksimalt N artikler når vi søker på et ord. Hva blir da worst-case kompleksiteten av å slette en artikkel fra indeksen? Forbedret datastruktur Vi prøver å forbedre indeksen vår ved å bytte ut datastrukturen artiklene ligger i (listen), vi velger å legge artiklene våre i et rødsort tree i steden for en liste, dvs. vi legger artikkelnavnene våre i et balansert binærtre. Map<String, TreeSet <String >> index = new HashMap<String, TreeSet <String > >(); /* * mapping fra : * * ord > balanserte bin t r e av artikkelnavn */ 5d Kompleksitet (vekt 7.5%) I denne oppgaven er alt som i spørsmålet over, dvs. vi antar fortsatt at alle ordene har hashet til forskjellig verdier slik at kompleksiteten av å finne en nøkkel er lik 1. Den eneste forskjellen er at vi har (Fortsettes på side 7.)

Eksamen i INF2220, 12. desember 2008 Side 7 byttet ut listene med balanserte binærtre. Hva blir da worst-case kompleksiteten av å slette en artikkel fra indeksen? Lykke til! Metode grensesnitt Her følger en liste av funksjoner dere kommer til å trenge for å gjøre implementasjonsoppgavene. De første tre funksjonene er felles for alle klassene som implementerer java.util.collection interfacet, og sånn sett fins de i både java.util.set og java.util.list, dvs. alle klassene som implementerer liste-interfacet og mengde-interfacet. De neste tre funksjonene tilhører interfacet java.util.map og fins i alle klassene som implementerer dette (java.util.hashmap bl.a.) java. u t i l. Set<E> java. u t i l. List <E> * boolean add (E e ) // add element e * boolean remove ( Object o ) // remove Object o * boolean contains ( Object o ) // i s Object o an element? java. u t i l.map<k,v> * boolean containskey ( Object o ) // i s Object o a key? * V put (K k, V v ) // add key value pair * V get ( Object key ) // f e t c h value based on key * V remove ( Object key ) // remove key value pair