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