是大O(logn)日志基础?

对于二进制search树型数据结构,我看到大O表示法通常记为O(logn)。 在日志中使用小写“l”,这是否意味着以自然对数描述的对数基数e(n)? 对不起,这个简单的问题,但我一直无法区分不同的暗示对数。

一旦用big-O()表示法表示,两者都是正确的。 然而,在O()多项式的推导过程中,在二分search的情况下,只有log 2是正确的。 我认为这个区别是对你的问题直观的启发。

另外,作为我的观点,写O(log 2 N)对于你的例子来说更好,因为它更好地传达了algorithm运行时的推导。

在big-O()表示法中,常数因子被删除。 从一个对数基数转换到另一个对数基数乘以一个常数因子。

所以O(log N)等于O(log 2 N)由于一个常数因素。

但是,如果您可以在答案中轻松排版log 2 N,那么这样做更具教育意义。 在二叉树search的情况下,在导出big-O()运行时期间引入log 2 N是正确的。

在将结果表示为big-O()表示法之前,区别非常重要。 当通过大O符号导出要传送的多项式时,在应用O() – 表示法之前,使用log 2 N以外的对数对该示例是不正确的。 只要多项式用于通过big-O()表示法传递最坏情况的运行时间,使用什么对数就没有关系。

大O符号不受对数基的影响,因为不同基中的所有对数都是一个常数因子 , O(ln n)等于O(log n)

在这里输入图像说明

因为大O符号通常写成只显示n的渐近最高阶,所以它的基数并不重要,所以常数系数将会下降。 由于不同的对数基数相当于一个常数系数,这是多余的。

这就是说,我可能会假设日志2。

从技术上来说,基地并不重要,但是你通常可以将其视为基地-2。

是的,在谈论大O符号时,基地并不重要。 然而,在面对真正的search问题时,计算是很重要的。

在开发关于树结构的直觉时,理解可以在O(n log n)时间内search二叉search树是有帮助的,因为那是树的高度 – 也就是说,在具有n个节点的二叉树中,树深度是O(n log n)(基数2)。 如果每个节点有三个孩子,树仍然可以在O(n log n)时间内search,但是以3为底的对数。 从计算的angular度来看,每个节点的子节点数对性能有很大的影响(参见例如: 链接文本 )

请享用!

保罗

两者都是正确的。 想想这个

 log2(n)=log(n)/log(2)=O(log(n)) log10(n)=log(n)/log(10)=O(log(n)) logE(n)=log(n)/log(E)=O(log(n))