Big O表示法Log Base 2或Log Base 10

时间:2013-12-20 17:50:14

标签: algorithm big-o logarithm

当文章/问题表明算法的Big O运行时间为O(LogN)时。

例如Quicksort的运行时间为O(LogN),其中它是Log base 10但二叉树的高度为O(LogN + 1),它是Log base 2

问题

1)我很困惑它是Log base 10还是Log base 2,因为不同的文章使用不同的对数作为对数。

2)如果它的Log base 2或Log base 10 ??

会有所不同吗?

3)当我们看到O(LogN)???

时,我们可以假设它意味着Log base 10

3 个答案:

答案 0 :(得分:37)

我认为日志的基础无关紧要,因为无论使用何种基础,相对复杂性都是相同的。

所以你可以把它想象为O(log 2 X)= O(log 10 X)

另外要提到的是,对数与某些常数相关。

enter image description here

所以

log 10( x )= log 2( x )/ log 2(10)

所以大多数时候我们通常忽略复杂性分析中的常数,因此我们说基数并不重要。

此外,您可能会发现大多数时候基座被认为是Merge Sort。树的高度为log₂ n,因为节点有两个分支。

  

1)我对它是Log base 10还是Log base 2感到困惑   不同的文章使用不同的对数作为对数。

因此,如上所述,这种基础的变化并不重要。

  

2)如果它的Log base 2或Log base 10 ??

会有所不同吗?

不,没关系。

  

3)当我们看到O(LogN)???

时,我们可以假设它意味着Log base 10

是的,如果你知道基本转换规则,你可以假设。

答案 1 :(得分:14)

对于所有 x

log 10( x )= log 2( x )/ log 2(10)。 1 / log 2(10)是一个常数乘数,可以从渐近分析中省略。

更一般地说,任何对数的基数都可以从 a 更改为 b (均为常数wrt。 n )除以logₐ ( b ),因此你可以在大于1的日志基数之间自由切换:O(log 10( n ))与O(log 2( n <)相同/ em>)),O(ln( n ))等。

这样做的一个例子是B-trees渐近地没有击败平衡二叉搜索树,即使它们在分析中给出了更高的对数基数。只是有更好的常数。

答案 2 :(得分:7)

在Big O表示法中,O(log(n))对于所有基础都是相同的。这是由于对数基数转换:

log2(n) = log10(n)/log10(2)

1/log10(2)只是一个常数乘数,因此O(log2(n))O(log10(n))相同