1 / 4

Divide et impera

Divide et impera. “ Divide et impera: divide si vei domni;divide si vei deveni bogat;divide si vei insela oamenii...divide si vei insela justitia.” Prodhon.

leal
Download Presentation

Divide et impera

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Divide et impera

  2. “Divide et impera: divide si vei domni;divide si vei deveni bogat;divide si vei insela oamenii...divide si vei insela justitia.” Prodhon • MetodadeprogramareDIVIDE ET IMPERA consta in impartireaproblemeiinitiale de dimensiuni [n] in douasaumaimulteprobleme de dimensiunireduse .In general se executaimpartirea in douasubprobleme  de dimensiuniaproximativegalesianume [n/2] . Impartirea in subprobleme are loc panacanddimensiuneaacestoradevinesuficient de mica pentru a firezolvate in mod direct(cazul de baza).Duparezolvareacelordouasubprobleme se executafaza de combinare a rezultatelor in vederearezolvariiintregiiprobleme • MetodaDIVIDE ET IMPERA se poateaplica  in rezolvareauneiprobleme care indeplinesteurmatoareleconditii :       -se poatedescompune in ( douasaumaimulte) suprobleme ;       -acestesuproblemesuntindependenteunafata de alta (o subproblema nu se rezolvapebazaalteiasi  nu se folosesterezultateceleilalte);       -acestesubproblemesuntsimilare cu problemainitiala;       -la randullorsubproblemele se pot descompune (dacaestenecesar) in altesubproblememai simple;-acestesubprobleme simple se pot solutionaimediatprinalgoritmulsimplificat.

  3. MetodaDIVIDE ET IMPERA admite o implementarerecursiva ,deorecesubproblemelesuntsimilareproblemeiinitiale, dar    de dimensiunimaimici . • Principiul fundamental al recursivitatiiesteautoapelareaunui subprogram candacestaesteactiv;ceeace se intampla la un nivel ,se intampla la oricenivel ,avandgrijasaasiguramconditia de terminare ale apelurilorrepetate .Asemanator se intamplasi in cazulmetodei DIVITE ET IMPERA ; la un anumitnivelsuntdouaposibilitati : -s-a ajuns la o (sub)problemasimplaceadmite o rezolvareimediatacaz in care se rezolva (sub)problemasi se revine din apel (la subproblemaanterioara,dedimensiunimaimari); -s-a ajuns la o  (sub)problema care nu admite o rezolvareimediata ,caz in care o descompunem in douasaumaimultesubproblemesipentrufiecare din ele se continua apelurile recursive(ale proceduriisaufunctiei).In etapafinala a metodei DIVIDE ET IMPERA  se produce combinareasubproblemelor (rezolvatedeja) prinsecventele de revenire din apelurile recursive.Etapelemetodei   DIVIDE ET IMPERA (prezentate anterior)se pot reprezentaprinurmatorul subprogram general (procedurasaufunctie )recursivexprimat in limbaj natural:

  4. Algoritmul fiind de natură repetitivă şi deoarece subproblemele au aceiaşi formă cu cea a problemei iniţiale metoda “Divide et impera” poate fi implementată elegant folosind o funcţie recursivă.În continuare este dată funcţia generală care implementează algoritmul. • Algoritmul Divide et Impera • functiondivimp(X: problema) • if (X este suficient de mica) • then y = rezolvă(X) • else • {descompune problema x în subproblemele X1, X2,…, Xk} • for i = 1, k do • yi = divimp(Xi) • {combină y1, y2, …, yk pentru a obţine y soluţia problemei X} • y = combină(y1, y2, …, yk) • return y • end

More Related