Amint azt a linkelt kérdésre adott válaszban említettük, egy algoritmus O(log n) időbonyolításának általános módja az, hogy az algoritmus úgy működik, hogy ismételten csökkenti a bemenet méretét valamilyen állandó tényezővel minden iterációnál.
Mit jelent a log n?
Az
O(log N) alapvetően azt jelenti, hogy az idő lineárisan nő, míg az n exponenciálisan emelkedik. Tehát ha 1 másodpercet vesz igénybe 10 elem kiszámítása, akkor 100 elem kiszámítása 2 másodperc, 1000 elem kiszámítása 3 másodperc, és így tovább. Ez O(log n), amikor oszd meg és uralkodj típusú algoritmusokat, például bináris keresést végzünk.
Mi az O és log n?
N méretű bemenet esetén az O(n) algoritmusa az n-re arányos lépéseket hajt végre, míg egy másik O(log(n)) algoritmus nagyjából log(n). Nyilvánvaló, hogy log(n) kisebb, mint n, ezért az O(log(n)) bonyolultságú algoritmus jobb.
Hogyan számítja ki a log n értéket?
Az ötlet az, hogy egy algoritmus O(log n), ha ahelyett, hogy egy struktúrát 1-gyel görgetne, újra és újra kettéosztja a struktúrát, és minden felosztáshoz állandó számú műveletet hajt végre. Azok a keresési algoritmusok, ahol a választér folyamatosan felosztódik, az O(log n).
Mi az a log n Square?
Log ^2 (
) azt jelenti, hogy arányos a log log értékével améretű probléma esetén.
. Log(
)^ 2 azt jelenti, hogyarányos négyzet a log.