【问题标题】:Multiplying and adding different asymptotioc notations乘以和添加不同的渐近符号
【发布时间】:2011-10-11 22:15:34
【问题描述】:

有谁知道如何进行这样的计算 示例:

O(n^2) + THETA(n) + OMEGA(n^3) = ?

O(n^2) * THETA(n) * OMEGA(n^3) = ?

一般来说,不同的渐近符号如何相加和相乘?

【问题讨论】:

  • 嗨,斯拉沃什。你的问题很模糊。您能否更具体地说明一下: 1. 结果让您感兴趣; 2. 你的问题的领域(渐近符号在一般代数和计算机科学中有不同的假设。我假设你的意思是 CS,因为你不是写在 math.SE 上),3. 你喜欢执行的方程类型(总是用那些树的部分?有限数量的原子,或允许的 O() 的无限总和?等等...) 4. 确保我们,我们谈论实数? 5. 你有兴趣实现的结果(O() ? Omega() ?) ?
  • 这里是一个例子how O(n)+O(n) can be confusing。当我要求更多标准时,我的意思是,保持常数 O(n)+O(n)=O(n) 可能会导致某人进入归纳步骤 O(n)+O(n)+... = O(n ) , 怎么了。原因 (O(n))^n = O(n^n)。所以这里需要非常具体以避免混淆。

标签: algorithm theory asymptotic-complexity


【解决方案1】:

O 给出一个上限

Ω 给出了一个下限

Θ 给出一个渐近界

Wikipedia 有一个很好的图表来解释这些。

因此,总的来说,这些确实没有可比性。

对于您的第一个案例,

O(n^2) + Θ(n) + Ω(n^3)

让我们首先解决O。第一项告诉我们O(n^2),第二项告诉我们O(n)。仅基于这两个,我们知道到目前为止我们有O(n^2) 的上限。然而,第三项没有告诉我们任何关于上限的信息!所以我们真的不能对O做出任何结论。

这里的重点是OΘ 只为您提供有关O 的信息,而ΩΘ 只为您提供有关Ω 的信息。这是因为Θ(g(n)) 暗示了O(g(n))Ω(g(n)),因此我们可以将Θ 更改为OΩ 中适合给定分析的任何一个。

但是,这三者加在一起,或者只是 OΩ,会让你一无所知,因为 OΩ 都没有暗示对方的任何事情。

【讨论】:

    【解决方案2】:

    你不能。假设您知道a > 0b < 10。那么你没有关于a+b 的信息。可以是任何东西。

    Big-O 和 Big-Omega 对函数的作用类似。

    【讨论】:

      【解决方案3】:

      虽然我的上述答案对于一般函数和界限是正确的,但在计算机科学中,我们通常只考虑正函数。因此,在您的第一个示例中,我们有:

      O(n^2) + Theta(n) + Omega(n^3) = Omega(1)+Theta(n)+Omega(n^3) = Omega(n^3)
      

      这源于函数都是正数的假设。即所有函数都是Omega(1)

      【讨论】:

      • 同样,问题中给出的乘法将是 Omega(n^4)。
      最近更新 更多