Analiza algoritmilor. Masurarea volumului

12
Analiza algoritmilor

Transcript of Analiza algoritmilor. Masurarea volumului

Page 1: Analiza algoritmilor. Masurarea volumului

Analiza algoritmilor

Page 2: Analiza algoritmilor. Masurarea volumului

Complexitatea algoritmilor

Algoritmul reprezintă o succesiune finită de operaţii cunoscute care fiind executate într-o ordine bine stabilită furnizează soluţia unei probleme.

Page 3: Analiza algoritmilor. Masurarea volumului

Complexitatea algoritmilor

Coplexitatea algoritmilor se caracterizează prinnecesarul de memorie şi durata de execuţi.

Metodele de estimare a acestor indicatori se studiază într-un compartiment special al informaticii numit analza algoritmilor.

Page 4: Analiza algoritmilor. Masurarea volumului

Complexitatea algoritmilor

Vom folosi următoarele notaţii:

n- un număr natural ce caracterizează mărimea datelor de intrare ale unui algoritm.

V(n)-volumul de memorie internă necesară pentru păstrarea datelor cu care operează algoritmul.

T(n)- timpul execuţiei algoritmului.

Page 5: Analiza algoritmilor. Masurarea volumului

Complexitatea algoritmilor

Exemplu, pentru rezolvarea unei probleme există doi algoritmi pe care îi notăm cu А1 şi А2

Necesarul de memorie şi timpul execuţiei pentru algoritmul este А1

V1 (n)=100n2+4T1(n)=n3+10-3

Iar А2

V2 (n)=100n+12

T2(n)=2n•10-6

Page 6: Analiza algoritmilor. Masurarea volumului

Complexitatea algoritmilor

n 10 20 30 40 50

V1(n) 9,77Kocteţi 39,06 Kocteţi

87,89 Kocteţi

156,25 Kocteţi

244,14 Kocteţi

V2(n) 112 Kocteţi 212 Kocteţi 312 Kocteţi 412 Kocteţi 512 Kocteţi

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

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

Page 7: Analiza algoritmilor. Masurarea volumului

Estimarea necesarului de memorie

Evaluarea necesarului de memorie V(n) poate fi făcută calculînd numărul variabilelor nestructurate integer,real,booleean,char,enumerare,subdomeniu..

În PASCAL 7 memoria se alocă conform tabelului

Page 8: Analiza algoritmilor. Masurarea volumului

Tip Memoria

integer 2 octeţi

real 6 octeţi

boolean 1 octet

char 1 octet

enumerare 1 octet

interval In dependenţă de tipul de bază

referinţă 4 octeţi

pointer 4 octeţi

Page 9: Analiza algoritmilor. Masurarea volumului

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

Page 10: Analiza algoritmilor. Masurarea volumului

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;

Page 11: Analiza algoritmilor. Masurarea volumului

Masurarea timpului de executie

Unit U7;InterfaceFunction TimpulCurent:real;ImplementationUses 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.

Page 12: Analiza algoritmilor. Masurarea volumului

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] thenbeginr:=A[j];

A[j]:=A[j+1];A[j+1]:=r;End;End;BeginWrite(‘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.