6. Výpočetní složitost algoritmů, lineární, polynomiální a exponenciální složitost Flashcards
Výpočetní složitost algoritmů
zabývá se měřením a analýzou náročnosti algoritmů vzhledem k jejich vstupu
Výpočetní složitost algoritmů popisuje, jak se mění časová a prostorová náročnost algoritmu v závislosti na velikosti vstupních dat
Snaha zjistit, jak rychle daný algoritmus dokáže vyřešit jistý problém v závislosti na velikosti vstupu
Výpočetní složitost je důležitá, protože umožňuje předpovědět, jak dlouho bude algoritmus trvat
To je klíčové pro návrh a optimalizaci algoritmů pro různé aplikace
Výběr správného algoritmu s ohledem na složitost je důležitým faktorem při řešení problémů v oblasti výpočetní techniky
Snažíme se najít algoritmy s co nejnižší složitostí, aby nám naše programy poskytly co nejrychlejší a nejefektivnější řešení
Lineární složitost
Lineární složitost algoritmu znamená, že časová náročnost roste přímo úměrně s velikostí vstupu
To znamená, že pro každý prvek vstupu musíme vykonat přibližně stejný počet operací
Lineární algoritmy jsou velmi efektivní a často se používají v praxi, protože mají časovou náročnost, která roste poměrně pomalu s velikostí vstupu
Lineární algoritmy mohou být implementovány pomocí cyklů nebo rekurze
Časová náročnost lineárních algoritmů může být snížena použitím různých optimalizací, jako jsou například hashovací tabulky nebo binární vyhledávání
Příkladem algoritmu s lineární složitostí může být například vyhledání prvku v seřazeném seznamu nebo projití pole a výpočet sumy prvků
Polynomiální složitost
Polynomiální složitost algoritmu znamená, že časová náročnost roste s mocninou velikosti vstupu
To znamená, že čím více prvků má vstup, tím déle bude algoritmus trvat (rychlost růstu není tak vysoká jako u exponenciální složitosti)
Polynomiální algoritmy jsou obvykle efektivní a používají se v mnoha aplikacích
Polynomiální algoritmy pracují pomocí cyklů nebo iterativních funkcí a provádějí počet operací, který je přibližně roven mocnině vstupní velikosti
Příkladem algoritmu s polynomiální složitostí může být algoritmus na sčítání matic nebo řešení lineárních rovnic
Exponenciální složitost
Exponenciální složitost algoritmu znamená, že časová náročnost roste exponenciálně s velikostí vstupu
To znamená, že čím více prvků má vstup, tím déle bude algoritmus trvat
Exponenciální algoritmy jsou obvykle velmi pomalé a náročné na zdroje
Exponenciální algoritmy obvykle pracují rekurzivně a pro každý prvek vstupu musí vykonat mnoho operací
Protože časová náročnost exponenciálních algoritmů se zvyšuje velmi rychle s velikostí vstupu, jsou často používány pouze pro malé vstupy nebo jsou nahrazovány efektivnějšími algoritmy
Příkladem algoritmu s exponenciální složitostí může být například hledání nejdelšího společného podřetězce v řetězcích nebo hledání všech možných permutací prvků v seznamu