Kuten linkitetyn kysymyksen vastauksessa mainittiin, yleinen tapa saada algoritmilla aikamonimutkaisuus O(log n) on, että algoritmi toimii leikkaamalla syötteen kokoa toistuvasti jollain vakiokertoimella jokaisessa iteraatiossa.
Mitä log n tarkoittaa?
O(log N) tarkoittaa periaatteessa aika nousee lineaarisesti, kun taas n nousee eksponentiaalisesti. Joten jos 10 elementin laskeminen kestää 1 sekunnin, 100 elementin laskeminen kestää 2 sekuntia, 1000 elementin laskeminen 3 sekuntia ja niin edelleen. Se on O(log n), kun teemme jakaa ja hallitse -tyyppisiä algoritmeja, esim. binäärihaku.
Mikä on O ja log n?
Koon n syöttämiselle algoritmi O(n) suorittaa vaiheet, jotka ovat suhteutettuja n, kun taas toinen algoritmi O(log(n)) suorittaa vaiheet suunnilleen log(n). Selvästi log(n) on pienempi kuin n, joten monimutkaisuuden algoritmi O(log(n)) on parempi.
Kuinka log n lasketaan?
Ajatuksena on, että algoritmi on O(log n), jos sen sijaan, että vieritisit rakennetta 1:llä, jaat rakenteen kerta toisensa jälkeen kahtia ja teet vakiomäärän operaatioita kullekin splitille. Hakualgoritmit, joissa vastausavaruus jakautuu jatkuvasti, ovat O(log n).
Mikä on log n Square?
Log ^2 (
) tarkoittaa, että se on verrannollinen log log:n ongelmaan.
. Loki(
)^ 2 tarkoittaa, että se onverrannollinen neliöön log.