Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aa:lab:sol:6 [2025/11/08 00:22]
stefan.sterea
aa:lab:sol:6 [2025/11/11 12:10] (current)
stefan.sterea
Line 4: Line 4:
 a. binary_search:​ 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ă. \\+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ă. ​(Pentru simplitate, putem considera termenul constant = 1) \\
 $ T(n) = T(n/2) + 1, T(1) = 1 $ $ T(n) = T(n/2) + 1, T(1) = 1 $
  
-Metoda arborilor:​ +**Metoda arborilor:** \\ 
-WIP+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: 
 +$$ \left(\sum_{i=0}^{\log n - 1} 1\right) + T(1) = \log n + 1 = \Theta(\log n) $$
  
-Metoda substituției:​ \\ +**Metoda substituției:​** \\ 
-Vrem sa demonstrăm că $ T(n) = \Theta(n) $, adică \\+Vrem sa demonstrăm că $ T(n) = \Theta(\log 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 $ $ \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 $
  
Line 23: Line 24:
 pp. că $ c_1 \log(n/2) \leq T(n/2) \leq c_2 \log(n/2) $ \\ 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/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 - c_1 \log 2 + 1 \leq T(n) \leq c_2 \log n - c_2 \log 2 + 1 $ \\ 
-$ \Rightarrow c_1 \log n \leq T(n) \leq c_2 \log n $+$ \Rightarrow c_1 \log n + (1 - c_1) \leq T(n) \leq c_2 \log n - (c_2 - 1) $ \\ 
 +Dacă $ 1 - c_1 \geq 0 $ și $ c_2 - 1 \geq 0 $ atunci \\ 
 +$ \Rightarrow c_1 \log n \leq T(n) \leq c_2 \log n $ \\ 
 +Astfel, avem condițiile:​ \\ 
 +$ c_1 \leq 1 $ \\ 
 +$ c_2 \geq 2 $  
 + 
 +b. successor: \\ 
 + 
 +Verificările de ieșire din recursivitate,​ calculul lui high și low, check-ul după max pentru a vedea dacă trebuie să căutăm succesorul lui x în același cluster cu x sau în următorul cluster nevid și calculul final al index-ului se realizează toate în timp constant, mărginit superior de o constantă $ C $. 
 +Apelurile recursive se realizeză pe structuri de dimensiune radical din dimeniunea structurii originale (pe unul din clustere sau pe sumarul care reprezintă un vEB pentru indicii clusterelor,​ deci tot de aceași dimensiune precum clusters). \\ 
 +$ T(u) = T(\sqrt{u}) + C, T(2) \leq C $. 
 + 
 +**Metoda arborilor:​** \\ 
 +Considerăm $ u = 2^{2^k} $ și pornim cu rădăcina arborelui $ T\left(2^{2^k}\right) $. \\ 
 +Fiecare nivel $ h $ conține $ T\left(2^{2^{k - h}}\right) + C $ până la ultimul nivel care conține o singură frunză $ T(2) $. \\ 
 +Ultimul nivel este nivelul $ k = \log \log u $. Suma este: \\ 
 +$$ \left(\sum_{i=0}^{\log \log u - 1} C\right) + T(2) = C \log \log u + T(2) - C = \Theta(\log \log u) $$ 
 + 
 +**Metoda substituției:​** \\ 
 +Vrem să demonstrăm că $ T(u) = \Theta(\log \log u) $, adică \\ 
 +$ \exists(c_1,​ c_2, d_1, d_2 > 0)(U \geq 0): \forall(u \geq U): c_1 \log\log u - d_1 \leq T(u) \leq c_2 \log \log u + d_2 $ \\ 
 + 
 +Cazul de bază: \\ 
 +$ U = 2 $ \\ 
 +$ c_1 \log\log 2 - d_1 = -d_1 \leq T(2) \leq C \leq c_2 \log\log 2 + d_1 = d_1 $ \\ 
 +$ d_1 \geq 0,\ d_2 \geq C $ \\ 
 + 
 +Pasul inducției:​\\ 
 +pp. că $ c_1 \log \log \sqrt{u} - d_1 \leq T\left(\sqrt{u}\right) \leq c_2 \log \log \sqrt{u} + d_2 $ \\ 
 +$ \Rightarrow c_1 \log\log\left(u^{1/​2}\right) - d_1 = c_1 \log\left(\frac 12\log u\right) - d_1 \leq T\left(\sqrt u\right) \leq c_2 \log\log\left(u^{1/​2}\right) + d_2 \leq \log\left(\frac 12\log u\right) + d_2 $ \\ 
 +$ \Rightarrow c_1 \log\log u + c_1 \log\left(\frac 12\right) - d_1 = c_1 \log\log u - c_1 - d_1 \leq T\left(\sqrt u\right) \leq c_2 \log\log u + c_2 \log\left(\frac 12\right) + d_2 = c_2\log\log u - c_2 + d_2 $ \\ 
 +$ \Rightarrow c_1 \log\log u - c_1 - d_1 + C \leq T\left(\sqrt u\right) + C \leq c_2\log\log u - c_2 + d_2 + C $ \\ 
 +$ \Rightarrow \underbrace{(c_1 \log\log u - d_1) + (C - c_1)}_{\rm LHS} \leq T(u) \leq \underbrace{(c_2 \log\log u + d_2) + (C - c_2)}_{\rm RHS} $ \\ 
 +Dacă $ C - c_1 \geq 0 $ și $ C - c_2 \leq 0 $ atunci \\ 
 +$ \Rightarrow c_1 \log\log u - d_1 \leq {\rm LHS} \leq T(u) \leq {\rm RHS} \leq c_2 \log\log u + d_2 $ 
 + 
 +În final avem condițiile:​ \\ 
 +$ d_1 \geq 0, d_2 \geq C, $ \\ 
 +$ c_1 \leq C \leq c_2 $ \\ 
 +care sunt satifăcute,​ de exemplu, pentru $ d_1 = 0, d_2 = c_1 = c_2 = C $. 
 + 
 +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) $