Nav*_*eon 0 algorithm complexity-theory big-o big-theta
有人可以为我提供一个如何计算大theta的实时示例.
有点像平均情况,(最小 - 最大)/ 2?
我的意思是(最短时间 - 大O)/ 2
如果我错了请纠正我,谢谢
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
Run Code Online (Sandbox Code Playgroud)
我们希望评估成本函数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²)
- 大O符号只是复杂性的上限,所以任何O(n)
函数也是 O(n²)
,O(n³)
...
但是,既然n²/c(n) = n
没有界限,那么c(n) ? ?(n²)
.这是大-θ符号的有趣特性:它既是一个上限,并在复杂的下限.