Big O notation Log Base 2 or Log Base 10
当文章/问题声明算法的Big O运行时间为O(LogN)时。
例如,Quicksort的大O运行时间为O(LogN),其中它的对数为10,而二叉树的高度为O(LogN + 1),其中它的对数为2
题
1)我对是以10为底数还是以2为底数感到困惑,因为不同的文章对数使用不同的底数。
2)如果它的对数为2或对数为10,会有所不同吗?
3)当我们看到O(LogN)时,是否可以假设它的对数为10?
我认为日志的基础是什么都没有关系,因为相对的复杂性是相同的,而与所使用的基础无关。
因此,您可以将其视为O(log 2 sub> X)= O(log 10 sub> X)
还要提到对数是由一些常数关联的。
所以log ??(x)= log?(x)/ log?(10)
因此,在大多数情况下,我们通常在复杂性分析中不考虑常量,因此,我们说基数无关紧要。
您也可能会发现大多数情况下,就像合并合并中一样,该底数被视为2。由于节点有两个分支,因此树的高度为
1)I am confused over whether is it Log base 10 or Log base 2 as
different articles use different bases for their Logarithm .
因此,如上所述,基数的变化无关紧要。
2) Does it make a difference if its Log base 2 or Log base 10??
不,没关系。
3)Can we assume it mean Log base 10 when we see O(LogN)???
是的,只要您知道基本转换规则,就可以假设。
对所有x的log(x)= log(x)/ log(10)。 1 / log?(10)是一个常数乘数,可以从渐近分析中省略。
更一般而言,通过对数除以log?(b)可以将任何对数的底数从a更改为b(均为常数wrt。n),因此您可以在大于1的对数底数之间自由切换:O(log ??(n ))与O(log?(n)),O(ln(n))等相同。
这样的一个示例结果是,即使B树在分析中给出了更高的对数底数,也不会渐近击败平衡的二分搜索树。只是具有更好的常数。
在Big O表示法中,所有基数的
1 | log2(n) = log10(n)/log10(2) |