我认为我书中的一个特定例子是错误的。但我是对的吗?
Example: 3log n + 2 is O(log n)
Justification: 3log n + 2 <= 5 log n, for n>=2.
我理解他们如何得到c = 5(因为他们取系数并将它们加起来)。但是我没看到例如n = 2,左边的函数小于右边的函数。
如果我在n中填写2:
3 log 2 + 2 = 2.903和5 log 2 = 1.5051。
只有当n = 10时,左功能实际上小于或等于右功能。 我的假设是对的吗?
答案 0 :(得分:3)
此案例中的日志基于2,而不是基于10。
3log(2) + 2 = 3 + 2 = 5
5log(2) = 5
并且确实5 <= 5
答案 1 :(得分:1)
为了扩展彼得的答案,在分析运行时间时,通常假设对数的基数为2。由于不同碱基的对数仅通过常数因子彼此不同,因此不必以O()表示法指定碱基。 (在此示例中,log_10(x) / log_2(x) = log(2)/log(10) = ~0.30103
。)此常量因子与渐近运行时无关。