Sei sulla pagina 1di 12

Algoritmi

Estimarea timpului cerut de algoritm

Ce reprezinta timpul cerut de algoritm?


T(n) este timpul necesar executarii algoritmului. De obicei , in acest timp nu se include durata operatiilor de introducere a datelor initiale si de extragere a rezultatelor.

n procesul implementrii practice a oricrui algoritm apare necesitatea estimrii timpului de execuie T(n) pn la testarea i depnarea definitiv a programului ce-l realizeaz. S-a ajuns la concluzia ca prin metode teoretice este foarte greu de determinat o expresie exacta pentru T(n). Din aceste motive se cauta o limita superioara timpului cerut de algoritm. Presupunem , n scopuri didactice c execuia oricrui operator Pascal (+,,/,*,div,and,<,<=, not etc.) necesit cel mult uniti de timp Valoarea concret a mrimii depinde de mediul de programare, capacitatea de prelucrare a calculatorului utilizat i este de ordinul 10-9...10-7 secunde. Astfel , timpul de executie T(n) se estimeaza in forma : T(n)=Q(n)* unde Q(n) este numrul de operaii elementare necesare pentru soluionarea unei probleme.

Admitem c ntr-o expresie E apar m operatori Pascal i k apeluri ale funciei F. Evident , numrul QE de operaii elementare necesare pentru calcularea expresiei E se determin ca QE=m+kQF unde QF este numrul de operaii elementare necesare pentru calcularea funciei F.

Exemple
Expresia E a*b+c (a<b) or (c>d) sin(x)+cos(y) a+M[i] sin(x+y)+sin(x-y) Nr de operaii elementare 2 3 1+Qsin+Qcos 2 3+2Qsin

Numrul de operaii elementare necesare pentru execuia unei insruciuni Pascal

Pentru exemplificare vom estima numrul de operaii elementare Q(n) necesare ordonrii elementelor unui vector prin metoda bulelor.

Procedure Sortare(var A:Vector; n:integer); Var i,j :integer; R:real; {1} Begin {2} For i:=1 to n do {3} For j:=1 to n-1 do {4} If A[j]>A[j+1] then {5} Begin {6} r:=A[j]; {7} A[j]:=A[j+1]; {8} A[j+1]:=r; End; End; {Sortare}

Instruciunile I1,I2,...,I8 ale procedurii Sortare vor fi referite cu ajutorul comentariilor {1},{2},...,{8} din partea stng a liniilor de program. Prin Qj vom nota numrul de operaii elementare necesare pentru executarea instruciunii Ij: Q6 = 2; Q7 = 4; Q8 = 3; Q5 = Q6+ Q7+Q8+1=10; Q4 = 4+Q5+1=15; Q3 =0+1+(n-1)Q4+(n-1)+1=16n-14; Q2= 0 + 0 + nQ3 + n + 1=16n2-13n+1; Q1=Q2+1=16n2-13n+2

Rezultate
Q1+Q2+Q3+Q4+Q5+Q6+Q7+Q8 = Q(n) = 16n2-13n+2

T(n) = (16n2-13n+2)

Ordinea parcurgerii instructiunilor

Este impusa de structura programelor PASCAL. Evident , mai intii se nalizeaza instructiunile simple , iar apoi cele structurate.

Expresiile analitice T(n) obinute n rezultatul analizei programelor PASCAL pot fi folosite pentru determinarea experimental a timpului necesar efecturii unei operaii elementare. De exemplu , pentru procedura sortare n=10000 i T(n)=28,18 s. Din ecuaia ( 16n2-13n+2) .=28,18 obinem 1,8*10-8secunde. Evident, aceast valoare este valabil numai pentru mediul de programare Turbo Pascal 7.0 i calculatorul Pentium cu frecvena ceasului de sistem de 500 Mhz, utilizate n procesul de msurare a timpului de execuie a procedurii Sortare.

Au realizat : Soltan Vasile Rosca Valentina

Potrebbero piacerti anche