02. SPA1 - Asimptotsko Ponasanje
-
Upload
helena-halonen -
Category
Documents
-
view
47 -
download
11
description
Transcript of 02. SPA1 - Asimptotsko Ponasanje
![Page 1: 02. SPA1 - Asimptotsko Ponasanje](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/1.jpg)
ASIMPTOTSKO
PONAŠANJE
Strukture podataka i algoritmi 1
![Page 2: 02. SPA1 - Asimptotsko Ponasanje](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/2.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/3.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/4.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/5.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/6.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/7.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/8.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/9.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/10.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/11.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/12.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/13.jpg)
Ω 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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/14.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/15.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/16.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/17.jpg)
Asimptotska analiza
Primer: Hornerovo pravilo
![Page 18: 02. SPA1 - Asimptotsko Ponasanje](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/18.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/19.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/20.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/21.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/22.jpg)
Primer: suma prvih j elemenata niza
njaj
i i 0,
0
![Page 23: 02. SPA1 - Asimptotsko Ponasanje](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/23.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/24.jpg)
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](https://reader031.fdocument.org/reader031/viewer/2022012406/563db94e550346aa9a9c0b58/html5/thumbnails/25.jpg)
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?