对于二进制搜索树型数据结构的,我看到大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