Kaip minėta atsakyme į susietą klausimą, įprastas būdas, kaip algoritmas turi laiko sudėtingumą O(log n), yra tai, kad šis algoritmas veikia pakartotinai sumažinant įvesties dydį tam tikru pastoviu koeficientu kiekvienoje iteracijoje.
Ką reiškia log n?
O(log N) iš esmės reiškia laikas didėja tiesiškai, o n didėja eksponentiškai. Taigi, jei 10 elementų apskaičiavimas užtrunka 1 sekundę, 100 elementų apskaičiavimas užtruks 2 sekundes, 1000 elementų – 3 sekundes ir pan. Tai yra O(log n), kai dalijame ir užkariaujame algoritmų tipą, pvz., dvejetainę paiešką.
Kas yra O ir log n?
Įvedant n dydį, O(n) algoritmas atliks veiksmus, proporcingus n, o kitas O(log(n)) algoritmas atliks veiksmus. apytiksliai log(n). Akivaizdu, kad log(n) yra mažesnis nei n, todėl sudėtingumo O(log(n)) algoritmas yra geresnis.
Kaip apskaičiuoti log n?
Idėja yra ta, kad algoritmas yra O(log n), jei užuot slinkę per struktūrą 1 po 1, vėl ir vėl padalinate struktūrą per pusę ir atliekate pastovų skaičių operacijų kiekvienam padalijimui. Paieškos algoritmai, kurių atsakymų erdvė vis padalijama, yra O(log n).
Kas yra log n kvadratas?
Žurnalas ^2 (
) reiškia, kad ji yra proporcinga log logdydžio problemai.
. Žurnalas(
)^ 2 reiškia, kad taiproporcingas kvadratui iš log.