SIF8010 ALGORITMER OG DATASTRUKTURER



Like dokumenter
Øvingsforelesning Korteste vei: Alle til alle

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

ALGORITMER OG DATASTRUKTURER

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Uretta grafar (1) Mengde nodar Mengde kantar som er eit uordna par av nodar

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

Grunnleggende Grafteori

Algdat - øvingsforelesning

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Løsningsforslag - Korteste vei

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

GRAFER. Korteste vei i en vektet graf uten negative kanter. Korteste vei, en-til-alle, for: Minimale spenntrær

Søking i strenger. Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

INF Algoritmer og datastrukturer

EKSAMEN med løsningsforslag

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs (løsningsforslag)

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

IN Algoritmer og datastrukturer

Turingmaskiner.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

INF1020 Algoritmer og datastrukturer GRAFER

INF Algoritmer og datastrukturer

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Grafalgoritmer: Korteste vei

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

Notater til INF2220 Eksamen

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Korteste vei i en vektet graf uten negative kanter

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Dijkstras algoritme Spørsmål

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

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

Pensum: fra boken (H-03)+ forelesninger

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Pensum: fra boken (H-03)+ forelesninger

Algdat Eksamensforelesning. Nils Barlaug

IN Algoritmer og datastrukturer

All good things. Fjortende forelesning

København 20 Stockholm

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

Innhold. Innledning 1

ALGORITMER OG DATASTRUKTURER

Norsk informatikkolympiade runde

Minimum Spenntrær - Kruskal & Prim

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Korteste vei problemet (seksjon 15.3)

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Fra A til B. Syvende forelesning

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda

Lineær sortering. Radix sort

Forelesning 30: Kompleksitetsteori

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

Oppgave 1. Sekvenser (20%)

Backtracking som løsningsmetode

EKSAMEN. Algoritmer og datastrukturer

Transkript:

SIF8010 ALGORITMER OG DATASTRUKTURER KONTINUASJONSEKSAMEN, 1999; LØSNINGSFORSLAG Oppgave 1 (12%) Anta at du skal lage et støtteprogram som umiddelbart skal varsle om at et ord blir skrevet feil under inntasting av vanlig tekst. Lovlige skrivemåter må nødvendigvis forhåndslagres i en ordliste for at dette skal være mulig. a. Hvilken datastruktur vil du benytte for å lagre ordlisten? TRIES er det eneste riktige fra pensum. b. Hvordan skal ditt program bruke ordlisten for å varsle feilstavelser i forhold til ordlisten? Traversere TRIES en for hvert nytt ord Bruke ett tegn per navigerings-trinn. Varsle ulovlig tegn dersom løvnode (NIL) nås, dvs. lovlig ord ikke påtruffet. Oppgave 2 (12%) a. Hvordan finner Floyd Warshalls algoritme ut om en graf G har sykler med negativ vekt? Det oppstår negative tall på diagonalen i D-matrisen. F W må da stoppes. b. Beskriv kort en algoritme som finner hvor mange sammenhengende subgrafer en urettet graf G består av. En (sub-)graf er sammenhengende dersom det er en kjede av kanter mellom alle par av noder i (sub-)grafen. (Merk: En graf G uten kanter kan klart ikke være sammenhengende.) (1) Start farging ved en vilkårlig start-node. Traversér G så langt det går. (2) Finn, om mulig, ny ufarget node (dvs. ny vilkårlig node ). (3) Hvis en ny start-node ble funnet, gå til punkt 1. Hvis ikke, avslutt. Antallet sammenhengende subgrafer = antallet farger brukt. Oppgave 3 (22%) Vi definerer her et problem som vi kaller P (x, n, k): Det er gitt en tallfølge med n positive heltall: x 1, x 2,..., x n. Denne tallfølgen skal deles inn i k påfølgende intervaller (k < n + 1) slik at den største intervallsummen blir minst mulig. 1

2 KONTINUASJONSEKSAMEN, 1999; LØSNINGSFORSLAG Eksempel. P (x, 15, 3), x = [1, 7, 3, 8, 10, 3, 1, 2, 1, 3, 6, 3, 5, 5, 3]. Den beste inndelingen i intervaller er her: [1, 7, 3, 8], [10, 3, 1, 2, 1, 3], [6, 3, 5, 5, 3] De tre intervallsummene er henholdsvis 19, 20, og 22. Her er 22 den største intervallsummen, og samtidig den minste verdien vi kan få for den største intervallsummen i dette eksemplet. a. Beskriv en effektiv algoritme, spesielt tilpasset problemet P (x, n, 2). Du skal utføre så få addisjoner som mulig, samt finne algoritmens tidskompleksitet. Bruk Θ-notasjonen. Start i hver ende: x = x 1 x 2 x 3 x n i j Flytt i/j et hakk opp/ned for å øke den minste av de to summene (fra venstre og høyre) inntil i og j møtes. Kjøretiden blir Θ(n). b. Beskriv en O(n)-algoritme som avgjør om det er mulig å dele tallfølgen x 1,..., x n inn i k intervaller slik at den største intervallsummen er mindre enn en gitt verdi s. sum 0 intervall 1 for i in [1... n]: sum sum + x i if sum > s: intervall intervall + 1 sum x i end end return (intervall k) c. Forklar hvordan algoritmen i b. kan utnyttes til å finne den beste løsningen av problemet P (x, n, k). Angi kompleksiteten til den algoritmen du foreslår. Kjører binærsøk etter beste (dvs. den minste, brukbare) verdien for s i intervallet [0, n i=0 x i]. Kompleksiteten blir n n O(lg x i ) Θ(n) = O(n lg x i ) i=0 i=0

SIF8010 ALGORITMER OG DATASTRUKTURER 3 d. Beskriv en paktisk situasjon der problemet P (x, n, k) dukker opp. nb: Viktig at det er snakk om en sekvens. Eks: Man skal dele et sekvensielt arbeide (av typen avisrute) bestående av enheter med ulik arbeidsinnsats (f.eks. antall aviser som skal leveres til en adresse) i k deljobber (dvs. del-ruter) som skal være mest mulig like (største del minst mulig). Det må være mulig å hoppe inn i ruta på ethvert punkt. Oppgave 4 (12%) Vi har gitt m forskjellige sorterte lister, hver med n elementer. Det (de) største (= beste) elementene befinner seg først i listene. a. Beskriv kort en effektiv algoritme & datastruktur for å velge ut de n største (= beste) elementene fra de m listene, i sortert orden. Anta at m kan være vilkårlig stor og at alle elementer som ikke blir valgt ut skal forkastes. Se også 6c. Vi bruker en haug (heap/delvis ordnet tre). Listene settes inn i haugen med første element som nøkkel. For hvert element vi tar ut må vi sette inn lista med det neste elementet som nøkkel. Hvert element tar altså O(lg m) tid, og kjøretiden blir O(n lg m). b. Ville du bruke metoden i a. også for små verdier av m? Begrunn, og angi en eventuell alternativ metode. Hauger er mer komplekse, selvsagt, enn enkel lineær søking. For små m (m ca. 10) ville dette være best, selv om metoden blir O(n m), siden man da slipper en god del overhead i forbindelse med bygging og oppdaterig av haugen. Oppgave 5 (17%) Vi skal i denne oppgaven se på et praktisk problem som kan formuleres og løses ved hjelp av en dynamisk nettverksstruktur, en rettet graf G = (V, E): Anta at en mengde personer (f.eks. studenter på ekskursjon) til ulike tider låner ulike pengebeløp til/fra hverandre. En person kan framstilles som en node, og et lån mellom to personer som en kant med retning fra långiver til låntaker og med et tilknyttet beløp. Dette beløpet kan underveis skifte fortegn. G vil vokse etterhvert som nye lån opptas mellom nye personer. En node kan inngå både som långiver og låntaker i forhold til mange øvrige noder. a. Når vil du opprett/fjerne en node/kant i denne modellen? (Forklar presist) Svar: (4%) Opprette node: Noden / G og noden skal inngå i et lån. Opprette kant: (v i, v j ) / E og v j skal låne av v i. Fjerne node: Ingen kant knyttet til noden. (Dvs. alle fjernet.) Fjerne kant: (v i, v j ) fjernes hvis og bare hvis utestående lånebeløp, b ij = 0.

4 KONTINUASJONSEKSAMEN, 1999; LØSNINGSFORSLAG b. Hvordan finner en ut hvor mye en person totalt har til gode/skylder? Person v i har til gode: (v i,v j) E b ij (v k,v i) E (der v i er konstant i begge summene), som kan bli negativt. b ki c. Hvordan vil du praktisk utføre et sluttoppgjør som svarer til at G reduseres til en tom graf? Alle noder gjør som i b. De med negativt beløp legger dette i en pott (bank). De med positivt beløp tar dette fra potten. d. Dersom V er liten, hvilken statisk datastruktur kunne passe for å løse oppgaven? Angi hva du vil regne som liten V. ) En halv to-dimensjonal tabell; långiver låntaker. (Trenger bare halvparten, idet vi bruker fortegn.) Gjelder øving 1, sortering: Oppgave 6, øvingsrelaterte oppgaver (25%) a. Er vektoren A : [28, 18, 25, 6, 16, 23, 14, 7, 4, 2, 8] en haug (heap)? (Begrunn svaret.) Svar: (2%) Nei, 7 er større enn verdien i foreldre-noden. b. På hvilke indekser kan et unikt minste element i en haug på 2039 elementer befinne seg?

SIF8010 ALGORITMER OG DATASTRUKTURER 5 Svar: (2%) Den kan befinne seg nederst, dvs. på det laveste nivået i haugen. p 1 p 2... p 3 p 4 p 5 I figuren er p 1 siste element i haugen, dvs. element nummer 2039. Nederst vil her være det nederste nivået til venstre (samme nivå som p 1) eller samme nivå som p 2 og p 3, med indeks større eller lik indeksen til p 2. Elementet kan altså befinne seg i intervallet [index(p 2), 2039] og problemet blir å finne indeksen til p 2. I en heapen er det plass til to barn for hvert av elementene fra og med p 2 til og med p 3. Disse elementene vil havne etter p 1 og fylle plassen til og med p 5. Indeksen til p 5 er 2 11 1 = 2047. Antallet punkter til høyre for p 1 er altså 2047 2039 = 8. De vil ha 8 = 4 foreldrenoder. p3 har index 2 2 10 1 = 1023, og følgelig blir indeksen til p 2 1020. Det unikt minste elementet kan altså ha en indeks i intervallet [1020,2039]. c. Gitt haugen P : [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Her ser vi at element 1 befinner seg på indeks #10. Anta at P er en prioritetskø, og at det utføres følgende serie av operasjoner på P : (1) Heap-Extract-Max(P ) (2) Heap-Extract-Max(P ) (3) Heap-Insert(P, 16) (4) Heap-Insert(P, 14) Angi på hvilken indeks i P elementet 1 befinner seg etter hver av de 4 operasjonene. Svar: (4%) Etter 1: 9, etter 2: 6, etter 3: 6, etter 4: 6 Gjelder øving 3, beste vei: d. Hvilken én-til-alle beste-vei-algoritme vil du velge i hvert av de 4 tilfellene nedenfor? Svar: (8%) Tilfelle 1: Tilfelle 2: Tilfelle 3: Tilfelle 4: G har kun positive vekter og G syklisk Dijkstra (B F dårlig) G har kun positive vekter og G asyklisk DAG shortest path (D og B F dårlig) G har minst én negativ vekt og G syklisk Bellman Ford G har minst én negativ vekt og G asyklisk DAG shortest path (B F dårlig) Gjelder øving 5, strengmatching: e. Sammenlign tidskompleksiteten for de 3 klassiske algoritmene som inngikk i øvingen. Forklar kort grunnen til tidskompleksiteten for hver av algoritmene. Metode: Naïve string matcher Tidskompleksitet: Θ((n m + 1)m) Alle de m bokstavene i mønsteret P sjekkes for hvert av de n m + 1 posisjonene P kan ha i forhold til T, der n = length[t ].

6 KONTINUASJONSEKSAMEN, 1999; LØSNINGSFORSLAG Metode: KMP-Matcher Tidskompleksitet: O(m + n) Compute-Prefix-Function tar O(m) tid, mens KMP-Matcher tar O(n) tid, og disse kjøres etter hverandre. Metode: Boyer-Moore-Matcher Tidskompleksitet: O((n m + 1)m + Σ )) Compute-Last-Occurrence-Function tar O(m + Σ ) tid, Compute-Goof-Suffix- Function tar O(m) tid, og algoritmen bruker O(m) tid for hvert skift (som KMP- Matcher).