0

我试图弄清楚我的算法的效率,但我有点困惑。只需要一些专家的想法来证明我的答案是正确的,或者将我引向某个地方,该地方正在解释关于不属于渐近主题的元素。(有很多资源,但我没有找到关于集合元素的任何内容)

当我们说两个循环的 O(n^2) 是正确的说:

n^2 是 O(n^3) 的一个元素

据我了解,大 O 是最坏的情况,而 omega 是最有效的情况。如果我们把它们放在图上,所有 n^2 的情况都是 O(n^3) 的一部分,所以第一个是不对的?

n^3 是 omega(n^2) 的一个元素

还有关于第二个是不对的。因为 omega(n^2) 的一些最佳情况并非 n^3 的所有情况!

最后是

theta(2^n) 的 2^(n+1) 个元素

我不知道如何衡量!

4

2 回答 2

4

在这种情况下,Big O、omega、theta 都是复杂的。正是具有这些复杂性的功能构成了您正在考虑的集合。

实际上,复杂度为 O(n*n) 的函数集是复杂度为 O(n*n*n) 的函数的子集。简单地说,这是因为 O(n*n*n) 意味着复杂度小于 c*n*n*n,因为 n 趋于无穷大,对于某个常数 c。如果一个函数的实际复杂度为 3*n*n + 7*n,那么它在 n 趋于无穷大时的复杂度显然小于 c*n*n*n,对于任何c。

因此,O(n*n*n) 不仅仅是“三个循环”,它是“三个或更少的循环”。

Ω 是相反的。这是复杂度的下限,而 c*n*n 是 n*n*n 的一个微不足道的下限,因为 n 趋于无穷大。

复杂度为 Θ(n*n) 的函数集是复杂度为 O(n*n) 和 Ω(n*n) 的函数的交集。例如,3*n 没有复杂度 Θ(n*n),因为它没有复杂度 Ω(n*n),而 7*n*n*n 没有复杂度 Θ(n*n),因为它没有复杂度 O(n*n)。

于 2013-08-21T10:46:20.217 回答
2

我将一一列出答案。

1.) n^2 是 O(n^3) 的一个元素
True
要了解有关 Big-Oh 的更多信息,请阅读此处

2.) n^3 是 omega(n^2) 的一个元素
True
要理解 omega 符号,请阅读此处

3.) theta(2^n) 的 2^(n+1) 个元素
True
现在你会知道为什么这是正确的了。(提示:常数因子)

请询问您是否还有其他问题。

于 2013-08-21T11:33:15.493 回答