Vyčíslitelnost a složitost výpočtů

Úvod do výpočetní složitosti, asymptotiky

Shrnutí kapitoly

V kapitole 2 (skripta prof. Černá) jsme se seznámili s několika problémy různé složitosti, která je dána časem potřebným k vyřešení problému. Ten je intuitivně dán rychlostí nejrychlejšího sekvenčního algoritmu, který umí problém vyřešit. Který algoritmus je ale ten nejrychlejší? Co když pro některé případy téhož problému je nejrychlejší algoritmus A a pro jiné algoritmus B?

Abychom porovnali rychlost dvou (nebo více algoritmů), budeme brát za rozhodující, jak se budou chovat pro vstupy zvětšujících se délek, tj. případy rostoucí velikosti. Jinými slovy, jak rychle roste čas výpočtu braný jako funkce délky vstupu algoritmu.

Asymptotiky představují matematický nástroj pro porovnávání rychlosti růstu funkcí. Při takovém srovnání dvou funkcí f(n) a g(n) (jejichž definičním oborem jsou přirozená čísla) nás zajímá jejich chování pro hodnoty argumentů n≥n0, tedy od n0 do nekonečna. Malé hodnoty argumentu n<n0 ignorujeme. Přitom hranici n0 si můžeme zvolit sami. Její význam je v tom, abychom oddělili počáteční část definičního oboru, kde se funkce může chovat atypicky, od zbytku, kde by její růst měl být stabilní. Výsledek srovnání, zjednodušeně řečeno, závisí na tom, jak se vyvíjí poměr f(n)/g(n) pro neomezeně rostoucí argument n: zda klesá k nule, nebo se blíží k nějaké konstantě, nebo zda jde k nekonečnu.

Studijní materiály

Skripta J. Wiedermann, kapitola 1.

Skripta I. Černá, kapitola 1, odstavec Funkce, asymptotiky, a dále kapitola 2.