【问题标题】:Is O(3^n) still written as O(2^n)?O(3^n) 仍然写成 O(2^n) 吗?
【发布时间】:2020-11-29 07:34:04
【问题描述】:

我想知道具有指数最差时间复杂度的算法是否应该始终将其表示为 O(2^n)。例如,如果我有一个算法,对于输入大小的每个加法运算操作三倍,我会将其时间复杂度写为 O(3^n),还是仍将其分类为 O(2^n)。

任何正式的解释将不胜感激。

【问题讨论】:

  • 3^n2^(log3 * n) 相同。所以3^n 的复杂性与2^m 相同,其中m=log3*n
  • 回到定义:对于所有足够大的n,是否有一个常数C 使得3^n <= C*2^n?绘制3^n / 2^n 的图表应该可以很清楚地表明答案,并且数学证明并不难。

标签: algorithm time-complexity big-o computer-science exponential


【解决方案1】:

不,O(2^n) 和 O(3^n) 是不同的。如果 3^n 是 O(2^n),那么对于所有大的 n,会有一个常数 k 使得 3^n

【讨论】:

    【解决方案2】:
    3^n != O(2^n).
    

    让我们假设这是真的。 然后存在常量cn0 使得3^n ≤ c * 2^n 代表所有n ≥ n0

    对于所有n ≥ n0,最后一个要求等同于(3/2)^n ≤ c

    但是,(3/2)^n → ∞n → ∞ 一样,因此对于任何常量 c(3/2)^n ≤ c 不可能对所有 n ≥ n0 都为真。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多