总和[(i + 1)(n - i),{i,0,n - 1}]
是(i + 1)(n-1)之和,其边界从i = 0到n-1。
是O(n ^ 2)还是O(n ^ 3)? 你能解释一下你是怎么找到它的吗?感谢。
答案 0 :(得分:4)
展开并使用sum(i ^ k)的闭合形式表达式。好的,
(i + 1)(n - i) = n * i - i * i + n - i
这样
sum[(i + 1)(n - i)] = sum(n * i) - sum(i * i) + sum(n) - sum(i)
= n * sum(i) - sum(i * i) + n * n - sum(i)
= (details elided)
= O(n^3).
在“详细信息已删除”步骤中,将每个总和展开为其闭式表达式,并注意n^3
的系数不为零(1 / 6
)。
答案 1 :(得分:2)
如果您正在讨论评估总和所需的时间,那么它是O(1)(因为它可以简化为闭式公式)。如果你正在谈论公式本身,那么扩展它并替换功率和,你会看到n ^ 3(最高程度)的系数不是0.
无论如何,O(n ^ 2)是O(n ^ 3)的子集,所以......当问到它是O(n ^ 2)还是O(n ^ 3)时,一个简单的答案是它是O(n ^ 3)(如果你知道答案永远不会“既不”)。
答案 2 :(得分:2)
Wolfram | Alpha吃这些午餐:
http://www.wolframalpha.com/input/?i=Sum%5B(i+%2B+1)+(n+-+i),+%7Bi,+0,+n+-+1%7D%5D