大O /时间复杂性

时间:2014-08-08 07:43:45

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

这可能是一个微不足道/数学概念,我似乎无法解决这个问题。因此,如果某个算法的处理时间T(n)都是Ω(n)和O(n ^ 3),我怎样才能证明T(n)是Θ(n ^ 2)是正确的还是不正确?

2 个答案:

答案 0 :(得分:2)

让我们比较三个符号的定义。

(1)Ω(n)表示(对于足够大的n):n * k1 <= T(n)

(2)O(n ^ 3)表示(对于足够大的n):n ^ 3 * k2> = T(n)

(3)Θ(n ^ 2)表示(对于足够大的n):k3 * n ^ 2&lt; = T(n)&lt; = k4 * n ^ 2

给定(3),我们可以推断T(n)同时在Ω(n)和O(n ^ 3)中,因为对于大数n,n * k1总是小于n ^ 2 * k2,如果我们只提供k1 = k2(但也适用于k1,k2的任何其他组合)。这同样适用于O(n ^ 3)。

这基本上意味着Θ(n ^ 2)是一个比Ω(n)和O(n ^ 3)更强的约束。

然而,相反的方法不起作用。如果(1)和(2)成立,则T(n)也可以是T(n)= n,这显然不在Θ(n ^ 2)中。所以我们无法从两个弱约束中推断出强约束。因此,陈述是错误的。

答案 1 :(得分:1)

你不能。

如果O小于Θ或者如果Ω大于Θ那么你可以证明它是不正确的。

This example may help