Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

El Alfabeto Con Vocabulario
Click on each of us to hear our sounds.
Las Vocales En Espanol.
Japanese Writing Systems Part 1: HIRAGANA (HEE-RAH-GAH-NAH)
HIRAGANA by number of strokes Images from:
ma mu mi mo me pe pi pa pu po si sa so.
Sílabas con m,p,s tema 2. pe so ma si mu se.
MA. ME MI MO MU MÁ MÉ MÍ MÓ MŮ LA LE LI.
Programi zasnovani na prozorima
Uvod u programiranje - matematika – VI predavanje
Operativni sistemi.
Teorema o 4 boje(Four color theorem)
The Present Perfect Continuous Tense
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
Konveksni omotač (red O(n log (n)))
Komponente izbora i kontejnerske komponente
KREIRANJE OBJEKATA.
LAPLACEOVA TRANSFORMACIJA
Pristup podacima Izvještaji
Apstraktno Razmišljanje o Algoritmima
Element form Milena Kostadinović.
InputBox i naredba IF.
MessageBox.
KORELACIJSKA I REGRESIJSKA ANALIZA
Koordinatori: Doc.prim.dr.sc. Silvana Smojver-Ježek
predavanja v.as.mr. Samir Lemeš
(カックロ ) Ivo Ivanišević Ena Melvan
Pojmovi digitalnog zapisa
PROGRAMSKI JEZIK PASCAL
PRAĆENJE STATISTIKE POSEĆENOSTI WEB-PREZENTACIJE
32-bitni mikrokontroleri i primena - MS1BMP
AMM SISTEM Opseg PLC komunikacije 72kHz±1.2kHz
Herceg Novi - Igalo, maj godine
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
ELEKTRONIČKA POŠTA ( ) OTVARANJE RAČUNA.
Lazarus okruženje TIPOVI UNIT-a
Osnovni simboli jezika Pascal
FAKULTET KEMIJSKOG INŽENJERSTVA I TEHNOLOGIJE
Virtualizacija poslovnih procesa metodom „Swimlane“ dijagrama
Programiranje – Small Basic
posljednja faza razvoja podatkovnih komunikacija
Nizovi.
C++ WORKSHOP Šimec Tino - FOI.
SREĆA.
Skup instrukcija procesora
Autor: Marko Pletikosa Mentor: doc.dr.sc. Domagoj Jakobović
Naredbe u php-u.
Programski jezik C++ - Vježbe - 5. dio
Programski jezik Python
Lesson: Greetings/あいさつ
VAŽNOST ČITANJA U NIŽIM RAZREDIMA OSNOVNE ŠKOLE
Ljepota matematike Slijedi nekoliko zanimljivih jednakosti koje ukazuju na ljepotu matematike te povezanost matematike s Bogom koji je izvor svih čuda.
Kratkotrajne veze žena i muškaraca
HODITI U SVJETLU Odreći se svjetovnosti ADAPT it! Teaching Approach
Vježbanje.
Programiranje - Naredbe za kontrolu toka programa – 3. dio
Programski jezik C++ - Vježbe - 1. dio
Discipleship in Action
LimeSurvey Uvjetni prikaz pitanja Internetska istraživanja
STATISTIKA (STRUČNI STUDIJ) Korelacijska analiza Regresijska analiza.
Ljepota matematike Slijedi nekoliko zanimljivih jednakosti koje ukazuju na ljepotu matematike te povezanost matematike s Bogom koji je izvor svih čuda.
7. Baze podataka Postavke MS Accessa.
5/9/2019 2:05 AM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS.
Ponavljanje Pisana provjera
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Utvrđivanje kvalitete oblikovanih pričuva šteta – run off analiza
INTERPOLACIJA PO DIJELOVIMA POLINOMIMA
Kako zaštititi privatnost na facebooku
Presentation transcript:

Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA

Vrijeme izvršavanja algoritma Asimptotsko vrijeme izvršavanja Tipične funkcije za vremena izvršavanja algoritma Asimptotska notacija Strukture podataka i algoritmi

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

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

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

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

Primjer – Vremena izvršavanja 3 algoritma Računar obavlja 1 000 000 operacija u 1 s A1=2n A2=5n2 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

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

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

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

Tipične funkcije vremena izvršavanja Strukture podataka i algoritmi

Asimptotska notacija Primjer: 𝑇(𝑛) za 4 algoritma 𝐴1, 𝐴2, 𝐴3, 𝐴4 𝐴1 ∶ □ 𝐴1 ∶ 𝐴2 ∶ 𝐴3 ∶ 𝐴4 ∶ 𝑇1(𝑛) = 2𝑛2 + 𝑛 − 1 𝑇2(𝑛) = 2𝑛 + 3 𝑇3(𝑛) = 10 + 3 log 𝑛 𝑇4(𝑛) = 2𝑛 + 𝑛3 − 100 Strukture podataka i algoritmi

Asimptotska notacija Interesuje nas 𝑇(𝑛) za velike vrijednosti 𝑛 □ Strukture podataka i algoritmi

Asimptotska notacija Interesuje nas 𝑇(𝑛) za velike vrijednosti 𝑛 □ Interesuje nas 𝑇(𝑛) za velike vrijednosti 𝑛 𝑇1(𝑛) = 2𝑛2 + 𝑛 − 1 𝑇2(𝑛) = 2𝑛 + 3 𝑇3(𝑛) = 10 + 3 log 𝑛 𝑇4(𝑛) = 2𝑛 + 𝑛3 − 100 ≈ 𝑛2 ≈ 𝑛 ≈ log 𝑛 ≈ 2𝑛 Strukture podataka i algoritmi

𝑛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

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

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(𝑛) = 10 + 3 log 𝑛 𝑇4(𝑛) = 2𝑛 + 𝑛3 − 100 = 𝑂(𝑛2) = 𝑂(𝑛) = 𝑂(log 𝑛) = 𝑂(2𝑛) Strukture podataka i algoritmi

Asimptotska notacija Asimptotska notacija Intuitivno značenje 𝑓(𝑛) = 𝑂(𝑔(𝑛)) 𝑓 ”≤” 𝑔 𝑓(𝑛) = Ω(𝑔(𝑛)) 𝑓 ”≥” 𝑔 𝑓(𝑛) = Θ(𝑔(𝑛)) 𝑓 ”≈” 𝑔 𝑓(𝑛) = 𝑜(𝑔(𝑛)) 𝑓 ”≪” 𝑔 Strukture podataka i algoritmi

Asimptotska notacija Veliko-O 𝑓(𝑛) = 𝑂(𝑔(𝑛)) ako ∃𝑐, 𝑛O, ∀𝑛 ≥ 𝑛O, 𝑓(𝑛) ≤ 𝑐 ⋅ 𝑔(𝑛) □ 𝑔(𝑛) 𝑓(𝑛) 𝑛0 𝑛 Strukture podataka i algoritmi

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

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

Asimptotska notacija Veliko-Omega Veliko-Teta Malo-o 𝑓(𝑛) = Ω(𝑔(𝑛)) ako ∃𝑐, 𝑛O, ∀𝑛 ≥ 𝑛O, 𝑓(𝑛) ≥ 𝑐 ⋅ 𝑔(𝑛) □ Veliko-Teta 𝑓(𝑛) = Θ(𝑔(𝑛)) ako 𝑓(𝑛) = 𝑂(𝑔(𝑛)), 𝑓(𝑛) = Ω(𝑔(𝑛)) □ Malo-o 𝑓(𝑛) = 𝑜(𝑔(𝑛)) ako lim 𝑓(𝑛) = 0 □ n→œ 𝑔(𝑛) Strukture podataka i algoritmi

Asimptotska notacija 𝑛→∞ 𝑔(𝑛) 𝑛→∞ 𝑔(𝑛) 𝑛→∞ 𝑔(𝑛) □ Pravilo limesa lim 𝑓(𝑛) = 𝑐 > 0 ⇒ 𝑓(𝑛) = Θ(𝑔(𝑛)) 𝑛→∞ 𝑔(𝑛) lim 𝑓(𝑛) = 𝑐 ≥ 0 ⇒ 𝑓(𝑛) = 𝑂(𝑔(𝑛)) 𝑛→∞ 𝑔(𝑛) lim 𝑓(𝑛) ≠0 ⇒ 𝑓(𝑛) = Ω(𝑔(𝑛)) 𝑛→∞ 𝑔(𝑛) Strukture podataka i algoritmi

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

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

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

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 𝑇 𝑛 = 𝑛 𝑛+1 2 2 𝑇 𝑛 ≈ 𝑛 3 Strukture podataka i algoritmi

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

Hvala na pažnji!