Časová náročnost algoritmů. Průměrné a nejhorší chování. Úlohy P, NP a NP-úplné.
- Máme funkci a snažíme se popsat její asymptotické chování.
- Časová složitost se také označuje jako asymptotická složitost.
- Kromě časové složitosti se někdy určuje i paměťová náročnost.
- Používá se symbolika:
V tabulce seřazeno od nejrychlejší po nejnáročnější.
- Omezuje růst funkce shora
- Používá se nejčastěji pro udávání asymptotické složitosti algoritmů (oproti ostatním dvěma notacím)
- Říká, že funkce neroste rychleji než kladný násobek funkce
Zápis
( je prvkem velkého ) právě tehdy, když:
- Omezuje růst funkce zdola
- Říká, že funkce roste alespoň tak rychle jako (až na multiplikativní konstantu)
Zápis
- Omezuje růst funkce shora i zdola
- Říká, že funkce roste stejně rychle jako funkce (až na multiplikativní konstanty)
Zápis
- V praxi se často udává
- Nejhorší složitost ... složitost, v nejhorším možném případě
- Průměrná složitost ... složitost úlohy v průměrném případě
- Tyto hodnoty nemusí být stejné
- Zatímco složitost v nejhorším případě lze analyticky spočítat, průměrnou složitost je u řady algoritmů nutno zjistit statisticky.
Příklad
-
Quick sort
-
Vyhledávání prvku v nesetříděném poli
Příklad: dynamické pole
- Vložení prvku má nejhorší časovou složitost , protože při přidání prvku může být potřeba zvětšit velikost celého pole
- Reálně se ovšem po zvětšení pole vložení dalších n prvků nijak nezpomalí
- Amortizovaná složitost "rozpočítá" náročnost n operací mezi n prvků. V tomto případě by došlo n krát k vložení (konstnatní složitost) a k jednomu rozšíření pole (lineární složitost). Tyto složitosti se sečtou a vydělí počtem prvků.
- Ve výsledku je amortizovaná složitost vkládání do dynamického pole .
- Úlohy P (polynomial time)
- Úlohy NP (non-deterministic polynomial time)
- Úlohy, jejichž řešení lze ověřit v polynomiálním čase
- Patří sem všechny úlohy z P, ale kromě toho i další, které už nepatří do P, např.:
- Faktorizace - rozklad na prvočísla (asymetrická kryptografie)
- Návrh desek plošných spojů
- Problém obchodního cestujícího
- Úlohy NP-úplné
- Jsou úlohy, které jsou NP, nejsou P a lze na ně převést všechny ostatní NP úlohy
- Pokud by se našlo řešení NP-úplné úlohy, které by bylo schopné řešit danou úlohu v polynomiálním čase, znamenalo by to, že (všechny NP úlohy bychom dokázali vyřešit v polynomiálním čase)
- Konsenzus je, že , ale zatím to nebylo dokázáno (jedná se o jeden z Millenium Prize Problems)