Ako je spomenuté v odpovedi na prepojenú otázku, bežným spôsobom, ako má algoritmus časovú zložitosť O(log n), je, že tento algoritmus funguje opakovaným znižovaním veľkosti vstupu určitým konštantným faktorom pri každej iterácii.
Aký je význam log n?
O(log N) v podstate znamená čas rastie lineárne, zatiaľ čo n rastie exponenciálne. Ak teda výpočet 10 prvkov trvá 1 sekundu, výpočet 100 prvkov bude trvať 2 sekundy, výpočet 1000 prvkov 3 sekundy atď. Je to O(log n), keď robíme algoritmy typu delenia a panovania, napr. binárne vyhľadávanie.
Čo je O a log n?
Pre vstup veľkosti n algoritmus O(n) vykoná kroky zodpovedajúce n, zatiaľ čo iný algoritmus O(log(n)) vykoná kroky zhruba log(n). Log(n) je jasne menší ako n, preto je algoritmus zložitosti O(log(n)) lepší.
Ako vypočítate log n?
Myšlienka je taká, že algoritmus je O(log n), ak namiesto rolovania štruktúrou 1 x 1 štruktúru znova a znova rozdelíte na polovicu a pre každé rozdelenie vykonáte konštantný počet operácií. Algoritmy vyhľadávania, v ktorých sa priestor odpovedí neustále rozdeľuje, sú O(log n).
Čo je log n Square?
Log ^2 (
) znamená, že je úmerné log log pre problém veľkosti
. Log(
)^ 2 znamená, žeúmerné square log.