Sunteți pe pagina 1din 14

În informatică complexitatea temporală a algoritmilor se caracterizează prin tim-

pul de execuţie T(n) sau numărul de operaţii elementare Q(n). Întrucît


calculatoarele moderne au o viteză de calcul foarte mare- 10^8 ... 10^10
instrucţiuni pe secundă, problema timpului de execuţie se pune numai pentru
valorile mari ale lui n.
În consecinţă, în formulele ce exprimă numărul de operaţii elementare Q(n)
prezintă interes numai termenul dominant, adică acel care tinde cît mai repede la
infinit. Importanţa termenului dominant faţă de ceilalţi este pusă în evidenţă în
tabelul 4.5.
De exemplu, numărul
de operaţii
elementare ale
procedurii Sortare se
exprimă
prin formula:

Termenul dominant
din această formulă
este 16n^2 . Evident,
pentru valorile mari
ale lui n numărul de
operaţii elementare

iar timpul de execuţie


În funcţie de complexitatea temporală, algoritmii se clasifică în:
algoritmi polinomiali;
algoritmi exponenţiali;
algoritmi nederminist polinomiali.
Un algoritm se numeşte polinomial dacă termenul dominant are forma

n-este caracteristica datelor de intrare; C-o constantă pozitivă; k-un număr


natural.
Complexitatea temporală a algoritmilor polinomiali este redată prin notaţia
O(n^k) care se citeşte „algoritm cu timpul de execuţie de ordinul n^k ” sau, mai pe
scurt, „algoritm de ordinul n^k ”. Evident, există algoritmi polinomiali de ordinul
n, n^2 , n^3 etc. De exemplu, algoritmul de sortare a elementelor unui vector prin
metoda bulelor este un algoritm polinomial de ordinul n^2 .
Un algoritm se numeşte
exponenţial dacă termenul
dominant are forma Ck^n,
adică

unde k>1. Complexitatea


temporală a algoritmilor
exponenţiali este redată
prin notaţia O(k^n ).
Menţionăm faptul că tot
exponenţiali se consideră şi
algoritmii de complexitatea
n^log n , cu toate că
aceasta nu este
exponenţială în sensul
strict matematic.
Din comparaţia vitezei de creştere a funcţiilor exponenţială şi polinomială rezultă
că algoritmii exponenţiali devin inutilizabili chiar pentru valori nu prea mari ale
lui n. Algoritmii nederminist polinomiali se studiază în cursurile avansate de
informatică. În funcţie de complexitatea temporală se consideră că o problemă este
uşor rezolvabilă dacă pentru soluţionarea ei există un algoritm polinomial.
O problemă pentru
care nu există un
algoritm polinomial
se numeşte difi cilă.
Accentuăm faptul
că această clasifi
care se referă doar
la analiza
asimptotică a
algoritmilor, adică
la comportarea lor
pentru valori mari
ale lui n. Pentru
valorile mici ale lui
n situaţia poate fi
diferită.
În practică, elaborarea programelor de calculator presupune parcurgerea
următoarelor etape:
1)formularea exactă a problemei; 2)determinarea complexităţii temporale a
problemei propuse-problemă uşor rezolvabilă sau problemă dificilă;
3)elaborarea algoritmului respectiv şi implementarea lui pe un sistem de calcul.
Evident, în
cazul unor
probleme uşor
rezolvabile,
programatorul
va depune toate
eforturile
pentru a inventa
algoritmi
polinomiali,
adică algoritmi
de ordinul n^k ,
astfel
încît parametrul
k să ia valori cît
mai mici.
În cazul problemelor dificile se va da prioritate algoritmilor care minimizează
timpul de execuţie cel puţin pentru datele de intrare frecvent utilizate în aplicaţiile
practice. Metodele de clasifi care a problemelor în cele uşor şi cele dificil
rezolvabile se studiază în cursurile avansate de informatică.
Mulțumim
pentru
atenție!