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} $
Presupunând că avem o implementare a unei stive care permite operațiile $ \pop - O(1) $, $ \push - O(1) $ si $ \mpop(k) - O(k) $, demonstrați că pentru o secvență arbitrară $ S $ de $ n $ operatii, $ \cost(S) = O(n) $ și că fiecare operație are un cost amortizat $ \cost(op) = O(1) $.
Exemplu: $ \push, \pop, \push, \push, \push, \mpop(2), \push, \pop, \push $
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: $ \key(B) \leq \key(A) $
Un max-heap se poate stoca sub formă de array, unde $ a[i] $ are copiii $ a[2i] $ si $ a[2i+1] $.
Adăugarea unui element constă în următorii pași:
Arătați că fiecare inserare are un cost agregat de $ \cost(op) = O(\log n) $.
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.