Math 大O(logn)对数基是e吗?

Math 大O(logn)对数基是e吗?,math,binary-tree,complexity-theory,big-o,Math,Binary Tree,Complexity Theory,Big O,对于二进制搜索树类型的数据结构,我看到大O表示法通常被称为Ologn。对于log中的小写字母“l”,这是否意味着自然对数所描述的对数基数en?很抱歉问这么简单的问题,但我总是很难区分不同的隐含对数。从技术上讲,基数并不重要,但通常可以将其视为基数-2。实际上,基数是多少并不重要,因为大O符号通常只表示n的渐近最高阶,所以常数系数会下降。因为不同的对数底相当于一个常数系数,所以它是多余的 也就是说,我可能会假设对数基数为2。大O表示法不受对数基数的影响,因为不同基数中的所有对数都是,Oln n等于

对于二进制搜索树类型的数据结构,我看到大O表示法通常被称为Ologn。对于log中的小写字母“l”,这是否意味着自然对数所描述的对数基数en?很抱歉问这么简单的问题,但我总是很难区分不同的隐含对数。

从技术上讲,基数并不重要,但通常可以将其视为基数-2。

实际上,基数是多少并不重要,因为大O符号通常只表示n的渐近最高阶,所以常数系数会下降。因为不同的对数底相当于一个常数系数,所以它是多余的


也就是说,我可能会假设对数基数为2。

大O表示法不受对数基数的影响,因为不同基数中的所有对数都是,Oln n等于olg n


一旦用big-O表示法表示,两者都是正确的。然而,在O多项式的推导过程中,在二进制搜索的情况下,只有log2是正确的。我想这个区别是你的问题的直觉启发

另外,就我的观点而言,编写Olog2 N更适合您的示例,因为它更好地传达了算法运行时的推导过程

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

由于一个常数因子,Olog N等于Olog2 N

然而,如果你能很容易地在你的答案中键入log2n,那么这样做更符合教学法。在二叉树搜索的情况下,在big-O运行时的派生过程中引入log2n是正确的


在将结果表示为大O表示法之前,差异非常重要。当推导通过大O表示法传递的多项式时,在应用O表示法之前,本例使用对数而不是log2 N是不正确的。一旦多项式用于通过大O表示法传达最坏情况下的运行时,使用什么对数无关紧要。

是的,当谈到大O表示法时,基数无关紧要。然而,在计算上,当面对真正的搜索问题时,它确实很重要

当开发关于树结构的直觉时,了解二叉搜索树可以在logn时间内进行搜索是很有帮助的,因为这是树的高度——也就是说,在一个有n个节点的二叉树中,树的深度在logn基2上。如果每个节点都有三个子节点,则仍然可以在logn time上搜索该树,但以3为底对数。计算上,每个节点的子节点数量可能对性能有很大影响,例如:

享受吧


保罗

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

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

首先,您必须理解函数fn为ogn意味着什么

形式定义是:*函数fn被称为Ogn iff | fn | k,其中C和k是常数*

因此,设fn=n的对数基数a,其中a>1,gn=n的对数基数b,其中b>1

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

现在我们得到如下结果:n的log base a被称为n的Olog base b,iff | log base a of n | k

选择k=0,C=b的对数基数a

现在我们的方程如下所示:|对数基数a为n | 0

注意右边,我们可以操纵方程:=log base a of b*| log base b of n |=| log base b of n |*log base a of b=| log base a of b ^ log base b of n |=| log base a of n|

现在我们的方程如下所示:|对数基数a为n | 0

无论值n、b或a是什么,除了它们的限制a、b>1和n>0之外,该方程始终为真。 所以n的对数基a是n的对数基b,因为a,b不重要,我们可以忽略它们

您可以在此处看到YouTube视频:


你可以在这里读到一篇关于它的文章:

但是很容易证明log_2 n在任何基a的log_a n中,所以我不确定如何使用基2更正确。感谢Kinopkio和bcat帮助它变得有用。起初写得不太好好吧,我补充了清楚性,但你认为我的回答可能会让人困惑,我确实很伤心。事实上,这里的大部分答案都没有考虑到OP的直觉,并试图教他很多。我对这场比赛不太感兴趣,我对教育学的低标准有点难过。在O多项式的推导过程中,在二进制搜索的情况下,只有log2是正确的-1.数学差。xn~Ofn的定义是存在一个常数c,使得所有n>n_0的c*fn我的答案与你和其他人的答案在事实上不同吗?啊,也许是我在使用系数方面的错误。我将编辑以澄清。这是我对你的回答的主要问题。另外,你所说的“它们”的意思还有点不清楚,它们仍然会产生一些影响。对什么有影响?你的答案讨论了最高阶系数。就目前而言,你所说的是正确的,但这并不是对数基数无关紧要的原因。原因是不同的基对数之间的差值是一个常数,它被O所吸收。@Kinopiko:OK。我想我们说的是同一件事。我会说O100=O1,因为O100=O100*1=OC*1=O1。这就是我所说的持续表达是多余的。也就是说,任何常数的阶数都是1。图形很简洁,但请考虑O多项式的推导。。。在应用O之前,只有log-base-2才适合进行二进制搜索。@希思·亨尼克特:不。对于任何独立于x的基b,log_2x与log_b x的不同之处在于常数cb。但是,当它与问题无关,只会造成混淆时,你为什么要谈论这个问题呢?霍布斯:因为这一事实正是OP被激发去探究的原因。我试着把他的想法和答案联系起来,这样他就能理解为什么他有自己的直觉,为什么它不适用于O,但不能把他在这里学到的知识过度应用于分析的推导部分。简短的回答不能解决误解的根本原因,可能会导致进一步的误解。这是糟糕的教学法。@Heath Hunnicutt:如果你在做渐近分析,那没关系。你等到最后一分钟才抛出一些大O,这并没有改变我可以用一些愚蠢的常数乘除所有对数,并且在所有步骤中改变基数的事实。也就是说,如果我有一些涉及log_2n的分析,我可以进去用log_pi 2*log_2n/log_pi 2替换log_2n,然后得到一个到处都有log_pi 2*log_pi n的分析。现在,我的分析是根据对数进行的。正如其他人有力地指出的那样,这并不重要。所有对数之间的差异都是一个常数,仅取决于所涉及的基数。因为这些因子是常数,所以它们与渐近分析无关。其次,就确定隐含基础而言,它取决于上下文。粗略的经验法则是:1。当数学家写对数n时,他指的是自然对数。2.当计算机科学家写logn时,他指的是基数2。3.当工程师写日志n时,他指的是以10为基数。“这些通常是正确的。”杰森,数学中的另一个惯例是ln表示自然对数,logn是以十为底的。假设ln代表法语中的“对数naturelle”。对数的底是每个节点的子节点数。如果它是一个二叉树,那么它就是一个基数为2的日志。我很感激你的回答,杰森,这里有一些事情需要考虑。当我研究了对数的基数时,我假设2,我看到了相同的答案:这不重要,因为你可以消除常数,logu 102。我的问题是,例如:5 log_105<5,而5 log_25>5。我在calculate中快速输入了这些,以帮助概念化logn上的运行时间比On上的更好或更差。取决于基础,这确实很重要。因此,我真的认为正确的答案应该是,在大多数计算机科学应用中,log上下文意味着base 2。@jason,我认为用数学家的解释更容易;。另外两个例子是合理的。你的意思是说二叉树的高度是logn,而不是logn,对吗?