Professional Documents
Culture Documents
28.09.15
Creative Commons
slobodno smijete:
dijeliti umnoavati, distribuirati i javnosti priopavati djelo
remiksirati preraivati djelo
U sluaju daljnjeg koritenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog
djela. Najbolji nain da to uinite je linkom na ovu internetsku stranicu.
Od svakog od gornjih uvjeta mogue je odstupiti, ako dobijete doputenje nositelja autorskog prava.
Nita u ovoj licenci ne naruava ili ograniava autorova moralna prava.
Tekst licencije preuzet je s http://creativecommons.org/.
Algoritmi i strukture podataka, FER
28.09.15
2 / 36
Sloenost algoritama
Algoritmi
Sloenost algoritama
28.09.15
iz Khwarizma
28.09.15
4 / 36
Zasluge al Khowarizmija
x - 2 = 12 x = 12 + 2
x+y=y+7x=7
28.09.15
5 / 36
Od al Khowarizmija do algoritma...
algoritam glasi
28.09.15
6 / 36
to je algoritam
28.09.15
7 / 36
Algoritam
primjeri:
cilj ovog predmeta je nauiti kako se oblikuje i programira uinkovit (efficient) algoritam.
28.09.15
8 / 36
Procedura
postupak koji ima sva svojstva kao i algoritam, ali ne mora zavriti u
konanom broju koraka jest raunalna procedura
u jeziku C to moe biti void funkcija
primjeri za proceduru:
Procedura
Algoritam
28.09.15
9 / 36
Algoritmi i programi
28.09.15
10 / 36
28.09.15
11 / 36
28.09.15
Osnovni pojmovi
svrha
intelektualna razonoda?
predvianje vremena izrauna
pronalaenje uinkovitijih algoritama
pretpostavke:
sekvencijalno jednoprocesorsko raunalo
fiksno vrijeme dohvata sadraja memorijske lokacije
vrijeme obavljanja operacija (aritmetike, logike, pridruivanje, poziv
28.09.15
13 / 36
a priori
trajanje izvoenja algoritma (u najgorem sluaju) kao vrijednost funkcije
a posteriori
statistika dobivena mjerenjem na raunalu
28.09.15
14 / 36
Analiza a priori
28.09.15
15 / 36
Sloenost algoritma
28.09.15
16 / 36
O - notacija
f(n) = O(g(n)) ako postoje dvije pozitivne konstante c i n0 takve da vrijedi f(n) cg(n) za
sve n n0
drugim rijeima, procjenjuje se trajanje kao red veliine odreen temeljem broja podataka n,
pomnoeno s nekom konstantom c
primjeri:
n3+5n2+77n = O(n3)
Koliki je posao prenijeti n stolica iz A u B, s time da se kod donoenja svake nove stolice sve dotada
donesene stolice u B moraju pomaknuti, pri emu se za pomicanje stolice u dvorani B ulae isti trud
kao i kod prijenosa jedne stolice iz A u B?
1 + 2 + 3 + 4 + ...+ n = n(n+1)/2 = n2/2 + n/2 = O (n2)
28.09.15
17 / 36
O - notacija
dokaz:
Ako je vrijeme izvoenja odreeno polinomom:
i n0 = 1 tvrdnja je dokazana
28.09.15
18 / 36
O - notacija
c1nm1, c2nm2,...,cknmk
onda je ukupno vrijeme
28.09.15
19 / 36
O - notacija
izvoenja algoritma
ne postoji polinom koji bi ga mogao ograniiti jer za dovoljno veliki n ova funkcija
premauje bilo koji polinom
28.09.15
20 / 36
- notacija
(n2) , O (n3)
zbrajanje n brojeva uvijek traje (n) = O (n)
pronalaenje nekog broja meu n nesortiranih brojeva (1) O (n)
28.09.15
21 / 36
- notacija
primjer:
Treba po abecedi sortirati n kontrolnih zadaa tako da se prvo pronae prvi
28.09.15
22 / 36
f ( n)
1
lim
n g ( n)
zbog linearnog smanjivanja preostalog skupa u kojem se trai prvi, asimptotsko trajanje je:
~ n2/2
Algoritmi i strukture podataka, FER
28.09.15
23 / 36
i = n(n+1)/2 = O (n2)
i=1
n2/2
28.09.15
24 / 36
28.09.15
25 / 36
O-notacija - primjeri
IspisiTrazi.c
ispisi
petlja se uvijek obavi n puta (n) ,
O(n) , (n)
trazi
vrijeme izvoenja je O(n)
donja granica je (1)
28.09.15
26 / 36
Analiza a posteriori
28.09.15
27 / 36
Analiza a posteriori
u programu:
struct timeb vrijeme1, vrijeme2; long trajanjems;
ftime (&vrijeme1);
...
ftime (&vrijeme2);
trajanjems = 1000 * (vrijeme2.time - vrijeme1.time) +
vrijeme2.millitm - vrijeme1.millitm;
28.09.15
28 / 36
Zadaci za vjebu
Za algoritam
for (i = 0; i < n; i++) {
if (a[i] == b) {
printf ("i = %d\n", i);
break;
}
}
odrediti:
a) apriorno vrijeme izvoenja
b) odrediti asimptotsku ocjenu za prosjeno vrijeme izvoenja
c) asimptotsku ocjenu vremena izvoenja za najbolji sluaj
d) asimptotsku ocjenu vremena izvoenja za najgori sluaj
e) za kakvu vrijednost varijable b nastupa najgori sluaj?
28.09.15
29 / 36
Zadaci za vjebu
28.09.15
30 / 36
Zadaci za vjebu
Stvarno trajanje
5n2+7n+4
3n2+700n+2
n2+7logn+40
0,1*2n+100n2
(2n+1)2
6nlogn + 10n
8logn + 1000
3n! + 2n + n10
3*5n + 6*2n + n100
n2
n2
n2
2n
n2
nlogn
logn
n!
5n
5n2
3n2
n2
0,1*2n
4n2
6nlogn
8logn
3n!
3*5n
28.09.15
31 / 36
T(n) = n
T(n) = n lg(n)
T(n) = n2
T(n) = n3
T(n) = 2n
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
28.09.15
32 / 36
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
28.09.15
33 / 36
O ( 2n )
n4
n3 log n
2(n-1)
10
10 000
1000
512
17
83 521
6 046
65536
18
104 976
7 321
131072
50
6 250 000
212 372
100
2 000 000
6,3 x 10 29
28.09.15
34 / 36
Kn
K n2
K n4
K 2n
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
28.09.15
35 / 36
Izvor: Cormen, Leiserson & Rivest: Introduction to algorithms, 2/e,MIT Press, 2001
Algoritmi i strukture podataka, FER
28.09.15
36 / 36