Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
aa:lab:11 [2025/01/08 16:15] dmihai |
aa:lab:11 [2025/01/23 14:09] (current) dmihai |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Analiza amortizata ===== | ===== Analiza amortizata ===== | ||
- | Utilizati aggregate method, accounting method si potential method pentru a gasi costul amortizat pentru situatiile prezentate mai jos. | + | Utilizați metoda agregării, metoda contabilizării și metoda potențialelor pentru a găsi costul amortizat în situațiile prezentate mai jos. |
$ \DeclareMathOperator{\push}{push} \DeclareMathOperator{\pop}{pop} \DeclareMathOperator{\mpop}{mpop} \DeclareMathOperator{\key}{key} \DeclareMathOperator{\cost}{cost} $ | $ \DeclareMathOperator{\push}{push} \DeclareMathOperator{\pop}{pop} \DeclareMathOperator{\mpop}{mpop} \DeclareMathOperator{\key}{key} \DeclareMathOperator{\cost}{cost} $ | ||
+ | |||
=== 1. Stack === | === 1. Stack === | ||
- | Presupunand ca avem o implementare a unei stive care permite operatiile $ \pop - O(1) $, $ \push - O(1) $ si $ \mpop(k) - O(k) $, | + | Presupunând că avem o implementare a unei stive care permite operațiile $ \pop - O(1) $, $ \push - O(1) $ si $ \mpop(k) - O(k) $, |
- | demonstrati ca pentru o secventa arbitrara $ S $ de $ n $ operatii, $ \cost(S) = O(n) $ | + | demonstrați că pentru o secvență arbitrară $ S $ de $ n $ operatii, $ \cost(S) = O(n) $ |
- | si ca fiecare operatie are un cost amortizat $ \cost(op) = O(1) $. | + | și că fiecare operație are un cost amortizat $ \cost(op) = O(1) $. |
**Exemplu:** $ \push, \pop, \push, \push, \push, \mpop(2), \push, \pop, \push $ | **Exemplu:** $ \push, \pop, \push, \push, \push, \mpop(2), \push, \pop, \push $ | ||
Line 14: | Line 15: | ||
=== 2. Heap === | === 2. Heap === | ||
- | Un max-heap e un arbore binar aproape complet - toate nivelele cu | + | Un max-heap este un arbore binar aproape complet - toate nivelurile, cu excepția ultimului, sunt complete, iar ultimul este completat de la stânga la dreapta. Fiecare două noduri AA și BB, unde BB este fiu al lui AA, satisfac relația: |
- | exceptia ultimului sunt complete, iar ultimul este completat de | + | |
- | la stanga la dreapta. Fiecare 2 noduri A si B unde B este fiu al lui A | + | |
- | satisfac relatia: | + | |
$ \key(B) \leq \key(A) $ | $ \key(B) \leq \key(A) $ | ||
- | Un max-heap se poate stoca sub forma de array, unde $ a[i] $ are | + | Un max-heap se poate stoca sub formă de array, unde $ a[i] $ are |
copiii $ a[2i] $ si $ a[2i+1] $. | copiii $ a[2i] $ si $ a[2i+1] $. | ||
- | Adaugarea unui element presupune: | + | Adăugarea unui element constă în următorii pași: |
- | - adauga un element in prima pozitie libera de pe ultimul nivelele | + | - adaugă un element în prima poziție liberă de pe ultimul nivelele |
- | - compara elementul adaugat cu parintele si interschimba-i daca e cazul | + | - compară elementul adăugat cu părintele și interschimbă-i dacă e cazul |
- | - repeta pasul anterior pana nodul respecta proprietatea in raport cu parintele lui sau a devenit radacina | + | - repetă pasul anterior până nodul respectă proprietatea în raport cu părintele lui sau a devenit rădăcina |
- | Aratati ca fiecare inserare are un cost agregat $ \cost(op) = O(\log n) $. | + | Arătați că fiecare inserare are un cost agregat de $ \cost(op) = O(\log n) $. |
=== 3. Binary Counter === | === 3. Binary Counter === | ||
- | Presupunand ca avem un contor binar implementat folosind o lista de $ k $ biti, | + | Presupunând că avem un contor binar implementat folosind o listă de \( k \) biți, acesta permite doar operația \( increment \), care adaugă \( 1 \) la contor. Această operație are complexitate temporală \( O(k) \) în cel mai rău caz. Arătați însă că operația are un cost amortizat constant. |
- | el permite doar operatia $ increment $ care adauga $ 1 $ la contor. | + | |
- | Aceasta operatie are complexitate temporala O(k) in cel mai rau caz. Aratati insa ca operatia are un cost amortizat constant. | + | |
+ | <note> | ||
+ | Soluțiile acestui laborator se găsesc [[https://ocw.cs.pub.ro/ppcarte/doku.php?id=aa:lab:sol:11|aici]] | ||
+ | </note> | ||