35
Algoritmi i Algoritmi i strukture podataka strukture podataka Zaštićeno licencom http://creativecommons.org/licenses/by-nc-sa/2.5/hr/ Prof. dr. sc. Damir Kalpić Prof. dr. sc. Vedran Mornar Prof. dr. sc. Krešimir Fertalj Doc. dr. sc. Gordan Gledec Dr. sc. Zvonimir Vanjak Mr. sc. Boris Milašinović Ivica Botički, dipl. ing.

Algoritmi i strukture podataka Zaštićeno licencom

Embed Size (px)

Citation preview

Page 1: Algoritmi i strukture podataka Zaštićeno licencom

Algoritmi i strukture podatakaAlgoritmi i strukture podataka

Zaštićeno licencom http://creativecommons.org/licenses/by-nc-sa/2.5/hr/

Prof. dr. sc. Damir KalpićProf. dr. sc. Vedran MornarProf. dr. sc. Krešimir FertaljDoc. dr. sc. Gordan GledecDr. sc. Zvonimir VanjakMr. sc. Boris MilašinovićIvica Botički, dipl. ing.

Page 2: Algoritmi i strukture podataka Zaštićeno licencom

Creative CommonsCreative Commons

slobodno smijete:slobodno smijete: dijelitidijeliti — umnožavati, distribuirati i javnosti priopćavati djelo — umnožavati, distribuirati i javnosti priopćavati djelo remiksiratiremiksirati — prerađivati djelo — prerađivati djelo

pod sljedećim uvjetima:pod sljedećim uvjetima: imenovanjeimenovanje. Morate priznati i označiti autorstvo djela na način kako je . Morate priznati i označiti autorstvo djela na način kako je

specificirao autor ili davatelj licence (ali ne način koji bi sugerirao da Vi ili Vaše specificirao autor ili davatelj licence (ali ne način koji bi sugerirao da Vi ili Vaše korištenje njegova djela imate njegovu izravnu podršku). korištenje njegova djela imate njegovu izravnu podršku).

nekomercijalnonekomercijalno. Ovo djelo ne smijete koristiti u komercijalne svrhe. . Ovo djelo ne smijete koristiti u komercijalne svrhe. dijeli pod istim uvjetimadijeli pod istim uvjetima. Ako ovo djelo izmijenite, preoblikujete ili stvarate . Ako ovo djelo izmijenite, preoblikujete ili stvarate

koristeći ga, preradu možete distribuirati samo pod licencom koja je ista ili slična koristeći ga, preradu možete distribuirati samo pod licencom koja je ista ili slična ovoj. ovoj.

U slučaju daljnjeg korištenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog djela. Najbolji način da to učinite je linkom na ovu internetsku stranicu. Od svakog od gornjih uvjeta moguće je odstupiti, ako dobijete dopuštenje nositelja autorskog prava. Ništa u ovoj licenci ne narušava ili ograničava autorova moralna prava.

Tekst licencije preuzet je s http://creativecommons.org/.

Algoritmi i strukture podataka, FER, 2007/08. 2 / 35

Page 3: Algoritmi i strukture podataka Zaštićeno licencom

Složenost algoritamaSloženost algoritama

AlgoritmiAlgoritmiSloženost algoritamaSloženost algoritama

Page 4: Algoritmi i strukture podataka Zaštićeno licencom

Abu Ja'far Mohammed ibn Musa al KhowarizmiAbu Ja'far Mohammed ibn Musa al Khowarizmi

Abu Ja'far Mohammed ibn Abu Ja'far Mohammed ibn Musa al KhowarizmiMusa al Khowarizmi موسى بن محمد جعفر موسى أبو بن محمد جعفر أبو

الخوارزميالخوارزمي Muhamed, otac Jafarov, sin Muse Muhamed, otac Jafarov, sin Muse

iz Khwarizmaiz Khwarizma rođen u Khwarizmu, danas rođen u Khwarizmu, danas

Khiva, Uzbekistan, oko 780. g.Khiva, Uzbekistan, oko 780. g. umro u Bagdadu, oko 850. umro u Bagdadu, oko 850.

godine. godine. jedan od 10 najcjenjenijih jedan od 10 najcjenjenijih

matematičara svih vremenamatematičara svih vremenaAlgoritmi i strukture podataka, FER, 2007/08. 4 / 35

Page 5: Algoritmi i strukture podataka Zaštićeno licencom

Zasluge Zasluge al Khowarizmial Khowarizmijaja

potiče korištenje hindu-arapskih brojeva - uvodi nulupotiče korištenje hindu-arapskih brojeva - uvodi nulu u Bagdadu oko 825. godine napisao knjigu “Hidab al-jabr u Bagdadu oko 825. godine napisao knjigu “Hidab al-jabr

w'al-muqubala”w'al-muqubala” الجبر حساب في المختصر الجبر الكتاب حساب في المختصر الكتاب

والمقابلةوالمقابلة Znanost o prenošenju i poništenjuZnanost o prenošenju i poništenju jabr - prenošenje na suprotnu jabr - prenošenje na suprotnu

stranu jednadžbestranu jednadžbe– x - 2 = 12 x - 2 = 12 x = 12 + 2 x = 12 + 2

muqubala - poništenje jednakih izraza s lijeve i desne strane muqubala - poništenje jednakih izraza s lijeve i desne strane jednadžbejednadžbe

– x + y = y + 7 x + y = y + 7 x = 7 x = 7 al-jabr -> algebraal-jabr -> algebra nematematički (maursko porijeklo): nematematički (maursko porijeklo): algebrista algebrista namještač kostiju namještač kostiju

Algoritmi i strukture podataka, FER, 2007/08. 5 / 35

Page 6: Algoritmi i strukture podataka Zaštićeno licencom

Od al Od al KhowarizmiKhowarizmija do algoritma...ja do algoritma...

vjerovao da se bilo koji matematički problem može raščlaniti na vjerovao da se bilo koji matematički problem može raščlaniti na korake, tj. niz pravilakorake, tj. niz pravila

u latinskom prijevodu knjige (12. stoljeće) ispred svakog pravila pišeu latinskom prijevodu knjige (12. stoljeće) ispred svakog pravila piše Dixit Dixit AlgorizmiAlgorizmi - rekao je Al Kowarzimi - rekao je Al Kowarzimi algoritam glasialgoritam glasi

u početku algoritmom se nazivaju samo pravila računanja s u početku algoritmom se nazivaju samo pravila računanja s brojevima, kasnije i pravila obavljanja ostalih zadataka u matematicibrojevima, kasnije i pravila obavljanja ostalih zadataka u matematici

u XX stoljeću, pojavom računala, pojam se proširuje na računarstvo, u XX stoljeću, pojavom računala, pojam se proširuje na računarstvo, a zatim i na druga područjaa zatim i na druga područja

pravila za postizanje željenog rezultatapravila za postizanje željenog rezultata

Algoritmi i strukture podataka, FER, 2007/08. 6 / 35

Page 7: Algoritmi i strukture podataka Zaštićeno licencom

Što je algoritamŠto je algoritam

precizno opisan način rješenja nekog problemaprecizno opisan način rješenja nekog problema jednoznačno određuje što treba napravitijednoznačno određuje što treba napraviti moraju biti definirani moraju biti definirani početni objektipočetni objekti koji pripadaju nekoj klasi koji pripadaju nekoj klasi

objekata na kojima se obavljaju operacijeobjekata na kojima se obavljaju operacije kao ishod algoritma pojave se kao ishod algoritma pojave se završni objektizavršni objekti ili ili rezultatirezultati konačni broj koraka; svaki korak opisan konačni broj koraka; svaki korak opisan instrukcijominstrukcijom obavljanje je obavljanje je algoritamski procesalgoritamski proces

uporabiv, ako se dobije rezultat u uporabiv, ako se dobije rezultat u konačnomkonačnom vremenu vremenu primjeri za nedopuštene instrukcije:primjeri za nedopuštene instrukcije:

izračunaj 5/0izračunaj 5/0 uvećaj x za 6 ili 7uvećaj x za 6 ili 7

Algoritmi i strukture podataka, FER, 2007/08. 7 / 35

Page 8: Algoritmi i strukture podataka Zaštićeno licencom

AlgoritamAlgoritam

algoritam mora biti algoritam mora biti djelotvorandjelotvoran:: u konačnom vremenu može se dobiti rezultat koristeći olovku i papir.u konačnom vremenu može se dobiti rezultat koristeći olovku i papir.

primjeri:primjeri: zbrajanje cijelih brojeva je djelotvornozbrajanje cijelih brojeva je djelotvorno zbrajanje realnih brojeva nije jer se može pojaviti broj s beskonačno mnogo znamenkizbrajanje realnih brojeva nije jer se može pojaviti broj s beskonačno mnogo znamenki

sa znanjem programiranja i uz razumijevanje problema koji rješava, student sa znanjem programiranja i uz razumijevanje problema koji rješava, student može napisati može napisati djelotvorandjelotvoran ( (effectiveeffective) algoritam) algoritam cilj ovog predmeta je naučiti kako se oblikuje i programira cilj ovog predmeta je naučiti kako se oblikuje i programira učinkovitučinkovit ( (efficientefficient) algoritam.) algoritam.

djelotvoran i učinkovit su u hrvatskom jeziku gotovo sinonimi djelotvoran i učinkovit su u hrvatskom jeziku gotovo sinonimi effectiveeffective = onaj koji daje rezultat, = onaj koji daje rezultat, djelotvorandjelotvoran efficientefficient = uspješan, = uspješan, učinkovitučinkovit (s obzirom na utrošene resurse - vrijeme, procesor, disk, (s obzirom na utrošene resurse - vrijeme, procesor, disk,

memoriju)memoriju)– množenje se može svesti na ponavljanje zbrajanja – djelotvorno, ali nije učinkovito!množenje se može svesti na ponavljanje zbrajanja – djelotvorno, ali nije učinkovito!– rješavanje velikog skupa linearnih jednadžbi Kramerovim pravilom - djelotvorno, ali nije rješavanje velikog skupa linearnih jednadžbi Kramerovim pravilom - djelotvorno, ali nije

učinkovito!učinkovito!

Algoritmi i strukture podataka, FER, 2007/08. 8 / 35

Page 9: Algoritmi i strukture podataka Zaštićeno licencom

ProceduraProcedura

postupak koji ima sva svojstva kao i algoritam, ali ne mora završiti u postupak koji ima sva svojstva kao i algoritam, ali ne mora završiti u konačnom broju koraka jest računalna konačnom broju koraka jest računalna proceduraprocedura u jeziku C to može biti u jeziku C to može biti voidvoid funkcija funkcija

primjeri za proceduru: primjeri za proceduru: operacijski sustav računalaoperacijski sustav računala uređivač tekstauređivač teksta

vrijeme izvođenja mora biti "razumno"vrijeme izvođenja mora biti "razumno" primjer:primjer:

algoritam koji bi izabirao potez igrača šaha tako da ispita sve moguće algoritam koji bi izabirao potez igrača šaha tako da ispita sve moguće posljedice poteza, zahtijevao bi milijarde godina na najbržem zamislivom posljedice poteza, zahtijevao bi milijarde godina na najbržem zamislivom računaluračunalu

Algoritam

Procedura

Algoritmi i strukture podataka, FER, 2007/08. 9 / 35

Page 10: Algoritmi i strukture podataka Zaštićeno licencom

Algoritmi i programiAlgoritmi i programi

programprogram - opis algoritma koji u nekom programskom jeziku jednoznačno - opis algoritma koji u nekom programskom jeziku jednoznačno određuje što računalo treba napravitiodređuje što računalo treba napraviti

programiranjeprogramiranje - naučiti sintaksu nekog proceduralnog jezika i steći osnovna - naučiti sintaksu nekog proceduralnog jezika i steći osnovna intuitivna znanja glede algoritmizacije problema opisanog riječimaintuitivna znanja glede algoritmizacije problema opisanog riječima

algoritmi + strukture podataka = algoritmi + strukture podataka = programiprogrami (Wirth) (Wirth) kako kako osmislitiosmisliti algoritme? algoritme? kako kako strukturiratistrukturirati podatke? podatke? kako kako formuliratiformulirati algoritme? algoritme? kako kako verificirativerificirati korektnost algoritama? korektnost algoritama? kako kako analiziratianalizirati algoritme? algoritme? kako kako provjeritiprovjeriti (testirati) program? (testirati) program?

Postupci izrade algoritama nisu jednoznačni te zahtijevaju i kreativnost. Inače bi Postupci izrade algoritama nisu jednoznačni te zahtijevaju i kreativnost. Inače bi već postojali generatori algoritama. Znači da se (za sada?) gradivo ovog već postojali generatori algoritama. Znači da se (za sada?) gradivo ovog predmeta ne može u potpunosti algoritmizirati. Koristit će se predmeta ne može u potpunosti algoritmizirati. Koristit će se programski jezik Cprogramski jezik C. . Za sažeti opis složenijih algoritama može se koristiti Za sažeti opis složenijih algoritama može se koristiti pseudokodpseudokod..

Algoritmi i strukture podataka, FER, 2007/08. 10 / 35

Page 11: Algoritmi i strukture podataka Zaštićeno licencom

Analiza složenosti algoritamaAnaliza složenosti algoritama

Analize "a priori" i "a posteriori"Analize "a priori" i "a posteriori"O-notacijaO-notacijaAsimptotsko vrijeme izvođenjaAsimptotsko vrijeme izvođenjaPrimjeriPrimjeri

Page 12: Algoritmi i strukture podataka Zaštićeno licencom

Osnovni pojmoviOsnovni pojmovi

svrhasvrha intelektualna razonoda?intelektualna razonoda? predviđanje vremena izračunapredviđanje vremena izračuna pronalaženje učinkovitijih algoritamapronalaženje učinkovitijih algoritama

pretpostavke:pretpostavke: sekvencijalno jednoprocesorsko računalosekvencijalno jednoprocesorsko računalo fiksno vrijeme dohvata sadržaja memorijske lokacijefiksno vrijeme dohvata sadržaja memorijske lokacije vrijeme obavljanja operacija (aritmetičke, logičke, pridruživanje, poziv vrijeme obavljanja operacija (aritmetičke, logičke, pridruživanje, poziv

funkcije) je ograničeno nekom konstantom kao gornjom granicomfunkcije) je ograničeno nekom konstantom kao gornjom granicom

Algoritmi i strukture podataka, FER, 2007/08. 12 / 35

Page 13: Algoritmi i strukture podataka Zaštićeno licencom

Analize “a priori” i “a posteriori”Analize “a priori” i “a posteriori”

izbor skupova podataka za iscrpno testiranje algoritma:izbor skupova podataka za iscrpno testiranje algoritma: ponašanje u ponašanje u najboljemnajboljem slučaju ( slučaju (best case scenariobest case scenario)) ponašanje u ponašanje u najgoremnajgorem slučaju ( slučaju (worst case scenarioworst case scenario)) prosječnoprosječno (tipično) ponašanje (tipično) ponašanje

a priori a priori trajanje izvođenja algoritma (trajanje izvođenja algoritma (u najgorem slučajuu najgorem slučaju) kao vrijednost funkcije ) kao vrijednost funkcije

nekih relevantnih argumenata (npr. nekih relevantnih argumenata (npr. broja podatakabroja podataka)) a posteriori a posteriori

statistika dobivena mjerenjem na računalustatistika dobivena mjerenjem na računalu

Algoritmi i strukture podataka, FER, 2007/08. 13 / 35

Page 14: Algoritmi i strukture podataka Zaštićeno licencom

Analiza Analiza “a priori” “a priori”

procjena vremena izvođenja, nezavisno od računala, programskog procjena vremena izvođenja, nezavisno od računala, programskog jezika, prevoditelja (jezika, prevoditelja (compileracompilera))

primjeri:primjeri:a)a) x += yx += y;; 11

b)b) for(i = 1; i <= n; i++) {for(i = 1; i <= n; i++) { nn x += y;x += y;

}}

c)c) for(i = 1; i <= n; i++) {for(i = 1; i <= n; i++) { nn22

for(j = 1; j <= n; j++) {for(j = 1; j <= n; j++) { x += y;x += y; }}}}

Algoritmi i strukture podataka, FER, 2007/08. 14 / 35

Page 15: Algoritmi i strukture podataka Zaštićeno licencom

Složenost algoritmaSloženost algoritma

treba nam alat kojim ćemo usporediti treba nam alat kojim ćemo usporediti učinkovitostučinkovitost algoritama algoritama u pomoć dolazi u pomoć dolazi matematikamatematika

promatramo kako se ponaša promatramo kako se ponaša vrijeme izvođenjavrijeme izvođenja kad broj kad broj ulaznihulaznih podataka postane podataka postane dovoljno velikdovoljno velik

primjer: inverzija matrice od primjer: inverzija matrice od nn x x nn elemenata traje 10n elemenata traje 10n33 sekundi sekundi inverzija matrice 100 x 100 elemenata traje inverzija matrice 100 x 100 elemenata traje 1 minutu1 minutu inverzija matrice 200 x 200 elemenata trajat će inverzija matrice 200 x 200 elemenata trajat će 8 minuta8 minuta (2 (233=8)=8) kako kako izrazitiizraziti vrijeme izvođenja kao funkciju od vrijeme izvođenja kao funkciju od nn??

– npr. vrijeme izvođenja raste s nnpr. vrijeme izvođenja raste s n33

Algoritmi i strukture podataka, FER, 2007/08. 15 / 35

Page 16: Algoritmi i strukture podataka Zaštićeno licencom

O O - notacija- notacija

f(n) = O(g(n)) f(n) = O(g(n)) ako postoje dvije pozitivne konstante ako postoje dvije pozitivne konstante cc i i nn00 takve da vrijedi takve da vrijedi f(n)f(n) ccg(n)g(n) za za

sve sve nn nn00 traži se traži se najmanjinajmanji g(n)g(n) za koji to vrijedi za koji to vrijedi

drugim riječima, procjenjuje se trajanje kao red veličine određen temeljem broja podataka drugim riječima, procjenjuje se trajanje kao red veličine određen temeljem broja podataka n, n,

pomnoženo s nekom konstantom pomnoženo s nekom konstantom cc primjeri:primjeri:

nn33+5n+5n22+77n = O(n+77n = O(n33))

Koliki je posao prenijeti Koliki je posao prenijeti 11 stolicu iz dvorane A u dvoranu B? stolicu iz dvorane A u dvoranu B? Koliki je posao prenijeti Koliki je posao prenijeti nn stolica iz A u B? stolica iz A u B? Koliki je posao prenijeti Koliki je posao prenijeti nn stolica iz A u B, s time da se kod donošenja svake nove stolice sve dotada stolica iz A u B, s time da se kod donošenja svake nove stolice sve dotada

donesene stolice u B moraju pomaknuti, pri čemu se za pomicanje stolice u dvorani B ulaže isti trud donesene stolice u B moraju pomaknuti, pri čemu se za pomicanje stolice u dvorani B ulaže isti trud kao i kod prijenosa jedne stolice iz A u B?kao i kod prijenosa jedne stolice iz A u B?

1 + 2 + 3 + 4 + ...+ n = n(n+1)/2 = n1 + 2 + 3 + 4 + ...+ n = n(n+1)/2 = n22/2 + n/2 = O (n/2 + n/2 = O (n22))

Algoritmi i strukture podataka, FER, 2007/08. 16 / 35

Page 17: Algoritmi i strukture podataka Zaštićeno licencom

O O - notacija- notacija

analizom “a priori” dobije se vrijeme izvođenja algoritma analizom “a priori” dobije se vrijeme izvođenja algoritma O(g(n))O(g(n)) ako je broj izvođenja operacija nekog algoritma ovisan o nekom ulaznom ako je broj izvođenja operacija nekog algoritma ovisan o nekom ulaznom

argumentu argumentu nn oblika oblika polinoma polinoma mm-tog stupnja-tog stupnja, onda je vrijeme izvođenja za taj , onda je vrijeme izvođenja za taj algoritam algoritam O(nO(nmm)) dokaz:dokaz:

Ako je vrijeme izvođenja određeno polinomom:Ako je vrijeme izvođenja određeno polinomom:

A(n) = aA(n) = ammnnmm + ... + a + ... + a11n + an + a00

onda vrijedi:onda vrijedi:

A(n)A(n) aamm nnmm + ... + + ... +aa11n +n +aa00

A(n)A(n) ((aamm + + aam-1m-1// n + ... +n + ... +aa11 //nnm-1m-1++aa00// nnmm)) nnmm

A(n)A(n) ( (aamm + ... ++ ... +aa11 + +aa00)) nnmm , , za svakiza svaki nn11

uz: uz: cc = = aamm + ... ++ ... +aa11 + +aa00 ii nn00 = 1= 1 tvrdnja je dokazanatvrdnja je dokazanaAlgoritmi i strukture podataka, FER, 2007/08. 17 / 35

Page 18: Algoritmi i strukture podataka Zaštićeno licencom

O O - notacija- notacija

može se kaomože se kao cc koristiti bilo koja konstanta veća od koristiti bilo koja konstanta veća od aamm ako je ako je nn dovoljno velik:dovoljno velik:ako neki algoritam ima ako neki algoritam ima kk odsječaka čija vremena su: odsječaka čija vremena su:

cc11nnm1m1, c, c22nnm2m2,...,c,...,ckknnmkmk

onda je ukupno vrijemeonda je ukupno vrijeme

cc11nnm1 m1 + c+ c22nnm2 m2 +... + c+... + ckknnmkmk

znači da je za taj algoritam vrijeme izvođenja jednako znači da je za taj algoritam vrijeme izvođenja jednako O(nO(nmm)), gdje je, gdje jemm = = maxmax{{mmii}, }, i =i =11,...,k,...,k

Algoritmi i strukture podataka, FER, 2007/08. 18 / 35

Page 19: Algoritmi i strukture podataka Zaštićeno licencom

O O - notacija- notacija

vrijedi za dovoljno veliki vrijedi za dovoljno veliki nn::O(1) < O(log n) < O(n) < O(nlog n) < O(nO(1) < O(log n) < O(n) < O(nlog n) < O(n22) < O(n) < O(n33) < ...< O(2) < ...< O(2nn) < O(n!)) < O(n!)

O(1)O(1) znači da je vrijeme izvođenja ograničeno znači da je vrijeme izvođenja ograničeno konstantomkonstantom ostale vrijednosti, ostale vrijednosti, do predzadnjedo predzadnje, predstavljaju , predstavljaju polinomnapolinomna vremena vremena

izvođenja algoritmaizvođenja algoritma– svako sljedeće vrijeme izvođenja je veće za red veličinesvako sljedeće vrijeme izvođenja je veće za red veličine

predzadnji izraz predstavlja predzadnji izraz predstavlja eksponencijalnoeksponencijalno vrijeme izvođenja vrijeme izvođenja– ne postoji polinom koji bi ga mogao ograničiti jer za dovoljno veliki ne postoji polinom koji bi ga mogao ograničiti jer za dovoljno veliki nn ova funkcija ova funkcija

premašuje bilo koji polinompremašuje bilo koji polinom algoritmi koji zahtijevaju eksponencijalno vrijeme mogu biti algoritmi koji zahtijevaju eksponencijalno vrijeme mogu biti nerješivinerješivi u u

razumnom vremenu, razumnom vremenu, bez obzira na brzinubez obzira na brzinu slijednog računala slijednog računala

Algoritmi i strukture podataka, FER, 2007/08. 19 / 35

Page 20: Algoritmi i strukture podataka Zaštićeno licencom

- notacija- notacija

f(n) = f(n) = (g(n)) (g(n)) ako postoje dvije pozitivne konstante ako postoje dvije pozitivne konstante cc i i nn00

takve da vrijedi takve da vrijedi f(n)f(n) cc g(n)g(n) za sveza sve nn > > nn00

traži se traži se najvećinajveći g(n)g(n) za koji to vrijedi za koji to vrijedidonja granica donja granica za vrijeme izvođenja algoritmaza vrijeme izvođenja algoritmaniti u kojem slučaju izvođenje ne može biti kraće od niti u kojem slučaju izvođenje ne može biti kraće od

– npr. množenje dvije matrice od npr. množenje dvije matrice od nn x x nn elemenata uvijek traje elemenata uvijek traje

(n(n22) = O (n) = O (n22))– zbrajanje zbrajanje nn brojeva brojeva uvijekuvijek traje traje (n) = O (n)(n) = O (n)– pronalaženjepronalaženje nekog broja među nekog broja među nn nesortiranih brojeva nesortiranih brojeva (1) (1) O (n) O (n)

Algoritmi i strukture podataka, FER, 2007/08. 20 / 35

Page 21: Algoritmi i strukture podataka Zaštićeno licencom

- notacija- notacija

f(n) = f(n) = (g(n)) (g(n)) ako postoje pozitivne konstante ako postoje pozitivne konstante cc11,, cc22 i i nn00 takve da takve da

vrijedi vrijedi cc11g(n)g(n) f(n)f(n) cc22g(n)g(n) za sve za sve nn > > nn00

f f ii g g rastu jednako brzo za velike rastu jednako brzo za velike nn omjer omjer ff i i gg je između je između cc11 i i cc22

drugim riječima, jednaka su trajanja za najbolji i za najgori slučajdrugim riječima, jednaka su trajanja za najbolji i za najgori slučaj

primjer:primjer: Treba po abecedi sortirati Treba po abecedi sortirati nn kontrolnih zadaća tako da se prvo pronađe prvi kontrolnih zadaća tako da se prvo pronađe prvi

po abecedi, zatim se u preostalima traži prvi itd.po abecedi, zatim se u preostalima traži prvi itd.– postupak jednako traje bez obzira na eventualnu uređenost:postupak jednako traje bez obzira na eventualnu uređenost:

O(nO(n22) = ) = (n(n22) = ) = (n (n22) )

Algoritmi i strukture podataka, FER, 2007/08. 21 / 35

Page 22: Algoritmi i strukture podataka Zaštićeno licencom

Asimptotsko vrijeme izvođenjaAsimptotsko vrijeme izvođenja

f(n) ~ g(n) f(n) ~ g(n) ako je ako je

čita se: "čita se: "f(n)f(n) je asimptotski jednako funkciji je asimptotski jednako funkciji g(n)g(n)”” precizniji je precizniji je opis vremena izvođenjaopis vremena izvođenja nego nego OO-notacijom-notacijom

zna se i red veličine vodećeg člana i konstanta koja ga množizna se i red veličine vodećeg člana i konstanta koja ga množi ako je, primjerice:ako je, primjerice:

f(n)f(n) = = aakknnkk + ... + + ... + aa00

tada je:tada je:

f(n) =f(n) = O(nO(nkk)) ii f(n) ~f(n) ~ aakknnkk

primjeri: primjeri: 3*23*2xx+7 logx+x ~ +7 logx+x ~ 3*23*2xx

za primjer sortiranja s prethodnog slajda (sortiranje zadaća):za primjer sortiranja s prethodnog slajda (sortiranje zadaća):– zbog linearnog smanjivanja preostalog skupa u kojem se traži prvi, asimptotsko trajanje je:zbog linearnog smanjivanja preostalog skupa u kojem se traži prvi, asimptotsko trajanje je:

~~ nn22/2/2

1)(

)(lim

ng

nf

n

Algoritmi i strukture podataka, FER, 2007/08. 22 / 35

Page 23: Algoritmi i strukture podataka Zaštićeno licencom

nn

i = n(n+1)/2 = O (ni = n(n+1)/2 = O (n22))i=1i=1

Asimptotsko vrijeme izvođenjaAsimptotsko vrijeme izvođenja

u izračunu učestalosti obavljanja nekih naredbi često se javljaju u izračunu učestalosti obavljanja nekih naredbi često se javljaju sume oblika:sume oblika:

nn22/2/2

for (i = 1; i <= n; i++)for (i = 1; i <= n; i++)

for (j = 0; j < i; i++) {...}for (j = 0; j < i; i++) {...}

Algoritmi i strukture podataka, FER, 2007/08. 23 / 35

Page 24: Algoritmi i strukture podataka Zaštićeno licencom

Razne složenosti Razne složenosti u logaritamskom mjeriluu logaritamskom mjerilu

Algoritmi i strukture podataka, FER, 2007/08. 24 / 35

Page 25: Algoritmi i strukture podataka Zaštićeno licencom

OO-notacija - primjeri-notacija - primjeri

IspisiTrazi.cIspisiTrazi.c ispisiispisi

petlja se uvijek obavi petlja se uvijek obavi nn puta puta (n) (n) ,, O(n) O(n) ,, (n) (n)

trazitrazi vrijeme izvođenja je vrijeme izvođenja je O(n)O(n) donja granica je donja granica je ( (11))

– u najboljem slučaju u prvom koraku nađe traženi član poljau najboljem slučaju u prvom koraku nađe traženi član polja– u najgorem slučaju mora pregledati sve članove poljau najgorem slučaju mora pregledati sve članove polja

Algoritmi i strukture podataka, FER, 2007/08. 25 / 35

Page 26: Algoritmi i strukture podataka Zaštićeno licencom

Analiza “a posteriori”Analiza “a posteriori”

stvarno vrijeme potrebno za izvođenje algoritma na konkretnom stvarno vrijeme potrebno za izvođenje algoritma na konkretnom računaluračunalu

#include <sys\timeb.h> // gdje je deklarirano

struct timeb {

time_t time; // broj sekundi od ponoći, 01.01.1970, UTC

unsigned short millitm; // milisekunde

short timezone; // razlika u minutama od UTC

short dstflag; // <>0 ako je na snazi ljetno vrijeme

};

void ftime(struct timeb *timeptr);

Algoritmi i strukture podataka, FER, 2007/08. 26 / 35

Page 27: Algoritmi i strukture podataka Zaštićeno licencom

Analiza “a posteriori”Analiza “a posteriori”

u programu:u programu:

Universal Time Co-ordinated (UTC) novi naziv za Greenwich Mean Time (GMT)

struct timeb vrijeme1, vrijeme2; long trajanjems;

ftime (&vrijeme1);

...

ftime (&vrijeme2);

trajanjems = 1000 * (vrijeme2.time - vrijeme1.time) +

vrijeme2.millitm - vrijeme1.millitm;

Algoritmi i strukture podataka, FER, 2007/08. 27 / 35

Page 28: Algoritmi i strukture podataka Zaštićeno licencom

Zadaci za vježbuZadaci za vježbu

Za algoritamZa algoritam

odrediti:odrediti:a) a) apriornoapriorno vrijeme izvođenja vrijeme izvođenjab) odrediti b) odrediti asimptotskuasimptotsku ocjenu za ocjenu za prosječnoprosječno vrijeme izvođenja vrijeme izvođenjac) c) asimptotsku asimptotsku ocjenuocjenu vremena izvođenja za vremena izvođenja za najboljinajbolji slučaj slučajd) d) asimptotsku asimptotsku ocjenuocjenu vremena izvođenja za vremena izvođenja za najgorinajgori slučaj slučaje) za kakvu vrijednost varijable b nastupa e) za kakvu vrijednost varijable b nastupa najgorinajgori slučaj? slučaj?

for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {

if (a[i] == b) {if (a[i] == b) {

printf ("i = %d\n", i);printf ("i = %d\n", i);

break;break;

}}

}}

Algoritmi i strukture podataka, FER, 2007/08. 28 / 35

Page 29: Algoritmi i strukture podataka Zaštićeno licencom

Zadaci za vježbuZadaci za vježbu

Napisati funkciju koja računa zbroj znamenki zadanog prirodnog Napisati funkciju koja računa zbroj znamenki zadanog prirodnog broja N. Kolika je složenost funkcije?broja N. Kolika je složenost funkcije?

int zbrojZnamenki (int N) {

int zbroj = 0;

while (N > 0) {

zbroj += N % 10;

N /= 10;

}

return zbroj;

}

Algoritmi i strukture podataka, FER, 2007/08. 29 / 35

Page 30: Algoritmi i strukture podataka Zaštićeno licencom

Zadaci za vježbuZadaci za vježbu

Stvarno trajanje O ~

5n5n22+7n+4+7n+4 nn22 5n5n22

3n3n22+700n+2+700n+2 nn22 3n3n22

nn22+7logn+40+7logn+40 nn22 nn22

0,1*20,1*2nn+100n+100n22 22nn 0,1*20,1*2nn

(2n+1)(2n+1)22 nn22 4n4n22

6nlogn + 10n6nlogn + 10n nlognnlogn 6nlogn6nlogn

8logn + 10008logn + 1000 lognlogn 8logn8logn

3n! + 23n! + 2nn + n + n1010 n!n! 3n!3n!

3*53*5nn + 6*2 + 6*2nn + n + n100100 55nn 3*53*5nn

Algoritmi i strukture podataka, FER, 2007/08. 30 / 35

Page 31: Algoritmi i strukture podataka Zaštićeno licencom

Primjeri ovisnosti trajanja o broju podataka i složenostiPrimjeri ovisnosti trajanja o broju podataka i složenosti

n T(n) = n T(n) = n lg(n) T(n) = n2 T(n) = n3 T(n) = 2n

5 0.005 s 0.01 s 0.03 s 0.13 s 0.03 s

10 0.01 s 0.03 s 0.1 s 1 s 1 s

20 0.02 s 0.09 s 0.4 s 8 s 1 ms

50 0.05 s 0.28 s 2.5 s 125 s 13 dana

100 0.1 s 0.66 s 10 s 1 ms 4 x 1013 godina

Algoritmi i strukture podataka, FER, 2007/08. 31 / 35

Page 32: Algoritmi i strukture podataka Zaštićeno licencom

Što se može riješiti u zadanom vremenuŠto se može riješiti u zadanom vremenu

Vremenska složenost

Veličina najvećeg slučaja problema koji se može riješiti za 1 sat

danas raspoloživim računalom

100 puta bržim računalom

1000 puta bržim računalom

n N1 100N1 1000N1

n2 N2 10 N2 31.6 N2

n3 N3 4.64 N3 10 N3

2n N4 N4+6.64 N4+9.97

3n N5 N5+4.19 N5+6.29

Algoritmi i strukture podataka, FER, 2007/08. 32 / 35

Page 33: Algoritmi i strukture podataka Zaštićeno licencom

Relativni udio komponenti uRelativni udio komponenti u izrazu:izrazu: n4 + n3log n + 2 (n-1) O ( 2n )

n n4 n3 log n 2(n-1)

1 1 0 1

10 10 000 1000 512

17 83 521 6 046 65536

18 104 976 7 321 131072

50 6 250 000 212 372 562 949 953 421 312

100 100 000 000 2 000 000 6,3 x 10 29

Algoritmi i strukture podataka, FER, 2007/08. 33 / 35

Page 34: Algoritmi i strukture podataka Zaštićeno licencom

Utjecaj veličine konstante Utjecaj veličine konstante K = 1 000 000

n K n K n2 K n4 K 2n

1 106 106 106 2 x 106

10 107 108 1010 1,0 x 108

100 108 1010 1014 1,2 x 1036

1 000 109 1012 1018 ~ 10306

Algoritmi i strukture podataka, FER, 2007/08. 34 / 35

Page 35: Algoritmi i strukture podataka Zaštićeno licencom

Što znači “dovoljno veliki n”, tj. n > nŠto znači “dovoljno veliki n”, tj. n > n00

Izvor: Izvor: Cormen,Cormen, Leiserson & Rivest: Leiserson & Rivest: Introduction to algorithmsIntroduction to algorithms, 2/e,MIT Press, 2001, 2/e,MIT Press, 2001

Algoritmi i strukture podataka, FER, 2007/08. 35 / 35