Metoda divide et impera

Laborator
7.5/10 (2 voturi)
Conține 1 fișier: docx
Pagini : 13 în total
Cuvinte : 1646
Mărime: 68.15KB (arhivat)
Publicat de: Doinita R.
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Catruc Mariana

Cuprins

  1. Introducere
  2. 1.Scopul lucrarii
  3. 2.Sarcina lucrarii
  4. 3.Listingul programului
  5. 4.Reprezentarea rezultatelor
  6. Concluzie

Extras din laborator

Introducere

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ă.

Nu toate problemele pot fi rezolvate prin utilizarea acestei tehnici. Se poate afirma că numărul celor rezolvabile prin "divide et impera" este relativ mic, tocmai datorită cerinței ca problema să admită o descompunere repetată.

Divide et impera este o tehnică ce admite o implementare recursivă. Principiul general prin care se elaborează algoritmi recursivi este: "ce se întâmplă la un nivel, se întâmplă la orice nivel" (având grijă să asigurăm condițiile de terminare). Așadar, un algoritm prin divide et impera se elaborează astfel: la un anumit nivel avem două posibilități:

1. s-a ajuns la o problemă care admite o rezolvare imediată (condiția de terminare), caz în care se rezolvă și se revine din apel;

2. nu s-a ajuns în situația de la punctul 1, caz în care problema curentă este descompusă în (două sau mai multe) subprobleme, pentru fiecare din ele urmează un apel recursiv al funcției, după care combinarea rezultatelor are loc fie pentru fiecare subproblemă, fie la final, înaintea revenirii din apel.

Dupa cum sugereaza si numele 'desparte si stapaneste 'etapele rezolvarii unei probleme (numita problema initiala) in DIVIDE ET IMPERA sunt :

- descompunerea problemei initiale in subprobleme independente similare problemei de baza ,de dimensiuni mai mici;

- descompunerea treptata a subproblemelor in alte subprobleme din ce in ce mai simple ,pana cand se pot rezolva imediata prin algoritmul simplificat;

- rezolvarea subproblemelor simple;

- combinarea solutiilor gasite pentru construirea solutiilor subproblemelor de dimensiuni din ce in ce mai mari;

- combinarea ultimelor solutii determina obtinerea solutiei problemei initiale.

Scopul lucrarii

- Studierea metodei divide et impera.

- Analiza și implementarea algoritmilor bazați pe metoda divide et impera.

Sarcina lucrarii

1. Studiați noțiunile teoretice despre metoda divide et impera.

2. Implementați algoritmii Mergesort și Quicksort.

3. Efectuați analiza empirică a algoritmilor Mergesort și Quicksort.

4. Faceți o concluzie asupra lucrării efectuate.

Algoritmul formal al metodei divide et impera:

function divimp(x)

{returnează o soluție pentru cazul x}

1: if x este suficient de mic

2: then return adhoc(x)

3: {descompune x în subcazurile x1, x2, , xk}

4: for i 1 to k do yi divimp(xi)

5: {recompune y1, y2, , yk în scopul obținerii soluției y pentru x}

6: return y

unde adhoc este subalgoritmul de bază folosit pentru rezolvarea micilor subcazuri ale problemei în cauză.

Mergesort (sortarea prin interclasare)

Fie T[1 .. n] un tablou pe care dorim sa-l sortam crescător. Prin tehnica divide et impera putem proceda astfel: separăm tabloul T în două părți de mărimi cât mai apropiate, sortăm aceste părți prin apeluri recursive, apoi interclasăm soluțiile pentru fiecare parte, fiind atenți să păstrăm ordonarea crescătoare a elementelor. Obținem următorul algoritm pentru rezolvarea unei subprobleme:

procedure mergesort (T, p, r) 1: if p < r

2: then q (p+r/2)

3: mergesort(T,p,q)

4: mergesort(T,q+1,r)

5: merge(T,p,q,r)

Preview document

Metoda divide et impera - Pagina 1
Metoda divide et impera - Pagina 2
Metoda divide et impera - Pagina 3
Metoda divide et impera - Pagina 4
Metoda divide et impera - Pagina 5
Metoda divide et impera - Pagina 6
Metoda divide et impera - Pagina 7
Metoda divide et impera - Pagina 8
Metoda divide et impera - Pagina 9
Metoda divide et impera - Pagina 10
Metoda divide et impera - Pagina 11
Metoda divide et impera - Pagina 12
Metoda divide et impera - Pagina 13

Conținut arhivă zip

  • Metoda divide et impera.docx

Alții au mai descărcat și

Metoda backtracking

Metoda Backtracking - metoda „revenirii”, definită şi elaborată de AI (Artificial Intelligence); este o metodă folosită în cazul problemelor în...

Hackeri

Hackerii sunt pasionati ai informaticii, care, de obicei au ca scop „spargerea” anumitor coduri, baze de date, pagini web etc. Ei sunt considerati...

Baze de Date

3.Introducere in bd si sgbd-uri Definitie: Numim baza de date o colectie partajata de date aflata in interdependenta logica impreuna cu o...

Limbajul SQL

Caracteristicile generale ale limbajului SQL sunt [Fehi04, Fehi08]: este un limbaj de programare; este un limbaj uşor de învăţat; este un limbaj...

Te-ar putea interesa și

Divide et Impera

1.1.Tema proiectului Sa se dezvolte o aplicatie realizata in Power Point care sa cuprinda informatii despre metoda “Divide et impera”.Aplicatia va...

Evidența locatarilor unei asociații - tehnici de programare

Tema si cerintele proiectului: Evidenta locatarilor unei asociatii. Avem doua structuri cu urmatoarele campuri: 1) - Id - Nume - Prenume...

Turnurile din Hanoi - Pascal

Capitolul I NOTIUNI INTRODUCTIVE Metoda de programare DIVIDE ET IMPERA consta in impartirea problemei initiale de dimensiuni [n] in doua sau mai...

Informatică portofoliu

I.METODA DIVIDE ET IMPERA 1.Notiuni introductive Asa cum spune si denumirea metodei (imparte si stapaneste), metoda se bazeaza pe impartirea unei...

Metoda backtracking

METODA BACKTRACKING Tehnica folosita:Metoda Backtracking Aceasta tehnica se foloseste in rezolvarea problemelor care indeplinesc simulltan...

Algoritmica grafurilor

Capitolul 1 INTRODUCERE Pentru noţiunile din acest paragraf am consultat Behzad, Chartrand, Foster, Croitoru, Olaru, Tomescu. Alte completări...

Laborator SDA

LISTE SIMPLU ÎNLANTUITE 1. Continutul lucrarii În lucrare sunt prezentate operatiile importante asupra listelor simplu înlantuite si...

Structuri de Date și Alogoritmi

EXTENSII ALE LIMBAJULUI C++ A. Operaţii de intrare-ieşire specifice limbajului C++ I. Noţiuni teoretice Limbajul C++ furnizează o bibliotecă...

Ai nevoie de altceva?