Sei sulla pagina 1di 2

1.4.

Estimarea timpului cerut de algoritm


n procesul implementrii practice a oricrui algoritm necesitatea estimrii timpului de execuie T(n) pn la testarea i depnarea definitiv a programului ce-l realizeaz. Presupunem , n scopuri didactice c execuia oricrui operator Pascal (+,-,/,*,div,and,<,<=, not etc.) necesit cel mult uniti de timp. Acelai timp este necesar pentru indexarea componentelor unui tablou [], pentru atribuirea := i instruciunea goto. Valoarea concret a mrimii depinde de mediul de programare, capacitatea de prelucrare a calculatorului utilizat i este de ordinul 10-9...10-7 secunde. n continuare vom estima timpul T(n) n forma: T(n)=Q(n)* unde Q(n) este numrul de operaii elementare- adunarea, scderea, nmulirea, compararea, etc.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 Nr de operaii elementare a*b+c 2 (a<b) or (c>d) 3 sin(x)+cos(y) 1+Qsin+Qcos a+M[i] 2 sin(x+y)+sin(x-y) 3+2Qsin Numrul de operaii elementare QI necesare pentru execuia unei instruciuni I a limbajului Pascal se estimeaz conform formulelor din tabelul 4. Numrul de operaii elementare necesare pentru execuia unei insruciuni Pascal Tabelul 4. Nr.crt 1. 2. 3. 4. 5. 6. 7. 8. 9. 10 Instruciunea Pascal Atribuirea :=E Apelul procedurii p Selecie if E then I1 else I2 Selecie multipl Case E of I1;I2;...;Ik end Ciclu cu contor For :=E1 to/downto E2 do I Ciclu cu test iniial While E do I Ciclu cu test final Repeat I until E Instruciunea compus Begin I1;I2;...;Ik end Instruciunea With do I Saltul goto Numrul de operaii elementare QE + 1 QE + 1 QE + max{QI1,QI2} + 1 QE + max{QI1,QI2,...,QIk} + K+ 1 QE1 + QE2 + mQ1 + m + 1 (m+1)QE + mQE + 1 mQ1 + mQE + 1 QI1 + QI2 +... + QIk + 1 QE+1 1

Formulele din tabelul 4 pot fi deduse urmnd modul de execuie a fiecrei instruciuni Pascal. n acest tabel reprezint o variabil sau un nume de funcie, E- o expresie, iar I- o instruciune. Numrul de execuii pentru instruciunile i din cadrul unui ciclu for, while sau repeat este notat

prin m. Menionm c ciclurile unui program Pascal pot fi organiae i cu ajutorul instruciunilor if i goto, ns o astfel de utilizare a acestor instruciuni contravine regulilor programrii structurate. Pentru exemplificare vom estima numrul de operaii elementare Q(n) necesare ordonrii elementelor unui vecctr 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 Prin urmare, numrul de operaii elementare Q(n)= 16n2-13n+2 iar timpul cerut de procedura sortare T(n)= ( 16n2-13n+2) . Din exemplul studiat mai sus se bserv c ordinea parcurgerii instruciunilor este impus de structura programelor Pascal. Evident, mai nti se analizeaz instruciunile simple iar apoi cele structurate. n cazul instruciunilor imbricate , mai nti se analizeaz instruciunile din interior , apoi cele care le cuprind. Expresiile analitice T(n) obinute n rezultatul analizei programelor pascalpot fi folosite penru determinarea experimental a timpului necesar efecturii unei operaii elementare. De exemplu , pentru prcedura sortare(vezi tabelul 3) 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 system de 500 Mhz, utilizate n procesul de msurare a timpului de execuie a procedurii Sortare.