This is an old revision of the document!


Soluții Laboratorul 6

1. a. binary_search:

După verificările realizate în timp constant, problema este împărțită în două subprobleme de dimensiune înjumătățită, din care doar una este aleasă.
$ T(n) = T(n/2) + 1, T(1) = 1 $

Metoda arborilor: Fiecare nivel conține $ T\left(\frac n{2^h}\right) + 1 $ unde $ h $ este numărul nivelului (începând de la 0), având $ T(1) $ în frunze, deci $ \log n $ niveluri. De asemenea avem o singură frunză. Suma totală este: $ \sum_{i=0}^{\log n - 1} c + T(1) = c(\log n - 1) + 1 = c\log n + (1 - c) = \Theta(\log n) $

Metoda substituției:
Vrem sa demonstrăm că $ T(n) = \Theta(n) $, adică
$ \exists(c_1, c_2 > 0)(N \geq 0): \forall(n\geq N): c_1 \log n \leq T(n) \leq c_2 \log n $

Cazul de bază:
$ N = 2 $
$ c_1 \log 2 = c_1 \leq T(2) = 1 + 1 = 2 \leq c_2 \log 2 = c_2 \Rightarrow $
$ c_1 \leq 2 $
$ c_2 \geq 2 $

Pasul inducției:
pp. că $ c_1 \log(n/2) \leq T(n/2) \leq c_2 \log(n/2) $
$ \Rightarrow c_1 \log(n/2) + 1 \leq T(n/2) + 1 \leq c_2 \log(n/2) + 1 $
$ \Rightarrow c_1 \log n - \log 2 + 1 \leq T(n) \leq c_2 \log n - \log 2 + 1 $
$ \Rightarrow c_1 \log n \leq T(n) \leq c_2 \log n $

b. successor:
WIP

2.

  • $ T(n) = 4T(n/4) + 1 $

$ a = 4;\ b = 4;\ f(n) = 1 = n^0,\ c = 0;\ d = \log_b a = \log_4 4 = 1;\ c < d $
Această recurență intră în cazul 1 al teoremei Master, deci $ T(n) = \Theta(n^d) = \Theta(n) $

  • $ T(n) = 4T(\frac n 2) + n^2 $

$ a = 4;\ b = 2;\ f(n) = n^2 = n^2 \log^0 n,\ c = 2,\ k = 0;\ d = \log_b a = \log_2 4 = 2;\ c = d $
Această recurență intră în cazul 2 al teoremei Master, deci $ T(n) = \Theta(n^d \cdot \log^{k+1}n) = \Theta\left(n^2 \log n\right)$

  • $ T(n) = \frac{27}{8} T(2n/3) + n^3 \log^2 n + n^2 $

$ a = 27/8;\ b = 3/2;\ f(n) = n^3 \log^2 n + n^2 = \Theta\left(n^3 \log^2 n\right),\ c = 3,\ k = 2;\ d = \log_b a = 3;\ c = d $
Această recurență intră în cazul 2 al teoremei Master, deci $ T(n) = \Theta(n^d \cdot \log^{k+1}n) = \Theta\left(n^3 \log^3 n\right) $

  • $ T(n) = 8T(\frac n 2) + 2n^4 $

$ a = 8;\ b = 2;\ f(n) = 2n^4,\ c = 4;\ d = \log_b a = \log_2 8 = 3;\ c > d $
Această recurență intră în cazul 3 al teoremei Master, iar $ f(n) = \Theta(n^c) $, deci $ T(n) = \Theta(f(n)) = \Theta\left(n^4\right) $

  • $ T(n) = 16T(n/4) + n^3\sqrt n $

$ a = 16;\ b = 4;\ f(n) = n^3\sqrt n = \omega(n^3),\ c = 3;\ d = \log_b a = \log_4 16 = 2;\ c > d $
Verificăm condiția de regularitate de la cazul 3 al teoremei Master:
$ a f(n/b) = 16 \left(\frac n 4\right)^3 \sqrt{\frac n 4} = 16\frac{n^3}{64} \frac{\sqrt n}{2} = \frac{1}{16}n^3\sqrt{n} = \frac{1}{16}f(n) $
Deci, $ k = \frac{1}{16} < 1 $ satisface $ a f(n/b) \leq kf(n) $ pentru orice $ n \geq 1 $.
Suntem în condițiile cazului 3 al teoremei Master, deci $ T(n) = \Theta(f(n)) = \Theta(n^3\sqrt n) $