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

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

Kjøretidsanalyse. Hogne Jørgensen

Divide-and-Conquer II

n/b log b n = (lg n) a log b n = n log b a

deeegimnoorrrsstt Sjette forelesning

LO118D Forelesning 2 (DM)

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

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

Ukeoppgaver fra kapittel 10 & Induksjonsbevis

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

Analyse av Algoritmer

Divide-and-Conquer. Lars Vidar Magnusson

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Grafteori. MAT1030 Diskret matematikk. Induksjonsbevis

MAT1030 Diskret matematikk

for bare trær Andre forelesning

ALGORITMER OG DATASTRUKTURER

for bare trær Andre forelesning

Algdat Eksamensforelesning. Nils Barlaug

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

LO118D Forelesning 12 (DM)

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

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

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

MAT1030 Diskret Matematikk

Eksamenshefte TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

MAT1030 Forelesning 17

Foilene legges ut her:

MAT1030 Diskret Matematikk

ALGORITMER OG DATASTRUKTURER

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

MAT1030 Diskret Matematikk

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering

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

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

ALGORITMER OG DATASTRUKTURER

INF2220: Forelesning 1

MAT1030 Forelesning 25

INF2220: Forelesning 1

Innføring i matematisk analyse av algoritmer

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Eksamen i tdt4120 Algoritmer og datastrukturer

LP. Leksjon 8: Kapittel 13: Nettverk strøm problemer, forts.1

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

deeegimnoorrrsstt Sjette forelesning

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

INF2220: Forelesning 2

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Diskret Matematikk

Rekurrens. MAT1030 Diskret matematikk. Rekurrens. Rekurrens. Eksempel. Forelesning 16: Rekurrenslikninger. Dag Normann

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

MAT1030 Diskret Matematikk

INF Algoritmer og datastrukturer

M. L. Hetland. Foto (utsnitt av original): Pedro Ribeiro Simões / CC BY 2.0. Algoritmer. og datastrukturer

Introduksjon til Algoritmeanalyse

INF Algoritmer og datastrukturer

Anbefalte forkunnskaper Studentene forutsettes å kunne programmere, for eksempel ved å ha tatt TDT4100 Objektorientert programmering.

PG4200 Algoritmer og datastrukturer Forelesning 2

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Algoritmer - definisjon

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

Korteste vei i en vektet graf uten negative kanter

Enkel matematikk for økonomer. Del 1 nødvendig bakgrunn. Parenteser og brøker

UNIVERSITETET I OSLO

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

Forelesning 4 torsdag den 28. august

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

Kondisjonstest. Algoritmer og datastrukturer. Repetisjonsoppgaver - LF. Onsdag 6. oktober 2004

Kompleksitetsanalyse

Magnus Lie Hetland. Pensumhefte, Algoritmer og datastrukturer

UNIVERSITETET I OSLO

INF1020 Algoritmer og datastrukturer GRAFER

Løsningsforslag for utvalgte oppgaver fra kapittel 9

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

MAT1030 Diskret matematikk

Oppgaver fra forelesningene. MAT1030 Diskret matematikk. Oppgave (fra forelesningen 10/3) Definisjon. Plenumsregning 9: Diverse ukeoppgaver

MAT1030 Diskret matematikk

Avanserte flytalgoritmer

MAT1030 Diskret matematikk

INF-MAT5370. Trianguleringer i planet (Preliminaries)

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

Underveiseksamen i MAT-INF 1100, 17. oktober 2003 Tid: Oppgave- og svarark

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

Mengder, relasjoner og funksjoner

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Diskret Matematikk

Sekventkalkyle for utsagnslogikk

Forelesning 29: Kompleksitetsteori

Kompleksitet og Beregnbarhet

Forelesning 6 torsdag den 4. september

Innhold. Innledning 1

Transkript:

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 håndtrykk; antall kanter i en graf 3

(n 2 n) / 2 n(n 1) / 2 4

(n 2 n) / 2 n(n 1) / 2 5

http://boingboing.net/2008/02/08/color-tile-optical-i.html Samme farge Samme farge 6

?7

x lg y = y lg x lg x lg y = lg y lg x lg y lg x = lg x lg y QED 8

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 bottles Femte forelesning 9

Asymptotisk notasjon «It s Greek to me» 10

O Ω Θ = 11

f O(g) 12

f(n) O(g(n)) 13

f.eks. 3n 2 + 9n + 2 f.eks. n 2 eller n 3 f(n) = O(g(n)) 14

.(D"E -D"E " C " 15

[ n 2 ] ( x i 2 [ i,i+1 ] i+3 3 ) i=1

O(g(n)) = {f(n) c, n 0 > 0 [ n n 0 [ 0 f(n) cg(n) ] ]} 17

O(g(n)) = {f(n) c, n 0 > 0 [ n n 0 [ 0 f(n) cg(n) ] ]} 18

Ω: Omvendt av O 19

-?6@ &9?6@ 6, 6 20

Θ = O Ω 21

På tavla: Asymptotisk notasjon i ligninger # % 7"4# n + O(n) betyr n + f(n) for en eller annen funksjon, der f(n) = O(n) *"4# # $ 7"4# På tavla: Forenkling av pn^2 + qn + r pn^2 + qn^2 +rn^2 = (p + q + r)n^2. Sett c = p + q + r Siden cn^2 cn^3 er funksjonen også O(n^3). 4! 4 22

Hvis ikke f(n)/g(n) : f er O(g) Nyttig ekstraverktøy. Her kan man f.eks. bruke l Hôpitals regel for å finne en løsning. Hvis ikke f(n)/g(n) 0: f er Ω(g) Hvis f(n)/g(n) c: f er Θ(g) Nyttig: For enhver b>1 og x>0 har vi: log_b n = O(n^x) Merk: Alle grunntall for logaritmer er ekvivalente (gir bare et konstantledd i forskjell). 23

Lineær tid O(n lg n) Kvadratisk Kubisk O(nk ) Eksponentiell og sublineær tid 24

Hvem er raskest? n 2.5 (2n) 0.5 n + 10 10 n 100 n n 2 lg n (2n) 0.5 n + 10 n 2 lg n n 2.5 10 n 100 n n^2 lg n vs. n^2.5 tilsvarer lg n vs. sqrt(n) 25

recursive.jpg Kjøretidsberegninger for rekursive algoritmer. (Jfr. tidligere snakk om rekursjon og dekomponering men også induksjon.)! 26

27 Rekurrens-intuisjon på tavla? (Bruk av den rekursive definisjonen til å omskrive ledd i definisjonen selv )

T (L) = T ( L 2 ) + W (L) L 2 28 L

= = + = + 29

T (L) = T (L/2) + W (L) = [T (L/4) + W (L/2)] + W (L) = [[T (L/8) + W (N/4)] + W (N/2)] + W (L). = T (L/2 i ) + W (L/2 i 1 ) +... + W (L) Sett i = lg L = T (L/2 lg L ) + W (L/2 lg L 1 ) +... + W (L) = T (1) + W (2) +... + W (L) (Vi går videre snart... ) 30

T (L) = T (L/2) + W (L) = [T (L/4) + W (L/2)] + W (L) = [[T (L/8) + W (N/4)] + W (N/2)] + W (L). = T (L/2 i ) + W (L/2 i 1 ) +... + W (L) Sett i = lg L = T (L/2 lg L ) + W (L/2 lg L 1 ) +... + W (L) = T (1) + W (2) +... + W (L) (Vi går videre snart... ) 31

HUSK! n 1 n log 2 n n 2 n 2 = n 1 1 1 n 32

[ n 2 ] ( x i 2 [ i,i+1 ] i+3 3 ) i=1

T (n) = { 1 if n = 1 2T (n/2) + n if n > 1 T (n) = n lg n + n 34

T (n) = { 0 if n = 2 T ( n) + 1 if n > 2 T (n) = lg lg n 35

T (n) = { 1 if n = 1 T (n/3) + T (2n/3) + n if n > 1 T (n) = Θ(n lg n) 36

T (n) = { 1 if n = 1 T (n 1) + 1 if n > 1 T (n) = n 37

«Simulering»: Iterasjonsmetoden/rekurrenstrær Forklarer iterasjonsmetoden her. Rekurrenstrær er bare en måte å tegne opp det som skjer på. Induksjon: Substitusjonsmetoden «Kokebok»: Masterteoremet Preprosessering: Variabelskifte 38

Iterasjon 39

T (n) = T (n 1) + 1 = [T ([n 1] 1) + 1] + 1 = T (n 2) + 2 = T (n 3) + 3.. = T (n i) + i Sett i = n 1 for å få T (1) = T (1) + n 1 = n 40

T (n) = T (n 1) + 1 = [T ([n 1] 1) + 1] + 1 = T (n 2) + 2 = T (n 3) + 3 T (x). = T (x 1) + 1;. x = n 1 = T (n i) + i Sett i = n 1 for å få T (1) = T (1) + n 1 = n 41

T (n) = T (n 1) + 1 = [T ([n 1] 1) + 1] + 1 = T (n 2) + 2 = T (n 3) + 3 T (x). = T (x 1) + 1;. x = n 1 = T (n i) + i Sett i = n 1 for å få T (1) = T (1) + n 1 = n 42

T (n) = T (n 1) + 1 = [T ([n 1] 1) + 1] + 1 = T (n 2) + 2 = T (n 3) + 3.. = T (n i) + i Sett i = n 1 for å få T (1) = T (1) + n 1 = n 43

T (n) = 2T (n/2) + n = 2[2T ([n/2]/2) + [n/2]) + n = 4T (n/4) + 2n = 8T (n/8) + 3n.. = 2 i T (n/2 i ) + in Sett i = lg n for å få T (1) = n Θ(1) + n lg n = Θ(n lg n) 44

T (n) = 2T (n/2) + n Hmm... = 2[2T ([n/2]/2) + [n/2]) + n = 4T (n/4) + 2n = 8T (n/8) + 3n.. = 2 i T (n/2 i ) + in Sett i = lg n for å få T (1) = n Θ(1) + n lg n = Θ(n lg n) 45

Aha! n 1 n log 2 n n 2 n 2 = n Hva blir høyden multiplisert med radsummen her? 1 1 1 n Denne typen rekursjonstrær (og iterasjonsmetoden) kan brukes til å gjette løsninger som kan bevises med induksjon. 46

Substitusjon 47

«Gjett» en løsning Bevis korrekthet med induksjon 48

Induksjon Vil vise P(n) for vilkårlig n Bevis grunntilfelle, P(1) Anta P(k) for k < n Vis at dette medfører P(n) Vi har da P(1), og vet at det medfører P(2), som medfører P(3), osv. 49

T (n) = { 1 if n = 1 T (n 1) + 1 if n > 1 Vil vise: T (n) = n Basis: T (1) = 1 Induksjonshypotese: T (k) = k, k < n 50

T (n) = T (n 1) + 1 IH: T (k) = k, der k = n 1 = n 1 + 1 = n QED 51

T (n) = T (n 1) + 1 IH: T (k) = k, der k = n 1 = n 1 + 1 = n QED 52

T (n) = { 1 if n = 1 2T (n/2) + n if n > 1 Vil vise: T (n) = n lg n + n Basis: T (n) = 1 = 1 lg 1 + 1 Hypotese: T (k) = k lg k + k, k < n 53

T (n) = 2T ( n 2 ) + n ( n = 2 2 lg n 2 + n ) 2 + n (IH.) = n lg n 2 + n + n = n(lg n lg 2) + n + n = n lg n n + n + n = n lg n + n QED Finurligheter og detaljer på tavla. 54

T (n) = 2T ( n 2 ) + n ( n = 2 2 lg n 2 + n ) 2 + n (IH.) = n lg n 2 + n + n = n(lg n lg 2) + n + n = n lg n n + n + n = n lg n + n QED Finurligheter og detaljer på tavla. 55

Den eksakte formen må bevises! Hvis du ender opp med noe som er nesten det samme (f.eks. ved bruk av asymptotisk notasjon) er ikke beviset gyldig! 56

Masterteoremet 57

T (n) = at (n/b) + f(n) Antall «barn»: Størrelse per «barn»: «Høyde»: a n/b log b n = Θ(lg n) Rota har f(n) arbeid; hver løvnode har en konstant mengde arbeid. Hva vil dominere totalen? Det kommer an på forholdet mellom f(n) og antallet løvnoder. Antall «løvnoder»: a log b n = n log b a Husk uttrykket for antall løvnoder! 58

Tilfelle 1: Løvnodene dominerer Da blir kostnaden Θ(n log b a ) Det skjer når f(n) = O(n log b a ɛ ) 59

Tilfelle 2: «Dødt løp» Da blir kostnaden Det skjer når Θ(n log b a lg n) f(n) = Θ(n log b a ) Samme kostnad i hvert nivå (dvs. det samme som løvnodene); vi ganger med høyden. 60

Det finnes en c < 1 s.a. af(n/b) cf(n), for store nok verdier n Det vil intuitivt si at f-en krymper nedover i treet. 61 f(n) er da regulær

Tilfelle 3: Rota dominerer Da blir kostnaden Det skjer når Θ(f(n)) f(n) = Ω(n log b a+ɛ ) 62 Regulariteten innebærer, for en c < 1 og store n: a*f(n/b) c*f(n). Trenger ikke sjekkes hvis f(n) er polynomisk (dvs. n^k). f(n) må være regulær!

T (n) = { 1 if n = 1 2T (n/2) + n if n > 1 a = 2 b = 2 log b a = 1 n log b a = n f(n) = n = Θ(n log b a ) Her er det dødt løp, så vi får høyde * antall løvnoder = høyde * radsummen, som vi jo kjenner så godt fra treet vårt T (n) = Θ(n log b a lg n) = Θ(n lg n) 63

T (n) = { 1 if n = 1 2T (n/2) + n if n > 1 a = 2 b = 2 log b a = 1 n log b a = n f(n) = n = Θ(n log b a ) Her er det dødt løp, så vi får høyde * antall løvnoder = høyde * radsummen, som vi jo kjenner så godt fra treet vårt T (n) = Θ(n log b a lg n) = Θ(n lg n) 64

Variabelskifte 65

Flytter oss til «en enklere verden» Skift funksjon og variabel; går «opp i opp» T(n) = S(m) F.eks. m = lg n, S(m) = T(2m ) 66

T (n) = 2T ( n) + lg n [m = lg n] T (2 m ) = 2T (2 m/2 ) + m [S(m) = T (2 m )] S(m) = 2S(m/2) + m = O(m lg m) T (n) = O(lg n lg lg n) 67

T (n) = 2T ( n) + lg n [m = lg n] T (2 m ) = 2T (2 m/2 ) + m [S(m) = T (2 m )] S(m) = 2S(m/2) + m = O(m lg m) T (n) = O(lg n lg lg n) Legg merke til at alle venstresidene (og høyresidene, for den saks skyld) er like. 68