Sunteți pe pagina 1din 3

Complexitatea algoritmilor

Costache Radu-Mihai

Timp:numărul maxim de operatii

Complexitate

Memorie:numărul maxim de variabile

Complexitatea algoritmilor se notează cu O.

Complexitatea timp

Denumire Notație Exemplu


Constantă O(1) Formulă
Logaritmică O(logN) Cautare binară
Radicală O(sqrt(N)) Descompunere în
factori primi
Liniară O(N) Parcurgere vector
O(NlogN) QuickSort,HeapSort
Pătratică O(n2), O(mn) Parcurgere Matrice
Cubică O(n3) Parcurgere tablou cubic
Polinomială O(nk) Dreptunghi de sumă
maximă(brut)
Exponențială O(2n) Generare
submulțimi(backtraking)
Factorială O(n!) Generare Permutări

După cum se observă complexitatea se referă la numărul maxim de


instrucțiuni repetitive intercalate și gradul acestora de complexitate.

Atenție!!! Două instrucțiuni intercalate care folosesc același


contor nu au complexitate n2.
for(i = 1 ; i <= n ; ++i)
while(v[i] > 0)++i;

Complexitatea memorie
Notațiile și denumirile corespund cu cele de la timp. Aceasta se referă la
maximul de memorie utilizat.

Calculare timpului de execuție


Pentru calculare timpului avem nevoie de trei informații:
 Complexitatea algoritmului
 Restricția de Worst Case
 Aproximare timpului / secundă

Complexitatea se poate calcula pe baza informațiilor de mai sus.


Restricția de Worst Case se identifică în enunț. Aproximarea timpului de
execuție diferă de la un procesor la altul. Totuși putem face o aproximare
pentru un procesor mediu:
10.000.000 operații  1 secundă

Calcularea memoriei
Pentru calcularea memoriei va trebui să știm numărul total de variabile
de fiecare tip, precum și dimensiunea tipurilor de date.

Tip de date Dimensiune în O


char, bool 1
short 2
int 4
float 4
long long 8
double 8
long double 16

1 KO  1 O
1 MO  1024 KO

Pentru a afla valoarea maximă pe care o poate memora un tip de date


trebuie identificat tipul de numere memorat și numărul de biți ai acestuia.
Notăm numărul de biți cu b. Dacă este un tip signed acesta poate memora
numere de la -2b-1 + 1 până la 2b-1 - 1. Dacă tipul e unsigned acesta poate
memora numere de la 0 la 2b – 1.
Atenție!!! Tipul bool poate memora doar 1 sau 0 și nu are
variantă signed sau unsigned!

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