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. ====== 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) $