Jak je uvedeno v odpovědi na propojenou otázku, běžný způsob, jak má algoritmus časovou složitost O(log n), je, že tento algoritmus pracuje opakovaným snižováním velikosti vstupu nějakým konstantním faktorem v každé iteraci.
Co znamená log n?
O(log N) v podstatě znamená čas stoupá lineárně, zatímco n stoupá exponenciálně. Pokud tedy výpočet 10 prvků trvá 1 sekundu, výpočet 100 prvků bude trvat 2 sekundy, výpočet 1000 prvků 3 sekundy a tak dále. Je to O(log n), když provádíme algoritmy typu dělení a dobývání, např. binární vyhledávání.
Co je O a log n?
Pro vstup velikosti n provede algoritmus O(n) kroky odpovídající n, zatímco jiný algoritmus O(log(n)) provede kroky zhruba log(n). Log(n) je zjevně menší než n, proto je algoritmus složitosti O(log(n)) lepší.
Jak vypočítáte log n?
Myšlenka je taková, že algoritmus je O(log n), pokud místo procházení strukturou po 1 rozdělíte strukturu znovu a znovu na polovinu a pro každé rozdělení provádíte konstantní počet operací. Vyhledávací algoritmy, kde se prostor odpovědí neustále rozděluje, jsou O(log n).
Co je log n Square?
Log ^2 (
) znamená, že je úměrná log log pro problém velikosti
. Log(
)^ 2 znamená, žeúměrné čtverec log.