Documente Academic
Documente Profesional
Documente Cultură
Scheme logice
ALGORITMUL
Proceduri
Formule matematice
Functii
Instructiuni
Analiza algoritmilor
V(n)
T(n)
n
Volumul de memorie interna necesara p-u pastrarea datelor cu care opereaza algoritmul.
Este un nr. natural ce caracterizeaza marimea datelor de intrare ale unui algoritm . Timpul necesar executarii algoritmului.
posibila numai atunci cind necesarul de memorie si timpul cerut nu se incalca restrictiile impuse de mediul de programare si capacitatea de prelucrare a calculatorului utilizat.
Clasificarea algoritmilor
A. In Functie de complexitate B. In functie de implementare C. In functie de design (metoda) D. In functie de domeniul de
studiu
In functie de complexitate
Algoritmi polinomiali
Un algoritm se numeste polinomial daca termenul dominant are forma Cnk , adica Q(n) ~ Cnk ; T(n)~ Cnk , Unde: n este caracteristica datelor de intrare; C o constanta pozitiva K un numar natural. Complexitatea temporala a algoritmilor polinomiali este redata prin notatia O(nk) care se citeste algoritm cu timpul de executie de ordinul nk sau , mai pe scurt, algoritm de ordinul nk . Exemple :n1, n2 , n3 , n4 etc.
Exponential Un algoritm se numeste exponential daca termenul dominant are forma Ckn , adica Q(n)~ Ckn ; T(n) ~ Ckn, unde k>1. Complexitatea temporala a algoritmilor exponentiali este redata prin notatia O(kn )
Polinomiali vs Exponentiali
Din comparatia vitezei de crestere a functiilor exponentiala si polinomiala rezulta ca algoritmii exponentiali devin inutilizabili chiar pentru valori nu prea mari ale lui n. In functie de complexitatea temporala se considera ca o problema este usor rezolvabila daca pentru solutionarea ei exista un algoritm polinomial. O problema pentru care nu exista un algoritm polinomial se numeste dificila. Aceasta clasificarea se refera doar la algoritmii in care n ia valori mari. In caz cind n ia valori mici , situatia poate fi inversa.
In funtie de implementare
recursivi (se invoca pe ei insisi ) / iterativi (au
constructii repetitive) ; logici (controleaza deductii logice) ; seriali (un singur procesor si o singura instructiune executata la un moment dat ) /paraleli (mai multe procesoare care executa instructiuni in acelasi timp) ; deterministici (o decizie exacta la fiecare pas) / nedeterministici ( rezolva problema plecand de la presupuneri ) ;
si stapaneste ( imparte problema in una sau mai multe instante mai mici) ; programare dinamica (cauta structuri optimale -o solutie optimala a problemei poate fi construita plecand de la solutiile optimale ale subproblemelor ) metoda Greedy (cauta tot structuri optimale cu deosebirea ca solutiile la subprobleme nu trebuie sa fie cunoscute la fiecare pas; alegerea Greedy se refera la ce arata mai bine la un moment dat) .
de cautare de sortare numerici algoritmi de grafuri de geometrie computationala de invatare automata de criptografie etc.
Importanta algoritmilor
Ne furnizeaza rezolvarea problemelor dificile in diferite domenii ( avind un algoritm bine stabilit).
Au realizat: