Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Recurențe ====== <note important> Solutii: https://drive.google.com/file/d/11tR3YphFS73OF8QGvtorjf_dkRHPmo1y/view?usp=drivesdk </note> 1. Folosiți Teorema Master pentru a rezolva următoarele recurențe: * $ T_1(n) = 4T_1(n/4) + 1$ <hidden Exemplu de cod cu aceasta recurenta> <code c> // O metoda destul de ineficienta de calcul al sumei elementelor unui vector int sum(int arr[], int lo, int hi) { if(lo == hi) return arr[lo]; int x = (hi - lo) / 4; return sum(arr, lo, lo + x) + sum(arr, lo + x + 1, lo + 2 * x) + sum(arr, lo + 2 * x + 1, lo + 3 * x) + sum(arr, lo + 3 * x + 1, hi); } </code> </hidden> * $ T_3(n) = 4T_3(n/2) + n^2$ * $ T_2(n) = 8T_2(n/2) + 2n^2$ 2. Fie următorul algoritm de căutare a unei valori ''v'' într-un array sortat ''arr'': <code c> int search(int arr[], int lo, int hi, int v) { int mid = (lo + hi) / 2; if (arr[mid] == v) return mid; if (lo == hi) return -1; if (arr[mid] > v) return search(arr, lo, mid, v); else return search(arr, mid, hi, v); } </code> * Determinați relația de recurență a algoritmului de căutare prezentat. * Demonstrați recurența utilizând Teorema Master. * Demonstrați recurența utilizând Metoda Arborilor. * Demonstrați recurența utilizând Metoda Substituției. 3. Folosiți cele 3 metode (metoda arborilor, metoda substituției, teorema master) pentru a rezolva recurențele: * $ T_a(n) = 2T_a(n-1) + 1$ * $ T_b(n) = T_b(n-1) + 1$ * $ T_c(n) = 2T_c(n/2) + \log(n)$ * $ T_d(n) = T_d(n/9) + T_d(8n/9) + n$ * $ T_e(n) = T_e(2n/3) + 1$ * $ T_f(n) = T_f(\sqrt{n}) + 1$ (hint: substituiți $ n$ cu $ 2^k$) * $ T_g(n) = 2T_g(\sqrt{n}) + n$ (hint: substituiți $ n$ cu $ 2^k$) * $ T_h(n) = \sqrt{n}T_h(\sqrt{n}) + n$ (hint: substituiți $ n$ cu $ 2^k$) 4. Rezolvați următoarea recurență folosind metoda substituției: $math[T(n) = 2 T(\frac{n}{2}) + 1]. 5. Rezolvați următoarea recurență folosind metoda arborilor: $math[T(n) = T(] $math[n \over 4] $math[) + T(] $math[3n \over 4] $math[) + n].