Я прорабатываю главу Big-O «Взлом кодового интервью» и не могу обернуться вокруг одной из предложенных манипуляций с логарифмами.
Страница 50 книги пытается показать, что O(2<sup>log N</sup>)
эквивалентно O(N)
.
Книга начинается с Let P = 2<sup>log N</sup>
, затем она утверждает: «По определению log 2 мы можем записать это как log 2 P = log 2 N "
Это утверждение - то, где мое понимание нарушается. Я не понимаю, как вы можете уменьшить log<sub>2</sub>(2<sup>log N</sup>)
до log<sub>2</sub>(N)
. Если вы посмотрите на график этих двух функций, они явно различаются:
Это шаг к «доказательству» этого N = 2<sup>log N</sup>
, что также выглядит как ложное утверждение. Если вы отобразите их снова, N
- линейная функция, а 2<sup>log N</sup>
- сублинейная функция.
Любые объяснения для начинающих, как это имеет смысл? Спасибо!
Изменить, чтобы показать, что log N
в этом случае означает log-base-2 (N):
В этом примере из книги log N
представляет приблизительную глубину сбалансированного бинарного дерева поиска. Подсчет первых двух слоев дерева дает понять, что мы работаем с log-base-2:
Which log function gives us the answer "Given the number of
nodes, what is the depth?" Clearly the answer is log-base-2.
nodes depth log2(nodes) log10(nodes)
1 1 0 0
3 2 1.58 0.48
7 3 2.81 0.85
15 4 3.91 1.18
31 5 4.95 1.49
63 6 5.98 1.80
@ Ответ Кайвена Чена точный. Здесь мы находимся в мире CS, и предполагаемая база журналов равна 2. Книга добавляет эту путаницу, потому что части примера ссылаются на явное log<sub>2</sub>
, тогда как log N
для описания глубины дерева всегда пишется с предполагаемая база 2.