【问题标题】:Algorithm bound analysis and using integrals算法界限分析和使用积分
【发布时间】:2012-10-02 17:45:28
【问题描述】:

我应该使用积分获得算法的下限和上限,但我不明白该怎么做。我知道基本的积分原理,但我不知道如何从算法中算出积分。

问题:

  • 我的第一个 for 循环从 i = 5n ---> 开始到 6n 立方,
    • 里面的下一个将从 j=5 开始 ---> 到 i,
      • 那么最后的下一个 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;
        }
    }
}

【问题讨论】:

  • 请多指正,目前的解释不够翔实。如果不知道 i 在迭代之间的行为方式,从 i=5n 到“6n 立方”的循环不会说什么。你能发布一个代码示例吗?
  • 好的,我尽力让它看起来像实际代码。所有这些现在都非常令人困惑。
  • 由于前几段中的代码而不是文本格式,您的帖子难以阅读。不要缩进带有太多空格的普通文本,以免打开代码格式。请编辑您的问题并修复它
  • 抱歉,我只是将其编辑成应有的样子。
  • 我从未正式研究过算法分析,但在我看来,一个好的上限可能是 {i[1,6n^3], j[i,6n^3], k[ 1,6n^3]},如果你明白我的意思。我看看能不能找到更低的...

标签: algorithm math analysis


【解决方案1】:

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) 是一个上限,并且@ 987654327@ 一个下限,当 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&lt;6n^3; i++) 中,我将平均约为 3n^3。在for(j =5; j&lt;i; j++) 中,j 的平均值约为 i/2,或 n^3 的一些小倍数。在for(k=j; k &lt; i; k++) 中,k-j 也将平均 n^3 的小倍数。因此,表达式i-j+k 将被计算为 n^3*n^3*n^3 或 n^9 次的小倍数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多