乘以和添加不同的渐近符号

时间:2011-10-11 22:15:34

标签: algorithm theory asymptotic-complexity

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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Ω都没有暗示另一个。

答案 1 :(得分:4)

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

Big-O和Big-Omega的行为类似。

答案 2 :(得分:1)

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

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

这源于假设功能都是积极的。也就是说,所有函数都是Omega(1)