Почему журнал в биг-о двоичного поиска не является базой 2?


35

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

При размере элементов в среднем потребуется шагов, чтобы найти конкретный элемент. Взяв логарифм с обеих сторон 2, получим . Так не будет ли среднее число шагов для алгоритма бинарного поиска ? n logs=2nnlog 2 ( s )log2(s)=nlog2(s)

В этой статье Википедии об алгоритме двоичного поиска говорится, что средняя производительность равна . Почему это так? Почему это не число ?O(logn)log2(n)


Ответы:


86

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

Например где C=1

log10n=log2nlog210=Clog2n
.C=1log210

Таким образом, и log 2 n отличаются константой C , и, следовательно, оба являются истинными: log 10 n  - это  O ( log 2 n ), log 2 n  - это  O ( log 10 n ). В общем случае log a n - это O ( log b n ) для натуральных чисел a и b больше 1.log10nlog2nC

log10n is O(log2n)
log2n is O(log10n)
loganO(logbn)ab

Еще один интересный факт с логарифмическими функциями является то , что в то время как при постоянном , п к НЕ О ( п ) , но войти н к является O ( журнал N ) , поскольку журнал п к = K лог н , который отличается от бревна п только константы фактор к .k>1nkO(n)lognkO(logn)lognk=klognlognk


a,b>1e

2
O(logn) uses: it can be any of the commonly used based, since it doesn't make a difference.
svick

9

In addition to fade2black's answer (which is completely correct), it's worth noting that the notation "log(n)" is ambiguous. The base isn't actually specified, and the default base changes based on context. In pure mathematics, the base is almost always assumed to be e (unless specified), while in certain engineering contexts it might be 10. In computer science, base 2 is so ubiquitous that log is frequently assumed to be base 2. That wikipedia article never says anything about the base.

But, as has already been shown, in this case it doesn't end up mattering.


7
It is probably further worth noting then that while "log(n)" might be ambiguous that "O(log(n))" is not because the latter only has one meaning, no matter what base you might be thinking of.
Chris
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.