循环不变量证明及算法

时间:2013-03-21 23:25:46

标签: proof invariants loop-invariant

如何获得循环不变量并证明它适用于以下算法。

power(x,y):
   z = 1
   m = 0
   while m < y:
       z = z*x
       m = m+1
   return z

1 个答案:

答案 0 :(得分:0)

首先,我认为你的意思是z = z * x 要显示任何给定循环的循环不变量,您必须提出一个在任何迭代的开始和结束时都不会更改的语句。使用该不变量,您将证明当程序终止时,该函数可以正常工作。 你的功能基本上是试图做x ^ y。

让我们构造一个循环不变量:Z = x ^ m。 您可以看到在循环的开头和结尾都是如此。

你也知道循环只能在没有时退出(m = y,或m = y。

因此,如果Z = x ^ m,并且在终止时m = y。然后Z = x ^ y。

所以我们可以看到这个程序是部分正确的。