【发布时间】:2012-11-13 03:05:51
【问题描述】:
我正在阅读 CLRS 的第 3 章,该章是关于运行时间的,我想通过一些示例来学习。由于我没有参加算法课程,因此我需要求助于 www 寻求帮助。
1) n^2 = 大欧米茄(n^3)
我认为这种说法是错误的:如果最好的情况下运行时间是n^3,那么算法不可能是n^2,。即使是最好的情况也比这慢。
2) n + log n = Big-Theta (n)
我认为这个说法是对的,我们可以忽略log n的下限。这为我们提供了 Big-Oh (n) 的最坏情况运行时间。以及 Big-Omega (n) 的最佳情况运行时间。我不太确定这一点。我们将不胜感激。
3) n^2 log n =Big-Oh (n^2)
我认为this.statement是错误的:最坏情况下的运行时间应该是n^2 log n。
4) n log n = Big-Oh (n sqrt (n))
可能是真的,因为 n log n
5) n^2 - 3n - 18 = Big-Theta (n^2) 真的不知道...
6) 若f(n) = O(g(n))且g(n) = O(h(n)),则f(n) = O(h(n))。
由传递属性持有。
我希望有人可以详细说明我的相当可能错误的答案:)
【问题讨论】:
-
您对符号有一些基本的误解。 (1)
O(n^2)(例如)是一个集合,而n^2*log(n)是一个函数。一个函数不能是一个集合,它可以包含在一个集合中。正确的术语是is n^2 * log(n) in the set O(n^2)?。 (2) “最佳情况/最坏情况”与大 O 表示法无关。例如,快速排序是Theta(nlogn)平均情况和Theta(n^2)最坏情况。大 O 符号可以应用于每个分析,因为它是“分组”此分析提供的功能。 -
@amit
=通常与O()表示法一起使用。 -
是的,在文献中他们使用 '=' 符号而不是 'is in set' 符号。让我们不要过多地谈论这个。
-
@JanDvorak:“经常使用”!= 正确。对于这些情况,我从未见过
=的正式定义。当然 - 这并不意味着不存在。 -
@amit 这是一种常见的做法,在计算复杂性时完全可以接受。在此上下文中,
=表示belongs to the set,不同于=通常的数学含义。
标签: algorithm computer-science time-complexity