Referat - Divide et impera

Categorie
Referate Istorie
Data adaugarii
acum 5 ani
Afisari
374
Etichete
divide, impera
Descarcari
272
Nota
0 / 10 - 0 voturi

7. Algoritmi divide et impera
7.1 Tehnica divide et impera
Divide et impera este o tehnica de elaborare a algoritmilor care consta in:
??Descompunerea cazului ce trebuie rezolvat intr-un numar de subcazuri mai mici ale aceleiasi probleme. ??Rezolvarea succesiva si independenta a fiecaruia din aceste subcazuri. ??Recompunerea subsolutiilor astfel obtinute pentru a gasi solutia cazului initial.
Sa presupunem ca avem un algoritm A cu timp patratic. Fie c o constanta, astfel incat timpul pentru a rezolva un caz de marime n este tA(n) ? cn2. Sa presupunem ca este posibil sa rezolvam un astfel de caz prin descompunerea in trei subcazuri, fiecare de marime ?n/2?. Fie d o constanta, astfel incat timpul necesar pentru descompunere si recompunere este t(n) ? dn. Folosind vechiul algoritm si ideea de descompunere-recompunere a subcazurilor, obtinem un nou algoritm B, pentru care:
tB(n) = 3tA(?n/2?)?t(n) ? 3c((n?1)/2)2?dn = 3/4cn2?(3/2?d)n?3/4c
Termenul 3/4cn2 domina pe ceilalti cand n este suficient de mare, ceea ce inseamna ca algoritmul B este in esenta cu 25% mai rapid decat algoritmul A. Nu am reusit insa sa schimbam ordinul timpului, care ramane patratic.
Putem sa continuam in mod recursiv acest procedeu, impartind subcazurile in subsubcazuri etc. Pentru subcazurile care nu sunt mai mari decat un anumit prag n0, vom folosi tot algoritmul A. Obtinem astfel algoritmul C, cu timpul

Conform rezultatelor din Sectiunea 5.3.5, tC(n) este in ordinul lui nlg 3. Deoarece lg 3 ? 1,59, inseamna ca de aceasta data am reusit sa imbunatatim ordinul timpului.
Iata o descriere generala a metodei divide et impera:
function divimp(x) {returneaza o solutie pentru cazul x} if x este suficient de mic then return adhoc(x) {descompune x in subcazurile x1, x2, …, xk} for i ? 1 to k do yi ? divimp(xi) {recompune y1, y2, …, yk in scopul obtinerii solutiei y pentru x} return y
unde adhoc este subalgoritmul de baza folosit pentru rezolvarea micilor subcazuri ale problemei in cauza (in exemplul nost


Copyright © Toate drepturile rezervare. 2008 - 2024 - Referatele.org