Co je to algoritmická analýza?
Algoritmická analýza je oblast informatiky, která se věnuje porozumění složitosti algoritmů. Algoritmy jsou obecně definovány jako procesy, které provádějí řadu operací až do konce. Algoritmy lze vyjádřit mnoha způsoby, v vývojových diagramech, přirozeném jazyce a v programovacích jazycích. Algoritmy se používají v matematice, výpočetní technice a lingvistice, ale nejčastěji se používají v počítačích k provádění výpočtů nebo zpracování dat. Algoritmická analýza se zabývá algoritmy psanými v počítačových programovacích jazycích, které jsou založeny na matematickém formalismu
Algoritmus je v podstatě soubor instrukcí pro počítač k provedení výpočtu určitým způsobem. Například počítač použije algoritmus pro výpočet výplaty zaměstnance. Aby mohl počítač provádět výpočty, potřebuje do systému vložit příslušná data, jako je mzdová sazba zaměstnance a počet odpracovaných hodin.
K provedení stejné operace může pracovat více než jeden algoritmus, ale některé algoritmy používají více paměti a provedení trvá déle než jiné. Jak také víme, jak dobře algoritmy fungují obecně, vzhledem k rozdílům mezi počítači a vstupy dat? Zde přichází analýza algoritmů.
Jedním ze způsobů, jak otestovat algoritmus, je spustit počítačový program a zjistit, jak funguje. Problém s tímto přístupem je v tom, že nám pouze říká, jak dobře algoritmus pracuje s konkrétním počítačem a sadou vstupů. Účelem analýzy algoritmů je otestovat a poté vyvodit závěry o tom, jak dobře daný algoritmus funguje obecně. To by bylo velmi obtížné a časově náročné na jednotlivých počítačích, takže vědci vymýšlejí modely fungování počítačů k testování algoritmů.
Obecně je analýza algoritmů nejvíc zaměřena na zjištění, kolik času trvá spuštění programu a kolik místa v paměti potřebuje k provedení programu. Zejména počítačoví odborníci pomocí algoritmu analýzy určit, jak data přičteno do programu má vliv na jeho celkovou dobu běhu, kolik místa v paměti počítačové potřeby programových dat, kolik místa kódu programu tak trvá na osobním počítači, zda algoritmus vytváří správné výpočty, jak složitý je program a jak dobře se vypořádá s neočekávanými výsledky.