Sunteți pe pagina 1din 56

Curs 2. Analiza ecientei algoritmilor.

Octombrie, 2013

Cont inut

Analiza ecientei algoritmilor

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

Pentru date de intrare de dimensiuni mari, programul rezolva problema?

Knuth (1970): sa utilizam metode stiintice pentru a intelege performanta algoritmilor

Structuri de date

Curs 2

Octombrie, 2013

4 / 51

Analiza ecientei algoritmilor


analiza complexitatii estimarea volumului de resurse de calcul necesare executiei algoritmului
spatiu de memorie: spatiul necesar stocarii datelor timp de executie: timp necesar executiei algoritmului

algoritm ecient: necesita un volum rezonabil de resurse de calcul


ecienta se masoara in raport cu spatiul de memorie, sau cu timpul de executie

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

Analiza ecientei timp

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

o unitate de masura a timpului de executie


timpul necesar executiei unei prelucrari elementare operatii elementare: asignare, operatii aritmetice, comparatii, operatii logice

timp de executie al algoritmului

Structuri de date

Curs 2

Octombrie, 2013

7 / 51

Cont inut

Analiza ecientei algoritmilor

Exemple calcul

Ordin de crestere

Notatie asimptotica

Structuri de date

Curs 2

Octombrie, 2013

8 / 51

Exemplul 1. Suma primelor n numere intregi


Intrare: n >= 1 Iesire: suma s = 1 + 2 + ... + n Dimensiunea problemei: n Function suma(n) begin s0 i 1 while i <= n do s s +i i i +1 return s end Operatie Cost Nr. repetari 1 c1 1 2 c2 1 3 c3 n+1 4 c4 n 5 c5 n Timp de executie: T (n) = (c 3+c 4+c 5)n+(c 1+c 2+c 3) =a n + b

1 2 3 4 5 6

Structuri de date

Curs 2

Octombrie, 2013

9 / 51

Exemplul 1. Suma primelor n numere intregi


Consideram ca toate prelucrarile elementare au acelasi cost (cost unitar)
T (n) = 3(n + 1) constantele ce intervin in expresie nu sunt importante timpul de executie depinde liniar de dimensiunea problemei algoritm echivalent: s0 for i 1 to n do s s +i
gestiunea contorului: 2(n + 1) operatii calculul sumei: (n + 1) operatii (initializarea si actualizarea lui s)

Structuri de date

Curs 2

Octombrie, 2013

10 / 51

Exemplul 2. Inmultirea a doua matrici


Intrare: A(mxn), B (nxp ) Iesire: C = A B , Ci ,j = n k =1 Aik Bkj , Ci ,j = A[i , 1] B [1, j ] + A[i , 2] B [2, j ] + ... + A[i , n] B [n, j ], i = 1..m, j = 1..p Dimensiunea problemei: mnp Function produs(a[0..m 1, 0..n 1], b [0..n 1, 0..p 1]) begin for i 0 to m 1 do for j 0 to p 1 do c [i , j ] 0 for k 0 to n 1 do c [i , j ] c [i , j ] + a[i , k ] b [k , j ] return c [0..m 1, 0..p 1] end
Structuri de date Curs 2 Octombrie, 2013 11 / 51

1 2

5 6

Exemplul 2. Inmultirea a doua matrici


Operatie Cost Nr. repetari 1 2(m+1) 1 2 2(p+1) m 3 1 mp 4 2(n+1) mp 5 2 mpn Timp de executie: T (m, n, p ) = 4mnp + 5mp + 4m + 2 Observatie: nu este necesar sa se completeze intreg tabelul; este sucient sa se contorizeze operatia dominanta cea mai frecventa (costisitoare) operatie a[i , k ] b [k , j ] estimare timp de executie: T (m, n, p ) = mnp

Structuri de date

Curs 2

Octombrie, 2013

12 / 51

Exemplul 3. Minimul unui tablou


Intrare: x [0..n 1], n >= 1 Iesire: m = minim(x [0..n 1]) Dimensiunea problemei: n Function minim(x [0..n 1]) begin m x [0] i 1 while i < n do if x [i ] < m then m x [i ] i i +1 return m end

1 2 3 4 5 6 7

Operatie Cost 1 1 2 1 3 1 4 1 5 1 6 1 Timp de executie:

Nr. repetari 1 1 n n-1 t(n) n-1 T (n) = 3n + t (n)

Structuri de date

Curs 2

Octombrie, 2013

13 / 51

Exemplul 3. Minimul unui tablou


Timpul de executie depinde de:
dimensiunea problemei si proprietatile datelor de intrare

Trebuie analizate cazurile extreme:


cazul cel mai favorabil
x [0] <= x [i ], i = 0..n 1 t (n) = 0 T (n) = 3n

cazul cel mai defavorabil


x [0] > x [1] > ... > x [n 1] t (n) = n 1 T (n) = 4n 1

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

Exemplul 4. Cautarea secventiala


Intrare: x [0..n 1], n >= 1, v o valoare Iesire: valoarea de adevar a armatiei v este in x [0..n 1] Dimensiunea problemei: n Function cauta(x [0..n 1], v ) begin i 0 while x [i ]! = v and i < n do i i +1 if x [i ] == v then gasit true else gasit false return gasit end
Structuri de date

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

Exemplul 4. Cautarea secventiala

Timpul de executie depinde de dimensiunea problemei si de proprietatile datelor de intrare .


cazul cel mai favorabil
x [0] = v t (n) = 0 T (n) = 5

cazul cel mai defavorabil


x [n 1] = v sau (v ! = x [0], ..., v ! = x [n 1]) t (n) = n 1 T (n) = 3n + 2

Daca se considera ca operatie dominanta comparatia x [i ]! = v


cazul cel mai favorabil: T (n) = 2 cazul cel mai defavorabil: T (n) = n + 2

Structuri de date

Curs 2

Octombrie, 2013

16 / 51

Exemplul 5. Sortarea prin insertie


Intrare: o secventa < a1 , ..., an > de numere Iesire: o permutare < a1 , ..., an > astfel incat a1 <= a2 <= ... <= an Procedure insertion-sort(a[0..n 1], n) begin for j 1 to n 1 do key a[j ] i j 1 while i >= 0 and a[i ] > key do a[i + 1] a[i ] i i 1 a[i + 1] key end

1 2 3 4

6 7

Structuri de date

Curs 2

Octombrie, 2013

17 / 51

Sortare prin insertie - exemplu

Structuri de date

Curs 2

Octombrie, 2013

18 / 51

Sortare prin insertie - exemplu

Structuri de date

Curs 2

Octombrie, 2013

19 / 51

Sortare prin insertie - exemplu

8 1

1 8

4 4 9

9 2

2 6

Structuri de date

Curs 2

Octombrie, 2013

19 / 51

Sortare prin insertie - exemplu

8 1

1 8

4 4

9 9

2 2

6 6

Structuri de date

Curs 2

Octombrie, 2013

20 / 51

Sortare prin insertie - exemplu

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

Sortare prin insertie - exemplu

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

Sortare prin insertie - exemplu

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

Sortare prin insertie - exemplu

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

Sortare prin insertie - exemplu

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

Sortare prin insertie - exemplu

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

Sortare prin insertie - exemplu

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

Exemplul 5. Sortarea prin insertie

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

Exemplul 5. Sortarea prin insertie


Timpul de executie depinde de:
dimensiunea secventei de intrare proprietatile secventei de intrare

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

Analiza in cazul cel mai favorabil


o margine inferioara pentru timpul de executie identicarea algoritmilor inecienti
daca un algoritm are un cost ridicat in cazul cel mai favorabil, atunci el nu reprezinta o solutie acceptabila

Analiza in cazul cel mai nefavorabil


cel mai mare timp de executie in raport cu toate datele de intrare (o margine superioara a timpului de executie) marginea superioara este mai importanta decat cea inferioara

Structuri de date

Curs 2

Octombrie, 2013

26 / 51

Analiza in cazul mediu


Exista situatii cand cazul cel mai favorabil si cel mai defavorabil sunt cazuri rare (exceptii)
analiza in cele doua cazuri nu furnizeaza sucienta informatie

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

Analiza in cazul mediu


Ipoteze privind distributia de probabilitate a datelor de intrare
datele de intrare pot grupate in clase (timpul de executie e acelasi pentru datele din aceeasi clasa) avem m clase cu date de intrare probabilitatea de aparitie a unei date din clasa k este Pk timpul de executie pentru date din clasa k este Tk (n)

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

Exemplul 4. Cautarea secventiala

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

Etapele analizei algoritmilor

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

5. se stabileste ordinul (clasa) de complexitate

Structuri de date

Curs 2

Octombrie, 2013

30 / 51

Analiza ecientei algoritmilor

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

Analiza ecientei algoritmilor

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

Timp de executie T 1(n) = an + b T 2(n) = alogn + b T 3(n) = an2 + bn + c T 4(n) = an + bn + c (a > 1)

Termen dominant an alogn an2 an

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

problemei liniar logaritmic patratic exponential

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

Comparatia a doi algoritmi


algoritmul cu ordinul de crestere mai mic este mai ecient comparatia se realizeaza pentru valori mari ale dimensiunii problemei (cazul asimptotic) Exemplu: T 1(n) = 10n + 10 T 2(n) = n2 Daca n <= 10 atunci T 1(n) > T 2(n); ordinul de crestere este relevant doar pentru n > 10

Structuri de date

Curs 2

Octombrie, 2013

35 / 51

O comparatie a ordinelor de crestere


Dependenta timpilor de executie a diferiti algoritmi in raport cu dimensiunea problemei (consideram un procesor ce realizeaza 106 instructiuni pe secunda); daca timpul de executie depaseste 1025 ani, asam nu. n log2 n nlog2 n n2 n3 2n n = 10 < 1 sec < 1 sec < 1 sec < 1 sec < 1 sec n = 30 < 1 sec < 1 sec < 1 sec < 1sec 18 min n = 50 < 1 sec < 1 sec < 1 sec < 1sec 36 ani n = 100 < 1 sec < 1 sec < 1 sec 1 sec 1017 ani n = 1000 < 1 sec < 1 sec 1 sec 18 min nu n = 10000 < 1 sec < 1 sec 2 min 12 zile nu n = 100000 < 1 sec 2 sec 3 ore 32 ani nu n = 1000000 < 1 sec 20 sec 12 zile 31710 ani nu

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

Analiza ecientei algoritmilor

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

Ordine de crestere asimptotica


Fie f , g : N R+ doua functii care depind de dimensiunea problemei si iau valori pozitive

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

(f (n) + g (n)) = (max {f (n), g (n)})


Structuri de date Curs 2 Octombrie, 2013 48 / 51

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