Sunteți pe pagina 1din 16

ANALIZA ALGORITMILOR

• Complexitatea algoritmului se
caracterizează prin necesarul de memorie
şi durata de execuţie. Metodele de
estimare a acestor indicatori se studiază
într-un compartiment special al
informaticii, denumit analiza algoritmilor. În
cadrul acestui compartiment se utilizează
următoarele notaţii:
• n − un număr natural ce caracterizează
mărimea datelor de intrare ale unui algoritm.
În majoritatea cazurilor n reprezintă numărul
de elemente ale unei mulţimi, gradul unei
ecuaţii, numărul de componente ale unui
tablou etc.; V(n) − volumul de memorie
internă necesară pentru păstrarea datelor cu
care operează algoritmul; T(n) − timpul
necesar executării algoritmului. De obicei, în
acest timp nu se include durata operaţiilor de
introducere a datelor iniţiale şi de extragere a
rezultatelor
• Evident, volumul de memorie V(n) şi
timpul de execuţie T(n) depind, în primul
rînd, de caracteristica n a datelor de
intrare, fapt accentuat şi prin folosirea
notaţiilor ce reprezintă funcţii de
argumentul n. Aplicarea practică a unui
algoritm este posibilă numai atunci cînd
necesarul de memorie şi timpul cerut nu
încalcă restricţiile impuse de mediul de
programare şi capacitatea de prelucrare a
calculatorului utilizat.
• De exemplu, presupunem că pentru
rezolvarea unei probleme există doi
algoritmi diferiţi, notaţi prin A1 şi A2.
Necesarul de memorie şi timpul cerut de
algoritmul A1 este:
• În aceste formule volumul de memorie se
calculează în octeţi, iar timpul – în
secunde.
• Necesarul de memorie şi timpul cerut de
algoritmii A1, A2 pentru diferite valori
ale lui n este prezentat în tabelul de mai jos.
• Din tabelul 4.1 se observă că algoritmul A2 devine practic inutilizabil pentru
datele de intrare caracteristica cărora n > 30. Pentru astfel de date timpul de
execuţie a algoritmului A1 este mult mai mic, însă necesarul de memorie V1(n)
poate depăşi limita impusă de mediul de programare (64 Kocteţi pentru
variabilele statice din programele Turbo PASCAL 7.0).
• Determinarea necesarului de memorie V(n) şi a timpului de execuţie T(n) prezintă
• un interes deosebit la etapa de elaborare a algoritmilor şi a programelor
respective.
• Evident, anume pe parcursul acestei etape pot fi eliminaţi din start acei
• algoritmi care necesită memorii prea mari sau care au un timp de execuţie
inacceptabil.
• Menţionăm că existenţa unor calculatoare cu memorii din ce în ce mai
performante fac ca atenţia informaticienilor să fi e îndreptată în special
asupra necesarului de timp sau, cu alte cuvinte, asupra complexităţii
temporale a algoritmilor.
Estimarea necesarului de memorie
• Evaluarea necesarului de memorie V(n)
poate fi făcută însumînd numărul de octeţi
alocaţi pentru fi ecare variabilă din program.
Numărul de octeţi alocat unei variabile
nestructurate integer, real, boolean, char,
enumerare, subdomeniu, referinţă depinde
de implementarea limbajului. Numărul de
octeţi alocat unei variabile depinde de
implementarea limbajului. În mediul de
programare Turbo PASCAL 7.0
• memoria se alocă conform tabelului de mai jos
• În cazul tipurilor structurate de date volumul
de memorie necesar unei variabile
• se calculează însumînd numărul de octeţi
alocaţi pentru fi ecare componentă.
• De exemplu, necesarul de memorie pentru
variabilele A, B, p şi s din declaraţiile:
• În general, necesarul de memorie al unui program PASCAL depinde
nu numai de
• tipul variabilelor utilizate, dar şi de modul de gestionare a memoriei
interne a calculatorului. În procesul derulării unui program
PASCAL spaţiul de memorie internă este divizat în trei secţiuni
(fi g. 4.1):
• segmentul date, destinat alocării variabilelor globale.
Aceste variabile se declară în secţiunea var a programului
PASCAL;
• stiva, destinată alocării parametrilor actuali, variabilelor
locale, valorilor returnate de funcţii şi adreselor de revenire pe
durata execuţiei subprogramelor PASCAL.
• Apelul unui subprogram implică depunerea datelor respective
în stivă, iar ieşirea din subprogram eliminarea lor.
Accentuăm că în cazul parametrului-variabilă în stivă se
depune numai adresa variabilei din programul apelant, iar în cazul
parametruluivaloare în stivă va fi depusă o copie a datelor din
lista parametrilor actuali.
• heap-ul, utilizat pentru alocarea variabilelor dinamice. Aceste
variabile sînt create şi, eventual, distruse cu ajutorul procedurilor
new şi dispose.
• Prin urmare, estimarea necesarului de memorie
presupune evaluarea următoarelor caracteristici ale
unui program:
• Vd(n) volumul de memorie ocupat de variabilele
globale în segmentul date;
• Vs(n) volumul de memorie ocupat de parametrii
actuali şi de variabilele locale în stivă;
• Vh(n) volumul de memorie ocupat de variabilele
dinamice în heap.
• De obicei, în mediul de programare Turbo PASCAL 7.0
se cere ca Vd(n) 64 Kocteţi,
• Vs(n) 16 Kocteţi şi Vh(n) 256 Kocteţi. Dimensiunile
stivei şi ale heap-ului pot fi modificate cu ajutorul
directivelor de compilare sau a comenzilor mediului de
programare.

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