这个表达式是O(n ^ 2)还是O(n ^ 3)?

时间:2010-12-08 01:42:11

标签: math wolfram-mathematica discrete-mathematics mathematical-optimization polynomial-math

总和[(i + 1)(n - i),{i,0,n - 1}]

是(i + 1)(n-1)之和,其边界从i = 0到n-1。

是O(n ^ 2)还是O(n ^ 3)? 你能解释一下你是怎么找到它的吗?感谢。

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)