所以我有这个任务,我们应该看看以下算法:
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)?
如果我的英语不好,我很抱歉,但我希望你能理解我的问题,并能帮助我。我真的很困惑。
答案 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。