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. ===== Analiza amortizata ===== Utilizati aggregate method, accounting method si potential method pentru a gasi costul amortizat pentru situatiile prezentate mai jos. $ \DeclareMathOperator{\push}{push} \DeclareMathOperator{\pop}{pop} \DeclareMathOperator{\mpop}{mpop} \DeclareMathOperator{\key}{key} \DeclareMathOperator{\cost}{cost} $ === 1. Stack === Presupunand ca avem o implementare a unei stive care permite operatiile $ \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) $ si ca fiecare operatie are un cost amortizat $ \cost(op) = O(1) $. **Exemplu:** $ \push, \pop, \push, \push, \push, \mpop(2), \push, \pop, \push $ === 2. Heap === Un max-heap e un arbore binar aproape complet - toate nivelele cu 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) $ Un max-heap se poate stoca sub forma de array, unde $ a[i] $ are copiii $ a[2i] $ si $ a[2i+1] $. Adaugarea unui element presupune: - adauga un element in prima pozitie libera de pe ultimul nivelele - compara elementul adaugat cu parintele si interschimba-i daca e cazul - repeta pasul anterior pana nodul respecta proprietatea in raport cu parintele lui sau a devenit radacina Aratati ca fiecare inserare are un cost agregat $ \cost(op) = O(\log n) $. === 3. Binary Counter === Presupunand ca avem un contor binar implementat folosind o lista de $ k $ biti, 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>