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:11 [2024/01/06 20:33]
alexandra.udrescu01
aa:lab:sol:11 [2024/01/08 23:55] (current)
stefan.sterea
Line 29: Line 29:
  
 Alegem: \\ Alegem: \\
- $ \hat(c_{push}= 2 $  \\ + $ \hat c_{push} = 2 $  \\ 
- $ \hat(c_{pop}= 0 $  \\ + $ \hat c_{pop} = 0 $  \\ 
- $ \hat(c_{mpop}= 0 $ + $ \hat c_{mpop} = 0 $ 
  
 Aratam ca:  $ cost(S) \leq \sum_{i=1}^{n}\hat{c_i} $ . \\ Aratam ca:  $ cost(S) \leq \sum_{i=1}^{n}\hat{c_i} $ . \\
Line 42: Line 42:
 Definim o functie ne-negativa de potential ​ $ \Phi : States -> ℕ $  Definim o functie ne-negativa de potential ​ $ \Phi : States -> ℕ $ 
  
-Notand costurile amortizate ale unei operatii arbitrare cu  $ \hat(c_{i}$  si costul sau real cu  $ c_i $ , avem de aratat ca: \\+Notand costurile amortizate ale unei operatii arbitrare cu  $ \hat c_{i} $  si costul sau real cu  $ c_i $ , avem de aratat ca: \\
  $ \sum_{i=1}^{n}{c_i} \leq \sum_{i=1}^{n}{\hat{c_i}} $   $ \sum_{i=1}^{n}{c_i} \leq \sum_{i=1}^{n}{\hat{c_i}} $ 
  
Line 57: Line 57:
  
 Calculam costul amortizat al fiecarei operatii:\\ Calculam costul amortizat al fiecarei operatii:\\
- $ \hat(c_{push}= c_{push} + \Phi(D_i) - \Phi(D_{i-1}) = c_{push} + (m + 1) - m = c_{push} + 1 = 1 + 1 = 2 $ \\ + $ \hat c_{push} = c_{push} + \Phi(D_i) - \Phi(D_{i-1}) = c_{push} + (m + 1) - m = c_{push} + 1 = 1 + 1 = 2 $ \\ 
- $ \hat(c_{pop}= c_{pop} + \Phi(D_i) - \Phi(D_{i-1}) = c_{pop} + (m - 1) - m = c_{pop} - 1 = 1 - 1 = 0 $  \\ + $ \hat c_{pop} = c_{pop} + \Phi(D_i) - \Phi(D_{i-1}) = c_{pop} + (m - 1) - m = c_{pop} - 1 = 1 - 1 = 0 $  \\ 
- $ \hat(c_{mpop(k)}= c_{mpop(k)} + \Phi(D_i) - \Phi(D_{i-1}) = c_{mpop(k)} + (m - k) - m = c_{mpop(k)} - k = k - k = 0 $ + $ \hat c_{mpop(k)} = c_{mpop(k)} + \Phi(D_i) - \Phi(D_{i-1}) = c_{mpop(k)} + (m - k) - m = c_{mpop(k)} - k = k - k = 0 $ 
  
 ==== 2. Heap ==== ==== 2. Heap ====
Line 86: Line 86:
 Deci, pentru o singura operatie de insert, avem $ cost(insert) = cost(S) / n = O(nlog(n)) / n = O(log(n)) $ Deci, pentru o singura operatie de insert, avem $ cost(insert) = cost(S) / n = O(nlog(n)) / n = O(log(n)) $
  
 +=== 2.2. Accounting Method ===
 +
 +Pentru fiecare $ insert $, avem nevoie sa luam in considerare:​
 +  - costul de creare al unui nou nod = $ 1 $
 +  - swap cu parintii = $ log(n) $
 +
 +Alegem $ \hat c_{insert} = 1 + log(n) = O(log(n)) $
 +
 +Acest cost este mereu mai mare sau egal decat costul real al unei operatii, dat fiind ca nu toate operatiile au nevoie de $ log(n) $ swap-uri.
 +
 +=== 2.3. Potential Method ===
 +
 +Fie starile $ D_i $ = starea heap-ului dupa $ i $ operatii $ insert $
 +
 +Definim o functie ne-negativa de potential ​ $ \Phi : States -> ℕ $ \\
 +$ \Phi(D_0) = 0 $ \\
 +$ \Phi(D_i) = $ numarul de valori in heap
 +
 +Calculam costul amortizat: \\
 +$ \hat{c_i} = c_{i} + \Phi(D_i) - \Phi(D_{i-1}) = c_{i} + 1 $
 +
 +$ c_{i} $ are un cost $ log(n) + 1 $ dat de numarul de swap-uri maxim + inserarea unui nod in heap.
 +
 +Deci, putem alege $ \hat{c_i} = log(n) + 2 $
  
  
Line 113: Line 137:
   - o schimbare ulterioara a bitului din 1 in 0   - o schimbare ulterioara a bitului din 1 in 0
  
-$ \hat(c_{increment}= 2$+$ \hat c_{increment} = 2$