大O符号Log Base 2或Log Base 10
这个问题在这里已经有了答案:
我认为日志的基础是什么并不重要,因为相对复杂性是相同的,而与所用基数无关。
所以你可以把它看作O(log2X)= O(log10X)
还要提到对数与某些常数有关。
所以
log 10(x)= log 2(x)/ log 2(10)
所以大多数时候我们通常忽略复杂性分析中的常量,因此我们说基数并不重要。
此外,您可能会发现在合并排序中大多数情况下该基准被认为是2。 树的高度为log₂ n
,因为节点有两个分支。
1)我很困惑它是否是基于Log 10或Log base 2,因为不同的文章使用不同的基数作为其对数。
所以如上所述,这个基地的变化并不重要。
2)如果Log base 2或Log base 10是否有区别?
不,这没关系。
3)当我们看到O(LogN)时,我们可以假设它意味着Log base 10吗?
是的,您可以假设您知道基本转换规则。
所有x的log 10(x)= log 2(x)/ log 2(10)。 1 / log 2(10)是一个常数乘数,可以从渐近分析中省略。
更一般地说,任何对数的基数都可以通过除以log(b)从a变为b(两个常数都是n),因此您可以在大于1的对数基数之间自由切换:O(log 10(n))是与O(log 2(n)),O(ln(n))等相同
这样做的一个例子就是B树不是渐近地击败平衡的二元搜索树,尽管它们在分析中给出了更高的对数基。 刚好有更好的常量。
在大O符号中, O(log(n))
对于所有基数都是相同的。 这是由于对数基转换:
log2(n) = log10(n)/log10(2)
1/log10(2)
只是一个常数倍数因子,所以O(log2(n))
与O(log10(n))