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 16:09]
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:​** ​\\
 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: 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} + T(1) = c(\log n - 1) + 1 = c\log n + (1 - c) = \Theta(\log n) $+$\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 24: 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: \\ b. successor: \\
-WIP+ 
 +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. 2.