证明或反驳有关运行时间的陈述

时间:2012-11-25 13:03:35

标签: algorithm computer-science time-complexity

我正在研究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))。

  

持有传递属性。

我希望有人能够详细说明我可能错误的答案:)

1 个答案:

答案 0 :(得分:4)

  1. 你是对的,但原因不是。请记住,Omega(n ^ 3)与算法没有直接关系,而是与函数直接相关 您正确的原因是:对于每个常量c,N,有一些n>N使得n^2 < c * n^3 - 因此n^2 Omega(n^3)

  2. 你是对的。 n < n + logn < 2*n(足够大的n),因此n + logn同时为O(n)Omega(n)

  3. 你是对的,但是请不要在这里使用“最坏情况”。解释和证明指南类似于 1。

  4. 这是正确的,因为log(n)渐近地小于sqrt(n),其余部分紧随其后。

  5. 1中的原则相同。采用相同的方法也是如此。

  6. 正确。


  7. 作为旁注:Omega(n)并不意味着“n的最佳案例运行时间”,这意味着函数表示复杂性(可能是最坏的情况复杂性,最佳案例复杂性或平均案例复杂性,...)具有Omega(n)的条件。

    例如 - Quicksort:

    • 在最糟糕的案例分析中,它是Theta(n^2)
    • 在平均案例分析下,Theta(nlogn)