Sunteți pe pagina 1din 1

Analiza complexităţii unui algoritm

Complexitatea unui algoritm se măsoară de regulă după două criterii

1) Din punct de vedere al memoriei → se referă la cantitatea de memorie pe care o


utilizează un program.
De regulă un program este cu atât mai eficient cu cât utilizează o cantitate mai mică de
memorie.
Astfel, drept criterii pentru ca un program să fie eficient d.p.d.v. al utilizării memoriei,
trebuie, pe cât posibil, să NU utilizăm vectori ci DOAR variabile simple.
(sau, dacă chiar utilizăm vectori, aceştia să fie cât mai mici – de exemplu un vector cu 10
elemente este OK din acest punct de vedere)

2) Din punct de vedere al timpului de executare → se referă la numărul de paşi pe


care-l face algoritmul.
Mai precis, numărul de paşi se socoteşte în linii foarte foarte mari şi generale.
Astfel, un program se poate încadra într-una din următoarele categorii:

O(1) – programul face 2-3 paşi (un nr. mic şi finit) – numărul de paşi NU depinde de o
anumită variabilă
O(log n) – se numeşte complexitate logaritmică – numărul de paşi este în funcţie de log n
algoritmul căutării binare are această complexitate
O(√𝑛) – exemplu: testarea dacă un număr este prim
O(n) – cel mai întâlnit caz – sunt algoritmi care se rezolvă printr-una, două, trei, (un nr.
finit) de parcurgeri integrale sau parţiale (ale vectorului)
Obs: interclasarea are complexitatea O(n+m)
O(n log n) – de exemplu aplicarea căutării binare de n ori
O(n2) – deja această complexitate dă algoritmi ceva mai lenţi.
Este cazul algoritmilor care au for pe for, ambii cu n paşi, sau unul cu n paşi şi altul
cu nr. crescător de paşi.
Ex: sortarea obişnuită (pe 2 for-uri)

O serie de programe cer explicarea metodei şi a elementelor de eficienţă ale acesteia.


Iată cele mai întâlnite tipuri de argumentări:

"Algoritmul este eficient d.p.d.v. al memoriei deoarece utilizează DOAR variabile simple,
fără a memora vectori sau alte variabile compuse"

"Algoritmul este eficient d.p.d.v. al memoriei deoarece utilizează câteva variabile simple şi
un vector foarte mic, cu doar 10 elemente"

"Algoritmul este eficient d.p.d.v. al timpului de executare deoarece obţinem rezultatul pe


cale matematică, fără a fi nevoiţi să facem paşi suplimentari"

"Algoritmul este eficient d.p.d.v. al timpului de executare deoarece algoritmul are un număr
foarte mic şi constant de paşi, şi anume 3"

"Algoritmul este eficient d.p.d.v. al timpului de executare deoarece algoritmul parcurge


datele de intrare o singură dată / cel mult o dată"

"Algoritmul este eficient d.p.d.v. al timpului de executare deoarece algoritmul parcurge


datele de intrare o singură dată / cel mult o dată după care parcurge şi vectorul de
numărare"

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