[英]base of logarithms in time-complexity algorithms
所有时间复杂度算法的对数底是什么? 它是以 10 为底还是以 e 为底?
当我们说平均排序复杂度为 O(n log n) 时。 log n 的底数是 10 还是 e?
在 Big-O 复杂性分析中,对数底是什么实际上并不重要。 (它们渐近相同,即它们仅相差一个常数因子):
O(log2 N) = O(log10 N) = O(loge N)
大多数时候,当数学家谈论对数时,他们隐含的意思是以e
为底。 计算机科学家倾向于支持基数 2,但这实际上并不重要。
在计算机科学中,它通常以 2 为底。这是因为许多表现出这种复杂性的分而治之的算法在每一步都将问题一分为二。
二分搜索是一个典型的例子。 在每一步,我们将数组分成两部分,并且只在其中一个部分中递归搜索,直到达到一个元素(或零元素)的子数组的基本情况。 将长度为n
的数组一分为二时,在到达一个元素数组之前的总分割数为log2(n)
。
这通常被简化,因为在讨论算法分析时,不同基数的对数实际上是等效的。
就Big-O而言,基数无关紧要,因为基数公式的变化意味着它只是一个常数因子差。
然而,有时计算一个算法执行了多少操作是很有用的。 在这种情况下,由于大多数分而治之算法的性质,大多数情况下它是以 2 为底。
它因问题而异,并且在大多数情况下是无关紧要的。 但是在许多情况下它是基数 2,例如二进制搜索是 log(base 2)n。 您可以在此处更详细地了解它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.