Analýza odpisů

Amortizační analýza  je metoda analýzy výpočetní složitosti algoritmu, která se používá v případech, kdy doba provádění jednoho kroku algoritmu vynásobená počtem kroků poskytuje příliš velký odhad doby provádění celého algoritmu ve srovnání s co to vlastně je [1] .

Historie

Termín zavedl Robert Tarjan v roce 1985 [2] . Zpočátku byla amortizovaná analýza používána pouze pro omezený rozsah algoritmů pracujících s binárními stromy nebo sjednocovacími operacemi , ale nyní se tato metoda stala všudypřítomnou a používá se při analýze mnoha dalších typů algoritmů [3] .

Metoda

Hlavní myšlenkou analýzy amortizace je, že jakákoli pracně náročná operace změní stav programu tak, že před další pracovně náročnou operací nutně projde poměrně hodně malých, čímž se příspěvek „amortizuje“. pracovně náročného provozu. Existují tři hlavní metody provádění analýzy amortizace: agregační analýza, metoda platby předem a metoda potenciální. Všechny tři dávají správnou odpověď a v konkrétním případě je obvykle vybrána ta nejvhodnější [4] :

Příklady

Dynamické pole

V dynamickém poli kromě indexování existuje operace push , která přidá prvek na konec pole a zvětší jeho velikost o jednu. Příkladem takového pole jsou kontejnery ArrayListv Javě a C++ . Pokud je velikost pole zpočátku 4, lze do něj přidat 4 prvky a každé přidání bude trvat konstantní čas. Přidání pátého prvku bude vyžadovat vytvoření nového pole o velikosti 8, do kterého se přenesou prvky starého a následně se přidá prvek nový. Další tři operace push budou opět trvat konstantní čas, po kterém bude nutné pole opět zdvojnásobit. std::vector

Obecně platí, že pokud byly operace push provedeny na poli velikosti , budou všechny tyto operace provedeny v konstantním čase, kromě poslední, která bude trvat . Z toho můžeme usoudit, že amortizované náklady na přidání prvku do dynamického pole jsou [4] .

Poznámky

  1. Přednáška 7: Amortizovaná analýza . Univerzita Carnegie Mellon . Získáno 14. března 2015. Archivováno z originálu 26. února 2015.
  2. Tarjan, Robert Endre . Amortizovaná výpočetní složitost  // SIAM Journal o algebraických a diskrétních  metodách : deník. - 1985. - Duben ( roč. 6 , č. 2 ). - str. 306-318 . - doi : 10.1137/0606031 .
  3. Rebecca Fiebrink (2007), Amortized Analysis Explained , < http://www.cs.princeton.edu/~fiebrink/423/AmortizedAnalysisExplained_Fiebrink.pdf > . Získáno 3. května 2011. Archivováno 20. října 2013 na Wayback Machine 
  4. 1 2 3 4 5 Kožen, Dexter CS 3110 Přednáška 20: Amortizovaná analýza . Cornell University (jaro 2011). Získáno 14. března 2015. Archivováno z originálu 3. října 2018.