所有时间复杂度算法的对数基数是多少?它是基数10还是基数e?
当我们说平均排序复杂度为O(n log n)时。 log n 10或e?
的基数答案 0 :(得分:24)
在Big-O复杂性分析中,对数基数实际上并不重要。 (它们渐近相同,即它们只有一个常数因子不同):
O(log2 N) = O(log10 N) = O(loge N)
大部分时间,当数学家谈论日志时,他们隐含意味着基于e
。计算机科学家倾向于支持基数2,但实际上并不重要。
答案 1 :(得分:20)
在计算机科学中,它通常是基础2.这是因为许多表现出这种复杂性的分而治之算法在每一步都将问题分成两部分。
二进制搜索是一个典型的例子。在每一步中,我们将数组分成两部分,并且仅在一半中递归搜索,直到达到一个元素(或零元素)的子数组的基本情况。将长度为n
的数组分成两部分时,到达一个元素数组之前的总分数为log2(n)
。
这通常被简化,因为在讨论算法分析时,不同碱基的对数是有效的。
答案 2 :(得分:7)
就Big-O而言,基数并不重要,因为基数公式的变化意味着它只是一个恒定的因子差异。
然而,有时计算算法执行的操作数量大约是有用的。在这种情况下,由于大多数分而治之算法的性质,大部分时间它都是基数2。
答案 3 :(得分:2)
基本上,可以通过添加常数将来自碱基10或碱基2或碱基e的对数交换(转化)到任何其他碱基。因此,日志的基础并不重要。
需要注意的关键是log2N增长缓慢。倍增N的影响相对较小。对数曲线很好地平坦。 source
答案 4 :(得分:0)
根据问题的不同而不同,大多数情况都无关紧要。但是在许多情况下它是基数2,例如二进制搜索是log(base 2)n。您可以更详细地了解它here。