Ministerul Educaţiei şi Tineretului al Republicii Moldova
Universitatea Tehnică a Moldovei
Facultatea СIM Catedra: Automatica si Tehnologii Informationale
Raport Nr1 ANALIZA SI PROIETAREA PROIETAREA AL!ORITMILOR TEMA" Anali#a al$orit%ilor al$orit%ilor
A elaborat" st& $r&TI'1() $r&TI'1() Tincu Tincu M& A veri+icat" Pro+& ,niversitar ,niversita r -a$rin .&
*********** ***********
************ ********* ***
/işin0u )12
1. Analiza empirică a algoritmilor. 2. Analiza teorecă a algoritmilor. 3. Determinarea complexităţii temporale temporale şi asimptoce a algoritmilor
Numerele lui Fibonacci. Sirul lui Fibonacci este e!nit prin urmatoarea recurenta"
Analiza matemacă a complexită#ii algoritmilor poate ! i!cilă $n cazul unor algoritmi care nu sunt simpli.% alterna&ă la analiza matemacă a complexită#ii o reprezintă analiza empirică. 'tapele analizei empirice 1. Se sta stabil bile( e(te te scop scopul ul anali analize zei. i. )& Se alege metrica e e!cien#ă ce &a ! ulizată )număr e execu#ii ale unei*unor opera#ii sau mp e execu#ie a $ntregului algoritm sau a unei por#iuni in algoritm. 3. Se stabilesc stabilesc proprietă#ile proprietă#ile atelor atelor e intrar intrare e $n raport raport cu care care se +ace +ace analiza )imensiunea atelor sau proprietă#i proprietă#i speci!ce,. -. Se implement implementează ează algoritm algoritmul ul $ntrun $ntrun limba/ limba/ e programar programare. e. 0. Se genereaz generează ă mai multe multe seturi seturi e ate ate e intra intrare. re. . Se execut execută ă program programul ul pentru pentru !ecare !ecare set e at ate e e intrare. intrare. . Se anali analize zeaz ază ă atel atele e ob#inu ob#inute te..
entru a e+ectua o analiză empirică nu este su!cient un singur set e ate e intrare ci mai multe4 care să pună $n e&ien#ă i+eritele caracterisci caracterisci ale algoritmului.
Sarcina
'xecutarea 'xecutarea unui program in limba/ul e programare 566 care &a compara cele 3 metoe expuse in materialul teorec pru i+erite i+erite &alori ale lui n.
)
#include using namespace namespace std; std; int fibonacci( int fibonacci(int int n) { if (( if ((n n == 1) || (n ( n == 0)) { return( return (n); } else { return(fibonacci( return (fibonacci(n n - 1) fibonacci(n fibonacci( n - !)); } } int fib"( int fib"(int int n)" metoda dupa pseudocod { n = n - 1; int i int i = 1$ % = 0$ & = 0$ ' = 1$ t = 1; 'ile ( 'ile (n n > 0) { if ( if (n n ! *= 0) { t = '+%; % = i+' %+& t; i = i+& t; } { t = '+'; ' = ! + &+' t; & = &+& t; n = (n (n !); } } return %; return %; } int main() int main() { iteratie int range$ int range$ first = 0$ second = 1$ fibonaci = 0; cout << ,tt.etoda iterati/an iterati/ann, n,; ; cout << ,ntroduceti raa2 ,; ,; cin >> >> range; range; cout << ,3eria lui 4ibonacci pina la , << << range range << , este2 , << << endl; endl; for ( for (int int c c = 0; c < range; c) { if (c if (c <= 1) fibonaci = c; else { fibonaci = first second; first = second; second = fibonaci; } cout << << fibonaci fibonaci << , ,; ,; } afisare recursie int n$ int n$ i = 0; n = range; int +p; int +p;
3
cout << ,nntt.eto ,nntt.etoda da recursiein recursiein, ,; cout << ,n, ,n,; ; 'ile (i
n718
n=20
(
n=30
Concluzie: 9n urma e+ectuarii acestei lucrari e laborator am analizat 3 metoe i+erite e calcul a sirului lui Fibonaci. 9n urma rularii programului programului am a/uns la concluzia ca i+eri algoritmi au mpul e executare i+erita. 5el mai e!cient este primul algoritm. :impul e execue este +oarte mic si numarul e iterai pentru numerele mari nu creste +oarte repee.
2