metoda divide et impera

Upload: corbu-cristian

Post on 29-Feb-2016

7 views

Category:

Documents


0 download

DESCRIPTION

Metoda Divide et Impera

TRANSCRIPT

Se poate spune c este o metod puternic de rezolvare a unor probleme conceptual dificile, ca de exemplu Turnurile din Hanoi, generarea fractalilor, puzzle i altele.In mod natural metoda divide et impera se implementeaz recursiv, dar este posibil s eliminm recursivitatea printr-un ciclu iterativ. Divide et impera este o metoda general de elaborare a algoritmilor. n cadrul acestei metode distingem trei etape:1. Descompunerea problemei ce trebuie rezolvat n dou sau mai multe subcazuri (subprobleme) mai mici ale aceleiai probleme.1. Rezolvarea succesiv a fiecrui subcaz.1. Recompunerea succesiv a soluiilor obinute penru fiecare subcaz, n vederea determinrii soluiei problemei iniiale

Cutarea binarPentru rezolvarea acestei probleme folosim un algoritm D&I: Divide: mprim vectorul n doi sub-vectori de dimensiune n/2. Stpnete: aplicm algoritmul de cutare binar pe sub-vectorul care conine valoarea cutat. Combin: soluia sub-problemei devine soluia problemei iniiale, motiv pentru care nu mai este nevoie de etapa de combinare.

Se d unvector sortat cresctor(v[1..n]) ce conine valori reale distincte i o valoare x. Sa se gseasc la ce poziie apare x n vectorul dat.BinarySearch(v, start, end, x) if (start > end) return;// condiia de oprire (x nu se afl n v)mid = (start + end) / 2;// etapa divide// etapa stpneteif (v[mid] == x) return midif (v[mid] > x) return BinarySearch(v, start, mid-1, x);if (v[mid] < x) return BinarySearch(v, mid+1, end, x);Complexitatea algoritmului este data de relaia T(n) = T(n/2) + O(1), ceea ce implica:T(n) = O(lg n).