Чому журнал у великому-O двійкового пошуку не є базовим 2?


35

Я новачок у розумінні алгоритмів інформатики. Я розумію процес бінарного пошуку, але у мене є незначне непорозуміння з його ефективністю.

За розміром елементів знадобиться, в середньому, n кроків, щоб знайти певний елемент. Приймаючи логарифм основи 2 з обох сторін, виходить log 2 ( s ) = n . Так що не було б середню кількість кроків для алгоритму двійкового пошуку буде увійти 2 ( S ) ?s=2nnlog2⁡(s)=nlog2⁡(s)

Ця стаття у Вікіпедії про алгоритм двійкового пошуку говорить про те, що середня продуктивність - . Чому це так? Чому цей журнал числа 2 ( n ) не є ?O(log⁡n)log2⁡(n)


Відповіді:


86

Коли ви змінюєте основу логарифму, отриманий вираз відрізняється лише постійним коефіцієнтом, який за визначенням нотації Big-O означає, що обидві функції належать до одного класу щодо їх асимптотичної поведінки.

Наприклад, де C=1

журнал10⁡н=журнал2⁡нжурнал2⁡10=Сжурнал2⁡н
.С=1журнал2⁡10

Отже, і log 2 n відрізняються постійною C , а значить, і те і інше: log 10 n  є  O ( log 2 n ) log 2 n  є  O ( log 10 nжурнал10⁡нжурнал2⁡нС

журнал10⁡н є О(журнал2⁡н)
Загалом log a n є O ( log b n ) для натуральних чисел a і b, більших за 1.
журнал2⁡н є О(журнал10⁡н)
журнала⁡нО(журналб⁡н)аб

Ще один цікавий факт з логарифмічними функціями полягає в тому, що при постійному , n k не є O ( n ) , але log n k є O ( log nк>1нкО(н)журнал⁡нк оскільки log n k = k log n, який відрізняється від log n лише постійною коефіцієнт k .О(журнал⁡н)журнал⁡нк=кжурнал⁡нжурнал⁡нк


Не тільки для натуральних чисел: для всіх дійсних , наприклад, e . а,б>1е
— nbubis

2
Я додам, що це причина, чому для позначення big-O основу логарифму зазвичай не визначають. Це також означає, що немає плутанини щодо того, яку базу використовує: вона може бути будь-якою із часто використовуваних баз , оскільки це не має значення. О(журнал⁡н)
— svick

9

журнал⁡(н)ежурнал

Але, як уже було показано, в цьому випадку це не має значення.


7
Мабуть далі варто зауважити, що, хоча "log (n)" може бути неоднозначним, що "O (log (n))" є не тому, що останній має лише одне значення, незалежно від того, про яку базу ви б не думали.
— Кріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.