EFICIENTA ALGORITMILOR Eficienta unui algoritm este evaluata prin










- Slides: 10
EFICIENTA ALGORITMILOR
Eficienta unui algoritm este evaluata prin timpul necesar pentru executarea algoritmului. Pentru a compara doi algoritmi care ezolva aceeasi problema, vei folosi aceeasi dimensiune a datelor de intrare si una dintre metodele de evaluare a eficientei.
Metode de eficienta numarul de operatii elementare algoritmului(daca se poate preciza) timpul mediu de executie Este foarte important sa determinati corect dimesiunea datelor de intrare. De exemplu, in cazul unui vector cu n componente dimensiunea datelor de intrare este n.
Numarul de operatii elementare Pentru a compara doi algoritmi folosind numarul de operatii elementare, trebuie sa stabilim unitatea de masura pe care o vom folosi, adica operatia de baza executata in cadrul algoritmului, si numaram apoi in cazul fiecarui algoritm de cate ori se executa ea.
Operatia de baza este o operatie elementara sau o succesiune de operatii elementare a caror executie nu depinde de valorile datelor de intrare. Marimile care pot fi folosite in compararea a doi algoritmi sunt: eficienta ordinul de complexitate
Eficienta unui algoritm reprezinta tipul de calcul estimat prin numarul de executii ale operatiei de baza.
Ordinul de complexitate � Ordinul de complexitate al unui algoritm il reprezinta timpul de calcul estimat prin ordinul de marime al numarului de executii ale operatiei de baza.
Ordin de complexitate Tipul algoritmului O(n) Algoritm liniar O(nm) Algoritm polinominal. Daca m=2, algoritmul este patratic, iar daca m=3 algoritmul este cubic. O(kn) Algoritm exponential. De exemplu 2 n sau 3 n O(logn) Algoritm logaritmic O(nlogn) Algoritm liniar logaritmic.
Concluzii: Cei mai rapizi algoritmi sunt cei logaritmici. 2. Daca pentru rezolvarea aceleiasi probleme exista algorimi polinominali si exponentiali, se prefera cei polinominali. 3. Daca pentru rezolvarea aceleiasi probleme exista mai multi agoritmi polinominali, se prefera cel cu gradul mai mic. 1.
Sa se verifice daca intr-un vector sortat cu n elemente exista o valoare x citita de la tastatura. #include<iostream> int n, a[50], x; int cauta() {int s=0, d=n-1, m, gasit=0; while(!gasit&&s<=0) {m=(s+d)/2; if(a[m]==x) gasit=1; else if(a[m]<x)s=m+1; else d=m-1; } if(gasit) return 1; else return 0; }