Som nevnt i svaret på det koblede spørsmålet, er en vanlig måte for en algoritme å ha tidskompleksitet O(log n) at den algoritmen virker ved å kutte ned størrelsen på input gjentatte ganger med en konstant faktor for hver iterasjon.
Hva er meningen med log n?
O(log N) betyr i utgangspunktet tiden går opp lineært mens n går opp eksponentielt. Så hvis det tar 1 sekund å beregne 10 elementer, vil det ta 2 sekunder å beregne 100 elementer, 3 sekunder å beregne 1000 elementer, og så videre. Det er O(log n) når vi deler og erobrer type algoritmer, f.eks. binært søk.
Hva er O og logg n?
For inndata av størrelse n vil en algoritme av O(n) utføre trinn som er proporsjonale med n, mens en annen algoritme av O(log(n)) vil utføre trinn omtrent log(n). Log(n) er tydeligvis mindre enn n, derfor er kompleksitetsalgoritmen O(log(n)) bedre.
Hvordan beregner du logg n?
Ideen er at en algoritme er O(log n) hvis du i stedet for å bla gjennom en struktur 1 ganger 1 deler strukturen i to om og om igjen og gjør et konstant antall operasjoner for hver splitt. Søkealgoritmer der svarrommet stadig blir delt er O(log n).
Hva er log n Square?
Log ^2 (
) betyr at den er proporsjonal med log i log for et problem av størrelse
. Log(
)^ 2 betyr at det erproporsjonal med square av log.