Analiza algoritma za automatsko odre ivanje perioda mišićne ...
Analiza Slozenosti Algoritma
-
Upload
ivan-ivanic -
Category
Documents
-
view
14 -
download
6
description
Transcript of Analiza Slozenosti Algoritma
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi 2011/2012
STRUKTURE PODATAKA I ALGORITMI
analiza složenos6 algoritma
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• ideja algoritma je fundamentalna za programirnje
• riječ algoritam izvedena je iz riječi algorism koja dolazi od la6niziranog imena poznatog perzijskog matema6čara koji je živio u 9. stoljeću a zvao se Abu Abd Allah Muhammad ibn Musa al-‐Khwarizmi
• doslovni prijevod bi bio: “otac Abdulaha, Muhamed, sin Muse, iz Khwarizma”
• Khwarizm je staro ime danas poznatojeg Aralskog mora u središnjoj aziji.
• ovaj mateam6čar zaslužan je za izum algebre i uvođenje jednadžbi u matema6ku
2
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• u pedese6m godinama prošlog stoljeća, riječ algoritam je bila gotovo jednoznačno povezana s Euklidovim algoritmom za pronalazak najvećeg zajedničkog djelitelja dvaju brojeva.
• Euklidov (E) algoritam: “Za dva prirodna broja m i n, odredi njihov najveći zajednički djelitelj tj. najveći prirodni broj koji istovremeno dijeli i m i n”
1. [pronađi ostatak] -‐ Ako je n > m tada ih zamijeni. Neka je r ostatak pri dijeljenju m sa n. Moguće vrijednos6 od r su 0, 1, 2, ... , n-‐1.
2. [je li ostatak 0?] -‐ Ako je r = 0 algoritam se završava, a rješenje je broj n.
3. [reduciraj] -‐ Postavi prvo m na n, a potom n na r. Vra6 se na korak 1.
• Redoslijed u 3. koraku je iznimno bitan. Zašto?
• Provjerimo za proizvoljne brojeve m i n.
3
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Algoritam se može iskaza6 (pseudo)kodom ali i dijagramom toka.
4
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Često se kaže da je značenje riječi algoritam istovjetno značenju riječi recept, proces, metoda, tehnika, procedura, ruAna i sl.
• Konotacija je ipak malo drugačija.
• Osim što algoritam predstavlja konačan skup pravila koja se izvode u određenom slijedu s ciljem rješavanja nekog problema, algoritam ima pet važnih osobina:
-‐ Konačnost
-‐ Definiranost
-‐ Ulaz
-‐ Izlaz
-‐ Učinkovitost
5
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Učinkovitost
-‐ algoritam se uvijek mora završi6 nakon konačnog broja koraka.
-‐ Euklidov algoritam zadovoljava ovaj uvjet
‣ nakon 1. koraka, vrijednost od r je manja od n‣ ako r nije 0, budući da će u 3. koraku n poprimi6 tu vrijednost, u ponovnom 1. koraku će n bi6 manji
‣ ovaj padajući niz prirodnih brojeva (n1, n2, n3) se mora kad tad prekinu6 tj. kad tad će r bi6 0‣ to znači da će se nakon konačno mnogo koraka pronaći djelitelj.
6
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Definiranost
-‐ svaki korak algoritma mora bi6 precizno definiran, a sve radnje koje se provode moraju bi6 jednoznačne za svaki mogući slučaj
-‐ Euklidov algoritam zadovoljava ovaj uvjet
‣ podrazumijeva se da je onome tko provodi algoritam jasno što to znači podijeli6 prirodan broj drugim prirodnim brojem.
‣ isto tako, potrebno je da su 6 brojevi zaista prirodni brojevi‣ ovo je u početnom koraku svakako is6na jer algoritam primjenjujemo na prirodne brojeve, a nakon 1. koraka r je nenega6van cijeli broj koji mora bi6 prirodan ako će bi6 3. koraka.
7
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Ulaz
-‐ Algoritam mora ima6 ulazne podatke
-‐ Euklidov algoritam zadovoljava ovaj uvjet
‣ brojevi m i n su dani od strane korisnika
8
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Ulaz
-‐ Algoritam mora ima6 ulazne podatke
-‐ Euklidov algoritam zadovoljava ovaj uvjet
‣ brojevi m i n su dani od strane korisnika
• Izlaz
-‐ Algoritam mora ima6 jedan ili više izlaznih podataka, usko povezanih s ulaznim podacima
-‐ Euklidov algoritam zadovoljava ovaj uvjet
‣ broj n iz 2. koraka je najveći zajednički djelitelj početnih brojeva m i n‣ ovo je lako provjeri6 budući da je prema Lemi o dijeljenju m = q*n + r ‣ kako je za ulaz u 2. korak nužno da r bude jednak 0, tada je n očito djelitelj od m.
9
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Učinkovitost
-‐ Algoritam mora bi6 učinkovit, i to u smislu da njegove radnje moraju bi6 dovoljno jednostavne da ih netko, u konačno mnogo vremena, može napravi6 koristeći olovku i papir.
-‐ Euklidov algoritam zadovoljava ovaj uvjet
‣ podrazumijevane operacije jesu dijeljenje i oduzimanje prirodnih brojeva što je sasvim moguće izves6 na papiru
‣ da se radi o dijeljenju realnih brojeva to ne bi bilo moguće
10
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Usporedimo algoritam i recept
• Recept uglavnom posjeduje
-‐ konačnost (mada voda nikad neće uzavrije6 pukim gledanjem)
-‐ ulaz (jaja, brašno, ...)
-‐ izlaz (večera, kolač,...)
• Nedostaje mu definiranost
-‐ dodajte prstohvat soli
‣ prstohvat je dobro definiran pojam, kao i sol, ali nisu svi prs6 is6, nit je sva sol ista‣ gdje doda6 tu sol? na vrh? na dno? sa strane?
-‐ nježno promiješajte dok smjesa ne bude izmrvljena
-‐ zagrijte mlijeko u malom lončiću
11
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Svojstvo konačnos6 u praksi i nije toliko primjereno.
• “Na cijeni” su algoritmi s razumno mnogo koraka
-‐ algoritam koji određuje hoće li bijeli uvijek pobijedi6 crnog u šahu ako ne napravi nijednu pogrešku se može završi6 u konačno mnogo koraka, ali broj 6h koraka je toliko velik da ga možda nećemo doseći za našeg života.
• Potrebni su nam algoritmi koji su dobri ma šta god to značilo
-‐ koliko puta se svaki korak izvršio
-‐ prilagodba algoritma na različita računala
-‐ jednostavnost
-‐ elegancija
-‐ ...
• Ovo vodi nečem jako zanimljivom -‐ analizi algoritma
12
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ALGORITAM
• Promotrimo Euklidov algoritam s ovog stajališta
• Ako se zapitamo: “Pod pretpostavkom da je vrijednost broja n poznata, dok m može poprimi6 bilo koju vrijednost iz skupa prirodnih brojeva, koliki je prosječni broj Tn izvršavanja 1. koraka Euklidovog algoritma”
• Budući da razmatramo sve prirodne brojeve m (njih alef nula) potrebno je prvo provjeri6 postoji li smislen odgovor na ovo pitanje
• Očito je da je nakon prvog izvođenja 1. koraka Euklidovog algoritma bitan samo ostatak dijeljenja m sa n, tako da je za pronaći Tn dovoljno
-‐ proves6 algoritam za m = 1, m = 2, ..., m = n
-‐ pobroji6 koliko puta se izvršio 1. korak
-‐ podijeli6 taj broj s n
• Sada je važno odredi6 prirodu tog broja Tn odnosno izrazi6 ga preko n
13
lnn12 ln2π 2
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Algoritam M: Za dani niz brojeva x[1], x[2], ... , x[n] odredi m i j takve da vrijedi m = x[j] koji je maksimalni element tog niza, pri čemu je j najveći indeks koji zadovoljava ovaj uvjet.
M1 [Inicijaliziraj] j = n, k = n-‐1, m = x[n]
M2 [Provjera] ako je k = 0 algoritam završava
M3 [Usporedba] ako je x[k] <= m idi na M5
M4 [Promijeni m] j = k, m = x[k]
M5 [Smanji k] k = k -‐ 1 i idi na M2
14
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Brojevi na strelicama označavaju koliko puta se ide 6m putem
• Algoritam M zah6jeva fiksnu količinu memorije, tako da ćemo analizira6 samo vrijeme potrebno za njegovo izvršavanje.
• U tu svrhu pobrojit ćemo koliko puta će se svaki od koraka izvrši6
-‐ M1 = 1
-‐ M2 = n
-‐ M3 = n-‐1
-‐ M4 = A
-‐ M5 = n-‐1
15
ovdje poznajemo sve veličine osim ovog čudnovatog broja A
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Analiza algoritma se uglavnom sastoji od pronalaska
-‐ minimalne vrijednos6 od A (za op6miste)
-‐ maksimalne vrijednos6 od A (za pesimiste)
-‐ prosječne vrijednos6 od A (za one koji vole vjerojatnost)
-‐ standardnu devijaciju od A (kvan6ta6vna indikacija koliko blizu prosjeka očekujemo da će A bi6)
• Minimalna vrijednost od A je 0 -‐ za slučaj da je
• Maksimalna vrijednost od A je n-‐1 -‐ za slučaj da je
16
x n[ ] = max1≤k≤n
x k[ ]
x 1[ ] > x 2[ ] > > x n[ ]
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Dakle prosječna vrijednost leži negdje između 0 i n-‐1
• Za odredi6 ovo, potrebno je prvo definira6 što se točno podrazumijeva pod prosjek, a za dobro definira6 prosjek potrebno je napravi6 određene pretpostavke o ulaznim podacima.
-‐ pretpostavimo da su svi elemen6 x[k] međusobno različi6
-‐ pretpostavimo da je svaka od n! permutacija ovih elemenata jednako vjerojatna
• Učinkovitost algoritma M ne ovisi o preciznim vrijednos6ma x[k] već o njihovom međusobnom odnosu.
17
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Primjerice, za n = 3, držimo da je svaki od 6 odnosa jednako vjerojatan:
• Prosječna vrijednost od A, kada je n = 3 ispada (0+1+0+1+1+2)/6 = 5/6
18
x 1[ ] < x 2[ ] < x 3[ ]x 1[ ] < x 3[ ] < x 2[ ]x 2[ ] < x 1[ ] < x 3[ ]x 2[ ] < x 3[ ] < x 1[ ]x 3[ ] < x 1[ ] < x 2[ ]x 3[ ] < x 2[ ] < x 1[ ]
Odnos A0
1
0
1
1
2
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Vjerojatnost da A ima vrijednost k će bi6
• Iz tablice je vidljivo da je
• Prosječna vrijednost se definira kao
19
An = kpnkk∑
pnk =broj permutacija od n objekata za koje je A = k
n!
p30 =13, p31 =
12, p32 =
16
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ANALIZA ALGORITMA
• Varijanca Vn se definira kao prosječna vrijednost od
• Konačno, standardna devijacija je definirana s
20
σ n = Vn
A − An( )2
Vn = k − An( )2 pnkk∑ = k2 pnk − 2An kpnk
k∑ + An
2 pnk =k∑
k∑
= k2 pnk − 2AnAn + An2 =
k∑ k2 pnk − An
2
k∑
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• Često znamo iskaza6 neku veličinu aproksima6vno a ne precizno, a to činimo kako bi ju usporedili s nekom drugom.
• To je zgodno jer nam često nije potrebno zna6 precizno kakve su te veličine već samo kojeg su reda
• 1894. godine u svom djelu AnalyAsche Zahlentheorie, matema6čar Paul Bachman je uveo vrlo zgodan zapis za aproksimacije.
• Radi se o O-‐notaciji a koja omogućuje da se znak jednakos6 zamjeni znakom ≈
• Općenito govoreći, zapis se može koris66 kada god je funkcija prirodnog broja n.
-‐ predstavlja veličinu koja nije eksplicitno poznata ali svakako nije prevelika.
21
O f n( )( ) f n( )
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• Svaki put kada se pojavi to znači
-‐ da postoje pozi6vne konstante M i n0 takve da broj xn koji je predstavljen izrazom
zadovoljava uvjet za sve prirodne brojeve
-‐ nigdje se te konstante ne preciziraju, budući da su za različite za svaku upotrebu
-‐ samo se podrazumijeva da postoje
• Primjerice, znamo da je
• Odavde slijedi da možemo reći kako je
22
O f n( )( )O f n( )( )
xn ≤ M f n( ) n ≥ n0O f n( )( )
12 + 22 + ...+ n2 = 13n3 + 1
2n2 + 1
6n
12 + 22 + ...+ n2 = O n4( )12 + 22 + ...+ n2 = O n3( )12 + 22 + ...+ n2 = 1
3n3 +O n2( )
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• O-‐notacija je od velike koris6 pri radu s aproksimacijama budući da na vrlo sažet način opisuje pojavu koja se često ponavlja te po6skuje detalje koji su često nevažni.
• Nadalje, račun s O-‐notacijom je prilično jednostavan, s 6m da valja reći kako se radi isključivo o jednosmjernim jednadžbama
• Npr.
• Krivo bi bilo tvrdi6 da je
• Imate li ideju zašto?
23
12n2 + n = O n2( )
O n2( )= 12 n2 + n
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• Evo i nekoliko jednostavnih pravila za rad s O-‐notacijom
24
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• Pri analizi algoritma, često je važno kaza6 kako se algoritam ponaša pri najgorem slučaju, odnosno pri slučaju kada je potrebno izvrši6 najviše koraka.
• O-‐notacija nam tu uvelike pomaže, budući da se njome iskazuje upravo to
-‐ broj koraka algoritma pri najgorem slučaju
• Valja naglasi6 da kako je sama O-‐notacija aproksima6vnog 6pa, tako će dva algoritma koja za svoje izvršenje nad n ulaznih podataka imaju različitu složenost, možda ima6 istu O-‐notaciju
25
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• Promotrimo funkcije f i g koje za n ulaznih parametara opisuje potreban broj koraka za izvršenje nekog algoritma
• Kako se n povećava, to će konstante posta6 zanemarive a samo najbrže rastući član će bi6 vrijedan spomena
26
f (n)= n2 +1.3n lnn + 4n +125 g(n)= n2
© Ivan Bilobrk -‐ Odjel za Informa6ku -‐ PMFSTStrukture podataka i algoritmi / 27
ASIMPTOTSKI PRIKAZ
• Važno je zapam66
-‐ potencije od n rastu brže od logaritma od n
-‐ veća potencija znači brži rast
-‐ eksponencijalne funkcije rastu brže od potencija od n
-‐ faktorijeli rastu brže od eksponencijalnih funkcija
27