我正在研究CLRS的第3章,它是关于运行时间的,并希望通过一些例子来解决。由于我没有参加算法课,我需要求助于www。
1)n ^ 2 = Big-Omega(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< n sqrt(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))。
持有传递属性。
我希望有人能够详细说明我可能错误的答案:)
答案 0 :(得分:4)
你是对的,但原因不是。请记住,Omega(n ^ 3)与算法没有直接关系,而是与函数直接相关
您正确的原因是:对于每个常量c,N
,有一些n>N
使得n^2 < c * n^3
- 因此n^2
不在Omega(n^3)
你是对的。 n < n + logn < 2*n
(足够大的n),因此n + logn
同时为O(n)
和Omega(n)
你是对的,但是请不要在这里使用“最坏情况”。解释和证明指南类似于 1。
这是正确的,因为log(n)
渐近地小于sqrt(n)
,其余部分紧随其后。
与 1中的原则相同。采用相同的方法也是如此。
正确。
作为旁注:Omega(n)
并不意味着“n
的最佳案例运行时间”,这意味着函数表示复杂性(可能是最坏的情况复杂性,最佳案例复杂性或平均案例复杂性,...)具有Omega(n)
的条件。
例如 - Quicksort:
Theta(n^2)
Theta(nlogn)