10.3 Popis složitosti algoritmů

Mnoho problémů lze řešit různými způsoby, různými algoritmy. Tyto algoritmy bychom rádi porovnávali z různých pohledů. K tomu se velmi hodí použít asymptotické vztahy zavedené v předchozí části textu. Nejprve si ale ujasněme koncepční rámec, v kterém se pohybujeme

  • Výpočetní problém $P$: úkol zpracovat/transformovat vstupní data $I$ na výstupní data $O$ s požadovanými vlastnostmi.

  • Algoritmus $A$: výpočetní postup řešení problému $P$, čili posloupnost výpočetních kroků, která z vstupních dat vyprodukuje výstupní data požadovaných vlastností.

  • Instance problému: problém s konkrétními daty potřebnými pro jeho řešení.

Definujeme-li „velikost“ vstupních dat $I$, pak můžeme zkoumat chování daného algoritmu $A$ z různých úhlů pohledu:

  • Průměrný/minimální/maximální/řádový (asymptotický) počet „elementárních operací“, nutných k získání výstupu v závislosti na velikosti vstupu.

  • Průměrná/minimální/maximální/řádová (asymptotická) „paměťová náročnost“, nutná k získání výstupu v závislosti na velikosti vstupu.