【问题标题】:Proof of Loop Invariant and Algorithm循环不变性和算法的证明
【发布时间】:2013-03-21 23:25:46
【问题描述】:

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

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

【问题讨论】:

  • 简单——你的函数总是返回 0...很容易证明。修复您的代码,以便我们为您提供帮助。
  • 抱歉这个拼写错误。

标签: proof invariants loop-invariant


【解决方案1】:

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

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

你也知道循环只能在 not(m=y, or m=y.

所以如果 Z=x^m,并且在终止时 m = y。那么 Z = x^y。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 2012-03-14
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多