Sunteți pe pagina 1din 12

Complexitatea algoritmilor

Prof. Liliana Arici CNNB

COMPLEXITATE N SPAIU
dimensiunea spaiului de memorie utilizat de program
spaiul de memorie necesar memorrii instruciunilor programului codul programului; spaiul de memorie necesar memorrii constantelor i variabilelor; spaiul de memorie necesar pstrrii structurilor dinamice; spaiul de memorie necesar apelurilor de funcii (inclusiv pentru parametri i variabile locale)

ALGORITMUL DE MAXIM CU VECTORI


max=a[1] Pentru i=2, n, 1 Dac a[i]>max atunci max=a[i] Sf. Dac Sf. Pentru

max, i, n * 2 octei = 6 octei tabloul a n * 2 octei = 2n octei Total 2n+6 octei

Obs. 1. O dat de tip int ocup 2 octei 2. O dat de tip long sau float ocup 4 octei
3

MAXIM RECURSIV
int max(int i) { if (i==n) return(a[i]); else { int x=max(i+1); if (a[i]>x) return(a[i]); else return x; } }

adresa de revenire - 2 octei parametrul i - 2 octei variabila local x 2 octei tabloul a n * 2 octei = 2n octei

MAXIM CU VARIABILE SIMPLE


Citete (n) Citete (x) Max=x Pentru i=2,n,1 Citete (x) Dac x>max at Max=x Sf. Dac Sf. Pentru Scrie (max)

n, x, max, i * 2 octei = 8 octei

COMPLEXITATEA N TIMP
o estimare a timpului de execuie, adic o aproximare a numrului de operaii executate de program n funcie de dimensiunea datelor de intrare se noteaz cu T(n) i depinde de ordinul de mrime a datelor prelucrate. T(n)=O(f(n)), unde O(f(n))=ordinul de complexitate (de mrime) al algoritmului, iar f(n) este o funcie care exprim eficiena.
6

Operaii de baz
O operaie de baz este o operaie sau o succesiune de operaii care nu depind de caracteristicile problemei care se rezolv. O operaie de baz poate fi: - o atribuire - o comparaie - 10 adunri - 10 nmuliri, etc.,dar n adunri nu reprezint o operaie de baz - 1 citire i o comparaie, 1 citire i o atribuire, etc.
7

Schema lui Horner


P(x)= a0* xn + a1xn-1 + +an

P=a[0] Pentru i=1,n,1 P=P*x + a[i] Sf. Pentru Scrie(P)

CICLURI INCLUSE
x=1 Pentru i=1, n, 1 Pentru j=1, n, 1 y=2 * x++ scrie(y) Sf. Pentru Sf. Pentru

CUTARE BINAR
gsit=0 li=1 ls=n Ct timp li<ls i gsit=0 m=(li + ls)/2 Dac a[m]=x atunci gsit=1 altfel Dac a[m]>x atunci li=m + 1 altfel ls=m 1 Sf. Dac Sf. Dac Sf. Ct timp

10

Complexitatea algoritmilor
Complexitate O(log2n) O(n) O(n2) O(n3) O(2n) O(n!) Tipul de algoritm Algoritm logaritmic Algoritm liniar Algoritm ptratic Algoritm cubic Algoritm exponenial Algoritm factorial

11

n loc de concluzii
Sper c v-am dat o alt perspectiv asupra rspunsului la ntrebarea Care algoritm este mai bun?

12

S-ar putea să vă placă și