关于算法:Theta符号的简单英文解释?

Plain English explanation of Theta notation?

Theta符号的简单英语解释是什么? 尽可能少的正式定义和简单的数学。

theta符号与Big O符号有何不同? 谁能用简单的英语解释一下?

在算法分析中如何使用? 我很迷惑?


如果算法的运行时间是Big Theta(f(n)),则它在f(n)上方和下方渐近有界。 Big O是相同的,除了绑定仅在上面。

直观地说,Big O(f(n))说"我们可以确定,忽略常数因子和术语,运行时间永远不会超过f(n)。"粗略地说,如果你认为运行时间"糟糕",那么Big O就是最糟糕的情况。 Big Theta(f(n))说"我们可以肯定,忽略常数因子和术语,运行时间总是随f(n)变化。"换句话说,Big Theta是一个众所周知的紧张局限:它既是最坏的情况,也是最好的情况。

直觉的最后尝试:大O是"片面的"。 O(n)运行时间也是O(n ^ 2)和O(2 ^ n)。 Big Theta不是这样。如果你的算法运行时间是O(n),那么你已经有一个证明它不是Big Theta(n ^ 2)。它可能是也可能不是Big Theta(n)

一个例子是比较排序。信息理论告诉我们排序需要至少上限(n log n)比较,并且我们实际上发明了O(n log n)算法(其中n是比较次数),因此排序比较是Big Theta(n log n)。


我一直想用简单的话来说明这一点。这是我的尝试。

如果表示算法的时间或空间复杂度

  • 大O:Ex O(n) - 表示n是上限。最终价值可能小于或等于n。

  • 大欧分:ExΩ(n) - 表示n是下限。最终价值可能等于或大于n。

  • Theta:ExΘ(n) - 表示n是唯一可能的值。 (上限和下限)