Big o 算法的大O常数c和n

Big o 算法的大O常数c和n,big-o,Big O,我认为我书中的一个例子是错误的。但我说的对吗 Example: 3log n + 2 is O(log n) Justification: 3log n + 2 <= 5 log n, for n>=2. 示例:3logn+2是O(logn) 对正:3logn+2=2。 我理解他们是如何得到c=5的(因为他们把系数加起来)。但是我不明白,对于n=2,例如,左函数比右函数小 如果我在n中填写2: 3对数2+2=2.903和5对数2=1.5051 直到n=10,左函数实际上小于或

我认为我书中的一个例子是错误的。但我说的对吗

Example: 3log n + 2 is O(log n)

Justification: 3log n + 2 <= 5 log n, for n>=2. 
示例:3logn+2是O(logn)
对正:3logn+2=2。
我理解他们是如何得到c=5的(因为他们把系数加起来)。但是我不明白,对于n=2,例如,左函数比右函数小

如果我在n中填写2:

3对数2+2=2.903和5对数2=1.5051

直到n=10,左函数实际上小于或等于右函数。
我的假设正确吗?

本例中的日志是基于2的,而不是基于10的

3log(2) + 2 = 3 + 2 = 5
5log(2) = 5

在这种情况下,5的对数是以2为基础的,而不是以10为基础的

3log(2) + 2 = 3 + 2 = 5
5log(2) = 5

确实,5对Peter的答案进行一点扩展,在分析运行时,对数的底通常假定为底2。没有必要在O()表示法中指定基数,因为不同基数的对数之间只有一个常数因子不同。(在本例中,
log_10(x)/log_2(x)=log(2)/log(10)=~0.30103
)该常数因子与渐近运行时间无关。

为了扩展Peter的答案,在分析运行时间时,通常假定对数的基数为基数2。没有必要在O()表示法中指定基数,因为不同基数的对数之间只有一个常数因子不同。(在本例中,
log_10(x)/log_2(x)=log(2)/log(10)=~0.30103
)该常数因子与渐近运行时间无关。

作为旁注,不等式为真的值并不重要,只要它是常数。因此真正重要的是c,在这个例子中,哪一个是5?它是:对于n>=c,不等式是真的
,谢谢,伙计,很清楚!作为旁注,不等式为真的值并不重要,只要它是一个常数。因此,真正重要的是c,在本例中是5?它是:不等式为真n>=c,谢谢,很清楚!谢谢你的评论!目前,我不得不低代表投票赞成你的评论!我会在有机会的时候再谈这个。谢谢你的评论!目前,我不得不低代表投票赞成你的评论!我会在可能的时候再谈这个。