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

Størrelse: px
Begynne med side:

Download "Løsningsforslag for Obligatorisk Oppgave 1. Algoritmer og Datastrukturer ITF20006"

Transkript

1 Løsningsforslag for Obligatorisk Oppgave 1 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist Den første obligatoriske oppgaven tar for seg de fem første forelesningene, som i hovedsak har dreiet seg om hvordan man analyserer en algoritme Løsningsforslaget inneholder ikke analyse av faktisk kjøretid i den første og tredje oppgaven Dette ble gjort fordi poenget med disse var primært å la studentene få erfare forskjellen mellom faktisk kjøretid og asymptotisk kjøretid på egen hånd Praktisk Informasjon Det er med disse oppgavene dere skal få den nødvendige erfaringen dere trenger, så det kreves at alle innleveringer skal være individuelt arbeid Det er selvsagt til lov å hjelpe hverandre, men den endelige besvarelsen skal være et resultat av eget arbeid Besvarelser som viser tegn plagiering vil bli underkjente Dere kan selv velge hvilket språk dere vil implementere algoritmene i, men hvis dere skulle trenge hjelp kan det være greit å holde seg til enten Java, C# eller C (eller SML for spesielt interesserte) Både kode og tekst skal samles i en enkel rapport som så sendes til meg på larsvmagnusson@hiofno Rapporten skal være i pdf-format og skal være strukturert i henhold til oppgavene Dere står fritt i om koden legges direkte inn i besvarelsesteksten som figurer eller om dere legger den til som appendix og bruker refaranser Oppgave 1 Analyser kjøretiden til de følgende algoritmene gitt i pseudokode Det skal gjøres både en detaljert analyse, en asymptotisk analyse og en analyse av faktisk kjøretid For den detaljerte analysen kan dere anta at hver linje er tar én tidsenhet For den faktiske kjøretiden må pseudokoden implementeres og testes med forskjellige inputstørrelser I denne oppgaven er det viktigste at de klarer å komme frem til korrekt asymptotisk notasjon (det er greit om de blander O, Omega og Theta, så lenge alle er store) Detaljene i den detaljerte analysen er mindre viktig, men de bør ha fått med seg de grove trekkene 1

2 Oppgave1A(n) 1 sum = 0 2 for i = 1 to n 3 sum = sum + i 4 return sum Detaljert analyse: T (n) = 1 + (n + 1) + n + 1 = 2n + 3 Asymptotisk analyse: T (n) = 2n + 3 = Θ(n) Oppgave1B(n) 1 sum = 0 2 for i = 1 to n 3 for j = 1 to n 4 sum = sum + i 5 sum = sum + j 6 return sum Detaljert analyse: Asymptotisk analyse: T (n) = 1 + (n + 1) + n(n + 1) + n 2 + n = 3n 2 + 2n + 3 T (n) = 3n 2 + 2n + 3 = Θ(n 2 ) Oppgave1C(n) 1 sum = 0 2 for i = 1 to n 3 sum = sum + i 4 for j = 1 to n 5 sum = sum + k 6 return sum Detaljert analyse: T (n) = 1 + (n + 1) + n + (n + 1) + n + 1 = 4n + 4 2

3 Asymptotisk analyse: T (n) = 4n + 4 = Θ(n) Oppgave1D(n) 1 sum = 0 2 for i = 1 to n 3 for j = 1 to n 4 for k = 1 to n 5 sum = sum + k 6 return sum Detaljert analyse: T (n) = 1 + (n + 1) + n(n + 1) + n 2 (n + 1) + n Asymptotisk analyse: = 2n 3 + 2n 2 + 2n + 3 T (n) = 2n 3 + 2n 2 + 2n + 3 = Θ(n 3 ) Oppgave1E(n) 1 sum = 0 2 for i = 1 to n 3 for j = 1 to n 4 for k = 1 to n 5 sum = sum + i 6 sum = sum + j 7 sum = sum + k 8 return sum Detaljert analyse: T (n) = 1 + (n + 1) + n(n + 1) + n 2 (n + 1) + n 3 + n 3 + n = 4n 3 + 2n 2 + 2n + 3 Asymptotisk analyse: T (n) = 4n 3 + 2n 2 + 2n + 3 = Θ(n 3 ) Oppgave1F(n) 1 sum = 0 2 i = 1 3 while i n 4 sum = sum + i 5 i = 2i 6 return sum 3

4 Detaljert analyse: T (n) = ( log 2 n + 2) + ( log 2 n + 1) + ( log 2 n + 1) + 1 = 3 log 2 n + 7 Asymptotisk analyse: T (n) = 3 log 2 n + 7 = Θ(log n) Oppgave1G(n) 1 sum = 0 2 i = 1 3 while i n 4 for j = 1 to n 5 sum = sum + j 6 i = 2i 7 return sum Detaljert analyse: T (n) = ( log 2 n + 2) + ( log 2 n + 1)(n + 1) + ( log 2 n + 1)n + ( log 2 n + 1) + 1 = 2n log 2 n + 2n + 3 log 2 n + 7 Asymptotisk analyse: T (n) = 2n log 2 n + 2n + 3 log 2 n + 7 = Θ(n log n) Oppgave 2 I denne oppgaven bør de i hovedsak ha alt likt fasiten, men de matematiske transformasjonene som blir brukt i substitusjonsmetoden kan selvsagt variere A Finn en gjetning for en asymptotisk øvre grense for recurrence ligningen under ved hjelp av rekursjonstrær Verifiser den asymptotiske grensen først med substitusjonsmetoden (matematisk induksjon) og så masterteoremet { Θ(1) if n = 1 T (n) = 3T (n/2) + Θ(n) if n > 1 Finner gjetning ved hjelp av et rekursjonstre Vi begynner med å sette inn cn for Θ(n) som intern kostnad i hver node i treet og ekspanderer til vi ser et mønster 4

5 cn c( n 2 ) c( n 2 ) c( n 2 ) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) Høyden h på treet blir: n 2 h = 1 2 h = n h = log 2 n Da har vi 3 h = 3 log 2 n = n log 2 3 antall barn med kostnad Θ(1) hver, som gir en total kostnad for barna på Θ(n log 2 3 ) Vi har kan nå sette sammen en ligning for kostnaden til recurrence-ligningen ved å summere kostnadene på alle nivåene i treet T (n) = cn cn cn + + Θ(nlog 2 3 ) = i=0 h = Θ(n log 2 3 ) i cn + Θ(n log 2 3 ) Vår gjetning blir dermed O(n log 2 3 ) siden det bare blir spurt om en øvre grense Dette gjør også beviset enklere Beviset er gitt under med substitusjonsmetoden ie matematisk induksjon Vi gjetter på O(n log 2 3 ) Dette krever at T (n) cn log 2 3 Vi setter cn log 2 3 for T og kn for Θ(n) (vi setter inn konstanten k for å ikke blande med konstanten c) i recurrence ligningen og får T (n) = 3c( n 2 )log kn = 3c( nlog log 2 3 ) + kn = cn log kn Dette fører ikke frem til den ønskede formen på T (n) cn log 2 3 cn log kn > cn log 2 3 så lenge k > 0 siden 5

6 Vi reduserer derfor gjetningen vår med en lavereordens ledd for å prøve å få matematikken til å gå opp Siden vi endte opp med et n-ledd til overs, er det naturlig å begynne med en gjetning som trekker fra et n-ledd ie O(n log 2 3 n) ( (n ) ) log2 3 n T (n) = 3c + kn 2 2 = cn log 2 3 3cn 2 + kn cn log 2 3 cn, så lenge c 2k Begrensingen c 2k kommer fra å løse ulikheten 3cn kn cn 2 3c 2 k c 3c 2 c k c 2 k c 2k For å fullføre beviset må vi se på grensetilfellet også Vi vet fra definisjonen av ligningen at T (1) = Θ(1) = O(1) = m, hvis vi setter konstanten i Θ(1) i basisleddet til en konstant m > 0 Siden dette ikke oppfyller kravet T (n) c(n log 2 3 n) så må vi se på større verdier av n T (2) = 3T (1) + kn = 3m + k Vi må så prøve bevise at dette oppfyller kravet T (n) c(n log 2 3 n) 3m + k c(2 log 2 3 2) = c(3 2) = c c(2 log 2 3 2), så lenge c 3m + k Vi har da bevist at T (n) = O(n log 2 3 ) lenge n 2 og c 3m + k med substitusjonsmetoden Vi kan verifisere dette beviset med masterteoremet Vi må da sammenligne n log b a med Θ(n) n log b a = n log 2 3 Vi ser enkelt n log 2 3 er polynomisk større enn Θ(n), så da får vi T (n) = Θ(n log 2 3 ) = O(n log 2 3 ) 6

7 B Hvilke metoder for å løse recurrence-ligninger er brukbare på ligningen under Begrunn svaret Bruk en av de applikable metodene for å komme frem til en øvre grense { Θ(1) if n = 1 T (n) = T (n 1) + Θ(n) if n > 1 Vi kan ikke bruke masterteoremet for å løse recurrence-ligningen siden den ikke er på formen T (n) = at (n/b) + f(n) Vi står da igjen med rekursjonstrær og substitusjonsmetoden Det er enkelt å se at siden n minkes med 1 på hvert nivå, så vil vi få rekursjonstreet få en høyde på n Jobben internt i hver node er Θ(n) = cn Selvom n minker for hvert nivå, er kostnaden avhengig av størrelsen n Vi kan derfor ganske enkelt multiplisere høyden med kostnaden og ende opp med en gjetning på n n = n 2 = O(n 2 ) Vi verifiserer så denne gjetningen med substitusjonsmetoden Vi vil bevise at T (n) = O(n 2 ) Dette krever at T (n) = cn 2 Vi bytter ut T (n) med cn 2 og Θ(n) med kn (for den interne kostnaden) T (n) = c(n 1) 2 + kn = cn 2 2cn + c + kn = cn 2 c(2n 1) + kn cn 2, så lenge n 1 og c 1 Begrensingen kommer fra å løse ulikheten c(2n 1) + kn 0 c(2n 1) kn c kn 2n 1 For grensetilfellet så prøver vi T (1) = 1 og c 1 2 = c Vi kan derfor si at n 0 = 1 og c = 1 og at vi har bevist at T (n) = O(n 2 ) Oppgave 3 I denne oppgaven skal dere implementere og analysere algoritmen Square- Matrix-Multiply-Recursive som vi gikk gjennom i forelesningen Her kreves det ideelt sett at de har kommet frem til en implementasjon som ligner (har de samme operasjonene i samme rekkefølge) på pseudokodeutgaven gitt under Det er i grunn nokså enkelt å konvertere pseudokoden til faktisk kode, men studentene har hatt en rekke problemer i forhold til hvordan man partisjonerer med indekser 7

8 Analysen bør være mest mulig lik med analysen gjort i fasiten (jeg har sagt at de kan utelate basistilfellet av det matematiske beviset) Square-Matrix-Multiply-Recursive(A, B) 1 n = Arows 2 let C be a new n n matrix 3 if n == 1 4 c 11 = a 11 b 11 5 else partition A, B, and C 6 C 11 = Square-Matrix-Multiply-Recursive(A 11, B 11 ) +Square-Matrix-Multiply-Recursive(A 12, B 21 ) 7 C 12 = Square-Matrix-Multiply-Recursive(A 11, B 12 ) +Square-Matrix-Multiply-Recursive(A 12, B 22 ) 8 C 21 = Square-Matrix-Multiply-Recursive(A 21, B 11 ) +Square-Matrix-Multiply-Recursive(A 22, B 21 ) 9 C 22 = Square-Matrix-Multiply-Recursive(A 21, B 12 ) +Square-Matrix-Multiply-Recursive(A 22, B 22 ) 10 return C Siden matrisene A og B er n n matriser kan de representeres med vanlige arrays på størrelse n 2 Koeffisienten c ij in matrise (0-indeksert) aksesseres da i arrayet a med a[in + j] Dere skal implementere to utgaver, en som kopierer delmatrisene inn i nye arrays, og en som bruker to indeks-variable for å angi hvilken del av matrisen det jobbes med Den første utgaven som kopierer inn i nye matriser er implementert i funksjonene under P a r t i s j o n e r e r en matrise m med ø s t r r e l s e n x n t i l f i r e nye d e l m a t r i s e r med ø s t r r e l s e n/2 x n /2 Det a l l o k e r e s n y t t minne f o r hver d e l m a t r i s e og i n n h o l d e t f r a f o r e l d e r matrisen k o p i e r e s inn public s t a t i c f l o a t [ ] [ ] p a r t i t i o n ( f l o a t [ ] m, int n ) { int partn = n / 2 ; // Den nye ø s t r r e l s e n f l o a t [ ] [ ] p a r t s = { // De nye d e l m a t r i s e n e new f l o a t [ partn partn ], new f l o a t [ partn partn ], new f l o a t [ partn partn ], new f l o a t [ partn partn ] ; Kopierer inn i n n h o l d e t f r a m inn i ø t i l h r e n d e d e l m a t r i s e for ( int p = 0 ; p < p a r t s l e n g t h ; p++) { int pi = p / 2 ; // 0 f o r ø f r s t e d e l r a d i m, 1 f o r andre int pj = p % 2 ; // 0 f o r ø f r s t e d e l k o l o n n e i m, 1 f o r andre for ( int i = 0 ; i < partn ; i ++) for ( int j = 0 ; j < partn ; j++) p a r t s [ p ] [ i partn + j ] = m[ ( pi partn + i ) n + ( pj partn + j ) ] ; 8

9 return p a r t s ; Adderer i n n h o l d e t i a og b og l e g g e r r e s u l t a t e t i c public s t a t i c f l o a t [ ] f l o a t [ ] a, f l o a t [ ] b, f l o a t [ ] c ) { for ( int i = 0 ; i < a l e n g t h ; i ++) c [ i ] = a [ i ] + b [ i ] ; return c ; S e t t e r sammen f i r e d e l m a t r i s e r t i l en matrise Den k o p i e r e r i n n h o l d e t f r a d e l m a t r i s e n e i pars inn i matrisen m public s t a t i c f l o a t [ ] u n P a r t i t i o n ( f l o a t [ ] [ ] parts, f l o a t [ ] m, int n ) { int partn = n / 2 ; Kopierer inn i n n h o l d e t f r a d e l m a t r i s e n e inn åp k o r r e k t p l a s s i m for ( int p = 0 ; p < p a r t s l e n g t h ; p++) { int pi = p / 2 ; // 0 f o r ø f r s t e d e l r a d i m, 1 f o r andre int pj = p % 2 ; // 0 f o r ø f r s t e d e l k o l o n n e i m, 1 f o r andre for ( int i = 0 ; i < partn ; i ++) for ( int j = 0 ; j < partn ; j++) m[ ( pi partn + i ) n + ( pj partn + j ) ] = p a r t s [ p ] [ i partn + j ] ; return m; Rekursiv m u l t i p l i k a s j o n s m e t o d e implementert d i r e k t e f r a pseudokoden g i t t i f o r e l e s n i n g og f a g b o k a Den e n e s t e f o r s k j e l l e n er at j e g har l a g t t i l ø s t r r e l s e n n som e t argument og k a l l e t t i l u n P a r t i t i o n f o r å s e t t c sammen public s t a t i c f l o a t [ ] m u l t i p l y ( f l o a t [ ] a, f l o a t [ ] b, int n ) { f l o a t [ ] c = new f l o a t [ n n ] ; i f ( n == 1) c [ 0 ] = a [ 0 ] b [ 0 ] ; else { int partn = n / 2 ; 9

10 f l o a t [ ] [ ] aparts = p a r t i t i o n ( a, n ) ; f l o a t [ ] [ ] bparts = p a r t i t i o n ( b, n ) ; f l o a t [ ] [ ] cparts = p a r t i t i o n ( c, n ) ; m u l t i p l y ( aparts [ 0 ], bparts [ 0 ], partn ), m u l t i p l y ( aparts [ 1 ], bparts [ 2 ], partn ), cparts [ 0 ] ) ; m u l t i p l y ( aparts [ 0 ], bparts [ 1 ], partn ), m u l t i p l y ( aparts [ 1 ], bparts [ 3 ], partn ), cparts [ 1 ] ) ; m u l t i p l y ( aparts [ 2 ], bparts [ 0 ], partn ), m u l t i p l y ( aparts [ 3 ], bparts [ 2 ], partn ), cparts [ 2 ] ) ; m u l t i p l y ( aparts [ 2 ], bparts [ 1 ], partn ), m u l t i p l y ( aparts [ 3 ], bparts [ 3 ], partn ), cparts [ 3 ] ) ; u n P a r t i t i o n ( cparts, c, n ) ; return c ; Den andre versjonen av algoritmen som bruker indekser for å angi en delmatrise er gitt i listingene under Denne har vært vanskelig for studentene å få til, så her har det kommet frem en rekke interessante variasjoner Denne k l a s s e n b r u k e s t i l å r e p r e s e n t e r e enten en matrise e l l e r en d e l m a t r i s e En nxn matrise a : i =0, j =0, n=n, mn=n, m=new f l o a t [ n n ] En t o p r i g h t d e l m a t r i s e av matrisen a : i =0, j =(a n /2), n=(a n /2), mn=a mn, m=a m private s t a t i c class SubMatrix { public int i, j, n, mn; // Startrad, // S t a r t k o l o n n e, // ø D e l m a t r i s e S t r r e l s e // ø M a t r i s e S t r r e l s e public f l o a t [ ] m; // Matrisen l a g r e t som en array public SubMatrix ( int i, int j, int n, f l o a t [ ] m, int mn) { this i = i ; this j = j ; this n = n ; this m = m; this mn = mn; 10

11 Tar en ( d e l ) matrise og d e l e r den opp i f i r e d e l e r Delene b l i r r e t u r n e r t i e t array i ø f l g e n d e ø r e k k e f l g e : t o p l e f t, t o p r i g h t, b o t t o m l e f t, b o t t o m r i g h t public s t a t i c SubMatrix [ ] p a r t i t i o n ( SubMatrix m) { int partn = m n / 2 ; SubMatrix [ ] p a r t s = { new SubMatrix (m i, m j, partn, mm, mmn), new SubMatrix (m i, partn + m j, partn, mm, mmn), new SubMatrix ( partn + m i, m j, partn, mm, mmn), new SubMatrix ( partn + m i, partn + m j, partn, mm, mmn) ; return p a r t s ; Adderer i n n h o l d e t i d e l m a t r i s e n e a og b og l e g g e r r e s u l t a t e t åp r i k t i g p l a s s i d e l m a t r i s e n c public s t a t i c SubMatrix SubMatrix a, SubMatrix b, SubMatrix c ) { for ( int i = 0 ; i < a n ; i ++) for ( int j = 0 ; j < a n ; j++) c m[ ( c i + i ) c mn + c j + j ] = a m[ ( a i + i ) a mn + a j + j ] + b m[ ( b i + i ) b mn + b j + j ] ; return c ; Rekursiv metode f o r m a t r i s e m u l t i p l i k a s j o n, implementert d i r e k t e e t t e r pseudokoden i boka Legg merke t i l at SubMatrix k l a s s e n b rukes åbde t i l å r e p r e s e n t e r e m a t r i s e r og d e l m a t r i s e r public s t a t i c SubMatrix m u l t i p l y ( SubMatrix a, SubMatrix b ) { SubMatrix c = new SubMatrix ( 0, 0, a n, new f l o a t [ a n a n ], a n ) ; i f ( c n == 1) c m[ c i c mn + c j ] = a m[ a i a mn + a j ] b m[ b i b mn + b j ] ; else { SubMatrix [ ] aparts = p a r t i t i o n ( a ) ; SubMatrix [ ] bparts = p a r t i t i o n ( b ) ; SubMatrix [ ] cparts = p a r t i t i o n ( c ) ; m u l t i p l y ( aparts [ 0 ], bparts [ 0 ] ), m u l t i p l y ( aparts [ 1 ], bparts [ 2 ] ), cparts [ 0 ] ) ; m u l t i p l y ( aparts [ 0 ], bparts [ 1 ] ), m u l t i p l y ( aparts [ 1 ], bparts [ 3 ] ), cparts [ 1 ] ) ; 11

12 m u l t i p l y ( aparts [ 2 ], bparts [ 0 ] ), m u l t i p l y ( aparts [ 3 ], bparts [ 2 ] ), cparts [ 2 ] ) ; m u l t i p l y ( aparts [ 2 ], bparts [ 1 ] ), m u l t i p l y ( aparts [ 3 ], bparts [ 3 ] ), cparts [ 3 ] ) ; return c ; Flere studenter har kommet fram til en alternativ algoritme som også fungerer ved å bruke indekser for å angi delmatriser Denne versjonen er lik den som bruker indekser over bortsett fra at den ikke bruker en metode for å addere Den akkumulerer i stedet i basistilfellet Veldig elegant i grunn, siden man da slipper å allokere en ny c i hvert rekursive kall Rekursiv metode f o r m a t r i s e m u l t i p l i k a s j o n som s k i l l e r seg f r a pseudokoden g i t t i boka F o r s k j e l l e n l i g g e r i hvordan adderingen b l i r ø u t f r t B a s i s t i l f e l l e t ( hvor n=1) t a r åhnd om adderingen i s t e d e t f o r at v i ø u t f r e r adderingen i en egen metoden Dette har f o r t r i n n e t at man s l i p p e r å a l l o k e r e en ny matrise f o r c åp h v e r t åniv, men d e t er v i k t i g å merke seg at denne a l g o r i t m e n i k k e l e n g e r den samme som b l i r b e s k r e v e t av pseudokoden ( selvom de ø l s e r d e t samme problemet ) public s t a t i c SubMatrix m u l t i p l y ( SubMatrix a, SubMatrix b, SubMatrix c ) { i f ( c n == 1) c m[ c i c mn + c j ] += a m[ a i a mn + a j ] b m[ b i b mn + b j ] ; else { SubMatrix [ ] aparts = p a r t i t i o n ( a ) ; SubMatrix [ ] bparts = p a r t i t i o n ( b ) ; SubMatrix [ ] cparts = p a r t i t i o n ( c ) ; m u l t i p l y ( aparts [ 0 ], bparts [ 0 ], cparts [ 0 ] ) ; m u l t i p l y ( aparts [ 1 ], bparts [ 2 ], cparts [ 0 ] ) ; m u l t i p l y ( aparts [ 0 ], bparts [ 1 ], cparts [ 1 ] ) ; m u l t i p l y ( aparts [ 1 ], bparts [ 3 ], cparts [ 1 ] ) ; m u l t i p l y ( aparts [ 2 ], bparts [ 0 ], cparts [ 2 ] ) ; m u l t i p l y ( aparts [ 3 ], bparts [ 2 ], cparts [ 2 ] ) ; m u l t i p l y ( aparts [ 2 ], bparts [ 1 ], cparts [ 3 ] ) ; m u l t i p l y ( aparts [ 3 ], bparts [ 3 ], cparts [ 3 ] ) ; return c ; Dere skal ressonere dere frem til en recurrence-ligning for begge utgavene, og forklare hvorfor samme ligning kan brukes til å beskrive begge to Dere skal så gjøre en analyse ved hjelp av rekursjonstrær slik at dere kommer frem til en gjetning for en funksjon som beskriver kjøretiden til algoritmen Denne skal 12

13 dere så verifisere både med substitusjonsmetoden (matematisk induksjon) og masterteoremet Vi holder oss først til de to tenkte versjonene av algoritmen (ikke den som noen studenter har kommet frem til selv) Her må de ha fått med seg at kopieringssteget i den første versjonen ikke endrer recurrenceligningen siden den er av samme orden (Θ(n 2 )) som adderingen Vi får bare 2Θ(n 2 ) som kan transformeres til Θ(n 2 ) Vi ender derfor opp med følgende recurrenceligning for de to første versjonene { Θ(1) if n = 1 T (n) = 8T (n/2) + Θ(n 2 ) if n > 1 Den alternative algoritmen av indeksversjonen hvor adderingen er flyttet til basistilfellet endrer derimot recurrenceligningen Så her faller faller kravet om samme recurrenceligning for både kopierings- og indeks-utgaven gjennom Her får vi følgende recurrenceligning for indeksversjonen { Θ(1) if n = 1 T (n) = 8T (n/2) + Θ(1) if n > 1 Et tenkt rekursjonstre for begge disse recurrenceligningene vil ha 8 forgreininger fra hver node Vi får derfor 8 h antall barn på det nederste nivået (n = 1) Høyden h på rekursjonstreet er kan finnes ved å løse ligningen n/2 h = 1 n 2 h = 1 2 h = n h = log 2 n Vi får derfor 8 log 2 n = n log 2 8 = n 3 antall bladnoder med Θ(1) kjøretid ie Θ(n 3 ) kjøretid for alle barna Kostnaden internt i hver node avhenger av leddet Θ(n 2 ) i recurrenceligningen På rotnivået får vi en kostnad på cn 2, på første nivå får vi (8/2)cn 2, på andre nivå får (8/2) 2 cn 2 osv Dette gir oss en sum log 2 n 1 i=0 cn 2 Dette leddet har lavere kostnad (lavere orden) enn Θ(n 3 ) som er kostnaden for kjøringen av alle basistilfellene Vi har derfor kommet frem til at kjøretiden til algoritmen må være Θ(n 3 ) Dette gjelder også for den alternative algoritmen som noen studenter har kommet frem til, siden den eneste forskjellen fra resonnementet over er at summen for kostnadene internt i nodene bare blir log 2 n 1 i=0 cn Vi beviser at denne gjetningen er korrekt ved å bruke substitusjonsmetoden Vi må derfor bevise at T (n) cn 3 for en konstant c > 0 Vi setter inn gjetningen i recurrenceligningen og transformerer for å bevise det rekursive tilfellet 13

14 T (n) = 8c(n/2) 3 + kn 2 = cn 3 + kn 2 Dette vil ikke lede frem til ønsket form (T (n) cn 3 ) siden kn 2 leddet lager problemer Vi modifiserer derfor gjetningen ved å trekke fra et lavere ordens ledd Den nye gjetningen er T (n) = O(n 3 n 2 ) og vi må bevise at T (n) c(n 3 n 2 ) T (n) = 8c ( (n/2) 3 (n/2) 2) + kn 2 = cn 3 2cn 2 + kn 2 cn 3 cn 2, så lenge c k Da gjenstår bare basistilfellet T (1) = Θ(1) = 1 c( ) = 0 ie T (1) > c( ) som ikke oppfyller kravet Vi prøver derfor med n = 2 T (2) = 8T (1) + k2 2 = 8m + 4k Vi får c( ) = 4c for vår gjetning Vi vet da at T (n) cn 3 så lenge c 2m + k hvor k og m er konstantleddene for henholdsvis den interne- og basis-kostnaden Vi har da bevist at kjøretiden til algoritmen er Θ(n 3 ) med substitusjonsmetoden Vi skal også verifisere dette beviset med masterteoremet Vi må da sammenligne n log b a med Θ(n 2 ) n log b a = n log 2 8 = n 3 Siden n 3 er polynomisk større enn Θ(n 2 ) så har vi verifisert kjøretiden for algoritmen Θ(n 3 ) med masterteoremet Selv om kopieringsutgaven har en høyere kostnad enn indeksutgaven har begge utgaver samme asymptotisk notasjon Det skiller bare en konstant mellom de to utgavene når vi analyserer kjøretiden Er dette også tilfellet i praksis? Test de to utgavene av algoritmen med forskjellige inputstørrelser og bedøm om det bare skiller en konstant mellom de eller ikke Diskuter resultatet og legg vekt på å forklare hvorfor det eventuelt ikke stemmer at det bare skiller en konstant 14

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

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

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

Divide-and-Conquer II

Divide-and-Conquer II Divide-and-Conquer II Lars Vidar Magnusson 1712014 Kapittel 4 Analyse av divide-and-conquer algoritmer ved hjelp av rekursjonstrær Analyse av divide-and-conquer algoritmer ved hjelp av masterteoremet Løse

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

Forelesning 9 mandag den 15. september

Forelesning 9 mandag den 15. september Forelesning 9 mandag den 15. september 2.6 Største felles divisor Definisjon 2.6.1. La l og n være heltall. Et naturlig tall d er den største felles divisoren til l og n dersom følgende er sanne. (1) Vi

Detaljer

MAT1030 Forelesning 30

MAT1030 Forelesning 30 MAT1030 Forelesning 30 Kompleksitetsteori Roger Antonsen - 19. mai 2009 (Sist oppdatert: 2009-05-19 15:04) Forelesning 30: Kompleksitetsteori Oppsummering I dag er siste forelesning med nytt stoff! I morgen

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

Repetisjon: høydepunkter fra første del av MA1301-tallteori.

Repetisjon: høydepunkter fra første del av MA1301-tallteori. Repetisjon: høydepunkter fra første del av MA1301-tallteori. Matematisk induksjon Binomialteoremet Divisjonsalgoritmen Euklids algoritme Lineære diofantiske ligninger Aritmetikkens fundamentalteorem Euklid:

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

NyGIV Regning som grunnleggende ferdighet

NyGIV Regning som grunnleggende ferdighet NyGIV Regning som grunnleggende ferdighet Yrkesfaglærere Hefte med utdelt materiell Tone Elisabeth Bakken 3.april 2014 På denne og neste fire sider er det kopier fra Tangentens oppgavehefte: MATEMATISKE

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

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

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson Høgskoleni østfold EKSAMEN Emnekode: ITF 20006 Emne: Algoritmer og Datastrukturer Dato: 22.05.2015 Eksamenstid: kl 09.00 til kl 13.00 Hjelpemidler: Faglærer: 4 dobbeltsidige ark med notater Lars Magnusson

Detaljer

Vekst av planteplankton - Skeletonema Costatum

Vekst av planteplankton - Skeletonema Costatum Vekst av planteplankton - Skeletonema Costatum Nivå: 9. klasse Formål: Arbeid med store tall. Bruke matematikk til å beskrive naturfenomen. Program: Regneark Referanse til plan: Tall og algebra Arbeide

Detaljer

Forelesning 28: Kompleksitetsteori

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

Detaljer

Løsningsforslag til obligatorisk oppgave i MAT 1100, H-04

Løsningsforslag til obligatorisk oppgave i MAT 1100, H-04 Løsningsforslag til obligatorisk oppgave i MAT 00, H-04 Oppgave : a) Vi har zw ( + i )( + i) + i + i + i i og + i + i ( ) + i( + ) z w + i + i ( + i )( i) ( + i)( i) i + i i i ( i ) ( + ) + i( + ) + +

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

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7. MAT1030 Diskret matematikk Forelesning 29: Dag Normann KAPITTEL 13: Matematisk Institutt, Universitetet i Oslo 7. mai 2008 MAT1030 Diskret matematikk 7. mai 2008 2 Meldinger: Det blir hovedsaklig tavleregning

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 12. desember 2003 Tid for eksamen: 09.00 12.00 Oppgavesettet er på 5 sider. Vedlegg: INF3140/4140 Modeller for parallellitet

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

Quicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort

Quicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort Quicksort Lars Vidar Magnusson 29.1.2014 Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort Om Quicksort Quicksort er en svært populær sorteringsalgoritme. Algoritmen har i verstefall en kjøretid

Detaljer

TMA4140 Diskret matematikk Høst 2011 Løsningsforslag Øving 7

TMA4140 Diskret matematikk Høst 2011 Løsningsforslag Øving 7 Norges teknisknaturvitenskapelige universitet Institutt for matematiske fag Side 1 av?? TMA4140 Diskret matematikk Høst 011 Løsningsforslag Øving 7 7-1-10 a) Beløpet etter n 1 år ganges med 1.09 for å

Detaljer

Fasit og løsningsforslag til Julekalenderen for mellomtrinnet

Fasit og løsningsforslag til Julekalenderen for mellomtrinnet Fasit og løsningsforslag til Julekalenderen for mellomtrinnet 01.12: Svaret er 11 For å få 11 på to terninger kreves en 5er og en 6er. Siden 6 ikke finnes på terningen kan vi altså ikke få 11. 02.12: Dagens

Detaljer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 Delkapittel 9.2 Rød-svarte og 2-3-4 trær Side 1 av 16 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 9.2 Rød-svarte og 2-3-4 trær 9.2.1 B-tre av orden 4 eller 2-3-4 tre Et rød-svart tre og et

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

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

Forelesning 22 MA0003, Mandag 5/11-2012 Invertible matriser Lay: 2.2

Forelesning 22 MA0003, Mandag 5/11-2012 Invertible matriser Lay: 2.2 Forelesning 22 M0003, Mandag 5/-202 Invertible matriser Lay: 2.2 Invertible matriser og ligningssystemet x b Ligninger på formen ax b, a 0 kan løses ved å dividere med a på begge sider av ligninger, noe

Detaljer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER Eksamen i ALGORITMER OG DATASTRUKTURER Høgskolen i Østfold Avdeling for Informatikk og Automatisering Onsdag 11.desember, 1996 Kl. 9.00-15.00 Tillatte hjelpemidler: Alle trykte og skrevne. Kalkulator.

Detaljer

Mer om likninger og ulikheter

Mer om likninger og ulikheter Mer om likninger og ulikheter Studentene skal kunne utføre polynomdivisjon anvende nullpunktsetningen og polynomdivisjon til faktorisering av polynomer benytte polynomdivisjon til å løse likninger av høyere

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

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

Diagnosekart for oblig 2, INF3/4130 h07

Diagnosekart for oblig 2, INF3/4130 h07 Diagnosekart for oblig 2, INF3/4130 h07 Dag Sverre Seljebotn 1. november 2007 Dette er et dokument jeg har skrivd for å gjøre det enklere å gi tilbakemelding på obligene, siden så mange ting går igjen

Detaljer

Et eksempel: Åtterspillet

Et eksempel: Åtterspillet Trær Et eksempel: Åtterspillet To spillere som «trekker» annenhver gang I hvert trekk velges et av tallene 1, 2, 3, men ikke tallet som motspiller valgte i forrige trekk Valgte tall summeres fortløpende

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

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch. Donkey Kong Ekspert Scratch Introduksjon Donkey Kong var det første virkelig plattform-spillet da det ble gitt ut i 1981. I tillegg til Donkey Kong var det også her vi første gang ble kjent med Super Mario

Detaljer

Uttrykket 2 kaller vi en potens. Eksponenten 3 forteller hvor mange ganger vi skal multiplisere grunntallet 2 med seg selv. Dermed er ) ( 2) 2 2 4

Uttrykket 2 kaller vi en potens. Eksponenten 3 forteller hvor mange ganger vi skal multiplisere grunntallet 2 med seg selv. Dermed er ) ( 2) 2 2 4 9.9 Potenslikninger Uttrykket kaller vi en potens. Eksponenten forteller hvor mange ganger vi skal multiplisere grunntallet med seg selv. Dermed er 8 Når vi skriver 5, betyr det at vi skal multiplisere

Detaljer

Løsningsforslag EKSAMEN

Løsningsforslag EKSAMEN 1 Løsningsforslag EKSAMEN Emnekode: ITF20006 000 Dato: 18. mai 2012 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Faglærer: Gunnar Misund

Detaljer

Tallet 0,04 kaller vi prosentfaktoren til 4 %. Prosentfaktoren til 7 % er 0,07, og prosentfaktoren til 12,5 % er 0,125.

Tallet 0,04 kaller vi prosentfaktoren til 4 %. Prosentfaktoren til 7 % er 0,07, og prosentfaktoren til 12,5 % er 0,125. Prosentregning Når vi skal regne ut 4 % av 10 000 kr, kan vi regne slik: 10 000 kr 4 = 400 kr 100 Men det er det samme som å regne slik: 10 000 kr 0,04 = 400 kr Tallet 0,04 kaller vi prosentfaktoren til

Detaljer

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

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Kalkulator Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Vurdering. Hva, hvordan, hvorfor

Vurdering. Hva, hvordan, hvorfor Vurdering Hva, hvordan, hvorfor Program for dagene Vurdering, testing og kvalitetssikring av matematikkundervisning og matematikklæring Med utgangspunkt i læreplanen, læreboka, Arbeidsmåter sammen med

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

Ordliste. Obligatorisk oppgave 1 - Inf 1020

Ordliste. Obligatorisk oppgave 1 - Inf 1020 Ordliste. Obligatorisk oppgave 1 - Inf 1020 I denne oppgaven skal vi tenke oss at vi vil holde et register over alle norske ord (med alle bøyninger), og at vi skal lage operasjoner som kan brukes til f.

Detaljer

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

Korteste Vei II. Lars Vidar Magnusson 11.4.2014. Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen Korteste Vei II Lars Vidar Magnusson 11.4.2014 Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen Bellman-Ford Algoritmen Bellman-Ford er en single-source korteste vei algoritme. Den tillater negative

Detaljer

Prosent. Det går likare no! Svein H. Torkildsen, NSMO

Prosent. Det går likare no! Svein H. Torkildsen, NSMO Prosent Det går likare no! Svein H. Torkildsen, NSMO Enkelt opplegg Gjennomført med ei gruppe svakt presterende elever etter en test som var satt sammen av alle prosentoppgavene i Alle Teller uansett nivå.

Detaljer

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

Løsnings forslag i java In115, Våren 1998 Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker

Detaljer

Mat og livsstil 2. Aktuelle kompetansemål. Beskrivelse av opplegget. Utstyr ARTIKKEL SIST ENDRET: 01.08.2016. Årstrinn: 8-10.

Mat og livsstil 2. Aktuelle kompetansemål. Beskrivelse av opplegget. Utstyr ARTIKKEL SIST ENDRET: 01.08.2016. Årstrinn: 8-10. Mat og livsstil 2 I dette undervisningsopplegget bruker en regning som grunnleggende ferdighet i faget mat og helse. Regning blir brukt for å synliggjøre energiinnholdet i en middagsrett laget på to ulike

Detaljer

Fasit - Oppgaveseminar 1

Fasit - Oppgaveseminar 1 Fasit - Oppgaveseminar Oppgave Betrakt konsumfunksjonen = z + (Y-T) - 2 r 0 < 0 Her er Y bruttonasjonalproduktet, privat konsum, T nettoskattebeløpet (dvs skatter og avgifter fra private til det

Detaljer

SKOLEEKSAMEN I. SOS4010 Kvalitativ metode. 19. oktober 2015 4 timer

SKOLEEKSAMEN I. SOS4010 Kvalitativ metode. 19. oktober 2015 4 timer SKOLEEKSAMEN I SOS4010 Kvalitativ metode 19. oktober 2015 4 timer Ingen hjelpemidler, annet enn ordbøker som er kontrollert av SV-infosenter, er tillatt under eksamen. Sensur for eksamen faller 12. november

Detaljer

Grunnleggende Grafalgoritmer

Grunnleggende Grafalgoritmer Grunnleggende Grafalgoritmer Lars Vidar Magnusson 19.3.2014 Kapittel 22 Representere en graf Bredde-først søk Grafer i Informatikken Problem med grafer går ofte igjen i informatikkens verden, så det å

Detaljer

Tyngdekraft og luftmotstand

Tyngdekraft og luftmotstand Tyngdekraft og luftmotstand Dette undervisningsopplegget synliggjør bruken av regning som grunnleggende ferdighet i naturfag. Her blir regning brukt for å studere masse, tyngdekraft og luftmotstand. Opplegget

Detaljer

Kapittel 4: Logikk (predikatlogikk)

Kapittel 4: Logikk (predikatlogikk) MAT1030 Diskret Matematikk Forelesning 7: Logikk, predikatlogikk Roger Antonsen Institutt for informatikk, Universitetet i Oslo Kapittel 4: Logikk (predikatlogikk) 10. februar 2009 (Sist oppdatert: 2009-02-11

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

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

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

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

NASJONALE PRØVER 2015. En presentasjon av resultatene til 5.trinn ved Jåtten skole, skoleåret 2015-16

NASJONALE PRØVER 2015. En presentasjon av resultatene til 5.trinn ved Jåtten skole, skoleåret 2015-16 NASJONALE PRØVER 2015 En presentasjon av resultatene til 5.trinn ved Jåtten skole, skoleåret 2015-16 Gjennomføring av nasjonale prøver 2015 Nasjonale prøver for 5.trinn ble gjennomført i oktober 2015.

Detaljer

Uendelige rekker. Konvergens og konvergenskriterier

Uendelige rekker. Konvergens og konvergenskriterier Uendelige rekker. Konvergens og konvergenskriterier : Et absolutt nødvendig, men ikke tilstrekkelig vilkår for konvergens er at: lim 0 Konvergens vha. delsummer :,.,,,. I motsatt fall divergerer rekka.

Detaljer

PRIMTALL FRA A TIL Å

PRIMTALL FRA A TIL Å PRIMTALL FRA A TIL Å VEILEDER FOR FORELDRE MED BARN I 5. 7. KLASSE EMNER Side 1 Innledning til primtall P - 2 2 Grunnleggende om primtall P - 2 3 Hvordan finne et primtall P - 5 Innledning til primtall

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 Delkapittel 9.1 Generelt om balanserte trær Side 1 av 13 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 9.1 Generelt om balanserte trær 9.1.1 Hva er et balansert tre? Begrepene balansert og

Detaljer

Fysikkolympiaden 1. runde 26. oktober 6. november 2015

Fysikkolympiaden 1. runde 26. oktober 6. november 2015 Norsk Fysikklærerforening i samarbeid med Skolelaboratoriet Universitetet i Oslo Fysikkolympiaden. runde 6. oktober 6. november 05 Hjelpemidler: Tabell og formelsamlinger i fysikk og matematikk Lommeregner

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

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: INF 2220 Algoritmer og datastrukturer Eksamensdag: 8. desember 2016 Tid for eksamen: 09:00 13:00 (4 timer) Oppgavesettet er på:

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

Emnekode: LV121A Dato: 03.03.2005. Alle skrevne og trykte hjelpemidler

Emnekode: LV121A Dato: 03.03.2005. Alle skrevne og trykte hjelpemidler II ~ høgskolen i oslo Emne: Programmering i C++ Gruppe(r): EksamensoppgavenAntall sider (inkl. består av: forsiden):5 Emnekode: LV121A Dato: 03.03.2005 Antall oppgaver:3 Faglig veileder: Simen Hagen Eksamenstid:

Detaljer

INF1010 notat: Binærsøking og quicksort

INF1010 notat: Binærsøking og quicksort INF1010 notat: Binærsøking og quicksort Ragnhild Kobro Runde Februar 2004 I dette notatet skal vi ta for oss ytterligere to eksempler der rekursjon har en naturlig anvendelse, nemlig binærsøking og quicksort.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2810, Funksjonell Programmering Eksamensdag: Fredag 10. juni 2016 Tid for eksamen: 14.30 Oppgavesettet er på 5 sider (ekskl.

Detaljer

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

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b Oppgave 1 1 a INF1020 Algoritmer og datastrukturer Forelesning 14: Gjennomgang av eksamen vår 2001 oppgave 1,2,4 Arild Waaler Institutt for informatikk, Universitetet i Oslo Oppgave 1 a Programmer en ikke-rekursiv

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 LØSNINGSFORSLAG 1 Del 1 60% Oppgave 1.1-10% Forklar kort

Detaljer

EKSAMEN. Emne: Algoritmer og datastrukturer

EKSAMEN. Emne: Algoritmer og datastrukturer 1 EKSAMEN Emnekode: ITF20006 000 Dato: 18. mai 2012 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Faglærer: Gunnar Misund Oppgavesettet

Detaljer

Korteste Vei I. Lars Vidar Magnusson 9.4.2014. Kapittel 24 Hvordan finne korteste vei Egenskaper ved korteste vei

Korteste Vei I. Lars Vidar Magnusson 9.4.2014. Kapittel 24 Hvordan finne korteste vei Egenskaper ved korteste vei Korteste Vei I Lars Vidar Magnusson 9.4.2014 Kapittel 24 Hvordan finne korteste vei Egenskaper ved korteste vei Korteste Vei Problemet I denne forelesningen skal vi se på hvordan vi kan finne korteste

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Fredag 2. desember 2005 Tid for eksamen : 14.30 17.30

Detaljer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 Delkapittel 1.3 Ordnede tabeller Side 1 av 70 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 1.3 Ordnede tabeller 1.3.1 Permutasjoner En samling verdier kan settes opp i en rekkefølge. Hver

Detaljer

Sensorveiledning Oppgave 1

Sensorveiledning Oppgave 1 Sensorveiledning Oppgave 1 Figuren er riktig, og kandidaten skisserer en måte å jobbe med dette på som kan fungere for en elev. Figuren eller forklaringen er riktig. Unøyaktigheter ved håndtegning godtas.

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

Forberedelse til. Røyke slutt. Røyketelefonen

Forberedelse til. Røyke slutt. Røyketelefonen Forberedelse til Røyke slutt Røyketelefonen 800 400 85 Slik kan du forberede røykeslutt For å lykkes med å slutte å røyke bør du være godt forberedt. Å slutte å røyke er en prestasjon. Det krever samme

Detaljer

Hefte med problemløsingsoppgaver. Ukas nøtt 2008/2009. Tallev Omtveit Nordre Modum ungdomsskole

Hefte med problemløsingsoppgaver. Ukas nøtt 2008/2009. Tallev Omtveit Nordre Modum ungdomsskole Hefte med problemløsingsoppgaver Ukas nøtt 2008/2009 Tallev Omtveit Nordre Modum ungdomsskole 1 Ukas nøtt uke 35 Sett hvert av tallene fra 1-9 i trekanten under, slik at summen langs hver av de tre linjene

Detaljer

MAT 1120: Obligatorisk oppgave 2, H-09

MAT 1120: Obligatorisk oppgave 2, H-09 MAT 1120: Obligatorisk oppgave 2, H-09 Innlevering: Senest fredag 30 oktober, 2009, kl1430, på Ekspedisjonskontoret til Matematisk institutt (7 etasje NHA) Du kan skrive for hånd eller med datamaskin,

Detaljer

Obligatorisk oppgave i MAT 1100, H-03 Løsningsforslag

Obligatorisk oppgave i MAT 1100, H-03 Løsningsforslag Oppgave : Obligatorisk oppgave i MAT, H- Løsningsforslag a) Vi skal regne ut dx. Substituerer vi u = x, får vi du = x dx. De xex nye grensene er gitt ved u() = = og u() = = 9. Dermed får vi: 9 [ ] 9 xe

Detaljer

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

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består

Detaljer

EKSAMEN. Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer EKSAMEN 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: Gunnar Misund

Detaljer

LØSNINGSFORSLAG SIF5015 DISKRET MATEMATIKK Onsdag 18. desember 2002

LØSNINGSFORSLAG SIF5015 DISKRET MATEMATIKK Onsdag 18. desember 2002 Norges teknisk naturvitenskapelige universitet Institutt for matematiske fag Side av 7 LØSNINGSFORSLAG SIF55 DISKRET MATEMATIKK Onsdag 8. desember 22 Oppgave a) Vi vil ha 77x (mod 3), så vi trenger en

Detaljer

Evaluering av kollokviegrupper i matematikk og programmering høsten 2014 28 jenter har svart på evalueringen

Evaluering av kollokviegrupper i matematikk og programmering høsten 2014 28 jenter har svart på evalueringen Evaluering av kollokviegrupper i matematikk og programmering høsten 2014 28 jenter har svart på evalueringen 1. Hvorfor meldte du deg på dette tilbudet? Tenkte det ville være lurt med litt ekstra hjelp

Detaljer

Kapittel 1. Potensregning

Kapittel 1. Potensregning Kapittel. Potensregning I potensregning skriver vi tall som potenser og forenkler uttrykk som inneholder potenser. Dette kapitlet handler blant annet om: Betydningen av potenser som har negativ eksponent

Detaljer

Høyder på elliptiske kurver og faktorisering. Kristian Gjøsteen, NTNU Oppdatert 1. november 2002

Høyder på elliptiske kurver og faktorisering. Kristian Gjøsteen, NTNU Oppdatert 1. november 2002 Høyder på elliptiske kurver og faktorisering Kristian Gjøsteen, NTNU Oppdatert 1. november 2002 2 Lenstras faktoriseringsalgoritme Faktoriseringsproblemet: n = p α 1 1 pα K K skal faktoriseres. Lenstras

Detaljer

Løsningsforslag Øving 5 TMA4140 Diskret matematikk Høsten 2010

Løsningsforslag Øving 5 TMA4140 Diskret matematikk Høsten 2010 Løsningsforslag Øving 5 TMA4140 Diskret matematikk Høsten 2010 1. a) Ingen andre tall enn en deler en, og en deler fire, så (1, 4) = 1 b) 1 c) 7 er et primtall og 7 er ikke en faktor i 41, så største felles

Detaljer

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene Labyrint Introduksjon Scratch Lærerveiledning Introduksjon I dette spillet vil vi kontrollere en liten utforsker mens hun leter etter skatten gjemt inne i labyrinten. Dessverre er skatten beskyttet av

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

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

Skjermbilder og veiledning knyttet til «Årlig innrapportering for vannforsyningssystem» basert på oppdaterte skjermbilder pr mars 2016.

Skjermbilder og veiledning knyttet til «Årlig innrapportering for vannforsyningssystem» basert på oppdaterte skjermbilder pr mars 2016. Skjermbilder og veiledning knyttet til «Årlig innrapportering for vannforsyningssystem» basert på oppdaterte skjermbilder pr mars 2016. Denne veiledningen er et supplement til den generelle veiledningen:

Detaljer

Hypotesetesting. Notat til STK1110. Ørnulf Borgan Matematisk institutt Universitetet i Oslo. September 2007

Hypotesetesting. Notat til STK1110. Ørnulf Borgan Matematisk institutt Universitetet i Oslo. September 2007 Hypotesetesting Notat til STK1110 Ørnulf Borgan Matematisk institutt Universitetet i Oslo September 2007 Teorien for hypotesetesting er beskrevet i kapittel 9 læreboka til Rice. I STK1110 tar vi bare for

Detaljer

MAT1030 Forelesning 28

MAT1030 Forelesning 28 MAT1030 Forelesning 28 Kompleksitetsteori Dag Normann - 5. mai 2010 (Sist oppdatert: 2010-05-05 12:44) Forelesning 28: Kompleksitetsteori Introduksjon Da er vi klare (?) for siste kapittel, om kompleksitetsteori!

Detaljer

Brukermanual for reservasjon av grupperom i WebReservations

Brukermanual for reservasjon av grupperom i WebReservations Brukermanual for reservasjon av grupperom i WebReservations Versjon 1.0 1.0 Generelle retningslinjer for reservasjon av grupperom ved HiL s. 1 2.0 Innlogging s. 2 3.0 Enkel romreservasjon s. 2 4.0 Multippel

Detaljer

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være

Detaljer

Mal for vurderingsbidrag

Mal for vurderingsbidrag Mal for vurderingsbidrag Fag: Norsk Tema: Film Trinn: 10. trinn Tidsramme: 3-4 uker. ----------------------------------------------------------------------------- Undervisningsplanlegging Konkretisering

Detaljer