如何选择和设置正确的循环不变量?

时间:2009-12-03 05:21:02

标签: theory

我遇到了关于循环不变量的以下问题:

考虑

x=4; for(i=5;i<k;i++) { a=a+x+i; x=x*2; }

使用a和x的闭合公式定义适当的循环不变量。

现在, 你怎么知道你在这里有正确的循环不变量?我的意思是你可以将循环不变量设置为: “在第j次迭代'x'小于'a'”这将是正确的,但不会使用任何封闭的公式吗?

当循环结束时,如何使用语句(循环不变量)来确定“a”的值? 我见过的所有例子都说明了循环不变量,而不是用作闭合公式。

有什么想法吗?

感谢您的所有帮助。

1 个答案:

答案 0 :(得分:2)

从封闭的公式开始:清楚地表示x(j)[表示从0到k-5的j],x表示在循环的第j个腿,x(j+1) = x(j) * 2,所以,{{1 } x(j)(使用4 * 2**j表示“加注到权力”),因为**是4;和x(0) - 我们没有被告知a(j+1) = a(j) + x(j) + j + 5是什么,但我们可以将其分解并将a(0)写为a(j)。考虑到a(0) +的上述封闭公式资源,你能弄明白那是什么吗?我不愿意做你的功课 - 你还没有开始学习Concrete Mathematics或者你的教科书是什么......?

一旦你写下了x(j)的封闭形式公式,与我为a(j)提供的那些微不足道的公式一起,你能看到他们如何结合使一个循环不变... ?