【发布时间】:2019-03-07 20:12:32
【问题描述】:
我正在阅读《Cracking the Coding Interview》的 Big-O 章节,我无法理解建议的对数操作之一。
本书的第 50 页试图表明 O(2<sup>log N</sup>) 等同于 O(N)。
本书以Let P = 2<sup>log N</sup>开头,然后宣称:“根据log2的定义,我们可以写成log2P = log2N"
这种说法是我的理解崩溃的地方。我不明白您如何将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:
@Kaiwen Chen 的回答很到位。我们在这里是 CS 世界,假设的日志基数是 2。这本书增加了这种混乱,因为示例的一部分引用了明确的 log<sub>2</sub>,而描述树深度的 log N 总是写成假设基数为 2。
【问题讨论】:
标签: time-complexity big-o logarithm