Strukture podataka i algoritmi 2. DIZAJN I ANALIZA ALGORITAMA

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
KRUŽNICA I KRUG VJEŽBA ZA ISPIT ZNANJA.
Advertisements

MATEMATIKA NA ŠKOLSKOM IGRALIŠTU
PTP – Vježba za 2. kolokvij Odabir vrste i redoslijeda operacija
INDINŽ Z – Vježba 2 Odabir vrste i redoslijeda operacija
KOMBINATORIKA Vežbe 1 1.
AOS
PROIZVODNJA.
BROJ π Izradio: Tomislav Svalina, 7. razred, šk. god /2016.
NASLOV TEME: OPTICKE OSOBINE KRIVIH DRUGOG REDA
Digitalna logika i minimizacija logičkih funkcija
Čvrstih tela i tečnosti
SNAGA U TROFAZNOM SUSTAVU I RJEŠAVANJE ZADATAKA
Oblikovanje algoritama
RAD I SNAGA ELEKTRIČNE STRUJE
Komponente digitalnih sistema
VODA U TLU.
VREMENSKI ODZIVI SISTEMA
Sortiranje podataka.
Aminokiseline, peptidi, proteini
Kako određujemo gustoću
Centralna procesorska jedinica
Rekurzija.
Osnove statistike Kombinatorika i vjerojatnost
SPECIJALNE ELEKTRIČNE INSTALACIJE
Kliknite ovde za unos prikaza časa u Word dokumentu!
Redna veza otpornika, kalema i kondenzatora
Vijetove formule. Rastavljanje kvadratnog trinoma na linearne činioce
TROUGΔO.
JEDNAČINA PRAVE Begzada Kišić.
Obrada slika dokumenta
Rezultati vežbe VII Test sa patuljastim mutantima graška
Redovnica – Gospodinova suradnica
jedan zanimljiv zadatak
II. MEĐUDJELOVANJE TIJELA
KRETANJE TELA U SREDINI SA PRIGUŠENJEM – PROBLEM KIŠNE KAPI
MATEMATIČKI MODELI EFIKASNOSTI
Uredjeni skupovi i mreže
FORMULE SUMIRANJE.
PRORAČUN POUZDANOSTI DISTRIBUTIVNIH MREŽA
Dimenziona analiza i teorija sličnosti
Strujanje i zakon održanja energije
Izradila: Ana-Felicia Barbarić
Analiza deponovane energije kosmičkih miona u NaI(Tl) detektoru
Transformacija vodnog vala
SREDIŠNJI I OBODNI KUT.
ARHIMEDOVA PRIČA O KRUNI
10. PLAN POMAKA I METODA SUPERPOZICIJE
Booleova (logička) algebra
Brodska elektrotehnika i elektronika // auditorne vježbe
Tehnološki proces izrade višetonskih negativa
Brodska elektrotehnika i elektronika // auditorne vježbe
STACIONARNO NEJEDNOLIKO TEČENJE U VODOTOCIMA
Deset zapovijedi – δεκα λογοι (Izl 34,28 Pnz 10,4)
Dan broja pi Ena Kuliš 1.e.
Geografska astronomija : ZADACI
POUZDANOST TEHNIČKIH SUSTAVA
ANALIZA GREŠAKAU MJERENJU UPOREDNA ANALIZA REZULTATA Ana Đačić 62/07
DISPERZIJA ( raspršenje, rasap )
Unutarnja energija Matej Vugrinec 7.d.
N. Zorić1*, A. Šantić1, V. Ličina1, D. Gracin1
Pirotehnika MOLIMO oprez
6. AKSIJALNO OPTEREĆENJE PRIZMATIČKIH ŠTAPOVA
doc. dr. sc. Martina Briš Alić
Tomislav Krišto POSLOVNA STATISTIKA Tomislav Krišto
Kratki elementi opterećeni centričnom tlačnom silom
Vjera u Bibliji i svećenik danas
Prvak apostol i njegov Učitelj na Tiberijadskom moru Mt 14,24-33
Balanced scorecard slide 1
DAN BROJA π.
Tehnička kultura 8, M.Cvijetinović i S. Ljubović
Μεταγράφημα παρουσίασης:

Strukture podataka i algoritmi 2. DIZAJN I ANALIZA ALGORITAMA

Dizajn i analiza algoritama Koraci za dobijanje dobrog algoritma Dizajn algoritma Provjera tačnosti algoritma Analiza algoritma Određivanje vremena izvršavanja algoritma Strukture podataka i algoritmi (30)

Algoritam Algoritmi ulaz (instanca problema) izlaz (rješenje instance) algoritamski koraci izlaz (rješenje instance) Strukture podataka i algoritmi (30)

Algoritmi Dizajn algoritma: pisanje niza naredbi koje sačinjavaju algoritam za rješenje datog problema Analiza algoritma: određivanje koliko algoritam zauzima resurse računara (vrijeme, memoriju, …) □ □ Strukture podataka i algoritmi (30)

Koraci za dobijanje dobrog algoritma Eliminisati sve nevažne i remetilačke detalje praktičnog problema koji se rješava – problem predstaviti preko prostih matematičkih pojmova (skupovi, funkcije, grafovi, ...) Napisati algoritam i dokazati njegovu ispravnost Sprovesti analizu algoritma da bi se ustanovila njegova efikasnost Strukture podataka i algoritmi (30)

Dizajn algoritama Dobri algoritmi Korektnost (tačnost) i efikasnost Jednostavnost i jasnoća Algoritamske paradigme: rekurzivni algoritmi, pohlepni algoritmi, dinamičko programiranje, randomizirani algoritmi, … □ Strukture podataka i algoritmi (30)

Provjera tačnosti algoritma Često se svodi na provjeru ispravnosti petlji u algoritmu Provjera izlaznog uslova – da li se izvršavanje petlje sigurno završava Provjera invarijante petlje – da li je ona tačna nakon završetka rada cijele petlje Strukture podataka i algoritmi (30)

Provjera invarijante petlje Invarijanta petlje je formalni iskaz koji je tačan prije svake iteracije petlje Invarijanta petlje je tačna prije prve iteracije petlje Ako je invarijanta petlje tačna prije neke iteracije petlje, ona ostaje tačna i nakon izvršavanja te iteracije tj. prije izvršavanja sledeće iteracije Strukture podataka i algoritmi (30)

Primjer – Najveći zajednički djelilac // Ulaz: pozitivni cijeli brojevi x i y // Izlaz: nzd(x,y) algorithm gcd(x, y) d = min{x,y} while ((x % d != 0) || (y % d != 0)) do d = d – 1; return d; Invarijanta while petlje je uslov d≥nzd(x,y) Strukture podataka i algoritmi (30)

Analiza algoritama Ocjena efikasnosti algoritma na osnovu kriterijuma iskorišćenosti računarskih resursa Dragocjeni računarski resursi Vrijeme Memorija Mrežni saobraćaj □ □ Strukture podataka i algoritmi (30)

Određivanje vremena izvršavanja algoritma □ Empirijski Izmjeri se stvarno vrijeme rada odgovarajućeg programa na računaru Lako se izvodi i tačni rezultati Može se primjeniti samo na program napisan u cjelosti Važi samo za poseban slučaj ulaznih podataka i za jedan konkretan računar pod određenim programskim režimom rada Analitički Teorijska analiza rada algoritma ili prebrojavanje jediničnih instrukcija koje se izvršavaju tokom rada algoritma □ Strukture podataka i algoritmi (30)

Analitičko određivanje vremena izvršavanja algoritma Analizirati rad algoritma korak po korak → zaključak vrijeme njegovog izvršavanja Ne dobija se apsolutno precizna ocjena vremena izvršavanja Ocjena je dovoljno dobra da se stekne opšta slika o efikasnosti algoritma Strukture podataka i algoritmi (30)

Analitičko određivanje vremena izvršavanja algoritma Vrijeme izvršavanja algoritma je funkcija veličine ulaznih podataka Za n ulaznih podataka definiše se funkcija T(n) koja daje broj vremenskih jedinica koliko traje izvršavanje algoritma Pretpostavlja se da se sve osnovne instrukcije algoritma izvršavaju za jednu vremensku jedinicu i uzima se najgori slučaj ulaznih podataka (najveće n) Jedinična instrukcija je osnovna računska operacija čije vrijeme izvršavanja je konstantno (ms, μs, ...) Strukture podataka i algoritmi (30)

Jedinična instrukcija Jedinična instrukcija je osnovna računska operacija čije vrijeme izvršavanja je konstantno (ms, μs, ...) Tipične jedinične instrukcije algoritama su: - dodjela vrijednosti promjenljivoj - poređenje vrijednosti dvije promjenljive - aritmetičke operacije - logičke operacije - ulazno/izlazne operacije Strukture podataka i algoritmi (30)

Vremenska složenost u najgorem slučaju Vremenska složenost u najgorem slučaju T(n) je maksimalno vrijeme izvršavanja algoritma za sve ulaze veličine n – vrijeme izvršavanja ili vremenska složenost algoritma Najgori slučaj izvršavanja algoritma je onaj u kojem se izvršava najveći broj jediničnih instrukcija Najgori slučaj određuje gornju granicu vremena izvršavanja za svaki skup ulaznih podataka date veličine Strukture podataka i algoritmi (30)

Vremenska složenost osnovnih algoritamskih konstrukcija Vrijeme izvršavanja Naredba serije S: P; Q; TS = TP + TQ Naredba grananja S: if C then P; else Q; TS = TC + max{TP, TQ} Naredba petlje S: while C do P; do P; while C; for i=j to k do P; TS = n · TP n – najveći broj iteracija petlje Strukture podataka i algoritmi (30)

Vrijeme izvršavanja ugnježdenih petlji for i = 1 to n do // izvršava se n puta (u najgorem slučaju) for j = 1 to n do // izvršava se n puta (u najgorem slučaju) if (i < j) then // izvršava se jednom (jedinična instrukcija) swap (a[i, j], a[j, i]); T(n) = n · n · (1 + 1) = 2n2 Strukture podataka i algoritmi (30)

Drugi pristupi za određivanje efikasnosti algoritma Probabilistička analiza prosječnog vremena izvršavanja algoritma – prosječno vrijeme izvršavanja algoritma je često mnogo teže odrediti nego vrijeme izvršavanja u najgorem slučaju Analiza randomiziranih (slučajnih) algoritama – određuje se očekivano vrijeme izvršavanja na osnovu slučajnih odluka tokom izvršavanja Analiza benčmark podataka – to su tipični ulazni podaci koji se smatraju reprezentativnim za sve podatke Strukture podataka i algoritmi (30)

Primjer 1 – najmanji element niza // Ulaz: niz a i njegov broj elemenata n // Izlaz: indeks najmanjeg elementa niza a algorithm min(a, n) m = a[1]; // najmanji element nađen do sada j = 1; // indeks najmanjeg elementa i = 2; while (i <= n) do // provjeriti sve ostale elemente niza 1 2 3 4 5 6 7 8 9 Red 1 2 3 4 567 8 9 Vrijeme izvršavanja n-1 if (m > a[i]) then // aktuelni element je manji od // privremeno najmanjeg do sada // zapamtiti taj manji element, // kao i njegov indeks m = a[i]; j = i; T(n) = 1 + 1 + 1 + (n-1)(3 + 1) + 1 = 4 + 4(n-1) T(n) = 4n i = i + 1; // preći na sledeći element niza return j; // vratiti indeks najmanjeg elementa Strukture podataka i algoritmi (30)

Primjer 2 – maksimalna suma podniza b1 = [1, 9, -6, -6, 7, -2] neprekidni podniz b2 = [0] neprekidni podniz b1 = [1, -6, -6, -2, -5] nije neprekidni podniz j Si,j = ai + ai+1 + .... + aj = ∑ak k=i M = max {0, max Si,j} 1≤i≤j≤n M = max Si,j Strukture podataka i algoritmi (30)

Primjer 2 – maksimalna suma podniza bi = max {Si,i, Si,i+1, ...., Si,n} = max Si,j j=i,...,n M = max {b1, b2, ..., bn } = max bi i=1,...,n Algoritam 1 – parcijalne maksimalne sume podnizova (bi) Algoritam 2 – maksimalna suma podniza (M) Strukture podataka i algoritmi (30)

Primjer 2 – parcijalna maksimalna suma podnizova // Ulaz: indeks i niza a dužine n // Izlaz: element bi = maxj=i,...,n Si,j niza b algorithm B(i, a, n) m = 0; // maksimalna suma podniza od pozicije i S = 0; // sume Si,j za j = i, ..., n for j = i to n do // izračunati Si,j za j = i, ..., n S = S + a[j]; // Si,j = Si,j-1 + aj 1 2 3 4 5 6 7 Red 1 2 3 4 56 7 Vrijeme izvršavanja n-i+1 if (m < S) then // nađena veća suma // ažurirati maksimalnu sumu m = S; T(n,i) = 1 + 1 + (n-i+1)(1 + 2) + 1 = 3 + 3(n-i+1) T(n,i) = 3(n-i+2) return m; // vratiti bi Strukture podataka i algoritmi (30)

Primjer 2 – maksimalna suma podniza // Ulaz: niz a i njegov broj elemenata n // Izlaz: maksimalna suma podniza M algorithm mcss(ia, n) for i = 1 to n do b[i] = B[i, a, n]; M = max (b, n); return M; Red 1 2 → TP 3 4 Vrijeme izvršavanja n·TP 3(n-i+2)+1 4n+1 1 2 3 4 𝑇 𝑛 = 𝑖=1 𝑛 3 𝑛−𝑖+2 +1 + 4𝑛+1 +1= =3 𝑖=1 𝑛 𝑛−𝑖 +7𝑛+4𝑛+2= =3 𝑛−1 𝑛 2 +11𝑛+2= 𝑇(𝑛)=1,5 𝑛 2 +9,5𝑛+2 Strukture podataka i algoritmi (30)

Zadatak 1 – odrediti vrijeme izvršavanja algoritma 2 3 if (x == 0) then for i = 1 to n do a[i] = i; Red 1 2 3 Vrijeme izvršavanja n T(n) = 1 + n·1 T(n) = 1 + n Strukture podataka i algoritmi (30)

Zadatak 2 – odrediti vrijeme izvršavanja algoritma 1 2 3 4 5 i = 1; do a[i] = b[i] + c[i]; i = i + 1; while (i != n); Red 1 2 5 3 4 Vrijeme izvršavanja n-1 T(n) = 1 + (n-1)(1 + 1) T(n) = 2n - 1 Strukture podataka i algoritmi (30)

Zadatak 3 – odrediti vrijeme izvršavanja algoritma 1 2 3 4 5 6 7 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; Red 1 2 3 4 5 6 7 Vrijeme izvršavanja n T(n) = 1 + max{(2, 3, 4), (6, 7)} = = 1 + max{n·n·1, n·1} T(n) = 1 + n2 Strukture podataka i algoritmi (30)

Zadatak 4 – odrediti vrijeme izvršavanja algoritma 1 2 3 4 5 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; Red 1 2 3 4 5 Vrijeme izvršavanja n ∑j j=1 ∑k k=1 𝑇 𝑛 =𝑛 𝑗=1 𝑛 𝑗·1 + 𝑘=1 𝑛 𝑘= =𝑛· 𝑛(𝑛+1) 2 + 𝑛(𝑛+1) 2 𝑇 𝑛 = 𝑛 𝑛+1 2 2 Strukture podataka i algoritmi (30)

Zaključak Dizajn algoritma: pisanje niza naredbi koje sačinjavaju algoritam za rješenje datog problema Analiza algoritma: određivanje koliko algoritam zauzima resurse računara (vrijeme, memoriju, …) Provjera tačnosti algoritma – provjera izlaznog uslova petlje i provjera invarijante petlje Analiza algoritma – ocjena efikasnosti algoritma na osnovu kriterijuma iskorišćenosti resursa računara (vrijeme, memorija) Strukture podataka i algoritmi (30)

Zaključak 1 Određivanje vremena izvršavanja algoritma – empirijski i analitički Analitičko određivanje vremena izvršavanja algoritma - Analizirati rad algoritma korak po korak → zaključak vrijeme njegovog izvršavanja Vrijeme izvršavanja algoritma je funkcija veličine ulaznih podataka - Vremenska složenost u najgorem slučaju T(n) Strukture podataka i algoritmi (30)

Hvala na pažnji! Strukture podataka i algoritmi (30)