【发布时间】:2012-10-02 17:45:28
【问题描述】:
我应该使用积分获得算法的下限和上限,但我不明白该怎么做。我知道基本的积分原理,但我不知道如何从算法中算出积分。
问题:
- 我的第一个 for 循环从 i = 5n ---> 开始到 6n 立方,
- 里面的下一个将从 j=5 开始 ---> 到 i,
- 那么最后的下一个 for 循环将从 k=j 开始并到 i。
- 里面的下一个将从 j=5 开始 ---> 到 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]},如果你明白我的意思。我看看能不能找到更低的...