【问题标题】:What is the base of the logarithm for the purposes of Algorithms?就算法而言,对数的底是什么?
【发布时间】:2009-11-11 04:49:33
【问题描述】:

在考虑 O(log(N)) 的时间复杂度时,log 的基础是什么?

【问题讨论】:

标签: big-o


【解决方案1】:

所有对数都与某个常数相关。 (因此change-of-base formula)。因为我们通常在复杂性分析中忽略常数,所以基数并不重要。

通常,在推导算法时,基数被认为是 2。考虑像@​​987654322@ 这样的排序。你可以从中构造一个tree,树的高度为log₂ n,因为每个节点都有两个分支。

【讨论】:

  • 我将在第一段中的第二句话(“基础无关紧要”)加粗,以使其成为更好的答案。
【解决方案2】:

没关系,无论使用什么基,相对复杂度都是一样的。

【讨论】:

  • 嗯。如果您从逻辑上扩展此语句,您会说 O(n^2) 与 O(n^3) 的相对复杂度相同。
  • 一点也不。 100 万平方或立方之间的巨大差异。但是 log2、log10、log100?差别不大。
  • @Andrew Shepherd - 这是不正确的。 log_a(2n) / log_a(n) = log_b(2n) / log_b(n) 对于任意 a 和 b
  • @Andres Shepherd:为了扩展对您评论的其他回复,log_a(n)/log_b(n) 是一个常数,对于 n 的所有值都是相同的。另一方面,(n^2)/(n^3) 的比率随着 n 的增长而增长。算法复杂性分析关注资源需求如何随着 n 的增加而增加,因此常数无关紧要。随 n 变化的值。
【解决方案3】:

一种思考方式是 O(log2X) = O(log10X) = O(logN X)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2016-06-11
    • 2013-09-16
    • 2020-08-05
    相关资源
    最近更新 更多