循环不变式及其运用

循环不变式(loop invariant)主要来帮助我们来理解算法的正确性。

对于循环不变式,必需证明它的三个性质:

初始化:它在循环的第一轮迭代开始之前,应该是正确的。

保持:如果在循环的某一次迭代开始之前它是正确的,那么,在下一次迭代开始之前,它也应该保持正确。

终止:当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的。 

关循环不变式与数学归纳法有些类似,但是与它的常见用法不同:在归纳法中,归纳的步骤是无穷地使用的;而在这儿,当循环结束时, 即终止“归纳”。

霍纳规则的正确性:

以下代码片段实现了用于计算多项式 

 的霍纳规则

1  y = 0
2  i = n
3  while  i >= 0
4       do  y = a(i) + x * y
5         i = i - 1

以下给出的是针对第3~5行中while循环的一个循环不变式:

 

初始化:当循环第一次的时候,n=n-1,y=a(n)

保持:当i=n-j与i=n-j-1 的时候,y(n-j-1)=a(n-j-1)+x*y(n-j)

终止: 当循环结束的时候,

 

转载于:https://www.cnblogs.com/cpoint/archive/2010/09/13/1825227.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值