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