网站大量收购闲置独家精品文档,联系QQ:2885784924

第五章程序正确性的证明.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章程序正确性的证明

* * * * * * * * 假定初始x、y不同时为0,则在程序的执行中,也不可能出现x、y同时为0。 * * * * * * * * * * * * * * * 子目标断言法(建立检验条件) 通路1:b-c 检验条件1 x=0 = P(x,y,yend) x=0 = [x=0 ∧ y=0 ∧ (x≠0∨ y≠0) = yend =gcd(x,y)] 通路2:b-d-b 检验条件2 P(x,y-x, yend) ∧ x0 ∧ y=x =P(x,y, yend) [ x=0 ∧ y-x=0 ∧ (x≠0∨ y-x≠0) = yend = gcd(x,y-x) ]∧ x0 ∧ y=x = [ x=0 ∧ y=0 ∧(x≠0∨ y≠0) = yend = gcd(x,y) ] 通路3:b-e-b 检验条件3 P(y,x, yend) ∧ x0 ∧ yx = P(x,y, yend) 通路4:a-b 检验条件4 x0 =0 ∧ y0 =0 ∧ (x0 ≠0∨ y0 ≠0) ∧ P(x0, y0, yend)= yend = gcd(x0, y0) 子目标断言法(证明检验条件) 检验条件1: x=0 = [x=0 ∧ y=0 = yend =gcd(x,y)] 证明: 因为有 x=0, yend =y 所以 yend = y = gcd(0,y) =gcd(x,y) 检验条件2:P(x,y-x, yend) ∧ x0 ∧ yx =P(x,y, yend) 即证明: [ x=0 ∧ y-x=0 ∧(x≠0∨ y-x≠0) = yend = gcd(x,y-x) ]∧ x0 ∧ y=x = [ x=0 ∧ y=0 ∧(x≠0∨ y≠0) = yend = gcd(x,y) ] 程序部分正确但不终止实例 例:求两个非负整数x、y的最大公约数z的程序。 Program A var x,y,z,s:integer; begin read(x,y); while x ≠ 0 do if y x then y = y – x; else x = x – y; z = y; write (z); end. START Read(x,y) x≠0 yx y:=y-x x :=x-y z:=y STOP T F T F I(x,y) a P(x,y) b c O(x,y,z) d e g · · · · · · 可以利用不变式断言等方法证明该程序的部分正确性,但无法证明它是终止的。 因为当y=0时,程序循环将不终止! 第5章 程序正确性证明 5.1程序正确性验证概述 5.2不变式断言法 5.3子目标断言法 5.4界函数法--计数器法 5.5良序集方法证明程序终止性 1.基本概念 偏序集 良序集 2.采用良序集方法证明程序终止性 偏序集的概念 偏序集 设有一个非空集合W与一个定义在W上的二元关系  ,且这个关系 满足下列性质: 1)传递性,即对于一切a,b,c∈W,如果a b,b c ,则a c 2)反对称性,即对于a b,则有b≮a 3)反自反性,即对于一切a∈W,a≮a 称W为具有关系 的偏序集,记做(W, )。 例如: (1)具有小于关系()的,位于0~1之间的实数集合A1。 (2)具有小于关系()的全体整数集合B1。 但将 换成 ≤ 就不是偏序集。 (1)具有小于等于关系(≤)的,位于0~1之间的实数集合A1。 (2)具有小于等于关系(≤)的全体整数集合B1。 良序集的概念 良序集 设(W, )是偏序集,如果不存在由W中的元素构成的无限递减序列: ……a2 a1 a0 ,则称(W, )是良序集。 例如: (1)若N是自然数集合,那么(N,)是良序集。 (2)具有通常序A B C…  Z的字母表∑={A,B,…,Z}是良序集。 下述集合A1与B1是偏序集,但不是良序集。 (1)具有小于关系()的,位于0~1之间的实数集合A1。 (2)具有小于关系()的全体整数集合B1。 采用良序集证明程序终止性思路 结构化程序由顺序、选择与循环三种基本结构组成,而影响程序终止性的是循环结构,因此,是程序终止性证明的重点。 程序终止性证明思路: A. 选取良序集合(W, ); B. 选取割点集,割断循环; C. 在割点上寻找函数u,使u∈W; D. 证明每次循环,u依次递减。 由于良序集合(W, )不存在无穷递减序列,因此,循环必然终止。 用良序集方法证明程序终止性步骤 1.选取一个点集去截断程序的各个循环部分

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档