如何计算big-theta

时间:2011-09-17 10:11:21

标签: algorithm complexity-theory big-o big-theta

有人可以为我提供一个如何计算大theta的实时示例。

大the有些像平均情况,(min-max)/ 2?

我的意思是(最短时间 - 大O)/ 2

如果我错了,请纠正我,谢谢

3 个答案:

答案 0 :(得分:6)

Big-theta表示法表示以下规则:

  

对于任何两个函数f(n)g(n),如果f(n)/g(n)g(n)/f(n)都被限制为n增长到无穷大,那么f = Θ(g)g = Θ(f)。在这种情况下,g既是f增长的上限和下限。

以下是一个示例算法:

def find-minimum(List) 
  min = +∞
  foreach value in List 
    min = value if min > value
  return min

我们希望评估成本函数c(n),其中n是输入列表的大小。此算法将对列表中的每个项目执行一次比较,因此c(n) = n

c(n)/n = 1仍然有限,n会变为无穷大,因此c(n)的增长速度不会超过n。这就是big-O表示法c(n) = O(n)的含义。相反,n/C(n) = 1也保持有限,因此c(n)增长不会慢于n。由于它既不慢也不快,它必须以相同的速度增长。这就是theta符号c(n) = Θ(n)的含义。

请注意,c(n)/n²也是有界的,因此c(n) = O(n²) - big-O表示法仅仅是复杂性的上限,因此任何O(n)函数也< / em> O(n²)O(n³) ...

但是,由于n²/c(n) = n没有限制,因此c(n) ≠ Θ(n²)。这是big-theta符号的有趣属性:它既是上限又是复杂性的下限。

答案 1 :(得分:1)

对于函数T(n),Big theta是一个紧束缚:if:Omega(f(n))<=T(n)<=O(f(n)),然后Theta(f(n))是T(n)的紧束缚。

换句话说,Theta(f(n))'描述'函数T(n),如果O [big O]和Omega,'描述'相同的T,具有相同的f。

例如,快速排序[具有正确的中位数选择],总是最多需要O(nlogn),至少为Omega(nlogn),因此快速排序[具有良好的中位数选择]是Theta(nlogn)

修改 在评论中添加了讨论:
搜索数组仍然是Theta(n)。 Theta函数不表示最差/最佳情况,而是表示所需情况的行为。即,搜索一个数组,T(n)=最坏情况下的操作数。在这里,显然是T(n)<=O(n),还有T(n)>=n/2,因为在最坏的情况下你需要迭代整个数组,所以T(n)>=Omega(n)因此Theta(n)是渐近约束。

答案 2 :(得分:0)

http://en.wikipedia.org/wiki/Big_O_notation#Related_asymptotic_notations,我们知道“大O”表示上限,而“大Theta”表示上限和下限,即在n变为无穷大时的限制:

f(n) = O(g(n))      -->    |f(n)| < k.g(n)

f(n) = Theta(g(n))  -->    k1.g(n) < f(n) < k2.g(n)

所以你无法从Big O推断出Big Theta。