Documente Academic
Documente Profesional
Documente Cultură
Octombrie, 2013
Cont inut
Exemple calcul
Ordin de crestere
Notatie asimptotica
Structuri de date
Curs 2
Octombrie, 2013
2 / 51
Timp de executie
As soon as an Analytic Engine exists, it will necessarily guide the future course of the science. Whenever any result is sought by its aid, the question will ariseBy what course of calculation can these results be arrived at by the machine in the shortest time? Charles Babbage (1864)
Masina analitica
Structuri de date Curs 2 Octombrie, 2013 3 / 51
Provocare
Structuri de date
Curs 2
Octombrie, 2013
4 / 51
utilitate:
a stabili performanta a furniza garantii compararea algoritmilor
algoritm mai ecient decat altul
Structuri de date Curs 2 Octombrie, 2013 5 / 51
Dimensiunea problemei
ipoteza: volumul resurselor de calcul necesare depinde de volumul datelor de intrare dimensiunea problemei: volumul de memorie necesar pentru a stoca datele de intrare este exprimata in:
numarul de componente ale datelor de intrare sau numarul de biti necesari stocarii datelor de intrare
exemple
testul de primalitate pentru un numar n: n sau log2 n minimul unui tablou x [0..n 1]: n suma a doua matrici (mxn): mn
Structuri de date
Curs 2
Octombrie, 2013
6 / 51
Trebuie sa stabilim:
un model de calcul
prelucrarile sunt executate secvential timpul de executie al unei prelucrari nu depinde de valorile operanzilor timpul pentru accesarea datelor nu depinde de locatia acestora in memorie
Structuri de date
Curs 2
Octombrie, 2013
7 / 51
Cont inut
Exemple calcul
Ordin de crestere
Notatie asimptotica
Structuri de date
Curs 2
Octombrie, 2013
8 / 51
1 2 3 4 5 6
Structuri de date
Curs 2
Octombrie, 2013
9 / 51
Structuri de date
Curs 2
Octombrie, 2013
10 / 51
1 2
5 6
Structuri de date
Curs 2
Octombrie, 2013
12 / 51
1 2 3 4 5 6 7
Structuri de date
Curs 2
Octombrie, 2013
13 / 51
3n <= T (n) <= 4n 1 limita inferioara si limita superioara depind liniar de dimensiunea problemei daca se ia in calcul doar operatia de baza (comparatia x [i ] < m): T (n) = n 1
Structuri de date Curs 2 Octombrie, 2013 14 / 51
1 2 3 4 5
Operatie Cost Nr. repetari 1 1 1 2 2 t(n)+1 3 1 t(n) 4 1 1 5 1 1 6 1 1 Timp de executie: T (n) = 1 + 3t (n) + 4
Curs 2
Octombrie, 2013
15 / 51
Structuri de date
Curs 2
Octombrie, 2013
16 / 51
1 2 3 4
6 7
Structuri de date
Curs 2
Octombrie, 2013
17 / 51
Structuri de date
Curs 2
Octombrie, 2013
18 / 51
Structuri de date
Curs 2
Octombrie, 2013
19 / 51
8 1
1 8
4 4 9
9 2
2 6
Structuri de date
Curs 2
Octombrie, 2013
19 / 51
8 1
1 8
4 4
9 9
2 2
6 6
Structuri de date
Curs 2
Octombrie, 2013
20 / 51
8 1 1
1 8 4
4 4 8
9 9 9 2
2 2 6
6 6
Structuri de date
Curs 2
Octombrie, 2013
20 / 51
8 1 1
1 8 4
4 4 8
9 9 9
2 2 2
6 6 6
Structuri de date
Curs 2
Octombrie, 2013
21 / 51
8 1 1 1
1 8 4 4
4 4 8 8
9 9 9 9
2 2 2 2 6
6 6 6
Structuri de date
Curs 2
Octombrie, 2013
21 / 51
8 1 1 1
1 8 4 4
4 4 8 8
9 9 9 9
2 2 2 2
6 6 6 6
Structuri de date
Curs 2
Octombrie, 2013
22 / 51
8 1 1 1 1
1 8 4 4 2
4 4 8 8 4
9 9 9 9 8
2 2 2 2 9
6 6 6 6 6
Structuri de date
Curs 2
Octombrie, 2013
22 / 51
8 1 1 1 1
1 8 4 4 2
4 4 8 8 4
9 9 9 9 8
2 2 2 2 9
6 6 6 6 6
Structuri de date
Curs 2
Octombrie, 2013
23 / 51
8 1 1 1 1 1
1 8 4 4 2 2
4 4 8 8 4 4
9 9 9 9 8 6
2 2 2 2 9 8
6 6 6 6 6 9
Structuri de date
Curs 2
Octombrie, 2013
23 / 51
Operatie Cost Nr. repetari 1 c1 n 2 c2 n1 3 c3 n1 n 4 c4 j =2 tj n 5 c5 j =2 (tj 1) n 6 c6 j =2 (tj 1) 7 c7 n1 Timp de executie: T (n) = c1 n + c2 (n 1) + c3 (n 1) + c4 c6 n j =2 (tj 1) + c7 (n 1)
n j =2 tj
+ c5
n j =2 (tj
1) +
Structuri de date
Curs 2
Octombrie, 2013
24 / 51
Cazul cel mai favorabil: tabloul este sortat tj = 1, j = 2, 3, ..., n T (n) = (c1 + c2 + c3 + c4 + c7 )n (c2 + c3 + c4 + c7 ) Cazul cel mai nefavorabil: tabloul este sortat in ordine inversa tj = j , j = 2, 3, ..., n 1) 1) +1) 1)+ c5 n(n2 + c6 n(n2 T (n) = c1 n +(n 1)(c2 + c3 + c7 )+ c4 ( n(n2 = ( c24 + c25 + c26 )n2 +(c1 + c2 + c3 + c24 c25 c26 + c7 )n (c2 + c3 + c4 + c7 ) Cazul mediu: toate permutarile au aceeasi probabilitate de aparitie Este sortarea prin insertie un algoritm rapid?
Structuri de date Curs 2 Octombrie, 2013 25 / 51
Analiza algoritmilor
Structuri de date
Curs 2
Octombrie, 2013
26 / 51
Analiza in cazul mediu furnizeaza informatii privind comportarea algoritmului in cazul unor date de intrare arbitrare
se bazeaza pe cunoasterea distributiei de probabilitate a datelor de intrare cunoasterea (estimarea) probabilitatii de aparitie a ecareia dintre instantele posibile ale datelor de intrare timpul mediu de executie este media timpilor de executie corespunzatori instantelor datelor de intrare
Structuri de date
Curs 2
Octombrie, 2013
27 / 51
Timpul mediu de executie este: Ta (n) = P1 T1 (n) + P2 T2 (n) + ... + Pm Tm (n) Daca toate clasele au aceeasi probabilitate de aparitie: Ta (n) = (T1 (n) + T2 (n) + ... + Tm (n))/m
Structuri de date Curs 2 Octombrie, 2013 28 / 51
Ipoteze:
probabilitatea ca v sa se ae in tablou: p
v apare cu aceeasi probabilitate pe ecare pozitie din tablou probabilitatea ca v sa se ae pe pozitia k : 1/n
probabilitatea ca v sa nu se ae in tablou: 1 p
Ta (n) =
p (1+2+..+n) n
+ (1 p )n =
p (n+1) 2
+ (1 p )n = (1 p 2 )n +
p 2
1 daca p = 0.5, Ta (n) = 3 4n + 4 timpul mediu depinde liniar de dimensiunea datelor de intrare
Observatie: timpul mediu nu este in mod necesar media aritmetica a timpilor de executie corespunzatori cazurilor extreme
Structuri de date
Curs 2
Octombrie, 2013
29 / 51
1. identicarea dimensiunii problemei 2. identicarea operatiei dominante 3. estimarea timpului de executie (determinarea numarului de executii ale operatiei dominante) 4. daca timpul de executie depinde de proprietatile datelor de intrare, atunci se analizeaza:
cazul cel mai favorabil cazul cel mai defavorabil cazul mediu
Structuri de date
Curs 2
Octombrie, 2013
30 / 51
scopul principal: sa se determine modul in care timpul de executie creste o data cu cresterea dimensiunii problemei nu e necesar sa se cunoasca expresia detaliata a timpului de executie este sucient sa se identice:
ordinul de crestere al timpului de executie clasa de ecienta (complexitate) careia ii apartine algoritmul
Structuri de date
Curs 2
Octombrie, 2013
31 / 51
Cont inut
Exemple calcul
Ordin de crestere
Notatie asimptotica
Structuri de date
Curs 2
Octombrie, 2013
32 / 51
Ordin de crestere
Termen dominant: termen care devine semnicativ mai mare decat ceilalti atunci cand dimensiunea problemei creste
dicteaza comportarea algoritmului cand dimensiunea problemei creste
Structuri de date
Curs 2
Octombrie, 2013
33 / 51
Ordin de crestere
Ce se intampla cu termenul dominant cand dimensiunea creste de k ori? T1 (n) = an T1 (kn) = akn = kT1 (n) T2 (n) = alogn T2 (kn) = alog (kn) = T2 (n) + alogk T3 (n) = an2 T3 (kn) = a(kn)2 = k 2 T3 (n) n T4 (n) = a T4 (kn) = akn = (an )k = T4 (n)k
ordin de crestere: cum creste termenul dominant al timpului de executie in raport cu dimensiunea problemei
Structuri de date
Curs 2
Octombrie, 2013
34 / 51
Ordin de crestere
Structuri de date
Curs 2
Octombrie, 2013
35 / 51
n! 4 sec nu nu nu nu nu nu nu
Structuri de date
Curs 2
Octombrie, 2013
36 / 51
Ordine de crestere
Pentru a compara ordinele de crestere a doi timpi de executie T 1(n) 1(n) si T 2(n), calculam limn T T 2(n)
daca lim = 0, T 1(n) are un ordin de crestere mai mic decat T 2(n) daca lim = c , c > 0 constanta, T 1(n) si T 2(n) au acelasi ordin de crestere daca lim = , T 1(n) are un ordin de crestere mai mare decat T 2(n)
Structuri de date
Curs 2
Octombrie, 2013
37 / 51
Cont inut
Exemple calcul
Ordin de crestere
Notatie asimptotica
Structuri de date
Curs 2
Octombrie, 2013
38 / 51
Analiza asimptotica
Analiza timpilor de executie pentru valori mici ale dimensiunii problemei nu permite diferentierea intre algoritmi ecienti si inecienti Diferentele dintre ordinele de crestere devin din ce in ce mai semnicative pe masura ce dimensiunea problemei creste Analiza asimptotica: studiul proprietatilor timpului de executie atunci cand dimensiunea problemei tinde catre innit (probleme de dimensiune mare).
algoritmul poate incadrat in diferite clase identicate prin notatii: O , ,
Structuri de date
Curs 2
Octombrie, 2013
39 / 51
Denitie
O (g (n)) = {f (n): exista c > 0 si n0 N astfel incat 0 <= f (n) <= cg (n) pentru orice n >= n0 } Notatie:f (n) = O (g (n)) (f (n) are un ordin de crestere cel mult egal cu cel al lui g (n)) Exemple: T (n) = 3n + 3 T (n) O (n) 4n >= 3n + 3, c = 4, n0 = 3, g (n) = n 3n2 100n + 6 = O (n2 ) 3n2 > 3n2 100n + 6 3n2 100n + 6 = O (n3 ) 0.01n3 > 3n2 100n + 6
Structuri de date Curs 2 Octombrie, 2013 40 / 51
Notatia O
Pentru valori mari ale lui n, f (n) este marginita superior de g (n) multiplicata cu o constanta pozitiva.
Structuri de date
Curs 2
Octombrie, 2013
41 / 51
Notatia O - proprietati
f (n) O (f (n)) (reexivitate) f (n) O (g (n)), g (n) O (h(n)) f (n) O (h(n)) (tranzitivitate) Daca T (n) = ad nd + ad 1 nd 1 + ... + a1 n + a0 atunci T (n) O (nk ) pentru orice k >= d .
exemplu: n O (n2 )
Daca pentru cazul cel mai nefavorabil obtinem T (n) <= g (n), atunci T (n) O (g (n))
Cautarea secventiala: 5 <= T (n) <= 3n + 2 algoritmul este din clasa O (n)
Structuri de date
Curs 2
Octombrie, 2013
42 / 51
Notatia
Denitie
(g (n)) = {f (n): exista c > 0 si n0 N astfel incat f (n) >= cg (n) pentru orice n >= n0 } Notatie:f (n) = (g (n)) (f (n) are un ordin de crestere cel putin la fel de mare ca cel al lui g (n)) Exemple: T (n) = 3n + 3 T (n) (n) 3n <= 3n + 3, c = 3, n0 = 1, g (n) = n 5 <= T (n) <= 3n + 2 T (n) (1) c = 5, n0 = 1, g (n) = 1
Structuri de date
Curs 2
Octombrie, 2013
43 / 51
Notatia
Pentru valori mari ale lui n, functia f (n) este marginita inferior de g (n) multiplicata eventual de o constanta pozitiva
Structuri de date
Curs 2
Octombrie, 2013
44 / 51
Notatia - proprietati
f (n) (f (n)) (reexivitate) f (n) (g (n)), g (n) (h(n)) f (n) (h(n)) (tranzitivitate) Daca T (n) = ad nd + ad 1 nd 1 + ... + a1 n + a0 atunci T (n) (nk ) pentru orice k <= d .
exemplu: n2 (n)
Structuri de date
Curs 2
Octombrie, 2013
45 / 51
Notatia
Denitie
(g (n)) = {f (n): exista c1 , c2 > 0 si n0 N astfel incat c1 g (n) <= f (n) <= c2 g (n) pentru orice n >= n0 } Notatie:f (n) = (g (n)) (f (n) are un acelasi ordin de crestere ca si g (n)) Exemple: T (n) = 3n + 3 T (n) (n) c1 = 2, c2 = 4, n0 = 3, g (n) = n Determinarea minimului unui tablou: 3n <= T (n) <= 4n 1 T (n) (n) c1 = 3, c2 = 4, n0 = 1
Structuri de date
Curs 2
Octombrie, 2013
46 / 51
Notatia
Pentru valori mari ale lui n, f (n) este marginita, atat superior cat si inferior de g (n) inmultit cu niste constante pozitive
Structuri de date
Curs 2
Octombrie, 2013
47 / 51
Notatia - proprietati
f (n) (f (n)) (reexivitate) f (n) (g (n)), g (n) (h(n)) f (n) (h(n)) (tranzitivitate) f (n) (g (n)) g (n) (f (n)) (simetrie) Daca T (n) = ad nd + ad 1 nd 1 + ... + a1 n + a0 atunci T (n) (nk ) pentru orice k = d . (cg (n)) = (g (n)) pentru orice constanta c . Cazuri particulare:
(c ) = (1) (loga h(n)) = (logb h(n)) pentru orice a, b > 1
Notatia - proprietati
(g (n)) O (g (n)) Exemplu: f (n) = 10nlgn + 5, g (n) = n2 f (n) <= g (n) pentru orice n >= 36 f (n) O (g (n)) Dar nu exist a constante c si n0 astfel incat cn2 <= 10nlgn + 5 pentru orice n >= n0 (g (n)) (g (n)) Exemplu: f (n) = 10nlgn + 5, g (n) = n f (n) >= 10g (n) pentru orice n >= 1 f (n) (g (n)) Dar nu exist a constante c si n0 astfel incat 10nlgn + 5 <= cn pentru orice n >= n0 (g (n)) = O (g (n)) (g (n))
Structuri de date Curs 2 Octombrie, 2013 49 / 51
Notatia - exemple
Inmultirea a doua matrici: T (m, n, p ) = 4mnp + 5mp + 4m + 2 Extinderea denitiei (in cazul in care dimensiunea problemei depinde de mai multe valori): f (m, n, p ) (g (m, n, p )) daca exista c1 , c2 > 0 si m0 , n0 , p0 N astfel incat c1 g (m, n, p ) <= f (m, n, p ) <= c2 g (m, n, p ) pentru orice m >= m0 , n >= n0 , p >= p0 . Astfel T (m, n, p ) (mnp ) Cautare secventiala: 5 <= T (n) <= 3n + 2 Daca T (n) = 5 atunci nu se poate gasi c1 astfel incat 5 >= c1 n pentru valori sucient de mari ale lui n T (n) nu apartine lui (n).
Structuri de date
Curs 2
Octombrie, 2013
50 / 51
Notatia - exemple
Cand n este sucient de mare, un algoritm cu o complexitate (n2 ) este mai ecient decat unul cu complexitatea (n3 )
Structuri de date
Curs 2
Octombrie, 2013
51 / 51