函数的复杂度(Θ版本)是什么
<磷>氮我认为它只是Θ(n 2 ),因为n 2 比常数或平方根增长得更快,至少这是直觉意义上的我脑海。有没有办法正式证明这一点?
答案 0 :(得分:1)
让我们考虑更简单的Sum[i=1..n](i^(3/2))
。
让我们考虑以下积分Integrate[i=(k-0.5)..(k+0.5)](i^(3/2))
,其中k是正整数。
Integrate[i=(k-0.5)..(k+0.5)](i^(3/2))
= 2/5 * ((k+0.5)^(5/2) - (k-0.5)^(5/2))
可以证明对于所有正整数k:
k^(3/2) < 2/5 * ((k+0.5)^(5/2) - (k-0.5)^(5/2))
当我们试图通过平方,扩展和分组来解决直到平方根消失时,我们将得到40*k^6 - 0.024*k^4 + 0.008*k^2 + 0.0001 = 0
,这显然没有真正的解决方案。代入0表示RHS> 0。 LHS。
(我不知道是否有更好的方法,但上面是一种证明方法)。
导致:
k^(3/2) < Integrate[i=(k-0.5)..(k+0.5)](i^(3/2))
我们可以从中得出:
Sum[i=1..n](i^(3/2)) < Integrate[i=(0.5)..(n+0.5)](i^(3/2))
表示所有正整数n。
我们知道:
Integrate[i=(0.5)..(n+0.5)](i^(3/2))
= 2/5 * ((n+0.5)^(5/2) - 0.5^(5/2))
所以:
Sum[i=1..n](i^(3/2)) < 2/5 * ((n+0.5)^(5/2) - 0.5^(5/2))
Sum[i=1..n](i^(3/2)) = O(n^(5/2))
使用上面的相同技巧,让我们考虑整合0.75 * Integrate[i=(k-0.5)..(k+0.5)](i^(3/2))
,其中k是一些正整数:
0.75 * Integrate[i=(k-0.5)..(k+0.5)](i^(3/2))
= 0.75 * 2/5 * ((k+0.5)^(5/2) - (k-0.5)^(5/2))
= 0.3 * ((k+0.5)^(5/2) - (k-0.5)^(5/2))
可以证明对于所有正整数k:
k^(3/2) > 0.3 * ((k+0.5)^(5/2) - (k-0.5)^(5/2))
证明可以按照前面部分所示的类似方式进行。或者你可以通过显示k = 1的单调性和测试来做到这一点,这是域中允许的最小数量。
由此,我们可以到达:
Sum[i=1..n](i^(3/2)) > 0.75 * Integrate[i=(0.5)..(n+0.5)](i^(3/2))
表示所有正整数n。
我们知道:
Integrate[i=(0.5)..(n+0.5)](i^(3/2))
= 0.3 * ((n+0.5)^(5/2) - 0.5^(5/2))
所以:
Sum[i=1..n](i^(3/2)) > 0.3 * ((n+0.5)^(5/2) - 0.5^(5/2))
Sum[i=1..n](i^(3/2)) = Omega(n^(5/2))
因此,Sum[i=1..n](i^(3/2)) = Theta(n^(5/2))
注意:如果要迁移此帖子,如果证明有问题,请删除此帖子