Download presentation
Presentation is loading. Please wait.
1
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
2
Vrijeme izvršavanja algoritma
Asimptotsko vrijeme izvršavanja Tipične funkcije za vremena izvršavanja algoritma Asimptotska notacija Strukture podataka i algoritmi
3
Vrijeme izvršavanja algoritma
Određivanje vremena izvršavanja algoritma – brojanje jediničnih instrukcija Mane: Kod složenih algoritama teško izvodljivo, često i nemoguće Prilikom analize algoritama mogu se dobiti vrlo komplikovane funkcije za njihova vremena izvršavanja Često je, na osnovu funkcija T(n), teško reći koji je od dva algoritma brži npr.: - T1(n) = 10n3 + n2 + 40n + 80 - T2(n) = 17nlogn - 23n - 10 Strukture podataka i algoritmi
4
Vrijeme izvršavanja algoritma
Analizu algoritama težimo da pojednostavimo što više možemo i tražimo samo red veličine funkcije vremena izvršavanja algoritma za velike vrijednosti njenog argumenta Uzima se jednostavna funkcija koja za velike vrijednosti njenog argumenta najbolje aproksimira tačnu funkciju vremena izvršavanja tog algoritma – asimptotsko vrijeme izvršavanja To je mjera brzine rasta tačnog vremena izvršavanja algoritma sa povećanjem broja njegovih ulaznih podataka Strukture podataka i algoritmi
5
Vrijeme izvršavanja algoritma
Za velike vrijednosti ulaznih podataka (n). Dominantan je najveći stepen funkcije (red veličine) Uticaj konstanti je zanemarljiv T1(n) = 10n3 + n2 + 40n + 80 T2(n) = 17nlogn - 23n – 10 T1(n) ≈ n3 T2(n) ≈ nlogn Strukture podataka i algoritmi
6
Vrijeme izvršavanja algoritma
T1(n) = 10n3 + n2 + 40n + 80 T2(n) = 17nlogn - 23n – 10 T1(n) ≈ n3 T2(n) ≈ nlogn Strukture podataka i algoritmi
7
Primjer – Vremena izvršavanja 3 algoritma
Računar obavlja operacija u 1 s A1=2n A2=5n A3=100n n 2n 5n2 100n A1 A2 A3 1 2 5 100 1 μs 5 μs 100 μs 10 1024 500 1000 1 ms 0,5 ms 2100 5·104 10 000 280 s 0,05 s 0,01 s 21000 5·106 105 2980 s 5 s 0,1 s Strukture podataka i algoritmi
8
Primjer 1 – Vrijeme izvršavanja algoritma
Red 1 2 3 4 5 6 Vrijeme izvršavanja n for i = 1 to n do for j = 1 to n do a[i,j] = 0; swap(a[j], a[j-1]); a[i,i] = 1; 1 2 3 4 5 6 𝑇 𝑛 =𝑛·𝑛 1+1 +𝑛·1 =2 𝑛 2 +𝑛 𝑇 𝑛 ≈ 𝑛 2 Strukture podataka i algoritmi
9
Primjer 2 – Vrijeme izvršavanja algoritma
Red 1 2 3 4 5 6 Vrijeme izvršavanja n for i = 1 to n do for j = 1 to n do if (i == j) then a[i,j] = 1; else a[i,j] = 0; 1 2 3 4 5 6 𝑇 𝑛 =𝑛·𝑛 1+1 =2 𝑛 2 𝑇 𝑛 ≈ 𝑛 2 Strukture podataka i algoritmi
10
Tipične funkcije vremena izvršavanja
Funkcija Neformalno ime 1 konstantna funkcija log 𝑛 logaritamska funkcija 𝑛 linearna funkcija 𝑛 log 𝑛 linearno-logaritamska funkcija 𝑛2 kvadratna funkcija 𝑛3 kubna funkcija 2n eksponencijalna funkcija Brzina izvršavanja algoritma za veliko n Brzina rasta funkcije za veliko n Strukture podataka i algoritmi
11
Tipične funkcije vremena izvršavanja
Strukture podataka i algoritmi
12
Asimptotska notacija Primjer: 𝑇(𝑛) za 4 algoritma 𝐴1, 𝐴2, 𝐴3, 𝐴4 𝐴1 ∶
□ 𝐴1 ∶ 𝐴2 ∶ 𝐴3 ∶ 𝐴4 ∶ 𝑇1(𝑛) = 2𝑛2 + 𝑛 − 1 𝑇2(𝑛) = 2𝑛 + 3 𝑇3(𝑛) = log 𝑛 𝑇4(𝑛) = 2𝑛 + 𝑛3 − 100 Strukture podataka i algoritmi
13
Asimptotska notacija Interesuje nas 𝑇(𝑛) za velike vrijednosti 𝑛 □
Strukture podataka i algoritmi
14
Asimptotska notacija Interesuje nas 𝑇(𝑛) za velike vrijednosti 𝑛
□ Interesuje nas 𝑇(𝑛) za velike vrijednosti 𝑛 𝑇1(𝑛) = 2𝑛2 + 𝑛 − 1 𝑇2(𝑛) = 2𝑛 + 3 𝑇3(𝑛) = log 𝑛 𝑇4(𝑛) = 2𝑛 + 𝑛3 − 100 ≈ 𝑛2 ≈ 𝑛 ≈ log 𝑛 ≈ 2𝑛 Strukture podataka i algoritmi
15
𝑛2 2𝑛 280 s 2980 s Asimptotska notacija 1 osnovna operacija ≈ 1 𝜇𝑠
□ 𝑛2 2𝑛 𝑛 log 𝑛 𝑛 10 1 𝜇𝑠 10 𝜇𝑠 100 𝜇𝑠 100 2 𝜇𝑠 10 𝑚𝑠 1000 3 𝜇𝑠 1 𝑚𝑠 1 𝑠 1 𝑚𝑠 280 s 2980 s Strukture podataka i algoritmi
16
Funkcije vremena izvršavanja
Algoritme međusobno upoređujemo prema njihovim funkcijama asimptotskog vremena izvršavanja Što je funkcija „manja“ algoritam je brži tj. bolji. Kod složenijih funkcija nije uvijek jasno koja je manja. Asimptotska notacija omogućava da se na precizan način uvede relativni poredak za funkcije: - O-zapis, - Ω-zapis, - θ-zapis, - o-zapis. Strukture podataka i algoritmi
17
Asimptotska notacija Primjer: 𝑇(𝑛) za 4 algoritma 𝐴1, 𝐴2, 𝐴3, 𝐴4
□ Primjer: 𝑇(𝑛) za 4 algoritma 𝐴1, 𝐴2, 𝐴3, 𝐴4 𝑇1(𝑛) = 2𝑛2 + 𝑛 − 1 𝑇2(𝑛) = 2𝑛 + 3 𝑇3(𝑛) = log 𝑛 𝑇4(𝑛) = 2𝑛 + 𝑛3 − 100 = 𝑂(𝑛2) = 𝑂(𝑛) = 𝑂(log 𝑛) = 𝑂(2𝑛) Strukture podataka i algoritmi
18
Asimptotska notacija Asimptotska notacija Intuitivno značenje
𝑓(𝑛) = 𝑂(𝑔(𝑛)) 𝑓 ”≤” 𝑔 𝑓(𝑛) = Ω(𝑔(𝑛)) 𝑓 ”≥” 𝑔 𝑓(𝑛) = Θ(𝑔(𝑛)) 𝑓 ”≈” 𝑔 𝑓(𝑛) = 𝑜(𝑔(𝑛)) 𝑓 ”≪” 𝑔 Strukture podataka i algoritmi
19
Asimptotska notacija Veliko-O
𝑓(𝑛) = 𝑂(𝑔(𝑛)) ako ∃𝑐, 𝑛O, ∀𝑛 ≥ 𝑛O, 𝑓(𝑛) ≤ 𝑐 ⋅ 𝑔(𝑛) □ 𝑔(𝑛) 𝑓(𝑛) 𝑛0 𝑛 Strukture podataka i algoritmi
20
Asimptotska notacija Primjer: za bubble-sort 𝑇(𝑛) = 𝑛2 − 𝑛 + 1
𝑛2 − 𝑛 + 1 ≤ 𝑛2 + 1 ≤ 𝑛2 + 𝑛2 = 2𝑛2 □ ⇒ 𝑛2 − 𝑛 + 1 ≤ 2𝑛2 ⇒ 𝑇(𝑛) = 𝑂(𝑛2), 𝑛0 = 1, 𝑐 = 2 Strukture podataka i algoritmi
21
Asimptotska notacija Dominantan term je najvažniji: 𝑛2 − 𝑛 + 1 = 𝑂(𝑛2)
Konstantni faktori nisu važni: 2𝑛2 = 𝑂(𝑛2) Pravilo zbira: 𝑂(𝑓(𝑛) + 𝑔(𝑛)) = 𝑂(𝑓(𝑛)) + 𝑂(𝑔(𝑛)) Pravilo proizvoda: 𝑂(𝑓(𝑛) ⋅ 𝑔(𝑛)) = 𝑂(𝑓(𝑛)) ⋅ 𝑂(𝑔(𝑛)) □ □ □ □ Strukture podataka i algoritmi
22
Asimptotska notacija Veliko-Omega Veliko-Teta Malo-o
𝑓(𝑛) = Ω(𝑔(𝑛)) ako ∃𝑐, 𝑛O, ∀𝑛 ≥ 𝑛O, 𝑓(𝑛) ≥ 𝑐 ⋅ 𝑔(𝑛) □ Veliko-Teta 𝑓(𝑛) = Θ(𝑔(𝑛)) ako 𝑓(𝑛) = 𝑂(𝑔(𝑛)), 𝑓(𝑛) = Ω(𝑔(𝑛)) □ Malo-o 𝑓(𝑛) = 𝑜(𝑔(𝑛)) ako lim 𝑓(𝑛) = 0 □ n→œ 𝑔(𝑛) Strukture podataka i algoritmi
23
Asimptotska notacija 𝑛→∞ 𝑔(𝑛) 𝑛→∞ 𝑔(𝑛) 𝑛→∞ 𝑔(𝑛)
□ Pravilo limesa lim 𝑓(𝑛) = 𝑐 > 0 ⇒ 𝑓(𝑛) = Θ(𝑔(𝑛)) 𝑛→∞ 𝑔(𝑛) lim 𝑓(𝑛) = 𝑐 ≥ 0 ⇒ 𝑓(𝑛) = 𝑂(𝑔(𝑛)) 𝑛→∞ 𝑔(𝑛) lim 𝑓(𝑛) ≠0 ⇒ 𝑓(𝑛) = Ω(𝑔(𝑛)) 𝑛→∞ 𝑔(𝑛) Strukture podataka i algoritmi
24
Zadatak 1 – Asimptotsko vrijeme izvršavanja algoritma
if (x == 0) then for i = 1 to n do a[i] = i; 1 2 3 Red 1 2 3 Vrijeme izvršavanja n 𝑇 𝑛 =1+𝑛 𝑇 𝑛 ≈𝑛 Strukture podataka i algoritmi
25
Zadatak 2 – Asimptotsko vrijeme izvršavanja algoritma
do a[i] = b[i] + c[i]; i = i + 1; while (i != n); 1 2 3 4 5 Red 1 2 3 4 5 Vrijeme izvršavanja n-1 𝑇 𝑛 =1+(𝑛−1) 1+1 =2𝑛−1 𝑇 𝑛 ≈𝑛 Strukture podataka i algoritmi
26
Zadatak 3 – Asimptotsko vrijeme izvršavanja algoritma
Red 1 2 3 4 5 6 7 Vrijeme izvršavanja n if (x == 0) then for i = 1 to n do for j = 1 to n do a[i,j] = 0; else a[i,i] = 1; 1 2 3 4 5 6 7 𝑇 𝑛 =1+𝑛·𝑛·1 =1+ 𝑛 2 𝑇 𝑛 ≈ 𝑛 2 Strukture podataka i algoritmi
27
Zadatak 4 – Asimptotsko vrijeme izvršavanja algoritma
Red 1 2 3 4 5 Vrijeme izvršavanja n ∑j j=1 ∑k k=1 for i = 1 to n do for j = 1 to n do for k = 1 to j do if (i == j) then a[k,k] = 0; 1 2 3 4 5 𝑇 𝑛 =𝑛 𝑗=1 𝑛 𝑗·1 + 𝑘=1 𝑛 𝑘= =𝑛· 𝑛(𝑛+1) 2 + 𝑛(𝑛+1) 2 𝑇 𝑛 = 𝑛 𝑛 𝑇 𝑛 ≈ 𝑛 3 Strukture podataka i algoritmi
28
Zaključak Određivanje vremena izvršavanja algoritma – brojanje jediničnih instrukcija Analizu algoritama težimo da pojednostavimo što više možemo i tražimo samo red veličine funkcije vremena izvršavanja algoritma za velike vrijednosti njenog argumenta - asimptotsko vrijeme izvršavanja Algoritme međusobno upoređujemo prema njihovim funkcijama asimptotskog vremena izvršavanja - što je funkcija „manja“ algoritam je brži tj. bolji. Asimptotska notacija: O-zapis, Ω-zapis, θ-zapis, o- zapis. Strukture podataka i algoritmi
29
Hvala na pažnji!
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.