PG4200 Algoritmer og datastrukturer Forelesning 2

Størrelse: px
Begynne med side:

Download "PG4200 Algoritmer og datastrukturer Forelesning 2"

Transkript

1 PG4200 Algoritmer og datastrukturer Forelesning 2 Lars Sydnes, NITH 15. januar 2014

2 I. Forrige gang

3 Praktisk eksempel: Live-koding

4 II. Innlevering

5 Innlevering 1 2.februar Offentliggjøring: 22.januar Innhold: (i) Estimering av kjøretid med O-notasjon. (gitt java-program) (ii) Måling av kjøretid (jfr. Lab 1, 6.januar) (gitt java-program) (iii) Sammenligning av måling og estimat. (iv) Rekursive funksjoner i programmeringsprosjekt. Grunnleggende web-crawling: wikipedia. Dronningproblemet: wikipedia.

6 Innlevering 1 Dere leverer Kjøretidsestimater som kommentarer i java-kode. for(int i = 0 ; i < n; i++) { // O(n) visits dosomework(i); // O(n) } // INNER: O(n), VISITS: O(n), TOTAL: O(n^2) En kort tekst/regneark som presenterer kjøretidsmålingene grafisk og sammenligner med teoretiske estimater. Løsning av programmeringsoppgaver i java. Detaljer: Se oppgaveteksten som kommer 22.januar.

7 III. Hovedtema: Algoritmer

8 Algoritmer Utgangspunkt: Praktisk problem / Spørsmål. Siktemål: Løsning / Svar. Algoritmen: En oppskrift på å løse problemet. Krav: (i) Algoritmen lar oss løse problemet med et endelig antall steg. (ii) De foreskrevne stegene er spesifikke og gjennomførbare med de gitte ressursene. (iii) Vi er garantert å komme i mål.

9 Kakeeksempel: Problem: Må ha sjokoladekake. Løsning: Ha en tilgjengelig sjokoladekake. Algoritmen: Finner vi i Ingrid Espelids kokebok. Har vi bakepulver? Er det å smelte smør en elementær operasjon?

10 Algoritmeeffektivitet Ressursbruk: Tidsbruk Minnebruk Annet: Kommunikasjonsressurser, lagringskapasitet, et c. Vi ønsker å holde oversikt over og styre ressursbruken. Kakeeksempel: Vi vil ikke kaste bort tid og penger.

11 Algoritmer i praktisk programmering Når vi skal bruke teorien i praktisk programmering, kan vi noe uformelt oversette algoritme med Noen linjer med kode. Hvilke ressurser kreves for å utføre instruksjonene? Metoder, funksjoner: Hvilke ressurser kreves for å utføre et metodekall?

12 Fast problemstørrelse Noen problemer kommer i én utgave: Fast problemstørrelse. Vi kan drøfte absolutt ressursbruk.

13 Varierende problemstørrelse Noen problemer kommer i mange varianter: Vi kan drøfte hvordan ressursbruken varierer. Verktøy: Nummerer variantene: P 1, P 2,..., P n,.... Forsøk å se på ressursbruken som en funksjon av n: Tidsbruk = t(n). Forsøk å si noe fornuftig om t(n): Vekst, trender.

14 Problemstørrelsen Kaker Fast problemstørrelse. Lag kake til én person. Lag kake til 2 personer, eller, 3,..., n,... personer. Her har vi en hel klasse med problemer: K 1, K 2, K 3,..., K n,... Problemet K n : Lag kake til n personer Vi vil si: K n har problemstørrelse n. Det n-te i rekken slik vi valgte å klassifisere problemene.

15 Problemstørrelsen Eksempler Online-spill: n = antall deltakere. Sjakk: n = antall simulerte trekk fremover i tid. Slå opp i en katalog: n = antall oppføringer i katalogen. Multiplisere to store tall: n = antall bits i sluttresultatet. Multiplisere to store tall: n = sluttresultatet. Det finnes ingen fasit på hvilken størrelse vi skal fokusere på. Hva er det vi ønsker å oppnå?

16 Problemstørrelsen Advarsel! I dette kurset forholder vi oss veldig fritt til begrepet problemstørrelse. I andre kontekster kan begrepet problemstørrelsen ha veldig spesifikk betydning. Typisk: Problemstørrelse = antall bits i inndata og/eller utdata.

17 Eksempel: Telefonkatalogen Generelt problem: P: Å slå opp i en telefonkatalog. Klassifisering: P n : Slå opp i katalog med n oppføringer. Ressurser: Tid, korttidsminne. Beskriv algoritme for å løse problemet. Estimér ressursene algoritmen krever for å løse P n.

18 Ulike synspunkter Verste tilfelle: Hva er den verste situasjonen vi kan forestille oss? (worst case) Beste tilfelle: Hva er den mest gunstige situasjonen vi kan forestille oss? (best case) Gjennomsnitt: Gjennomsnittlig ressursbruk. (average case) Vi vil konsentrere oss om det verste tilfellet worst case.

19 Katalogalgoritme 1 Les gjennom hele katalogen, oppføring for oppføring helt til du finner riktig persjon. Lineært søk I verste fall må vi lese alle oppføringene. Hvis det tark sekunder å lese 1 oppføring, blir tidsbruken t 1 (n) K n (sekunder). Observasjon: Verdien av K varierer fra person til person. Formen på formelen er den samme for alle.

20 Katalogalgoritme 2 Gå til midten av katalogen. Finn ut hvilken halvdel av katalogen personen befinner seg i. Gjenta prosedyren med den aktuelle halvdelen. Binært søk / Halveringsalgoritme P n Pn 2 = P n 2 1 P n 4 = P n 2 2 P n 2 k Helt til n 2 k 1, i.e. 2 k n, i.e. k log n log 2. t 2 (n) = Kk = K log 2 log(n)

21 Vekstfunksjonen Problemer klassifisert etter problemstørrelse: P 1, P 2,..., P k,.... Algoritme for å løse problemene. Vi tenker oss at ressursbruken er en funksjon av problemstørrelsen: Kjøretid = f(n), Ressursbruk = g(n). f(n) og g(n) kalles vekstfunksjoner for henholdsvis tidsbruk og ressursbruk.

22 Noen typer estimater: Best case: Kjøretid f(n) Average case: Gjennomsnittlig kjøretid = f(n) Worst case: Kjøretid f(n)

23 IV. O-notasjon

24 O-notasjon Et grovkornet bilde av situasjonen kan ofte gi adekvat informasjon Situasjonen er for komplisert for en detajert analyse. Vi har for usikre forutsetninger for å kunne gjøre en detaljert analyse. Vi er ikke interessert i detaljene. O-notasjon er velegnet for worst case-analyse.

25 O-notasjon: Formelt. La f(n) og g(n) være positive funksjoner. (Typisk: Vekstfunksjoner for ressursbruk) Vi sier at f(n) har orden O(g(n)) dersom Det finnes tall M, N > 0 slik at f(n) < M g(n) for alle n > N D.v.s: Etter et visst punkt n = N klarer ikke f(n) å ta igjen den skalerte versjonen Mg(n) av g(n).

26 O-notasjon: Praktisk regning

27 Sammenligning av vekstfunksjoner I

28 sammenligning av vekstfunksjoner II

29 Ordenen tar seg av det store bildet f(n) er av orden O(g(n)) dersom det finnes tall M, N slik at f(n) < M g(n) for allen > N Vi legger altså vekt på de store tallene. Eksempel: 100n < 100n 2 for alle n > 1. Her er M = 100 og N = 1. Vi sier: 100n har orden O(n 2 ). Eksempel: 1000n < 10n 2 for alle n > 10. Her er M = 10 og N = 10. Vi sier. 1000n har orden O(n 2 ).

30 Sammenligning av vekstfunksjoner II

31 Ordensklassenes hierarki O(1) < O(log n) < O(n) < O(n log n) < O(n 2 ) < O(n 3 ) < O(A n ). Generell regel I: O(n k ) < O(n k log n) < O(n k+1 ) k = 0, 1, 2,... Høyere eksponenter gir høyere orden. Generell regel II: O(n k ) < O(A n ) k = 0, 1, 2, 3,... Eksponentiell orden slår alle potenser. Generell regel III: O(A n ) < O(B n ) hvis A < B. Høyere grunntall slår lavere grunntall.

32 Klassifisering av vekstfunksjoner Vekstfunksjon: Orden: Tilnavn: f(n) = K O(1) konstant f(n) = K log n O(log(n) logaritmisk f(n) = K n O(n) lineær f(n) = K n log n O(n log n) n-log-n f(n) = K n 2 O(n 2 ) kvadratisk f(n) = K n 3 O(n 3 ) kubisk f(n) = K A n O(A n ) eksponentiell Vekstfunksjonen f(n) har orden O(n 2 ) Algoritmen løser problemet med lineær kjøretid.

33 Regning: Multiplikasjon Hvis f 1 (n) har orden O(g 1 (n)) og f 2 (n) har orden O(g 2 (n)), så har f 1 (n) f 2 (n) orden O(g 1 (n) g 2 (n)). Slagord :O(g 1 (n)) O(g 2 (n)) = O(g 1 (n) g 2 (n)).

34 Regning: Addisjon Hvis f 1 (n) har orden O(g 1 (n)) og f 2 (n) har orden O(g 2 (n)), så har f 1 (n) + f 2 (n) orden O(g 1 (n) + g 2 (n)). Slagord :O(g 1 (n)) + O(g 2 (n)) = O(g 1 (n) + g 2 (n)).

35 Regning: Dominans: Hvis f 1 (n) har orden O(g 1 (n) + g 2 (n)) og g 1 (n) har orden O(g 2 (n)), så har f 1 (n) orden O(g 2 (n)). Slagord :O(g 1 (n)+g 2 (n)) = O(g 2 (n)) når g 1 (n) har orden O(g 2 (n)).

36 Regning: Ignorer faktorer Hvis f(n) har orden O(a g(n)), så har f(n) orden O(g(n)). Slagord :O(ag(n)) = O(g(n))

37 Regning: Refleksivitet f(n) har orden O(f(n)). Sjekk av dette stemmer, utifra definisjonen: Her er M = 2 og N = 1. f(n) < 2 f(n) for alle n > 1

38 Regning: Eksempel f 1 (n) = (3n ), f 2 (n) = log n + 3, f(n) = f 1 (n) f 2 (n) f 1 (n) har orden O(3n ) = f 1 (n) har orden O(3n 2 ) = f 1 (n) har orden O(n 2 ) f 2 (n) har orden O(log n+3) = f 2 (n) har orden O(log n) = f(n) = f 1 (n) f 2 (n) har orden O(n 2 log n)

39 Telefonkatalogen revisited Algoritme 1: Les gjennom hele katalogen. Lineært søk. Tidsbruken følger vekstfunksjonen der K 1 er av ukjent størrelse. t 1 (n) = K 1 n, Heretter vil vi si at tidsbruken er av orden O(n). Algoritme 2: Utelukk halvparten av de gjenværende oppføringene. Binært søk: t 2 = K 2 log n, der K 2 er av ukjent størrelse. Heretter vi vi si at tidsbruken er av orden O(log n).

40 Praktisk arbeid public static int sumfromoneto(int n) { int sum = 0; for (int i = 1; i <= n; i++) { sum += i; } return sum; }

41 Notasjonsmetode: Regel 1: Antallet runder i løkke: Angis med kommentar // VISITS: O(n) Regel 2: For hver linje angir vi orden ved kommentar //O(f(n)) Regel 3: Ved slutten av hver kode-blokk gis kommentar: //INNER: O(f(n)), VISITS: O(n), TOTAL: O(n*f(n)) Kjøretid for kode inneholdt i blokk = Kjøretiden for det elementet med høyest orden. Total kjøretid for blokk = (indre kjøretid) (antall iterasjoner)

42 Praktisk arbeid public static int sumfromoneto(int n) { int sum = 0; // O(1) for (int i = 1; i <= n; i++) {// VISITS : O(n) sum += i;// O(1) }// INNER: O(1), VISITS: O(n), TOTAL: O (n) return sum; // O(1) } //O(n) For tilstrekkelig store n vil for-lokken dominere kjøretiden. Vi konkluderer med at kjøretiden til sumfromoneto(n) har kjøretid av orden O(n).

43 Praktisk arbeid Husk på: public static int sumfromoneto(int n) {...} //O(n) Se nå på: public static void printsums(int n) { for (int i = 1; i <= n ; i ++ ) { System.out.println(sumFromOneTo(i)); } }

44 Praktisk arbeid public static void printsums(int n) { for (int i = 1; i <= n ; i ++ ) { // VISITS: O(n) System.out.println(sumFromOneTo(i));// O(n) } //INNER: O(n), VISITS: O(n), TOTAL: O(n^2) } // O(n^2) Vi vil si: printsums har kjøretid av orden O(n 2 ) printsums har tidskompleksitet O(n 2 ). Legg merke til at Alt uttrykkes ved n.

45 Knep Potenser: for (int i = a, i <=n; i++) {//O(n) funksjonskall(i);// O(n^k) }//O(n^(k+1)) Potenser og Logaritmer: for (int i = a i <= n; i++) {//O(n) funksjonskall(i); //O(n^k log n) }//O(n^(k+1)log n)

46 Logaritmiske løkker for(int i = 1; i< n; i*=4){ funksjonskall(i); // O(f(n)) }// INNER: O(f(n)) Her går i gjennom verdiene I iterasjon k har i verdien 4 k. 1, 4, 4 4 = 4 2,..., 4 k,... Iterasjonene fortsetter så lenge 4 k < n, altså så lenge log(4 k ) < log n i.e. k log 4 < log n i.e. k < log n log 4 Antall iterasjoner har orden O(log n).

47 Logaritmiske løkker for(int i = 1; i< n; i*=4){// visits o( log(n)) funksjonskall(i); // o(f(n)) }// inner: o(f(n)), visits o(log(n)), total: o(f(n)*log(n)) for(int i = 1; i< n; i*=23){// visits O( log(n)) funksjonskall(i); // O(f(n)) }// inner: O(f(n)), visits O(log(n)), total: O(f(n)*log(n))

48 Praktisk betydning av ulike ordensklasser I n betegner problemstørrelsen. r betegner ressursbruken. O(1): Problemstørrelsen n har ingen praktisk betydning. O(log n): n n 2 gir r 2r. O(n): n 2n gir r 2r. O(n 2 ): n 2n gir r 4r O(n 3 ): n 2n gir r 8r O(A n ): n n + 1 gir r Ar

49 Praktisk betydning av ulike ordensklasser II La n betegne problemstørrelsen. Dersom vi dobler ressurstilgangen kan vi gjøre følgende økninger av problemstørrelsen: O(log n): n n O(n): n 2n O(n 2 ): n 1.414n O(n 3 ): n 1.26n O(2 n ): n n

50 Eksempel For et onlinespill med ressursbruk O(log(antall deltakere)) er det nærliggende å forvente at man ved å doble ressurstilgangen kan gå fra 100 til deltakere. OBS: Dette vil fungere som et første grov-estimat.

51 Målsetninger: (i) Bli kjent med de ulike ordensklassene: O(f(n)) (ii) Gjøre overslag overslag over ressursbruk ved hjelp av O-notasjonen: Tidsbruken til denne kodesnutten er av orden O(f(n)). (iii) Bruke vår notasjonsmetode i kodeeksempler: for (int i = a i <= n; i++) {//O(n) funksjonskall(i); //O(i^k log i) }//O(n^(k+1)log n)

52 Men, Ordenen til ressursbruken er viktig når vi er interessert i store variasjoner i For små variasjoner i problemstørrelsen er vi mer interessert i andre typer informasjon: Nøyaktige beregninger. Praktiske tester, statistikk. Vi må la oss lede av praktiske spørsmål. Hvilke problemer ønsker vi å bruke koden på? Er vi interessert i å skalere opp systemet? Hvor mye er det naturlig at problemstørrelse varierer? Hvor ligger flaskehalsene?

53 Kart Algoritme / Program / programelement Problemstørrelse Vekstfunksjon (growth function) Vekstfunksjonens orden. Kjøretidens orden Minnebrukens orden Algoritmens tidskompleksitet

54 Oppgaver Oppgaver: 2.1, 2.2, 2.6 Lab: 2.3, 2.4, Ekstraoppgave på it s learning. Trykkfeil i oppgave 2.5. Riktig kode i linje 3: for (int count2=1; count2 < n; count2= count2*2) { Hva skjer dersom vi kjører den koden som står oppført i boka?

55 O-notasjon Eksempler i stigende orden: sin n 100 O(1) 34 log n + 42 O(log n) n log n 2 O(n) n n log n 3 O(n log n) 1000 n n 2 O(n 2 ) log n n 2 log n 3 O(n 2 log n) a 0 + a 1 n + a 2 n a k n k O(n k ) 2 n O(2n ) 3 n n O(3 n )

Innføring i matematisk analyse av algoritmer

Innføring i matematisk analyse av algoritmer DUMMY Innføring i matematisk analyse av algoritmer Lars Sydnes September 2014 Dette er ment som et supplement til læreboka Algorithms, 4.utgave av Sedgewick & Wayne, heretter omtalt som læreboka. Etter

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering Lars Sydnes, NITH 22.januar 2014 I. Rekursjon commons.wikimedia.org Rekursjon i naturen En gren er et tre som sitter fast på et tre.

Detaljer

Algoritmer - definisjon

Algoritmer - definisjon Algoritmeanalyse Algoritmer - definisjon En algoritme* er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede

Detaljer

PG 4200 Algoritmer og datastrukturer Innlevering 1. Frist: 2.februar kl 21.00

PG 4200 Algoritmer og datastrukturer Innlevering 1. Frist: 2.februar kl 21.00 PG 4200 Algoritmer og datastrukturer Innlevering 1 Frist: 2.februar kl 21.00 Utdelt materiale: Alle filer som nevnes er inneholdt i zip-filen innlevering1.zip. Innlevering: Besvarelsen skal være i form

Detaljer

Algoritmer - definisjon

Algoritmer - definisjon Algoritmeanalyse Algoritmer - definisjon En algoritme er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede

Detaljer

PG4200 Algoritmer og datastrukturer forelesning 3. Lars Sydnes 29. oktober 2014

PG4200 Algoritmer og datastrukturer forelesning 3. Lars Sydnes 29. oktober 2014 PG4200 Algoritmer og datastrukturer forelesning 3 Lars Sydnes 29. oktober 2014 Plan Måling av kjøretid (delvis repetisjon) Matematisk analyse av kjøretid Presentasjon av innlevering 1 I Innlevering 1 Innlevering

Detaljer

Introduksjon til Algoritmeanalyse

Introduksjon til Algoritmeanalyse Introduksjon til Algoritmeanalyse 26. August, 2019 Institutt for Informatikk 1 Hvordan skal vi tenke i IN2010? Effektive løsninger Hvordan skalérer problemet og løsningen? 2 Terminologi Betegnelse Problem

Detaljer

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014 Løsningsforslag Dette er et utbygd løsningsforslag. D.v.s at det kan forekomme feil og at løsningene er mer omfattende enn det som kreves av studentene på eksamen. Oppgavesettet består av 5 (fem) sider.

Detaljer

Algoritmeanalyse. (og litt om datastrukturer)

Algoritmeanalyse. (og litt om datastrukturer) Algoritmeanalyse (og litt om datastrukturer) Datastrukturer definisjon En datastruktur er den måten en samling data er organisert på. Datastrukturen kan være ordnet (sortert på en eller annen måte) eller

Detaljer

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema va er en algoritme? Vanlig sammenligning: Oppskrift. nput lgoritme NF1020 - ØSTEN 2006 Kursansvarlige Ragnar Normann E-post: ragnarn@ifi.uio.no Output Knuth : tillegg til å være et endelig sett med regler

Detaljer

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig:

Detaljer

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 4. juni 2014 Fagansvarlig:

Detaljer

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

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel ) INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde (ragnhilk@ifi.uio.no)

Detaljer

Algoritme-Analyse. Asymptotisk ytelse. Sammenligning av kjøretid. Konstanter mot n. Algoritme-kompeksitet. Hva er størrelsen (n) av et problem?

Algoritme-Analyse. Asymptotisk ytelse. Sammenligning av kjøretid. Konstanter mot n. Algoritme-kompeksitet. Hva er størrelsen (n) av et problem? Hva er størrelsen (n) av et proble? Algorite-Analyse Algoriter og Datastrukturer Antall linjer i et nettverk Antall tegn i en tekst Antall tall so skal sorteres Antall poster det skal søkes blant Antall

Detaljer

Ninety-nine bottles. Femte forelesning. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger.

Ninety-nine bottles. Femte forelesning. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger. Hva slags kjøretid har denne sangen? Hvordan kan du formulere det som en rekurrensligning? Ninety-nine

Detaljer

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

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013 NITH PG00 Algoritmer og datastrukturer Løsningsforslag Eksamen.juni 0 Dette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. Det er altså ikke et eksempel

Detaljer

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer Praktiske opplysninger INF2220 - Algoritmer og datastrukturer HØSTEN 2007 Institutt for informatikk, Universitetet i Oslo Tid og sted: Mandag kl. 12:15-14:00 Store auditorium, Informatikkbygningen Kursansvarlige

Detaljer

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

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl Student nr.: Side 1 av 5 Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl 0900-1500 Faglig kontakt under eksamen: Arne Halaas, tlf. 73 593442. Hjelpemidler: Alle

Detaljer

Inf 1020 Algoritmer og datastrukturer

Inf 1020 Algoritmer og datastrukturer Inf 1020 Algoritmer og datastrukturer Et av de mest sentrale grunnkursene i informatikkutdanningen... og et av de vanskeligste! De fleste 3000-kursene i informatikk bygger på Inf1020 Kurset hever programmering

Detaljer

LO118D Forelesning 2 (DM)

LO118D Forelesning 2 (DM) LO118D Forelesning 2 (DM) Kjøretidsanalyse, matematisk induksjon, rekursjon 22.08.2007 1 Kjøretidsanalyse 2 Matematisk induksjon 3 Rekursjon Kjøretidsanalyse Eksempel Finne antall kombinasjoner med minst

Detaljer

MED TIDESTIMATER Løsningsforslag

MED TIDESTIMATER Løsningsforslag Oppgavesettet består av 12 (mange) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 12 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig:

Detaljer

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

Søking i strenger. Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen Søking i strenger Vanlige søkealgoritmer (on-line-søk) Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen Indeksering av

Detaljer

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet 1 A B D C Prim: Kruskal: AB, BD, DC DC, AB, BD 2 0 + 1 + + n 1; antall

Detaljer

Rekursiv programmering

Rekursiv programmering Rekursiv programmering Babushka-dukker En russisk Babushkadukke er en sekvens av like dukker inne i hverandre, som kan åpnes Hver gang en dukke åpnes er det en mindre utgave av dukken inni, inntil man

Detaljer

Turingmaskiner.

Turingmaskiner. Turingmaskiner http://www.youtube.com/watch?v=e3kelemwfhy http://www.youtube.com/watch?v=cyw2ewoo6c4 Søking i strenger Vanlige søkealgoritmer (on-line-søk) Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen

Detaljer

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

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen

Detaljer

INF2220: Forelesning 1

INF2220: Forelesning 1 INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) Praktisk informasjon 2 Praktisk informasjon Kursansvarlige Ingrid Chieh Yu de Vibe (ingridcy@ifi.uio.no)

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs 1 TDT4105 Informasjonsteknologi, grunnkurs Matlab: Sortering og søking Anders Christensen (anders@idi.ntnu.no) Rune Sætre (satre@idi.ntnu.no) TDT4105 IT Grunnkurs 2 Pensum Matlab-boka: 12.3 og 12.5 Stoffet

Detaljer

INF2220: Forelesning 1

INF2220: Forelesning 1 INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) Rekursjon (kapittel 1.3) (Binær)trær (kapittel 4.1-4.3 + 4.6) Praktisk informasjon 2 Praktisk informasjon Kursansvarlige Ingrid

Detaljer

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8 Delkapittel 1.8 Algoritmeanalyse Side 1 av 12 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8 1.8 Algoritmeanalyse 1.8.1 En algoritmes arbeidsmengde I Delkapittel 1.1 ble det definert og diskutert

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 10

PG4200 Algoritmer og datastrukturer Forelesning 10 PG4200 Algoritmer og datastrukturer Forelesning 10 Lars Sydnes, NITH 9. april 2014 NOE Å STUSSE PÅ? Quadratic probing i Hash-tabell: ( ) 2 i + 1 p = p + ( 1) i+1 2 Underforstått forutsetning: Heltallsaritmetikk

Detaljer

Algoritmer og Datastrukturer IAI 21899

Algoritmer og Datastrukturer IAI 21899 Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 30. november 2000, kl. 09.00-14.00 LØSNINGSFORSLAG 1 Del 1, Binære søketrær Totalt

Detaljer

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

Kompleksitetsanalyse Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder Innhold 1 1 1.1 Hva er en algoritme?............................... 1 1.2

Detaljer

Datastrukturer for rask søking

Datastrukturer for rask søking Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen

Detaljer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Oppgavesettet består av 8 (åtte) sider. NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Tillatte hjelpemidler: Ingen Side 1 av 8 Varighet: 3 timer Dato: 4.juni 2013 Fagansvarlig:

Detaljer

PG 4200 Algoritmer og datastrukturer Innlevering 2

PG 4200 Algoritmer og datastrukturer Innlevering 2 PG 4200 Algoritmer og datastrukturer Innlevering 2 Frist: Mandag 21.april 2014 kl 23.55 Utdelt materiale: Se zip-filen innlevering2.zip. Innlevering: Lever en zip-fil som inneholder følgende: PG4200_innlevering_2.pdf:

Detaljer

PG4200 Algoritmer og datastrukturer Lab 1. 8.januar 2014. I dag skal vi undersøke en rekke velkjente databeholdere i Java:

PG4200 Algoritmer og datastrukturer Lab 1. 8.januar 2014. I dag skal vi undersøke en rekke velkjente databeholdere i Java: PG4200 Algoritmer og datastrukturer Lab 1 8.januar 2014 Innledning I dag skal vi undersøke en rekke velkjente databeholdere i Java: java.util.arraylist java.util.linkedlist java.util.hashset java.util.treeset

Detaljer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Oppgavesettet består av 7 (syv) sider. NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Tillatte hjelpemidler: Ingen Side av 7 Varighet: 3 timer Dato:.august 203 Fagansvarlig:

Detaljer

MAT1030 Forelesning 28

MAT1030 Forelesning 28 MAT1030 Forelesning 28 Kompleksitetsteori Roger Antonsen - 12. mai 2009 (Sist oppdatert: 2009-05-13 08:12) Forelesning 28: Kompleksitetsteori Introduksjon Da er vi klare (?) for siste kapittel, om kompleksitetsteori!

Detaljer

Om Kurset og Analyse av Algoritmer

Om Kurset og Analyse av Algoritmer Om Kurset og Analyse av Algoritmer Lars Vidar Magnusson 8.1.2014 Praktisk informasjon om kurset Hva er en algoritme? (kapittel 1) Hvordan analysere en algoritme? (kapittel 2) Praktisk Informasjon Introduction

Detaljer

Divide-and-Conquer. Lars Vidar Magnusson 13.1.2015

Divide-and-Conquer. Lars Vidar Magnusson 13.1.2015 Divide-and-Conquer Lars Vidar Magnusson 13.1.2015 Kapittel 4 Maximum sub-array problemet Matrix multiplikasjon Analyse av divide-and-conquer algoritmer ved hjelp av substitusjonsmetoden Divide-and-Conquer

Detaljer

Forelesning 30. Kompleksitetsteori. Dag Normann mai Informasjon. Oppsummering

Forelesning 30. Kompleksitetsteori. Dag Normann mai Informasjon. Oppsummering Forelesning 30 Kompleksitetsteori Dag Normann - 14. mai 2008 Informasjon Det er lagt ut program for orakeltjenestene i MAT1030 denne våren på semestersiden. Det blir ikke ordinære gruppetimer fra og med

Detaljer

INF2220: Time 12 - Sortering

INF2220: Time 12 - Sortering INF0: Time 1 - Sortering Mathias Lohne mathialo Noen algoritmer Vi skal nå se på noen konkrete sorteringsalgoritmer. Gjennomgående i alle eksempler vil vi sortere tall etter tallverdi, men som diskutert

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

Detaljer

INF2220: Forelesning 2

INF2220: Forelesning 2 INF2220: Forelesning 2 Mer om analyse av algoritmer Analyse av binære søketrær Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) ANALYSE AV ALGORITMER 2 Analyse av tidsforbruk Hvor

Detaljer

PG4200 Algoritmer og datastrukturer forelesning 10. Lars Sydnes 21. november 2014

PG4200 Algoritmer og datastrukturer forelesning 10. Lars Sydnes 21. november 2014 PG4200 Algoritmer og datastrukturer forelesning 10 Lars Sydnes 21. november 2014 I Grafer Grafisk fremstilling av en graf D A B C Ikke-rettet graf Grafisk fremstilling av en graf D A B C Rettet graf Grafisk

Detaljer

Kompleksitetsanalyse

Kompleksitetsanalyse :: Forside Kompleksitetsanalyse Åsmund Eldhuset asmunde *at* stud.ntnu.no folk.ntnu.no/asmunde/algdat/ Først: studietips OpenCourseWare fra MIT Forelesninger tatt opp på video Algoritmekurset foreleses

Detaljer

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk MAT1030 Diskret matematikk Forelesning 30: Kompleksitetsteori Dag Normann Matematisk Institutt, Universitetet i Oslo 14. mai 2008 Informasjon Det er lagt ut program for orakeltjenestene i MAT1030 denne

Detaljer

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg Øvingsforelesning 3: Splitt og hersk Daniel Solberg Plan for dagen Vi går raskt gjennom øving 2 Splitt og hersk Algoritmer: Mergesort Quicksort Binærsøk Rekurrenser, masse rekurrenser 2 Splitt og hersk

Detaljer

Rekursiv programmering

Rekursiv programmering Rekursiv programmering Babushka-dukker En russisk Babushkadukke er en sekvens av like dukker inne i hverandre, som kan åpnes Hver gang en dukke åpnes er det en mindre utgave av dukken inni, inntil man

Detaljer

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

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer Heapsort Lars Vidar Magnusson 24.1.2014 Kapittel 6 Heaps Heapsort Prioritetskøer Sorterings Problemet Sorterings problemet er et av de mest fundementalske problemene innen informatikken. Vi sorterer typisk

Detaljer

Når Merge sort og Insertion sort samarbeider

Når Merge sort og Insertion sort samarbeider Når Merge sort og Insertion sort samarbeider Lars Sydnes 8. november 2014 1 Innledning Her skal vi undersøke to algoritmer som brukes til å sortere lister, Merge sort og Insertion sort. Det at Merge sort

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 7

PG4200 Algoritmer og datastrukturer Forelesning 7 PG4200 Algoritmer og datastrukturer Forelesning 7 Lars Sydnes, NITH 19. mars 2014 I. TERMINOLOGI FOR TRÆR TRÆR Lister: Lineære Trær: Hierarkiske Modell / Språk: Bestanddeler: Noder, forbindelser. Forbindelse

Detaljer

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre: Heap Heap* En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger til venstre En heap er også et

Detaljer

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

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved Dagens plan: Utvidbar hashing (kapittel 5.6) B-trær (kap. 4.7) Abstrakte datatyper (kap. 3.1) Stakker (kap. 3.3) Når internminnet blir for lite En lese-/skriveoperasjon på en harddisk (aksesstid 7-12 millisekunder)

Detaljer

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

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006 Løsningsforslag for Obligatorisk Oppgave 3 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.03.14 Den tredje obligatoriske oppgaven tar for seg forelesning 9 til 13, som dreier seg om

Detaljer

Kjøretidsanalyse. Hogne Jørgensen

Kjøretidsanalyse. Hogne Jørgensen Kjøretidsanalyse Hogne Jørgensen Program Presentasjon/tips til Øving 5 Kompleksitetsanalyse Kahoot Rekurrensligninger Kahoot 2 Øving 5 Veibygging i Ogligogo Finne dyreste kant i minimalt spenntre Prim

Detaljer

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

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006 Løsningsforslag for Obligatorisk Oppgave 2 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.02.14 Den andre obligatoriske oppgaven tar for seg forelesning 5, 6, og 7 som dreier seg om

Detaljer

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

EKSAMEN Løsningsforslag. med forbehold om bugs :-) 1 EKSAMEN Løsningsforslag med forbehold om bugs :-) Emnekode: ITF20006 000 Dato: 20. mai 2011 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 3. november 2, kl. 9. - 14. Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess IT1101 Informatikk basisfag, dobbeltime 2/10 Hva er en algoritme? Fremgangsmåte for noe Hittil: Datarepresentasjon Datamanipulasjon Datamaskinarkutektur hvordan maskinen jobber Operativsystem Program som

Detaljer

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

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013 NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 20 ette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. et er altså ikke et eksempel

Detaljer

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

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger: INF 4130 / 9135 29/8-2012 Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger: Tre stykker, som må godkjennes. Frister: 21. sept, 26. okt, 16. nov Andre, «nærliggende»

Detaljer

EKSAMEN med løsningsforslag

EKSAMEN med løsningsforslag EKSAMEN med løsningsforslag Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF2220 Algoritmer og datastrukturer Eksamensdag: 16. desember 2013 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 14. desember 2015 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 6 sider. Vedlegg: Tillatte hjelpemidler: INF2220

Detaljer

MAT1030 Diskret Matematikk

MAT1030 Diskret Matematikk MAT1030 Diskret Matematikk Forelesning 29: Kompleksitetsteori Roger Antonsen Institutt for informatikk, Universitetet i Oslo 13. mai 2009 (Sist oppdatert: 2009-05-17 22:38) Forelesning 29: Kompleksitetsteori

Detaljer

Forelesning 29: Kompleksitetsteori

Forelesning 29: Kompleksitetsteori MAT1030 Diskret Matematikk Forelesning 29: Kompleksitetsteori Roger Antonsen Institutt for informatikk, Universitetet i Oslo Forelesning 29: Kompleksitetsteori 13. mai 2009 (Sist oppdatert: 2009-05-17

Detaljer

Lars Vidar Magnusson

Lars Vidar Magnusson B-Trær Lars Vidar Magnusson 5.3.2014 Kapittel 18 B-trær Standard operasjoner Sletting B-Trær B-trær er balanserte trær som er designet for å fungere bra på sekundære lagringsmedium e.g. harddisk. Ligner

Detaljer

Rekursjon. Hanois tårn. Milepeler for å løse problemet

Rekursjon. Hanois tårn. Milepeler for å løse problemet Rekursjon. Hanois tårn. Milepeler for å løse problemet Hanois tårn. Milepeler for å løse problemet Forstå spillet Bestemme/skjønne hvordan spillet løses Lage en plan for hva programmet skal gjøre (med

Detaljer

Oppgave 1. Sekvenser (20%)

Oppgave 1. Sekvenser (20%) Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Eksamen i emnet I 20 - Algoritmer, datastrukturer og programmering Mandag 2.Mai 200, kl. 09-5. Ingen hjelpemidler tillatt. Oppgavesettet

Detaljer

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål Forstå, og kunne bruke, algoritmer

Detaljer

Analyse av Algoritmer

Analyse av Algoritmer Analyse av Algoritmer Lars Vidar Magnusson 10.1.2014 Asymptotisk notasjon (kapittel 3) Kompleksitetsklasser Uløselige problem Asymptotisk Notasjon Asymptotisk analyse innebærer å finne en algoritmes kjøretid

Detaljer

Forelesning 30: Kompleksitetsteori

Forelesning 30: Kompleksitetsteori MAT1030 Diskret Matematikk Forelesning 30: Kompleksitetsteori Roger Antonsen Institutt for informatikk, Universitetet i Oslo Forelesning 30: Kompleksitetsteori 19. mai 2009 (Sist oppdatert: 2009-05-19

Detaljer

Binær heap. En heap er et komplett binært tre:

Binær heap. En heap er et komplett binært tre: Heap Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger så langt til venstre som mulig

Detaljer

INF våren 2017

INF våren 2017 INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole Oppgavesettet består av 13 (mange) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 13 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 4. juni 2014 Fagansvarlig:

Detaljer

IN våren 2019 Onsdag 16. januar

IN våren 2019 Onsdag 16. januar IN1010 - våren 2019 Onsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

IN våren 2018 Tirsdag 16. januar

IN våren 2018 Tirsdag 16. januar IN1010 - våren 2018 Tirsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

Gauss-eliminasjon og matrisemultiplikasjon

Gauss-eliminasjon og matrisemultiplikasjon DUMMY Gauss-eliminasjon og matrisemultiplikasjon Lars Sydnes 9 september 2015 Sammendrag Dette notatet handler om hvordan man løser lineære ligningssystemer, altså systemer av flere ligninger i flere ukjente,

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister Lars Sydnes, NITH 5. februar 2014 I. Implementasjoner Tabell-implementasjon av Stakk Tabellen er den lettest tilgjengelige datastrukturen

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 12

PG4200 Algoritmer og datastrukturer Forelesning 12 PG4200 Algoritmer og datastrukturer Forelesning 12 Lars Sydnes, NITH 30. april 2014 I. SIST: NOTAT OM HARDE PROBLEMER INNHOLD Håndterlige problemer: Problemer med kjente algoritmer med polynomisk kjøretid

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 15. desember 2010 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: INF2220

Detaljer

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk MAT1030 Diskret matematikk Forelesning 14: Rekursjon og induksjon Dag Normann Matematisk Institutt, Universitetet i Oslo 27. februar 2008 Oppsummering Mandag repeterte vi en del om relasjoner, da spesielt

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2017 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2017, forelesning

Detaljer

Alle hele tall g > 1 kan være grunntall i et tallsystem.

Alle hele tall g > 1 kan være grunntall i et tallsystem. Tallsystemer Heltall oppgis vanligvis i det desimale tallsystemet, også kalt 10-tallssystemet. Eksempel. Gitt tallet 3794. Dette kan skrives slik: 3 1000 + 7 100 + 9 10 + 4 = 3 10 3 + 7 10 2 + 9 10 1 +

Detaljer

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon.

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon. INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon. Stephan Oepen & Erik Velldal Universitetet i Oslo 25. januar, 2013 På blokka 2 Forrige uke Introduksjon og oversikt Funksjonell

Detaljer

Kap.8 Sortering og søking sist oppdatert 16.03

Kap.8 Sortering og søking sist oppdatert 16.03 Kap.8 Sortering og søking sist oppdatert 16.03 Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse Del 2 Sortering - gamle sorteringsmetoder fra i høst - nye -analyse Copyright

Detaljer

b) 17 går ikke opp i 84 siden vi får en rest på 16 når 84 deles med 17 c) 17 går opp i 357 siden

b) 17 går ikke opp i 84 siden vi får en rest på 16 når 84 deles med 17 c) 17 går opp i 357 siden Avsnitt. Oppgave Diskret matematikk - Høgskolen i Oslo Løsningsforslag for en del oppgaver fra boken Discrete Mathematics and Its Applications Forfatter: Kenneth H. Rosen a) 7 går opp i 68 siden 68 7 b)

Detaljer

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017 INF0: Gruppe me Mathias Lohne Høsten 0 1 Rød-svarte trær Vanlige binære søketrær blir fort veldig ubalanserte. røv å sett inn 1,,, 4, 5,, 7,... (i den rekkefølgen) i et binært søketre. Da vil vi i praksis

Detaljer

Husk å registrer deg på emnets hjemmeside!

Husk å registrer deg på emnets hjemmeside! IT Informatikk basisfag 28/8 Husk å registrer deg på emnets hjemmeside! http://it.idi.ntnu.no Gikk du glipp av øving? Gjør øving og få den godkjent på datasal av din lærass! Forrige gang: HTML Merkelapper

Detaljer

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting Rød-Svarte Trær Lars Vidar Magnusson 21.2.2014 Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting Rød-Svarte Trær Rød-Svarte trær (red-black trees) er en variasjon binære søketrær som

Detaljer

MAT1030 Forelesning 17

MAT1030 Forelesning 17 MAT1030 Forelesning 17 Rekurrenslikninger Roger Antonsen - 18. mars 009 (Sist oppdatert: 009-03-18 19:3) Forelesning 17 Forrige gang ga vi en rekke eksempler på bruk av induksjonsbevis og rekursivt definerte

Detaljer

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen MAT1030 Diskret Matematikk Forelesning 15: og induksjon Roger Antonsen Institutt for informatikk, Universitetet i Oslo Repetisjon 11. mars 2009 (Sist oppdatert: 2009-03-10 20:38) MAT1030 Diskret Matematikk

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner Forelesning 14 og induksjon Dag Normann - 27. februar 2008 Oppsummering Mandag repeterte vi en del om relasjoner, da spesielt om ekvivalensrelasjoner og partielle ordninger. Vi snakket videre om funksjoner.

Detaljer

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre: Sortering Sorteringsproblemet Gitt en array A med n elementer som kan sammenlignes med hverandre: Finn en ordning (eller permutasjon) av elementene i A slik at de står i stigende (evt. avtagende) rekkefølge

Detaljer

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2015 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2015, forelesning

Detaljer