This is an old revision of the document!
Analiza amortizata
Utilizati aggregate method, accounting method si potential method pentru a gasi costul amortizat pentru situatiile prezentate mai jos.
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 agregat $ 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(logn) $.
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.