ITF20006 Algoritmer og datastrukturer Oppgavesett 7



Like dokumenter
Algoritmer og Datastrukturer

Korteste vei i en vektet graf uten negative kanter

EKSAMEN med løsningsforslag

Algoritmer og Datastrukturer

Rekursiv programmering

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1


EKSAMEN. Emne: Algoritmer og datastrukturer

Backtracking som løsningsmetode

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

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

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

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

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

Vi sier også at for eksempel 16 er kvadratet av 4. Kvadrattallene kan vi framstille som figurtall av kuler på denne måten:

UNIVERSITETET I OSLO

Norges Informasjonsteknologiske Høgskole

MED TIDESTIMATER Løsningsforslag

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

Algoritmeanalyse. (og litt om datastrukturer)

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Løsningsforslag EKSAMEN

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

Høgskolen i Oslo og Akershus. sin 2 x cos 2 x = 0, x [0, 2π) 1 cos 2 x cos 2 x = 0 2 cos 2 x = 1 cos 2 x =

Backtracking som løsningsmetode

Algoritmer og Datastrukturer

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF1010 notat: Binærsøking og quicksort

Brukerveiledning. For student hjemmeeksamen

Veileder i bruk av GoodReader

Familiematematikk MATTEPAKKE 3. Trinn

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Bruk av oppgaver og grupper i

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

Algoritmer og Datastrukturer IAI 21899

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3

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

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

Minfagplan.no. Brukermanual. Veiledning for lærere. Dokumentnummer: BV-001. Revision 1.4. August 25 th

København 20 Stockholm

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

SIF8010 ALGORITMER OG DATASTRUKTURER

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

Vann i rør Ford Fulkerson method

TDT Prosedyre- og objektorientert programmering

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

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

KLUBBER. Administrere konkurranser. Steg 3: Arrangere en konkurranse. Her kan du lese en enkel guide ;l hvordan du som arrangør bruker NMF SAS

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

EKSAMEN. Algoritmer og datastrukturer

Enarmet banditt Nybegynner Scratch Lærerveiledning

Forslag til opplegg for en foreldrekveld om matematikk (varighet: 2 timer) v/ Ingvill M. Stedøy-Johansen, 2007

MAT1030 Forelesning 30

Verktøyopplæring i kalkulator for elever

Slik administrerer du Ståstedsanalysen

Kanter, kanter, mange mangekanter

Veileder GINT. Geografi i Nord-Trøndelag. Brukerveiledning. ( før lansering)

Kort oversikt over. eksport-/import-programmet for. WinMed

8 - Rapporter i M-STAS

Disjunkte mengder ADT

KONTINUASJONSEKSAMEN

Visma Oppvekst Skole. Temahefte. VO Timeplan

ALGORITMER OG DATASTRUKTURER

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

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

Dublettsammenslåing. GolfBox A/S Sensommervej 34 F 8600 Silkeborg, Danmark Tlf.: :info@golfbox.no Web:golfbox.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Uke 5 Disjunkte mengder

Tallinjen FRA A TIL Å

INNHOLD. Side Eksempeleksamen 2T - Hele oppgavesettet 1. Oppgave 1 Eksempeleksamen 10

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Brukerveiledning for import av publikasjoner ved UiTø

Metode for å lære ny algoritme. Dagens forelesingsplan : time 1. Dybde-Først-Søk : Labyrint. Dybde-Først-Søk : Krigsstrategi. Dybde-Først-Søk : Hva

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

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Rekursjon som programmeringsteknikk

Kart for regionalt miljøtilskudd. Brukerveiledning

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

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

Anvendelser av grafer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

Oppgave 1 Minimum edit distance

WinTid. Nyheter versjon

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Ekstraoppgave with plots. Vi plotter først de to flatene x 2 C y 2 = 1 og z = 4 K x for å få en ide om hvordan T ser ut.

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Brukerveiledning Windows Movie Maker

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Transkript:

ITF Algoritmer og datastrukturer Oppgavesett 7 Av Thomas Gabrielsen Eksamen Oppgave. ) Det tar konstant tid å hente et gitt element fra en tabell uavhengig av dens størrelse, noe som med O-notasjon kan skrives som O(). ) I en lenket liste må man traversere gjennom hvert enkelt element i lista til man finner det ønskede elementet, noe som dermed har en lineær orden og en tidskompleksitet på O(n). ) Da man i en enkelt lenket liste er nødt til å gå igjennom lista for hvert element som skal skrives ut, får vi her en O-notasjon på O(n ). ) Dette gjøres i lineær tid O(n), da hvert element i tabellen må gjennomsøkes. ) Som i deloppgaven over, må det letes gjennom hvert element i lista (hvilken ende vi begynner i spiller ingen rolle), noe som også gir O(n). 7) Den raskest mulige sorteringen av lenkede lister foregår i linearitmisk tid, dvs. O(n log n). 9) Tidskompleksiteten for den raskeste sorteringen av en slik tabell blir fremdeles O(n log n). Oppgave. Under vises brettets utgangstilstand, der ruter med verdien false er hvite og de med true er sorte:

Figur Figur Figur Vi begynner iterasjonen ved [i =, j = ] (gjeldende posisjon markert med rødt omriss). Metoden pokus vil kun bli kalt dersom ruta vi befinner oss i er sort, derfor skjer det ingenting i denne omgang (figur ). Iterasjonen fortsetter et trinn videre til [, ]. Her har vi derimot en sort rute, og pokus vil nå kalles for den gjeldende ruta (figur ). Denne settes først til verdien false (hvit rute), før metoden ok deretter kalles for rutene rett til venstre, høyre, over og under gjeldende rute, markert på figuren med grønn skravering. For hver av disse rutene sjekkes det nå om verdien deres er true (dvs. ikke ligger utenfor brettet eller har verdien false), noe som her er tilfelle for ruta i [, ] (figur ). Figur Figur Figur Metoden pokus vil nå bli kalt rekursivt for denne ruta (vist med gult omriss). Som for den andre ruta settes denne også til false og kaller ok for sine nærliggende ruter, nå markert med blå skravering (figur ). Da ingen av rutene som sjekkes av ok i dette tilfellet er sorte, vil det ikke bli noen ytterligere kall til pokus for gjeldende iterasjon. Det rekursive kallet av pokus avsluttes (figur ). Det opprinnelige kallet av pokus avsluttes og returnerer verdien, som legges til i en teller ved navn antall (figur ). Merk at ruter som fjernes rekursivt ikke telles opp i antall, da returverdien fra rekursive kall til pokus ikke brukes videre på noen måte. Verdien på telleren er derfor kun. Figur 7 Figur 8 Figur 9 Vi fortsetter nå til vi treffer på neste sorte rute, som ligger i [, ] (figur 7). Ruta slettes og metoden ok kalles på samme måte som forrige gang, men denne gangen er det ingen sorte ruter i nærheten, og vi får ingen rekursjon (figurene 8 og 9). Telleren antall har nå verdien.

Figur Figur Figur Det gjenstår nå kun én sort rute, og vi itererer oss kjapt fram til denne (figur ). Denne behandles på akkurat samme måte som tidligere, og vi ender til slutt opp med et tomt brett og med telleren antall på verdien (figurene og ). Oppgave. Algoritmen består av en metode hokus som itererer element for element igjennom en todimensjonal tabell av vilkårlig størrelse, der det for hvert element med verdien true kjøres en metode pokus; denne setter verdien til det gjeldende elementet til false og kaller seg selv rekursivt for alle elementer i dets umiddelbare nærliggenhet (horisontalt og vertikalt) som har verdien true. Det foretas også en opptelling av alle de ruter der pokus kalles direkte fra hokus, dvs. uten en foregående rekursjon. Med andre ord kan denne metoden brukes for å finne antallet grupperinger av elementer i en n- dimensjonal tabell, der alle elementene i en gruppe er i et von Neumann-nabolag (dvs. ortogonalt sidestilt) med minst ett annet element i samme gruppe. Ordenen til denne algoritmen er relatert til hvor store de nøstede for-løkkene i metoden hokus er, da hver sorte rute allikevel bare håndteres én gang. Følgelig får vi da en kompleksitet på O(X*Y), der X og Y er tabellstørrelsen langs henholdsvis x- og y-aksen. Eksamen Oppgave A) Labyrinten før algoritmen kjøres i gang: 7 8 Det grønne feltet er startposisjonen, mens det blå er målet vi skal forsøke å nå.

Dette vil bli skrevet ut til skjerm innen målet nås for første gang: :, :, :, :, :, :, 7:, 8:, 9:, :, :, :, :, :, :, :, 7: 7, 8: 8, Found! Labyrinten etter at målet er funnet for første gang: 7 8 Pilene indikerer hvilken vei algoritmen tar igjennom labyrinten, mens oransjefargen viser hvilke felt som besøkes (denne blir en nyanse mørkere etter hver forgrening). Hvilken vei algoritmen velger å ta ved hvert forgreningspunkt bestemmes av rekkefølgen på de rekursive move-kallene. Prioriteten er satt som følger: Ned, venstre, opp og høyre. Ettersom det å gå ned har høyere prioritet enn det å gå til høyre, ble det valgt førstnevnte vei i starten. Vi skal nå se på hvordan resten av labyrinten blir traversert. Dette vil skrives ut til skjerm innen målet nås for andre (og siste) gang: 9:, :, :, :, :, :, :, :, 7:, 8:,

9:, :, :, :, : 7, : 8, : 8, : 8, 7: 8, 8: 8, 9: 8, : 8, Found! Labyrinten etter at målet igjen er funnet: 7 8 På grunn av de tidligere nevnte prioriteringene angående veivalg ser vi at algoritmen tok en aldri så liten omvei før den fant fram til målet. Dette problemet kan løses f.eks. ved å gi hvert veivalg sin egen tråd eller ved å benytte en cellulær automat.