Stein Krogdahl, Dino Karabeg, Petter Kristiansen. Kenneth A. Berman and Jerome L. Paul.

Save this PDF as:
 WORD  PNG  TXT  JPG

Størrelse: px
Begynne med side:

Download "Stein Krogdahl, Dino Karabeg, Petter Kristiansen. Kenneth A. Berman and Jerome L. Paul."

Transkript

1 Stein Krogdahl, Dino Karabeg, Petter Kristiansen steinkr at ifi.uio.no dino at ifi.uio.no pettkr at ifi.uio.no INF 4130 / 9135 Algoritmer: Design og effektivitet Algorithms: Sequential Parallel and Distributed Algorithms: Sequential, Parallel, and Distributed, Kenneth A. Berman and Jerome L. Paul.

2 Gruppelærer: INF 4130 / 9135 Matias Holte kjetimh at student.matnat.uio.no Obliger: Tre stykker, som må godkjennes. (ca. 30. sept, 30. okt, 15. nov) Andre, «nærliggende» kurs: INF-MAT 3370 Lineær optimering INF-MAT 5360 Matematisk optimering INF 1080 Logiske metoder for informatikk (INF 1800) MAT-INF 3600 Mathematical Logic, MAT 4630 Beregnbarhetsteoori

3 Kvalitetssikring ved Ifi Som student har du rett og plikt til å bidra til kvalitetssikringen av studiet ditt. Dette gjør du først og fremst gjennom å delta i undervisningsevaluering. Faglærer vil ta initiativ til å sette i gang undervisningsevalueringen for hvert enkelt emne. Undervisningsevalueringen gir deg mulighet til å komme med tilbakemeldinger og innspill på undervisningen i løpet av semesteret, slik at forbedringer kan gjøres underveis. Se

4 Algoritmer, effektivitet, kompleksitet Hvordan løse databehandlingsproblemer effektivt.

5 Algoritmer, effektivitet, kompleksitet Hvordan løse databehandlingsproblemer effektivt. Interessante, t naturlige problemer Matching, Sorting, TSP, Desisjonsproblemer (JA/NEI-spørsmål). «Er sekvensen S = {3,2,1} sortert?»

6 Algoritmer, effektivitet, kompleksitet Hvordan løse databehandlingsproblemer effektivt. Interessante, t naturlige Formelle språk problemer Matching, Sorting, TSP, MATCHING, SORTING, TSP, Et formelt språk er en mengde av de lovlige strengene (ord, setninger) i språket. For SORTING vil det altså være alle sorterte sekvenser: {1} {1,2} {1,3} {1,2,3}

7 Algoritmer, effektivitet, kompleksitet Hvordan løse databehandlingsproblemer effektivt. Uløsbare unsolvable Formelle språk (~ Problemer) Umedgjørlige intractable Lette

8 Algoritmer, effektivitet, kompleksitet Hvordan løse databehandlingsproblemer effektivt. Uløsbare unsolvable Formelle språk (~ Problemer) Umedgjørlige intractable (NP-komplette) Lette (P)

9 R ELEMENTARY 2-EXP EXPSPACE conexp NEXP EXP PSPACE conp NP P

10 Undervisningsplan 01/09 dk Introduksjon 08/09 pk Søking i strenger (kap. 20) 15/09 pk Dynamisk programmering (kap. 9) 22/09 pk/ocl Prioritetskøer, Bioinformatikk 29/09 06/10 13/10 13/12 Eksamen (09:00, 4t, alle trykte og skrevne hjelpemidler)

11 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 tekst Datastrukturer Trie-trær Suffiks-trær

12 Definisjoner Et alfabet er en mengde symboler A = {a 1, a 2,, a k }. En streng S = S[0:n-1] av lengde n er en sekvens av symboler fra A. (Vi kan se på strengen S både som et array S[0:n-1] og som en sekvens av symboler S=s 1 s 2 s n-1.) n -1 T [0:n -1] (Tekst) P [0:m -1] (Pattern)

13 Naiv algoritme Søker forover Vindu n -1 T [0:n -1] P [0:m -1]

14 Naiv algoritme n -1 T [0:n -1] P [0:m -1]

15 Naiv algoritme n -1 T [0:n -1] P [0:m -1]

16 Naiv algoritme n-m n -1 T [0:n -1] P [0:m -1]

17 Naiv algoritme n-m n -1 T [0:n -1] P [0:m -1] function NaiveStringMatcher (P [0:m -1], T [0:n -1]) for s 0 to n - m do if T [s :s + m -1] = P then return(s) endfor return(-1) end NaiveStringMatcher

18 Naiv algoritme n-m n -1 T [0:n -1] P [0:m -1] function NaiveStringMatcher (P [0:m -1], T [0:n -1]) for s 0 to n - m do } if T [s :s + m -1] = P then}for-løkka eksekveres n m + 1 ganger. return(s) Hver sjekk inntil m symbolsammenlikninger. }O(nm) kjøretid (worst case) endfor return(-1) end NaiveStringMatcher

19 Knuth-Morris-Pratt-algoritmen Det er, algoritmeteoretisk sett, rom for forbedringer av den naive algoritmen. Den flytter vinduet/patternet bare ett hakk i hvert steg. Kan vi kanskje flytte mer enn bare ett steg?

20 Knuth-Morris-Pratt-algoritmen Søker forover

21 Knuth-Morris-Pratt-algoritmen

22 Knuth-Morris-Pratt-algoritmen

23 Knuth-Morris-Pratt-algoritmen

24 Knuth-Morris-Pratt-algoritmen

25 Knuth-Morris-Pratt-algoritmen i - d j i j -1 j j -2 j j - d j d j d j er lengden av lengste suffix av P [1 : j -1] som også er prefix av P [0 : j -2] Vi vet nå at vi kan flytte P j - d j steg. Og vi vet at P [0 : d j -1] matcher T, så vi kan starte å sammenlikne med P [d j : m-1].

26 Knuth-Morris-Pratt-algoritmen function KMPStringMatcher (P [0:m -1], T [0:n -1]) i 0 // indeks i T j 0 // indeks i P CreateNext(P [0:m -1], Next [n -1]) while i < n do if P [ j ] = T [ i ] then if j = m 1 then return(i m +1) i i +1 j j + 1 else j Next [ j ] if j = 0 then if T [ i ] P [0] then i i +1 endwhile return(-1) end KMPStringMatcher // sjekker full match

27 Knuth-Morris-Pratt-algoritmen function KMPStringMatcher (P [0:m -1], T [0:n -1]) i 0 // indeks i T j 0 // indeks i P CreateNext(P [0:m -1], Next [n -1]) while i < n do if P [ j ] = T [ i ] then if j = m 1 then return(i m +1) i i +1 j j + 1 else j Next [ j ] if j = 0 then if T [ i ] P [0] then i i +1 endwhile return(-1) end KMPStringMatcher // sjekker full match O(n)

28 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i -1] then Next [ i ] j +1 i i +1 j j +1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i +1 endwhile O(m) end CreateNext

29 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i

30 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i

31 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i

32 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i

33 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i

34 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i 6 j i i 7 8 9

35 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i 6 j i i 7 j i i 8 9

36 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i 6 j i i 7 j i i 8 j i i 9

37 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i 6 j i i 7 j i i 8 j i i 9

38 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i 6 j i i 7 j i i 8 j i i 9 j i i

39 Knuth-Morris-Pratt-algoritmen function CreateNext (P [0:m -1], Next [0:m -1]) Next [ 0 ] Next [ 1 ] 0 // mismatch i rute 0 eller 1 gir ikke overlapp i 2 // i er indeksen for mismatch j 0 // j indeks teller lengden av overlapp while i < m do if P [ j ] = P [ i - 1 ] then Next [ i ] j + 1 i i + 1 j j + 1 else // ikke likhet if j > 0 then j Next [ j ] (Trykkfeil i boka) else Next [ i ] 0 i i + 1 endwhile end CreateNext P Next j i i 2 j i i 3 j i i 4 j i i 5 j i i 6 j i i 7 j i i 8 j i i 9 j i i

40 Knuth-Morris-Pratt-algoritmen

41 Knuth-Morris-Pratt-algoritmen

42 Knuth-Morris-Pratt-algoritmen

43 Knuth-Morris-Pratt-algoritmen

44 Knuth-Morris-Pratt-algoritmen Lineær algoritme, O(n) kjøretid worst case.

45 Boyer-Moore-algoritmen (Horspool) Den naive algoritmen, og Knuth-Morris-Pratt er prefiksbaserte (fra venstre mot høyre). Boyer-Moore-algoritmen (og varianter) er suffiksbasert (fra høyre mot venstre). B M m a t c h e r _ s h i f t _ c h a r a c t e r _ e x c h a r a c t e r

46 Boyer-Moore-algoritmen (Horspool) Den naive algoritmen, og Knuth-Morris-Pratt er prefiksbaserte (fra venstre mot høyre). Boyer-Moore-algoritmen (og varianter) er suffixbasert (fra høyre mot venstre). Søker bakover B M m a t c h e r _ s h i f t _ c h a r a c t e r _ e x c h a r a c t e r

47 Boyer-Moore-algoritmen (Horspool) Den naive algoritmen, og Knuth-Morris-Pratt er prefiksbaserte (fra venstre mot høyre). Boyer-Moore-algoritmen (og varianter) er suffixbasert (fra høyre mot venstre). B M m a t c h e r _ s h i f t _ c h a r a c t e r _ e x c h a r a c t e r c h a r a c t e r

48 Boyer-Moore-algoritmen (Horspool) Den naive algoritmen, og Knuth-Morris-Pratt er prefiksbaserte (fra venstre mot høyre). Boyer-Moore-algoritmen (og varianter) er suffixbasert (fra høyre mot venstre). B M m a t c h e r _ s h i f t _ c h a r a c t e r _ e x c h a r a c t e r c h a r a c t e r c h a r a c t e r

49 Boyer-Moore-algoritmen (Horspool) Den naive algoritmen, og Knuth-Morris-Pratt er prefiksbaserte (fra venstre mot høyre). Boyer-Moore-algoritmen (og varianter) er suffixbasert (fra høyre mot venstre). B M m a t c h e r _ s h i f t _ c h a r a c t e r _ e x c h a r a c t e r c h a r a c t e r c h a r a c t e r c h a r a c t e r

50 Boyer-Moore-algoritmen (Horspool) Den naive algoritmen, og Knuth-Morris-Pratt er prefiksbaserte (fra venstre mot høyre). Boyer-Moore-algoritmen (og varianter) er suffixbasert (fra høyre mot venstre). B M m a t c h e r _ s h i f t _ c h a r a c t e r _ e x c h a r a c t e r c h a r a c t e r c h a r a c t e r c h a r a c t e r O(mn) kjøretid worst case (som den naive algoritmen). Sub-lineær ( n) i gjennomsnitt O(n log A m / m).

51 Boyer-Moore-algoritmen (Horspool) function HorspoolStringMatcher (P [0:m -1], T [0:n -1]) i 0 CreateShift(P [0:m -1], Shift [ A - 1]) while i < n m do j m 1 while j 0 and T [ i+j]=p [ j ] do j j -1 endwhile if j = 0 then return( i ) i i + Shift[ T[i+m -1] ] endwhile return(-1) end HorspoolStringMatcher

52 Karp-Rabin-algoritmen Vi antar at strengene våre kommer fra et k-ært alfabet A = {0, 1, 2,, k -1}. Hvert symbol i A kan sees på som et siffer i k-tallssystemet. Hver streng S i A* kan sees på som tall S i k-tallssystemet. Eks: k = 10, og A = {0,1, 2,, 9} (Det vanlige 10-tallssystemet) Strengen kan sees på som tallet Gitt en streng P [0:m -1], kan vi beregne det korresponderende tallet P med m multiplikasjoner og m addisjoner (Horners regel): P = P [m -1]+k(P [m -2]+ +k(p [1] + kp [0])...)) Eks: 1234 = (3 + 10(2 + 10*1))

53 Karp-Rabin-algoritmen Gitt en tekststreng T [0:n -1], og et heltall s (start-index), bruker vi T s som betegnelse på delstrengen T [s: s + m -1]. (Vi antar at patternet vårt har lengde m.) ) En algoritme basert på Horners regel beregner T 0, T 1, T 2, og sammenlikner disse tallene med tallet P for patternet P. (Tilsvarende den naive algoritmen.)

54 Karp-Rabin-algoritmen Gitt en tekststreng T [0:n -1], og et heltall s (start-index), bruker vi T s som betegnelse på delstrengen T [s: s + m -1]. (Vi antar at patternet vårt har lengde m.) ) En algoritme basert på Horners regel beregner T 0, T 1, T 2, og sammenlikner disse tallene med tallet P for patternet P. (Tilsvarende den naive algoritmen.) Gitt T s -1 og k m 1, kanvi regneutt s i konstant tid.

55 Karp-Rabin-algoritmen Gitt en tekststreng T [0:n -1], og et heltall s (start-index), bruker vi T s som betegnelse på delstrengen T [s: s + m -1]. (Vi antar at patternet vårt har lengde m.) ) En algoritme basert på Horners regel beregner T 0, T 1, T 2, og sammenlikner disse tallene med tallet P for patternet P. (Tilsvarende den naive algoritmen.) Gitt T s -1 og k m 1, kanvi regneutt s i konstant tid s-1 s -1+ m -1 n -1 T [0:n -1] T s -1

56 Karp-Rabin-algoritmen Gitt en tekststreng T [0:n -1], og et heltall s (start-index), bruker vi T s som betegnelse på delstrengen T [s: s + m -1]. (Vi antar at patternet vårt har lengde m.) ) En algoritme basert på Horners regel beregner T 0, T 1, T 2, og sammenlikner disse tallene med tallet P for patternet P. (Tilsvarende den naive algoritmen.) Gitt T s -1 og k m 1!, kanvi regneutt s i konstant tid s-1 s s + m -1 n -1 T [0:n -1] T s

57 Karp-Rabin-algoritmen Grunnen til at vi kan beregne T s følgende rekurrensrelasjon: i konstant tid når vi har T s -1 og k m 1, er T s = k(t s -1 - k m 1 *T [s]) + T [s+m] s = 1,, n m Eks: k =10 10, A = {0,1, 2,, 9} (Det vanlige 10-tallssystemet) og m =7 7. T s -1 = T s = T s = 10( ( * 7)) + 8

58 Karp-Rabin-algoritmen Grunnen til at vi kan beregne T s følgende rekurrensrelasjon: i konstant tid når vi har T s -1 og k m 1, er T s = k(t s -1 - k m 1 *T [s]) + T [s+m] s = 1,, n m Konstant, beregnes en gang, kan gjøres i tid O(log m) Eks: k =10 10, A = {0,1, 2,, 9} (Det vanlige 10-tallssystemet) og m =7 7. T s -1 = T s = T s = 10( ( * 7)) + 8 Kan gjøres i konstant tid. Bare multiplikasjon og addisjon, vi antar disse operasjonene kan gjøres i konstant tid.

59 Karp-Rabin-algoritmen Kan beregne T s i konstant tid når vi har T s -1 og k m 1. Altså kan vi beregne de n m + 1 tallene T s, s = 0, 1,, n m og P itido(n). Vi kan altså, i teorien, implementere en søkealgoritme med kjøretid O(n). D il t ll T P i k i f t til t l it bli Dessverre vil tallene T s og P i praksis værefor store til at algoritmen blir praktisk anvendbar.

60 Karp-Rabin-algoritmen Kan beregne T s i konstant tid når vi har T s -1 og k m 1. Altså kan vi beregne de n m + 1 tallene T s, s = 0, 1,, n m og P itido(n). Vi kan altså, i teorien, implementere en søkealgoritme med kjøretid O(n). Dessverre vil tallene T s og P i praksis værefor store til at algoritmen blir praktisk anvendbar. Trikset er å bruke modulo-aritmetikk. Vi gjør alle beregninger modulo q (q et tilfeldig valgt primtall, slik at kq akkurat passer i et 32/64 bits register).

61 Vi beregner T (q) s og P (q), hvor Karp-Rabin-algoritmen T (q) s = T s mod q, } P (q) = P mod q, Resten i divisjonen, når vi deler på q: et tall i intervallet {0, 1,, q -1}. og sammenlikner. Vi kan ha T (q) T s = P (q) P, selv omt s P, en såkalt spuriøs match. th Har vi T (q) s = P (q), må vi altså gjøre en nøyaktig sjekk av T s og P. Med stor nok q, er sannsynligheten for spuriøse matcher lav.

62 Karp-Rabin-algoritmen function KarpRabinStringMatcher (P [0:m -1], T [0:n -1], k, q) c k m -1 mod q P (q) 0 T (q) s 0 for i 1 to m do P (q) (k * P (q) + P [ i ]) mod q T (q) 0 (k * T (q) 0 + T [ i ]) mod q endfor for s 0 to n - m do if s > 0 then T (q) s (k * ( T (q) s -1 -T[ s ] * c) + T [ s + m ]) mod q if T (q) ) s = P (q) ) then if T s = P then return(s) endfor return(-1) end KarpRabinStringMatcher

63 Karp-Rabin-algoritmen Lengste kjøretid for Karp-Rabin-algoritmen får vi når patternet P finnes helt i slutten av strengen T. Sannsynligheten for at T (q) s antar en spesifikk verdi i intervallet {0, 1,, q-1} er uniform 1/q. (Vi antar strengene er uniformt fordelte.) T (q) s, s = 0, 1,, n-m-1 vil altså gi opphav til en spuriøs match med sannsynlighet 1/q. q La r være det forventede antall spuriøse matcher. Hver av disse innebærer inntil m sammenlikninger. I tillegg må vi sjekke T (q) T n-m, hvor vi til slutt får ekte match. Kjøretiden blir altså: (r +1)m +(n m+1)

64 Karp-Rabin-algoritmen r er en binomialfordelt i lt stokastisk ti k variabel. (Hver skift er et «forsøk», med suksessansynlighet 1/q, og vi gjør n-m forsøk) [Nå anser vi spuriøse matcher som «suksess» ] E[r] = (n-m)/q (Forventning av binomialfordelt variabel.) n m Totalt får vi altså + 1 m + ( n m + 1) q

65 Karp-Rabin-algoritmen r er en binomialfordelt i lt stokastisk ti k variabel. (Hver skift er et «forsøk», med suksessansynlighet 1/q, og vi gjør n-m forsøk) [Nå anser vi spuriøse matcher som «suksess» ] E[r] = (n-m)/q. (Forventning av binomialfordelt variabel.) n m Totalt får vi altså + 1 m + ( n m + 1) q Forventet kjøretid når matchen finnes helt til slutt i T. Hvis q < C, hvor C er en konstant, blir kjøretiden O(nm). MEN det er rimelig å anta q >> m, da blir kjøretiden O(n).

66 Trie-trær a i w Trykkfeil i boka l n e o g l t b r o e l r r d i t h m a l l n e t v l e w y

67 Trie-trær al inter w gorithm l n view eb orld ally et

68 Suffix-trær Suffix tre for babbage a b e ge bbage ge a bage bbage ge

69 Div.

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF 4130: lgoritmer: Design og effektivitet Eksamensdag: 12. desember 2008 Tid for eksamen: Kl. 09:00 12:00 (3 timer) Oppgavesettet

Detaljer

SIF8010 ALGORITMER OG DATASTRUKTURER

SIF8010 ALGORITMER OG DATASTRUKTURER SIF8010 ALGORITMER OG DATASTRUKTURER KONTINUASJONSEKSAMEN, 1999; LØSNINGSFORSLAG Oppgave 1 (12%) Anta at du skal lage et støtteprogram som umiddelbart skal varsle om at et ord blir skrevet feil under inntasting

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 14. desember 2012 Tid for eksamen: 14:30 18:30 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: INF2220

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

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

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk MAT1030 Diskret matematikk Plenumsregning 3: Ukeoppgaver fra kapittel 2 & 3 Roger Antonsen Matematisk Institutt, Universitetet i Oslo 31. januar 2008 Oppgave 2.7 - Horners metode (a) 7216 8 : 7 8+2 58

Detaljer

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk MAT1030 Diskret matematikk Plenumsregning 1: Kapittel 1 Roger Antonsen Matematisk Institutt, Universitetet i Oslo 17. januar 2008 Velkommen til plenumsregning for MAT1030 Torsdager 10:15 12:00 Gjennomgang

Detaljer

Euklids algoritmen. p t 2. 2 p t n og b = p s 1. p min(t 2,s 2 )

Euklids algoritmen. p t 2. 2 p t n og b = p s 1. p min(t 2,s 2 ) For å finne største felles divisor (gcd) kan vi begrense oss til N, sidenfor alle a, b Z, harvi gcd(a, b) =gcd( a, b ). I prinsippet, dersom vi vet at a = p t 1 kan vi se at 1 p t 2 2 p t n og b = p s

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 2

PG4200 Algoritmer og datastrukturer Forelesning 2 PG4200 Algoritmer og datastrukturer Forelesning 2 Lars Sydnes, NITH 15. januar 2014 I. Forrige gang Praktisk eksempel: Live-koding II. Innlevering Innlevering 1 2.februar Offentliggjøring: 22.januar Innhold:

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

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

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 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann - 14. januar 2008. Vi som skal undervise. Hva er diskret matematikk?

Forelesning 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann - 14. januar 2008. Vi som skal undervise. Hva er diskret matematikk? Forelesning 1 Algoritmer, pseudokoder og kontrollstrukturer Dag Normann - 14. januar 2008 Vi som skal undervise Dag Normann Roger Antonsen Christian Schaal Robin Bjørnetun Jacobsen http://www.uio.no/studier/emner/matnat/math/mat1030/v08/

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

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

Norsk informatikkolympiade 2014 2015 1. runde

Norsk informatikkolympiade 2014 2015 1. runde Norsk informatikkolympiade 2014 2015 1. runde Sponset av Uke 46, 2014 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

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

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015 Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet, side 539 a) (repetisjon fra forelesningene)

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

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

Norsk informatikkolympiade 2014 2015 1. runde. Sponset av. Uke 46, 2014

Norsk informatikkolympiade 2014 2015 1. runde. Sponset av. Uke 46, 2014 Norsk informatikkolympiade 014 015 1. runde Sponset av Uke 46, 014 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

NIO 1. runde eksempeloppgaver

NIO 1. runde eksempeloppgaver NIO 1. runde eksempeloppgaver Oppgave 1 (dersom du ikke klarer en oppgave, bare gå videre vanskelighetsgraden er varierende) Hva må til for at hele det følgende uttrykket skal bli sant? NOT(a OR (b AND

Detaljer

Diskret matematikk tirsdag 13. oktober 2015

Diskret matematikk tirsdag 13. oktober 2015 Eksempler på praktisk bruk av modulo-regning. Tverrsum Tverrsummen til et heltall er summen av tallets sifre. a = 7358. Tverrsummen til a er lik 7 + 3 + 5 + 8 = 23. Setning. La sum(a) stå for tverrsummen

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

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

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

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato:. desember 00 Varighet: timer (9:00 1:00) Fagnummer: LO117D Fagnavn: Algoritmiske metoder Klasse(r): DA DB

Detaljer

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO 1 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 115 Eksamensdag : Lørdag 20 mai, 2000 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 5 sider Vedlegg : Intet. Tillatte

Detaljer

Logisk Programmering. Relasjoner vz. funksjoner. Funksjon: inn og ut, en verdi. Relasjon: ingen retning, null eller flere verdier

Logisk Programmering. Relasjoner vz. funksjoner. Funksjon: inn og ut, en verdi. Relasjon: ingen retning, null eller flere verdier 1 Logisk Programmering Relasjoner vz. funksjoner Funksjon: inn og ut, en verdi Relasjon: ingen retning, null eller flere verdier LP slagord: algoritme = logikk + kontroll Logikk ( hva ): logisk program

Detaljer

Innlesning fra tastatur med easyio. INF1000 høst 2010. Vi må først skrive i toppen av programmet: import easyio.*;

Innlesning fra tastatur med easyio. INF1000 høst 2010. Vi må først skrive i toppen av programmet: import easyio.*; Innlesning fra tastatur med easyio INF1000 høst 2010 Forelesning 2: Innlesning fra terminal Boolean-variable if-setninger Løkker Litt mer om heltall: divisjon og modulo Vi må først skrive i toppen av programmet:

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

INF 4130. 8. oktober 2009. Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

INF 4130. 8. oktober 2009. Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet INF 4130 8. oktober 2009 Stein Krogdahl Dagens tema: Uavgjørbarhet Dette har blitt framstilt litt annerledes tidligere år Se Dinos forelesninger fra i fjor. I år: Vi tenker mer i programmer enn i Turing-maskiner

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

Mattespill Nybegynner Python PDF

Mattespill Nybegynner Python PDF Mattespill Nybegynner Python PDF Introduksjon I denne leksjonen vil vi se litt nærmere på hvordan Python jobber med tall, og vi vil lage et enkelt mattespill. Vi vil også se hvordan vi kan gjøre ting tilfeldige.

Detaljer

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs TDT4125 2010-06-03 Kand-nr: 1/5 Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs Eksamensdato 3. juni 2010 Eksamenstid 0900 1300 Sensurdato 24. juni Språk/målform Bokmål Kontakt under

Detaljer

MA1301 Tallteori Høsten 2014

MA1301 Tallteori Høsten 2014 MA1301 Tallteori Høsten 014 Richard Williamson 1. august 015 Innhold Forord 7 1 Induksjon og rekursjon 9 1.1 Naturlige tall og heltall............................ 9 1. Bevis.......................................

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

Kapittel 3: Litt om representasjon av tall

Kapittel 3: Litt om representasjon av tall MAT1030 Diskret Matematikk Forelesning 3: Litt om representasjon av tall, logikk Roger Antonsen Institutt for informatikk, Universitetet i Oslo Kapittel 3: Litt om representasjon av tall 20. januar 2009

Detaljer

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer. UNIVERSITETET IOSLO Indeksering Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser Institutt for Informatikk INF30 22.2.2011

Detaljer

KAPITTEL 3 Litt logikk og noen andre småting

KAPITTEL 3 Litt logikk og noen andre småting KAPITTEL 3 Litt logikk og noen andre småting Logikk er sentralt både i matematikk og programmering, og en innføring i de enkleste delene av logikken er hovedtema i dette kapitlet I tillegg ser vi litt

Detaljer

Turingmaskiner en kortfattet introduksjon. Christian F Heide

Turingmaskiner en kortfattet introduksjon. Christian F Heide 13. november 2014 Turingmaskiner en kortfattet introduksjon Christian F Heide En turingmaskin er ikke en fysisk datamaskin, men et konsept eller en tankekonstruksjon laget for å kunne resonnere omkring

Detaljer

Norsk informatikkolympiade 2013 2014 1. runde

Norsk informatikkolympiade 2013 2014 1. runde Norsk informatikkolympiade 2013 2014 1. runde Sponset av Uke 46, 2013 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: Varighet: Fagnummer: Fagnavn: Klasse(r): Studiepoeng: Faglærer(e): Hjelpemidler: Oppgavesettet består av:

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

Innhold. Innledning 1

Innhold. Innledning 1 Innhold Innledning 1 1 Kompleksitetsanalyse 7 1.1 Innledning.............................. 8 1.2 Hva vi beregner........................... 8 1.2.1 Enkle operasjoner...................... 8 1.2.2 Kompleksitet........................

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

Kompleksitetsteori reduksjoner

Kompleksitetsteori reduksjoner Kompleksitetsteori reduksjoner En slags liten oversikt, eller huskeliste, for kompleksitetsteorien i INF 4130. Ikke ment å være verken fullstendig eller detaljert, men kanskje egnet til å gi noen knagger

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

TALLÆRE UKE 34. Rest. Hvis vi deler a med b og det ikke går opp har vi rest som er mindre enn b.

TALLÆRE UKE 34. Rest. Hvis vi deler a med b og det ikke går opp har vi rest som er mindre enn b. TALLÆRE UKE 34. Faktor. Hva er en faktor i et heltall? Vi fant ut at hvis et heltall b er med i et regnestykke med kun multiplikasjon som gir heltallet a som svar da er b faktor i a. Eksempel: 3 8=24 og

Detaljer

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken knutm@ifi.uio.no Rom 1033, Niels Henrik Abels hus

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken knutm@ifi.uio.no Rom 1033, Niels Henrik Abels hus VELKOMMEN TIL MAT-INF1100(L) Knut Mørken knutm@ifi.uio.no Rom 1033, Niels Henrik Abels hus Forelesere Knut Mørken og Martin Reimers, Matematisk institutt, 10. etg i Niels Henrik Abels hus Arbeider med

Detaljer

Norsk informatikkolympiade 2012 2013 1. runde

Norsk informatikkolympiade 2012 2013 1. runde Norsk informatikkolympiade 2012 2013 1. runde Uke 45, 2012 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler. Instruksjoner:

Detaljer

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder: Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner

Detaljer

AlgDat 12. Forelesning 2. Gunnar Misund

AlgDat 12. Forelesning 2. Gunnar Misund AlgDat 12 Forelesning 2 Forrige forelesning Følg med på hiof.no/algdat, ikke minst beskjedsida! Algdat: Fundamentalt, klassisk, morsomt,...krevende :) Pensum: Forelesningene, oppgavene (pluss deler av

Detaljer

Norsk informatikkolympiade 2012 2013 1. runde

Norsk informatikkolympiade 2012 2013 1. runde Norsk informatikkolympiade 2012 2013 1. runde Uke 45, 2012 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler. Instruksjoner:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Prøveeksamen tirsdag 23. november 2010 Tid for eksamen:

Detaljer

Teorem 10 (Z n, + n ) er en endelig abelsk gruppe. 8. november 2005 c Vladimir Oleshchuk 35. Teorem 11 (Z n, ) er en endelig abelsk gruppe.

Teorem 10 (Z n, + n ) er en endelig abelsk gruppe. 8. november 2005 c Vladimir Oleshchuk 35. Teorem 11 (Z n, ) er en endelig abelsk gruppe. Endelige grupper Teorem 10 (Z n, + n ) er en endelig abelsk gruppe. En gruppe er en mengde S sammen med en binær operasjon definert på S, betegnes (S, ), med følgende egenskaper: 1. a, b S, a b S 2. det

Detaljer

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes til å løse problemer. Undersøke ulike implementasjoner

Detaljer

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller. Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 6 Bokmål Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

Oversikt over kryptografi

Oversikt over kryptografi Oversikt over kryptografi Richard Williamson 3. desember 2014 Oppgave 1 Person A ønsker å sende meldingen Ha det! til person B, og ønsker å benytte RSAalgoritmen for å kryptere den. Den offentlige nøkkelen

Detaljer

Korteste vei problemet (seksjon 15.3)

Korteste vei problemet (seksjon 15.3) Korteste vei problemet (seksjon 15.3) Skal studere et grunnleggende kombinatorisk problem, men først: En (rettet) vandring i en rettet graf D = (V, E) er en følge P = (v 0, e 1, v 1, e 2,..., e k, v k

Detaljer

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:

Detaljer

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

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden. EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2008 kl 09.00 til kl 13.00 Hjelpemidler: 4 A4-sider (2 ark) med valgfritt innhold Kalkulator Faglærer: Mari-Ann

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Tirsdag 12. juni 2012 Tid for eksamen: 9:00 15:00 Oppgavesettet er

Detaljer

Oblig3Pi- en matematisk rettet obligatorisk oppgave nr. 3 (av 4) i INF1000 ett av to alternativer for oblig 3.

Oblig3Pi- en matematisk rettet obligatorisk oppgave nr. 3 (av 4) i INF1000 ett av to alternativer for oblig 3. Oblig3Pi- en matematisk rettet obligatorisk oppgave nr. 3 (av 4) i INF ett av to alternativer for oblig 3. Leveringsfrist Oppgaven må leveres senest fredag. oktober kl 6.. Viktig: les slutten av oppgaven

Detaljer

TALL. 1 De naturlige tallene. H. Fausk

TALL. 1 De naturlige tallene. H. Fausk TALL H. Fausk 1 De naturlige tallene De naturlige tallene er 1, 2, 3, 4, 5,... (og så videre). Disse tallene brukes til å telle med, og de kalles også telletallene. Listen med naturlige tall stopper ikke

Detaljer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

Detaljer

Sprettball Erfaren ComputerCraft PDF

Sprettball Erfaren ComputerCraft PDF Sprettball Erfaren ComputerCraft PDF Introduksjon Nå skal vi lære hvordan vi kan koble en skjerm til datamaskinen. Med en ekstra skjerm kan vi bruke datamaskinen til å kommunisere med verden rundt oss.

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

Backtracking som løsningsmetode

Backtracking som løsningsmetode Backtracking Backtracking som løsningsmetode Backtracking brukes til å løse problemer der løsningene kan beskrives som en sekvens med steg eller valg Kan enten finne én løsning eller alle løsninger Bygger

Detaljer

MAT-INF1100 Oblig 1. Teodor Spæren, brukernavn teodors. September 16, 2015

MAT-INF1100 Oblig 1. Teodor Spæren, brukernavn teodors. September 16, 2015 MAT-INF1100 Oblig 1 Teodor Spæren, brukernavn teodors September 1, 015 1 Oppgave 1 I de oppgavene som krever at man gjør om et rasjonalt tall i intervallet (0, 1) om til en binærsifferutvikling, fant jeg

Detaljer

Forelesning 24 mandag den 10. november

Forelesning 24 mandag den 10. november Forelesning 24 mandag den 10. november 6.3 RSA-algoritmen Merknad 6.3.1. Én av de meste berømte anveldesene av tallteori er i kryptografi. Alle former for sikre elektroniske overføringer er avhengige av

Detaljer

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster 3 emner i dag! INF1000 Uke 5 Litt om objekter, pekere og null Filer og easyio Litt mer om tekster Litt om objekter, filer med easyio, tekst 1 2 Objekter og pekere Vi lager pekere og objekter når vi bruker

Detaljer

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv Bygg et Hus Introduksjon I denne leksjonen vil vi se litt på hvordan vi kan få en robot til å bygge et hus for oss. Underveis vil vi lære hvordan vi kan bruke løkker og funksjoner for å gjenta ting som

Detaljer

TDT4165 PROGRAMMING LANGUAGES. Exercise 02 Togvogn-skifting

TDT4165 PROGRAMMING LANGUAGES. Exercise 02 Togvogn-skifting TDT4165 PROGRAMMING LANGUAGES Fall 2012 Exercise 02 Togvogn-skifting Problembeskrivelse Du er sjef for å skifte vognene til et tog. Vi antar at hver vogn selv har en motor og at toget ikke har noe lokomotiv.

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

En oppsummering (og litt som står igjen)

En oppsummering (og litt som står igjen) En oppsummering (og litt som står igjen) Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen En oppsummering Oppsummering Pensum læreboken til og med kapittel 7 forelesningene de

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

Eksempel: Body Mass Index (BMI) Forelesning inf1000 - Java 3. Ferdig program (første del) Ferdig program (siste del)

Eksempel: Body Mass Index (BMI) Forelesning inf1000 - Java 3. Ferdig program (første del) Ferdig program (siste del) Forelesning inf1000 - Java 3 Eksempel: Body Mass Index (BMI) Tema: Mer om forgreninger Løkker Arrayer Litt om easyio Ole Christian Lingjærde, 5. september 2012 Ole Chr. Lingjærde Institutt for informatikk,

Detaljer

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø rodsjo@stud.ntnu.no

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø rodsjo@stud.ntnu.no Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø rodsjo@stud.ntnu.no Dagens tema Grafer Terminologi Representasjon av grafer Bredde først søk (BFS) Dybde først søk (DFS) Hashing Hashfunksjoner,

Detaljer

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N FAGNAVN: Grunnleggende programmering FAGNUMMER: IMT 1031 EKSAMENSDATO: 19.desember 2005 KLASSE(R): 05HBIND*, 05HBINFA, 05HBISA,

Detaljer

TDT4110 IT Grunnkurs Høst 2014

TDT4110 IT Grunnkurs Høst 2014 TDT4110 IT Grunnkurs Høst 2014 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Auditorieøving 1 Navn: Linje: Brukernavn (blokkbokstaver): Oppgavesettet

Detaljer

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 15. mai 2003 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LO116D Programmering i Visual Basic FU Studiepoeng:

Detaljer

Løse reelle problemer

Løse reelle problemer Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:

Detaljer

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 Delkapittel 2.1 Plangeometriske algoritmer Side 1 av 7 Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 2.1 Punkter, linjesegmenter og polygoner 2.1.1 Polygoner og internett HTML-sider kan ha

Detaljer

Hvor er vi nå - kap. 3 (+4,5)? Forenklet skisse av hva en parser gjør PARSER. Kontekstfrie grammatikker og syntaksanalyse (parsering)

Hvor er vi nå - kap. 3 (+4,5)? Forenklet skisse av hva en parser gjør PARSER. Kontekstfrie grammatikker og syntaksanalyse (parsering) Hvor er vi nå - kap. 3 (+4,5)? Kontekstfrie grammatikker og syntaksanalyse (parsering) INF5110 - kap.3 i Louden + hjelpenotat (se hjemmesida) Arne Maus Ifi, UiO v2006 program Pre - processor Makroer Betinget

Detaljer

HMM-tagging INF4820 H2008. Jan Tore Lønning. 30. september. Institutt for Informatikk Universitetet i Oslo

HMM-tagging INF4820 H2008. Jan Tore Lønning. 30. september. Institutt for Informatikk Universitetet i Oslo INF4820 H2008 Institutt for Informatikk Universitetet i Oslo 30. september Outline 1 2 3 4 5 Outline 1 2 3 4 5 Flertydighet Example "" "fisk" subst appell mask ub fl @løs-np "fisker" subst appell

Detaljer

Likninger - en introduksjon på 8. trinn Hva er en likning og hva betyr å løse den?

Likninger - en introduksjon på 8. trinn Hva er en likning og hva betyr å løse den? side 1 Detaljert eksempel om Likninger - en introduksjon på 8. trinn Hva er en likning og hva betyr å løse den? Dette er et forslag til undervisningsopplegg der utgangspunktet er sentrale problemstillinger

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

Oversikt. Heuristisk søk 1. Kombinatorisk optimering Lokalt søk og simulert størkning Populasjonsbasert søk. Prinsipper og metoder

Oversikt. Heuristisk søk 1. Kombinatorisk optimering Lokalt søk og simulert størkning Populasjonsbasert søk. Prinsipper og metoder Oversikt Heuristisk søk Kombinatorisk optimering Lokalt søk og simulert størkning Populasjonsbasert søk Prinsipper og metoder Pål Sætrom Traveling sales person (TSP) Kombinatorisk optimering Trondheim

Detaljer

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Simpila. Den dynamiske

Detaljer

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre Python: Variable og beregninger, input og utskrift TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål for denne uka: Vite litt om design av programmer (2.1, 2.2, 2.4) Kunne skrive ut

Detaljer

Hangman. Level. Introduksjon

Hangman. Level. Introduksjon Level 2 Hangman All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduksjon

Detaljer

INF1000 Uke 4. Innlesning fra terminal. Uttrykk og presedens. Oversikt

INF1000 Uke 4. Innlesning fra terminal. Uttrykk og presedens. Oversikt Oversikt INF1000 Uke 4 Forgreininger, løkker og arrayer Litt repetisjon Blokker og forgreininger if-setninger if-else-setninger switch-setninger Løkker while-løkker do-while-løkker for-løkker Arrayer Opprette,

Detaljer

EKSAMEN ITF10208. Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

EKSAMEN ITF10208. Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne) EKSAMEN Emnekode: Emne: ITF10208 Webprogrammering 1 Dato: Eksamenstid: 01/06-2011 09.00-13.00 Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne) Faglærer: Tom Heine

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Universitetet i Bergen Matematisk naturvitskapleg fakultet Institutt for informatikk Side 1 av 7 Nynorsk Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Fredag 10. desember 2004 Tid:

Detaljer

Studentene skal kunne. gjøre rede for begrepene naturlige, hele, rasjonale og irrasjonale tall. skrive mengder på listeform

Studentene skal kunne. gjøre rede for begrepene naturlige, hele, rasjonale og irrasjonale tall. skrive mengder på listeform 1 10 Tall og tallregning Studentene skal kunne gjøre rede for begrepene naturlige, hele, rasjonale og irrasjonale tall definere og benytte de anerkjente skrivemåtene for åpne, halvåpne og lukkede intervaller

Detaljer