Sunteți pe pagina 1din 12

Analiza algoritmilor

Complexitatea algoritmilor

Algoritmul reprezint o succesiune


finit de operaii cunoscute care fiind
executate ntr-o ordine bine stabilit
furnizeaz soluia unei probleme.
Complexitatea algoritmilor

Coplexitatea algoritmilor se
caracterizeaz prinnecesarul de
memorie i durata de execui.
Metodele de estimare a acestor
indicatori se studiaz ntr-un
compartiment special al informaticii
numit analza algoritmilor.
Complexitatea algoritmilor

Vom folosi urmtoarele notaii:


n- un numr natural ce caracterizeaz
mrimea datelor de intrare ale unui
algoritm.
V(n)-volumul de memorie intern necesar
pentru pstrarea datelor cu care
opereaz algoritmul.
T(n)- timpul execuiei algoritmului.
Complexitatea algoritmilor

Exemplu, pentru rezolvarea unei probleme exist


doi algoritmi pe care i notm cu 1 i 2
Necesarul de memorie i timpul execuiei pentru
algoritmul este 1
V1 (n)=100n2+4
T1(n)=n3+10-3
Iar 2
V2 (n)=100n+12
T2(n)=2n10-6
Complexitatea algoritmilor
n 10 20 30 40 50

V1(n) 9,77Koctei 39,06 87,89 156,25 244,14


Koctei Koctei Koctei Koctei

V2(n) 112 Koctei 212 Koctei 312 Koctei 412 Koctei 512 Koctei

T1(n) 1s 8s 9s 16s 25s

T2(n) 0,001s 1,05s 18s 13zile 36ani


Estimarea necesarului de memorie

Evaluarea necesarului de memorie V(n)


poate fi fcut calculnd numrul
variabilelor nestructurate
integer,real,booleean,char,enumerare,su
bdomeniu..
n PASCAL 7 memoria se aloc conform
tabelului
Tip Memoria
integer 2 octei
real 6 octei
boolean 1 octet
char 1 octet
enumerare 1 octet
interval In dependen de tipul de baz
referin 4 octei
pointer 4 octei
Var A:array[1..n,1..n] of real;
B :array [1..n] of integer;
P: boolean;
S:string[10];
Sa calculam necesarul de memorie pentru
variabilele A,B,P,S
V(n)=6n2 +n+1+10= 6n2 +n+11 octeti
exercitiu

Sa se calculeze necesarul de memorie


pentru variabilele din urmatoarele
declaratii
Var A:array[1..n,1..n] of integer;
B :string;
P: boolean;
C:array[1..n,1..n,1..n] of boolean;
Masurarea timpului de executie
Unit U7;
Interface
Function TimpulCurent:real;
Implementation
Uses Dos;
Var ore:word;
minute:word;
secunde:word;
sutimi:word;
Function TimpulCurent;
GetTime(ore,minute,secunde,sutimi);
TimpulCurent:=3600.0*ore+60.0*minute+1.0*secunde+0.01*sutimi;
End;
End.
Masurarea timpului de executie
Program p149;
Uses U7;
Type vector =array[1..10000] of real;
Var A:vector;
i,n:integer;
t1,t2:real;
procedure sortare (var A:vector;n:integer);
var I,j:integer;
r:real;
begin
for i:=1 to n do
for j:=1 to n-1 do
if A[j]>A[j+1] then
begin
r:=A[j];
A[j]:=A[j+1];
A[j+1]:=r;
End;
End;
Begin
Write(Introduceti numarul de elemente n=);
Readln(n);
For i:=1 to n do A[i]:=n-i+1;
t1:=TimpulCurent;
sortare(A,n);
t2:=TimpulCurent;
writeln(Timpul executiei , (t2-t1):7:2, sek.);
readln.