解决大Theta符号

时间:2012-05-01 22:08:16

标签: notation asymptotic-complexity

我遇到了解决大the符号的问题。据我所知,大O符号表示最坏情况和上限,而Omega符号表示最佳情况和下限。

如果我给出了一个在O(nlogn)时间和Omega(n)运行的算法,我怎么能推断出Theta等于什么?我开始假设存在一个theta符号,当且仅当O和Omega相等时,这是真的吗?

1 个答案:

答案 0 :(得分:0)

假设您的算法在f(x)中运行。

  • f(x) = O(n*log(n))表示x足够高,有一些常量c1 > 0,因此f(x)始终小于c1*n*log(n) {1}}。
  • f(x) = Omega(n)表示x足够高,有一些常数c2 > 0,因此f(x)会大于c2*n 1}}
  • 所以你现在所知道的是,从某一点开始(x足够大)你的算法运行速度会比c2*n慢,而且慢于c1*n*log(n)

  • f(x) = Theta(g(x))表示对于x足够大的c3 > 0c4 > 0以及c3*g(x) <= f(x) <= c4*g(x),这意味着f(x)只会比g(x)更快或更慢地运行常数因子。确实如此,f(x) = O(g(x))f(x) = Omega(g(x))

    结论:只提供O和Omega,如果它们不相同,则无法得出Theta的含义。如果您有算法,您可以尝试看看O是否可能选得太高,或者Omega可能选择得太低。