有人可以为我提供一个如何计算大theta的实时示例。
大the有些像平均情况,(min-max)/ 2?
我的意思是(最短时间 - 大O)/ 2
如果我错了,请纠正我,谢谢
答案 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。