算法绑定分析和使用积分

时间:2012-10-11 23:25:14

标签: algorithm math analysis

我应该使用积分得到一个alogrithm的下限和上限,但我不明白该怎么做。我知道基本的集成原则,但我不知道如何从算法中找出积分。

问题:

  • 我的第一个for循环开始于i = 5n --->然后去6n立方体,
    • 下一个内部将从j = 5开始--->然后去我
      • 然后最后一个for循环将从k = j开始并转到i。

当然,我的第一步是把它变成3个总结。所以我设置了3个求和,我想要做的就是将这些求和简化为一个总和,如果可能的话。这样,如果我在求和的右边有一些变量,我现在可以取积分。

就我用于积分的界限而言,从Cormen,Leiserson等的算法入门,您可以通过积分进行近似。

积分的性质

  • 对于上限,积分的边界可以是:上界n + 1,下界m。
  • 对于下限,积分的边界可以是:上界n,下界m-1。

我想知道如果可能的话,如何将我的三个求和简化为一个。如果事情是一个总结我可以开始采取积分并从那里自己去。

这是非常粗略的伪代码,但我尽力让它看起来与实际代码类似。

for(i = 5n; i<6n^3; i++)
{
    for(j =5; j<i; j++)
    {
        for(k=j; k < i; k++)
        {
            i - j + k;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

int(i,j,f)int(x=i,j,f(x))∫(x=i,j,f(x))中的任何一个表示f(x)的定积分,因为x的范围从i到j。如果f(x)是当x具有特定值时完成的工作量(通过程序),并且如果f是单调递增函数,那么正如您在问题中指出的那样,int(m,n+1,f)是一个上层绑定,int(m+1,n,f)下限,作为x取值m...n完成的工作。在下文中,我将说int(m,n,f)近似于工作,您可以在适当的位置添加+1个术语以获得上限和下限。注意,6n ^ 3-1代表6 *(n ^ 3)-1,5n代表5 * n等。

近似工作是:
int(i=5n, 6n^3-1, u(i))
其中u(i)int(j=5, i-1, v(i,j)) 其中v(i,j)int(k=j, i-1, w(k)) 其中w(k)是1.在下面我们使用函数p,q,r表示不定积分,而C表示取消定积分的积分常数。

r(x) = ∫1dx = x + C
现在v(i,j) = ∫(k=j, i-1, 1) = r(i-1)-r(j) = i-1-j

q(x,i) = ∫(i-1-x)dx = x*(i-1)-x*x/2 + C
现在u(i) = ∫(j=5, i-1, i-1-j) = q(i-1,i)-q(5,i)
这是i中的一些二次方。您将需要计算上限和下限案例的详细信息。

p(x) = ∫u(x)dx = ∫(q(x-1,x)-q(5,x)), 这是x中的一些立方。总体结果是 p(6n^3-1)-p(5n)
你需要弄清楚细节。但请注意,当6n^3-1替换为p(x)中的x时,顺序将为(6n^3-1)^3,即O(n ^ 9),因此您应该期望上限和下限表达式那是O(n ^ 9)。请注意,您还可以通过检查循环来查看O(n ^ 9)顺序:在for(i=5n; i<6n^3; i++)中,我的平均值约为3n^3。在for(j =5; j<i; j++)中,j将平均约为i / 2,或n ^ 3的一些小倍数。在for(k=j; k < i; k++)中,k-j也会平均n ^ 3的小倍数。因此,表达式i-j+k将被计算为n ^ 3 * n ^ 3 * n ^ 3或n ^ 9次的一些小倍数。