Presentation is loading. Please wait.

Presentation is loading. Please wait.

Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA

Similar presentations


Presentation on theme: "Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA"— Presentation transcript:

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!


Download ppt "Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA"

Similar presentations


Ads by Google