算法中的时间复杂度。选择Big-O和omega

时间:2013-11-27 20:58:11

标签: algorithm time-complexity big-o

所以我有这个任务,我们应该看看以下算法:

 Input: An array A storing n elements
 Output: An array B, where B[i] = A[0] + A[1] + ... + A[i].

    for i = 0 to n-1
    Add the numbers A[0] thru A[i].
     Store the result in B[i].

之后,我们应该通过首先以O(f(n))的形式陈述算法来说明算法的时间复杂度。之后我们应该证明时间复杂度也是Ω(f(n))。

现在我已经完成了第一部分并说因为T(n)= n(n-1)/ 2我们可以说T(n)= O(n ^ 2)。

我遇到的问题是作业的第二部分。算法怎么也是Ω(n ^ 2)?从这些符号的定义中没有任何意义。如果Ω(n ^ 2)则意味着T(n)= n(n-1)/ 2增长得快于f(n)= n ^ 2。这不可能是真的。

我知道当我们达到大量的n时,T(n)由平方项n ^ 2支配。但是f(n)= n ^ 2仍然不是T(n)的下界吗?那怎么能是Ω(n ^ 2)?

如果我的英语不好,我很抱歉,但我希望你能理解我的问题,并能帮助我。我真的很困惑。

1 个答案:

答案 0 :(得分:1)

  

我遇到的问题是作业的第二部分。怎么能   算法也是Ω(n ^ 2)??它没有任何意义   这些符号的定义..如果Ω(n ^ 2)则表示T(n)   = n(n-1)/ 2增长得更快,f(n)= n ^ 2。这不可能是真的..

请记住,Big-O和Big-Omega的定义都涉及常量。

为了表明它是Ω(n 2 ),你需要一个常数c,使得n(n-1)/2≥cn 2 足够大n(即所有n高于某个值)。你的观察只是表明所说的常数不能是1。