02. spa1 - asimptotsko ponasanje

25
ASIMPTOTSKO PONAŠANJE Strukture podataka i algoritmi 1

Upload: helena-halonen

Post on 08-Dec-2015

50 views

Category:

Documents


11 download

DESCRIPTION

g

TRANSCRIPT

Page 1: 02. SPA1 - Asimptotsko Ponasanje

ASIMPTOTSKO

PONAŠANJE

Strukture podataka i algoritmi 1

Page 2: 02. SPA1 - Asimptotsko Ponasanje

Oznake

Asimptotska gornja granica – O (veliko O)

Asimptotska donja granica - Ω

Još neke oznake – Θ i o

Asimptotska analiza nekih algoritama

Page 3: 02. SPA1 - Asimptotsko Ponasanje

Veliko O - definicija

Asimptotska gornja granica O

Posmatrajmo funkciju f(n) koja je ne-negativna za

sve prirodne brojeve n >= 0.

Kažemo da je f(n)=O(g(n)) ako postoji prirodan

broj no i konstanta c > 0 tako da za sve brojeve

n >= n0, važi f(n) <= cg(n).

Page 4: 02. SPA1 - Asimptotsko Ponasanje

Primer

Posmatrajmo funkciju f(n)=8n+128.

f(n)=O(n2) ?

160)16(

0)8(,0

)8)(16(0

12880

1288

1,)(

00

2

2

2

nn

nn

nn

nn

nn

ccnnf

Page 5: 02. SPA1 - Asimptotsko Ponasanje

Veliko O zablude

Zabluda 1:

Primer:

Zabluda 2:

Nije jednakost u matematičkom smislu

)()())(()( ))(()( 2121 nfnfngOnfngOnf

)()(),()( )()(,)( )( 21

2

2

2

1

2

21 nfnfnOnfnOnfnnfnnf

))(()( ))(()( 1 nfOngngOnf

Page 6: 02. SPA1 - Asimptotsko Ponasanje

Osobine velikog O

Aditivnost

Aditivnost opet

Proizvod

Proizvod opet

Tranzitivnost

))(),((max()()())(()())(()( 21212211 ngngOnfnfngOnfngOnf

))(()(

)0,)(

)(lim(

)0)(),(0(

))()()((

1

1

2

21

21

nfOnf

LLnf

nf

nfnfn

nfnfnf

n

))()((()()())(()())(()( 21212211 ngngOnfnfngOnfngOnf

))()(()()(

)0)(0(

))(()((

2121

2

11

ngngOngnf

ngn

ngOnf

))(()())(()())(()( nhOnfnhOngngOnf

Page 7: 02. SPA1 - Asimptotsko Ponasanje

Polinomi i algoritmi

Za svaki polinom

važi

Za logaritme važi

0

1

1

1

1

0

...)( anananananf m

m

m

m

m

i

i

i

)()( mnOnf

)(log1, nOnkΝk k

Page 8: 02. SPA1 - Asimptotsko Ponasanje

Tesno ograničenje

Veliko O daje informaciju samo o gornjem

ograničenju, bez predstave o tome koliko je funkcija

bliska asimptotskom ponašanju.

Tesno ograničenje: razmotrimo funkcije

f(n)=O(g(n)). Ako za svaku funkciju h(n) takvu da je

f(n)=O(h(n)) i važi da je g(n)=O(h(n)) onda

kažemo da je funkcija g(n) tesno asimptotsko

ograničenje za funkciju f(n).

Page 9: 02. SPA1 - Asimptotsko Ponasanje

Još veliko O zablude

Zabluda 3:

c mora biti konstanta, ne funkcija od n

Zabluda 4:

Zabluda 5:

))(()()( if

)()( ,0

)()()(,0)(),(),(

12

1

2121

ngOnfngc

ncgnfn

ngngnfngngnf

)()(,

)()( ,0

))(()())(()(

,0)(),(),(),(

02010

21

2211

2121

nfnfn

ngngn

ngOnfngOnf

ngngnfnf

))(()( xor ))(()(

,0)(),(

nfOngngOnf

ngnf

Page 10: 02. SPA1 - Asimptotsko Ponasanje

Konvencije za pisanje

Ukloniti sve osim značajnog terma

Primer

Ukloniti konstante

Primer

)( )log( 22 nOnnnnO

)1( )1024(

)( )3( 22

OO

nOnO

Page 11: 02. SPA1 - Asimptotsko Ponasanje

Primer(1)

Razmotrimo problem u kojem se procesira n podataka.

Razmatramo nekoliko algoritama koji rešavaju ovaj isti problem. Pretpostavimo da su njihove vremenske složenosti date sledećim funkcijama:

Algoritam Log: 0.3 log2 n sekundi Algoritam Lin: 0.1 n sekundi Algoritam LogLin: 0.03 n log2 n sekundi Algoritam Quad: 0.01 n2 sekundi Algoritam Cub: 0.001 n3 sekundi Algoritam Exp: 0.0001 2n sekundi

I grafički …

Page 12: 02. SPA1 - Asimptotsko Ponasanje

Log

Lin

LogLin

Quad

Cub

Exp

10 20 30 40 50 60 70 80 90 100 0

0:00

n

0:01

Primer (2)

Uporedimo koliko podataka (n) svaki algoritam može

da procesira u 1,2,...,10 sekundi:

0:02 0:03 0:04 0:05 0:06 0:07 0:08 0:09 0:10

Page 13: 02. SPA1 - Asimptotsko Ponasanje

Ω definicija

Asimptotsko donje ograničenje Ω

Razmotrimo funkciju f(n) koja je ne-negativna za

sve prirodne brojeve n >= 0.

Kažemo da je f(n)= Ω(g(n)) ako postoji prirodan

broj no i konstanta c > 0 tako da za sve prirodne

brojeve n >= n0 važi f(n) >= cg(n).

Page 14: 02. SPA1 - Asimptotsko Ponasanje

Primer

Razmotrimo funkciju f(n)=5n2-64n+256.

f(n)=Ω(n2) ?

00)8(,0

0)8(4

0256644

256645

1,)(

0

2

2

22

2

nnn

n

nn

nnn

ccnnf

Page 15: 02. SPA1 - Asimptotsko Ponasanje

Polinomi i Ω

Razmotrimo polinom

Onda je

0

1

1

1

1

0

...)( anananananf m

m

m

m

m

i

i

i

)()( mnnf

Page 16: 02. SPA1 - Asimptotsko Ponasanje

Još oznaka – Θ i o (malo o)

Θ

Razmotrimo funkciju f(n) koja je ne-negativna za sve prirodne brojeve n >= 0.

Kažemo da je f(n)= Θ(g(n)) ako i samo ako f(n)= O(g(n)) and f(n)= Ω(g(n))

Malo o

Razmotrimo funkciju f(n) koja je ne-negativna za sve prirodne brojeve n >= 0.

Kažemo da je f(n)= o(g(n)) ako i samo ako f(n)= O(g(n)) and f(n)≠ Ω(g(n))

Page 17: 02. SPA1 - Asimptotsko Ponasanje

Asimptotska analiza

Primer: Hornerovo pravilo

Page 18: 02. SPA1 - Asimptotsko Ponasanje

Neka zapažanja

Bez obzira kakve su konstante, asimptotska analiza uvek

daje isti rezultat!

Asimptotsko ograničenje nam daje fundamentalne

informacije o vremenu izvršavanja programa.

O ne zavisi od karakteristika računara i kompajlera na

kojima se izvršava program!

Ali ne znamo ništa o stvarnom vremenu izvršavanja

programa!

Page 19: 02. SPA1 - Asimptotsko Ponasanje

Pravila za analizu velikog O (1)

Sekvence

Najgore vreme izračunavanja za sekvecu:

je

gde je vreme izračunavanja naredbe Si dato sa

O(Ti(n))

;

;

;

2

1

Sm

S

S

))(),...,(),((max( 21 nTnTnTO m

Page 20: 02. SPA1 - Asimptotsko Ponasanje

Pravila za analizu velikog O (2)

Iteracije

Najgore vreme izračunavanja za for petlju:

for (S1; S2; S3)

S4;

je

gde je vreme izračunavanja naredbe Si dato sa

O(Ti(n)) a I(n) je broj iteracija za najgori slučaj

))()(),()(,1)()(),((max( 4321 nInTnInTnInTnTO

Page 21: 02. SPA1 - Asimptotsko Ponasanje

Pravila za analizu velikog O (3)

Uslovne naredbe

Najgore vreme izračunavanja za if-then-else:

if (S1)

S2;

else

S3;

je

gde je vreme izračunavanja naredbe Si dato sa O(Ti(n))

))(),(),((max( 321 nTnTnTO

Page 22: 02. SPA1 - Asimptotsko Ponasanje

Primer: suma prvih j elemenata niza

njaj

i i 0,

0

Page 23: 02. SPA1 - Asimptotsko Ponasanje

Realna vremena

Vremena izvršavanja na procesoru od 1GHz, c=1,

n0=0 n=1 n=8 n=1K n=1M

Ω(1) 1ns 1ns 1ns 1ns

Ω(logn) 1ns 3ns 10ns 20ns

Ω(n) 1ns 8ns 0.102μs 1.05ms

Ω(nlogn) 1ns 24ns 1.02μs 21ms

Ω(n2) 1ns 64ns 10.2μs 0.305 hours

Ω(n3) 1ns 0.512μs 1.07s 36.5 years

Ω(2n) 1ns 0.256μs 10292years 1010000 years

Page 24: 02. SPA1 - Asimptotsko Ponasanje

Finalne napomene

Kako verifikovati analizu algoritma?

Napisati program i meriti vremena za različito n

Uporediti analizu sa realnim vremenima

Šta ako se rezultati ne slažu sa analizom?

Test odnosa: recimo da smo izmerili T(n) a predvideli

T(n)=O(f(n))

Računamo T(n)/f(n) za različite n

Ako odnos divergira, onda je f(n) premalo

Ako odnos konvergira ka 0, onda je f(n) preveliko

Ako odnos konvergira ka ne-nula konstanti, onda je f(n) OK

Page 25: 02. SPA1 - Asimptotsko Ponasanje

Finalne napomene 2

Šta ako je predviđanje preveliko?

Možda nismo koristili dovoljno blisko ograničenje,

probamo da pronađemo odgovarajuće

Možda imamo korektnu analizu najgoreg vremena

izvršavanja, ali se to nikad ne dešava u eksperimentu

Možda imamo grešku u analizi, ponoviti analizu

? www.google.com?