Skryté konštanty

Keď hovoríme o časovej zložitosti algoritmov pomocou O-notácie, ignorujeme konštantné faktory. Predpokladá sa, že tieto konštanty sú "rozumne malé". To znamená, že ak je algoritmus $O(n^2)$, jeho skutočný čas môže byť $10n^2$, ale len zriedka $10^7n^2$.

Kedy sú konštanty dôležité?

Ak je konštanta veľká, zvyčajne to súvisí s nejakou vlastnosťou samotnej úlohy. V takom prípade je dobré túto konštantu uviesť priamo v asymptotickom odhade.

Príklad: Predstavte si úlohu, kde máte daný text dĺžky $n$ a potrebujete zistiť, koľkokrát sa každé písmeno v ňom vyskytuje.

Jedným z prístupov môže byť pre každé možné písmeno prejsť celý text a spočítať jeho výskyty. Ak existuje $a$ rôznych možných znakov (napríklad $26$ pre písmená), tento algoritmus vykoná $a$ prechodov cez text dĺžky $n$. Jeho zložitosť by sa teda správnejšie zapísala ako $O(a \cdot n)$. Aj keď $26$ je konštanta, je dôležité ju spomenúť, pretože výrazne ovplyvňuje celkový čas, ak by algoritmus pracoval nad väčšou abecedou.