You are on page 1of 22

Podstawy analizy algorytmw

Podstawy analizy algorytmw

log b x = a log b x
a

log b y

=y

logb x

log b x = (log a x) /(log a b)

(ln x)' = 1 / x

(log x)' = log e / x

Podstawy analizy algorytmw

n(n + 1) i = 2 i =0
n

(
i =0

n i

) = 2n n(n + 0,5) (n + 1) i = 3 i =0
n 2

2
i =0

= 2 n +1 1
n 1 1 x i x = x 1 i =0 n +

ln xdx = x ln x x

Podstawy analizy algorytmw

Czasami trudno jest poda dokadn posta sumy szeregu liczbowego. Jednake, w wikszoci przypadkw, jest wzgldnie atwo oszacowa tempo wzrostu takiej sumy. Wemy dla przykadu funkcj:

f ( n) = i 2 = 12 + 2 2 + K + n 2
i =0

Zgrubne oszacowanie nie jest trudne, gdy f(n) n2 + n2 + ... + n2 = n3. Ale chcielibymy oszacowa f(n) bardziej precyzyjnie.

Podstawy analizy algorytmw

Grne oszacowanie sumy


y y=x 2

...

x
1 2 3 4 5 6 7 8 n 1 n n +1

12 + 22 + 32 + ... + n 2

n +1

3 3 + + 1 n 1 x ( n 1 ) 2 = x dx = 3 1 3

Podstawy analizy algorytmw

Dolne oszacowanie sumy


y y=x 2

...

x
1 2 3 4 5 6 7 8 n 1 n

1 2 + 2 2 + 3 2 + ... + n 2

3 x x 2 dx = 3

n n3 = 0 3

Podstawy analizy algorytmw

n3 (n + 1) 3 1 f ( n) 3 3

n3 f ( n) 3

Dla funkcji f() rosncej:

a 1 b +1

f ( x)dx f (i )
i=a

b +1

f ( x)dx
a b

Dla funkcji f() malejcej:

f ( x)dx f (i )
i =a

f ( x)dx
a 1

Podstawy analizy algorytmw

Symbole oszacowa asymptotycznych


Jeeli f, g:

N N ... N R + to:

f = O(g), wtedy i tylko wtedy, gdy istniej takie stae C > 0 i n0N, e f(n) Cg(n) dla kadego n, ktrego wszystkie wsprzdne s n0 ; f = (g), wtedy i tylko wtedy, gdy istniej takie stae C > 0 i n0N, e f(n) Cg(n) dla kadego n, ktrego wszystkie wsprzdne s n0 ; f = (g), wtedy i tylko wtedy, gdy f = O(g) i f = (g); f = o(g), wtedy i tylko wtedy, gdy dla kadego C > 0 istnieje taka liczba naturalna n0 , e f(n) < Cg(n) dla kadego n, ktrego wszystkie wsprzdne s n0 ; f = (g), wtedy i tylko wtedy, gdy dla kadego C > 0 istnieje taka liczba naturalna n0 , e f(n) > Cg(n) dla kadego n, ktrego wszystkie wsprzdne s n0 ;

Podstawy analizy algorytmw

=> Jeeli f = O(g), to mwimy, e f ronie nie szybciej ni g; relacja O jest zwrotna i przechodnia. => Jeeli f = (g), to mwimy, e f ronie nie wolniej ni g; relacja jest zwrotna i przechodnia.

Podstawy analizy algorytmw

Symbol O()
Niech g: R*R* bdzie funkcj rzeczywist zmiennej x. Przez O(g) oznaczymy zbir funkcji f: R*R takich, e dla pewnego cR+ i xoR* mamy f(x) c g(x) dla wszystkich x xo. Symbol O(g) czytamy "o due od g", za o funkcji f mwimy, e "jest o due od g". Przykady:

2 sin x = (log x)
,

2 4 + + = x 5 x 7 cos x ( x ) 3

1 /(1 + x 2 ) = (1) 3 + sin( x) = (1)

Podstawy analizy algorytmw

f(x) = O(g(x)), gdy

f ( x) =c lim x g ( x )

dla pewnego c 0.

Gdy f i g s funkcjami cigymi i rniczkowalnymi, to dla obliczenia granicy moemy skorzysta z reguy de L'Hspitala L'Hspitala. Jeli

lim f ( x) = lim g ( x) = ,
x

to

f ( x) f ( x) = lim lim x g ( x ) x g ( x )

Podstawy analizy algorytmw

Symbol o()
Niech g: R*R* bdzie funkcj zmiennej x. Przez o(g) oznaczymy zbir funkcji f: R*R takich, e dla dowolnego cR+ istnieje xoR* takie, e f(x) < cg(x) dla wszystkich x xo. Przykady:

x 2 = o( x 5 )
.

1 / x = o(1) 14 x = o( x) 2 sin x = o(2 log x)

Podstawy analizy algorytmw

f(x) = o(g(x)), gdy

f ( x) =0 lim x g ( x )

Kiedy mwimy, e f(x) jest o(g(x)), to rozumiemy, e funkcja f ronie wolniej ni g. Zatem symbol o() niesie wicej informacji ni O(), poniewa wiemy wwczas nie tylko, e f(x) jest zdominowana przez g(x) dla prawie wszystkich x, ale i to, e iloraz f/g0. Jednake, w wikszoci przypadkw praktycznych wystarcza oszacowanie przez O().

Podstawy analizy algorytmw

Symbol ()
Definicja symbolu (g) jest dualna wobec definicji O(g). Mwic nieprecyzyjnie, symbol ten jest negacj o() w tym sensie, e f(x) = (g(x)) oznacza, e f(x) o(g(x)). Zatem (g) jest dolnym oszacowaniem tempa wzrostu funkcji f. Formalna definicja tego symbolu jest nastpujca: => Niech g: R*R*. Przez (g) rozumiemy zbir funkcji f: R*R* takich, e dla pewnego cR+ i pewnego xoR*, g(x) c f(x) dla wszystkich x xo. Przykady:
2 2 + = (2 x 1) (x )

x lg x = ( x) x + 2 sin 2 x = ( x)

Podstawy analizy algorytmw

Najprostsz metod pokazania, e f = (g), jest wykazanie, i g = O(f). Inn metod jest skorzystanie z wasnoci:

f(x) = (g(x)), jeli

f ( x) = lim x g ( x ) f ( x) =c>0 lim x g ( x )

lub

Podstawy analizy algorytmw

Symbol ()
Symbol (g) niesie wicej informacji o dolnym oszacowaniu tempa wzrostu funkcji f ni (g), podobnie jak o(g) niesie wicej informacji o grnym oszacowaniu ni O(g). Formalna definicja jest nastpujca: => Niech g: R*R*. Symbol (g) jest zbiorem funkcji f: R*R* takich, e dla dowolnej staej c > 0 istnieje staa xoR+ taka, e . g(x) < cf(x) dla wszystkich x xo . Przykady:

x = ( x)
2

2 x 2 = (log x)
x = 3 ( 2 ) x

Podstawy analizy algorytmw

Symbolu tego uywamy do okrelenia dolnego tempa wzrostu funkcji f, ktra ronie istotnie szybciej ni (g). Z definicji powyszej wynika, e symbol ten wyklucza si wzajemnie z O(), czyli f(x) = (g(x)) oznacza, e f(x) O(g(x)). Co wicej, f(x) = (g(x)) wtedy i tylko wtedy, gdy g(x) = o(f(x)).

f (x) = (g(x)), jeli

f ( x) = lim x g ( x )

Podstawy analizy algorytmw

Symbol ()
Niech g: R*R*. Mwimy, e f(x) jest (g(x)), gdy istniej stae c1,c2R+ i xoR* takie, e c1g(x) f(x) c2g(x) dla wszystkich x xo. Mwimy wwczas rwnie, e funkcje f i g s tego samego rzdu. Przykady:

3 + 2 x = ( x1/ 4 )
x + (1 3 / x) = (1)

( x 2 + 5 x) /( x 3 + 1) = (1 / x)

Podstawy analizy algorytmw

Symbol () jest znacznie bardziej precyzyjny ni O() i o(). Na przykad, jeli wiemy, e f(x) = (x), to wiemy, e f(x)/x zawiera si pomidzy dwiema niezerowymi staymi dla prawie wszystkich x. Tempo wzrostu funkcji f(x) jest ustalone: ronie ona z kwadratem x. Z definicji symbolu () wynika, e (g) = O(g) (g) oraz e: f(x)= (g(x)), jeli

f ( x) =c lim x g ( x )

dla pewnego c R+

Podstawy analizy algorytmw

~ Symbol ()
~ (g) i ~ (g) mwi, e funkcja f jest tego samego Symbole O rzdu co g z dokadnoci do czynnika logarytmicznego, czyli ~ (g), jeeli istnieje staa k > 0 taka, e f =(glogkg). Formalna f= ~ (g) jest nastpujca: definicja symbolu ~ (g(x)), gdy istniej stae Niech g: R* R*. Mwimy, e f(x) jest c1, c2, kR* i x0R* takie, e c1 g(x)logkg(x) f(x) c2 g(x)logkg(x) dla wszystkich x x0. Zatem funkcja f(x) jest szacowana z dou przez g(x), lecz rzd ich obu jest w przyblieniu ten sam.
Przykady:

~ = x log x ( x) ~ x x = 2 loglogx (2 ) ~ 2 2 3 + = x log x x ( x )

Podstawy analizy algorytmw

o(f)

O(f)

(f) f

~ (f) (f)

(f)

Ilustracja zakresw dziaania symboli oszacowa asymptotycznych.

KONIEC

You might also like