Sunteți pe pagina 1din 5

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare Informatica si Microelectronica

Raport
Lucrarea de laborator Nr.3

Disciplina: Analiza și proiectarea


algoritmilor
Tema: Ciurul lui Eratostente. Analiza algoritmilor.

A îndeplinit st.gr.FI-191
A controlat

Chișinău 2020
Tema: Metoda divide et impera
Scopul lucrării:
1. Studierea metodei divide et impera.
2. Analiza şi implementarea algoritmilor bazaţi pe metoda divide et impera.
Sarcini:
1. Studiaţi noţiunile teoretice despre metoda divide et impera.
Divide et impera se bazează pe principiul descompunerii problemei în două sau
mai multe subprobleme (mai ușoare), care se rezolvă, iar soluția pentru problema
inițială se obține combinând soluțiile subproblemelor. De multe ori, subproblemele
sunt de același tip și pentru fiecare din ele se poate aplica aceeași tactică a
descompunerii în (alte) subprobleme, până când (în urma descompunerilor
repetate) se ajunge la probleme care admit rezolvare imediată
 Tehnica “ Divide et Impera” constă în două etape:

 Divide. Problema dată este împărţită în două sau mai multe subprobleme de


acelaşi tip, dar de dimensiuni mai mici. Subproblemele se rezolvă direct,
dacă dimensiunea lor permite aceasta (cazuri elementare), sau, fiind de
acelaşi tip, se rezolvă în mod recursiv, prin acelaşi procedeu.
 Impera. Se combină soluţiile subproblemelor pentru a obţine soluţia
problemei iniţial
 Restricţii

Metoda Divide Et Impera se poate aplica în rezolvarea unei probleme care


îndeplineşte următoarele condiţii :
- se poate descompune în ( două sau mai multe) suprobleme ;
- aceste subprobleme sunt independente una faţă de alta (o subproblemă nu se
rezolvă pe baza alteia şi nu se foloseşte de rezultatele  celeilalte);
- aceste subprobleme sunt similare cu problema iniţială;
- la rândul lor subproblemele se pot descompune (dacă este necesar) în alte
subprobleme mai simple;
- aceste subprobleme simple se pot soluţiona imediat prin algoritmul
simplificat.

2. Implementaţi algoritmii Mergesort şi Quicksort.


3. Efectuaţi analiza empirică a algoritmilor Mergesort şi Quicksort.

Pentru a efectua o analiză a algoritmilor propuși am ales să testez acesti algoritmi


pentru sortarea unui șir din 9, [54,26,93,17,77,31,44,55,20]. Ca metrică pentru
compararea algoritmilor am ales timpul de execuție. Pentru aflarea timpului de
execuție am utilizat libraria time în Python, am setat-o astfel încât să calculeze
timpul de execuție a fiecărui algoritm în parte și nu a programului în întregime.

Analizând timpul de execuție a acestor algoritmi, pot afirma că algoritmul


MergeSort a sortat mai repede șirul decât algoritmul QuickSort, dovedindu-se a fi
mai eficient.

4. Implementați +1 algoritm de sortare

5. Faceţi o concluzie asupra lucrării efectuate.


În cadrul lucrării de laborator am analizat tehnica divide et impera și am
implementat trei algoritmi de sortare quickSort, mergeSort și selectionSort. În
urma efectuării analizei timpului de execuție am ajuns la concluzia că pentru
șirurile mici cel mai eficient algoritm este selectionSort, dar acesta pierde din
eficiență în cazul șirurilor mai mari. Dintre primii doi algoritmi care funcționeaza
după principiul devide et impera cel mai eficient este merge Sort.

S-ar putea să vă placă și