是大O(LOGN)数e为底?(Is Big O(logn) log base e?)

2019-08-18 04:38发布

对于二进制搜索树型数据结构的,我看到大O符号通常被标注为O(logn)时间。 在日志中的小写“L”,这是否意味着日志以e(n)作为由自然对数描述? 对不起,我简单的问题,但我一直有麻烦了不同隐含对数之间的区分。

Answer 1:

一旦在大O()符号表示,两者都是正确的。 然而,O()多项式的推导过程中,在二进制搜索的情况下,只记录2是正确的。 我认为这种区别是你的问题开始与直观的启发。

此外,作为我见仁见智,写为O(log 2 N)是你的榜样更好,因为它更好地沟通的算法的运行时间推导。

在大O()符号,常数因子被去除。 从一个对数基转化成另一种涉及通过一个常数因子相乘。

所以为O(log N)相当于为O(log 2 N)由于一个常数因子。

不过,如果你可以很容易地排版登录2 N在你的答案,这样做是比较教育学。 在二叉树搜索的情况下,你是日志2 N大-O()运行时的推导过程中引入正确的。

表达结果作为大O()符号之前,差别是非常重要的。 当导出经由大O符号中传送的多项式,这将是不正确的本实施例中使用其它对数比日志2 N,将所述O()之前的-符号。 一旦多项式用于通过大O()符号通信的最坏情况运行时,它并不重要是做什么用对数。



Answer 2:

大O符号不受对数的基础,因为在不同的基地全部对数的常数因子有关 , O(ln n)相当于O(log n)



Answer 3:

它并不真正的问题是什么的基础,因为大O记法通常被写成只显示的渐近最高阶n ,所以常系数就会下降了。 由于不同的对数基相当于一个恒定系数,它是多余的。

这就是说,我可能会承担日志基地2。



Answer 4:

两者都是正确的。 想想这

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))


Answer 5:

技术上基本没有关系,但你通常可以把它作为基地,2。



Answer 6:

是的,说起大O表示法时,基本没有关系。 然而,计算当面对这非常重要一个真正的搜索问题。

在制定有关树形结构的直觉,它有助于了解,二叉搜索树可以在O搜索(N log n)的时间,因为这是树的高度 - 也就是,在二叉树n个节点,树深度是O(n log n)的(基数为2)。 如果每个节点有三个孩子,树仍然可以为O搜索(N log n)的时间,但有一个基地3对数。 计算上,每个节点有可能会对性能产生很大影响孩子的数量(见例如: 链接文本 )

请享用!

保罗



Answer 7:

首先你要明白它的意思的函数f(n)的为O(G(N))。

的正式定义为:* A函数f(n)被说成是O(G(N))当且仅当| F(N)| <= C * | G(N)| 每当N> K,其中C和k是常数。*

因此,让F(N)=日志基正,的其中a> 1和g(N)=日志n,其中B> 1的基极b

注意:这意味着值a和b可以是任何大于1的值,例如= 100和b = 3

现在,我们得到如下:日志基地正被说成是为O(log n个基极b)当且仅当|登录基地的n | <= C * |登录基极b的n | 每当N> K

选择K = 0,和C =日志基A和B的。

现在我们的公式如下所示:|日志基地的n | <=日志基部B的* | n个对数底b | 每当N> 0

注意右侧,我们可以操纵的公式:=日志基地B的* |登录基极b的n | = | N的对数基极b | *日志基A B的= |登录基A B的^(日志N的基极b)| = |日志基正的|

现在我们的公式如下所示:|日志基地的n | <= |日志基正的| 每当N> 0

方程始终是真实的,不管n的值,B,或者是什么,比的限制,B> 1和n> 0等。 如此日志基地的n是O(日志N的基极b),并且由于A,B不要紧,我们可以简单地忽略它们。

:你可以在这里看到它YouTube视频https://www.youtube.com/watch?v=MY-VCrQCaVw

你可以在这里阅读的一篇文章: https://medium.com/@randerson112358/omitting-bases-in-logs-in-big-o-a619a46740ca



文章来源: Is Big O(logn) log base e?