zoukankan      html  css  js  c++  java
  • 循环不变式及其运用

    循环不变式(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)

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

     

    作者:cpoint
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    安卓小助手
    位图切割器&位图裁剪器
    OAuth2.0 的简介
    多账户的统一登录方案
    常用的一些SQL语句
    SQL语句的优化
    SpringCloud简介与5大常用组件
    数据库为什么需要锁机制?有哪些锁机制?
    高并发下如何优化能避免服务器压力过大?
    Spring MVC 简介
  • 原文地址:https://www.cnblogs.com/cpoint/p/1825227.html
Copyright © 2011-2022 走看看