树非递归遍历统一的新解法及其形式证明.pdfVIP

树非递归遍历统一的新解法及其形式证明.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树非递归遍历统一的新解法及其形式证明.pdf

第34卷第2期 江西师范大学学报 (自然科学版) Vo1.34No.2 2010年 3月 JOURNALOFJIANGXIN0RMALUNIVERSITY(NATURALSCIENCE) Mar.2010 文章编号:1000—5862(2010}02—0123—05 树非递归遍历统一的新解法及其形式证 明 化志章, 杨庆红, 揭安全 (江西师范大学 计算机信息工程学院,江西 南昌 330022) 摘要 :提出树遍历统一的新解法,使其非递归算法像递归算法一样简单.首先以后序遍历为例,基于结点 状态标记和遍历规则提取,从遍历定义导出遍历的递推公式 ,由此机械获得非递归算法和循环不变式,并 用形式化方法证明其正确性.之后按不同遍历定义变换公式参数,获得二叉树前序、中序和 K叉树前序、 后序的递推公式,所得算法比传统算法更简洁直观,表明本解法的有效性和通用性. 关键词 :树遍历;非递归算法;循环不变式 中图法分类号:TP311.1 文献标识码 :A 树遍历,就是按某种规则 (如前序、后序等)依次枚举 出树中的所有结点.传统二叉树遍历算法设计有一 明显缺陷:编写递归算法极为容易,设计非递归算法却十分困难 ;且设计难度也不尽相同,前序、中序相对简 单,后序则较为困难 .算法设计思想也难 以适用于 K叉树 的前序和后序遍历 .纵观国内外经典教材_lj和 Knuth的巨著 《1heArtofComputerProgramming}~,该缺陷几十年来始终存在.遍历是二叉树最基本的操作之 一 , 建树、搜索、比较、穿线、结点计数等操作都可基于遍历实现 .二叉树也是一种典型的递归数据结构.解决 上述缺陷,不仅方便二叉树相关算法的开发与应用,而且对一系列基于递归数据结构的算法开发十分有益 . 1 相关工作 多位学者试图借助形式化技术解决这一问题,在揭示算法如何产生的同时,证明算法正确.文献[4]用谓 词演算技术形式推导二叉树中序遍历非递归算法,通过分析遍历展开过程,猜出其中蕴含的不变式以及所 需的程序语句 .由于对如何猜出不变式缺乏科学有效的规则,使得整个推导证明过程十分晦涩,实用性差. 文献[5]、文献[6]分别形式推导了前序和后序遍历算法,在获取循环不变式方面更简单有效.文献[6]还提出 用递归形式刻画循环不变式,但并未指明如何 由循环不变式构造出程序 ,所用策略也难 以适用于 K叉树遍 历的循环不变式构造 .文献[7]用 自动验证技术验证了后序遍历算法的正确性,但 由于算法表述十分复杂,验 证也较为晦涩难懂 .文献[8]对树遍历用演绎方法给出了诠释 ,但获得的是递归算法 .文献[9]形式推导了K 叉树的前序遍历,可从所得递推关系机械产生循环不变式,所用方法也有一定通用性,但推导过程和算法描 述均较为复杂 . 上述工作未能对遍历规律给出简洁和令人信服的表述,仅在算法正确性方面有所贡献,未能有效解决 树遍历的上述缺陷.本文给出一种新方案,形式推导并获得最为复杂的后序遍历解法,并推广到二叉树和 叉树的其他遍历方式,使得树遍历的非递归算法在代码描述和设计方面,像递归算法一样简单,这是本方法 与上述工作 的本质不同. 2 预备知识 序列是特定类型元素的线性排列,用[]表示空序列,十是序列的连接运算符,如 [a,b]十[c,d]:[0, 收稿 日期 :2009.12—18 基金项 目:国家 “973”前期预研项 目(2003CCA02800),国家 自然科学基金 ,江西省 自然基金 (2008GQS0056)和江 西省教育厅科技项 目(GJJ09142)资助 . 作者简介:化志章(1972一),男 ,安徽萧县人,副教授,硕士,主要从事算法形式推导、软件验证等研究. 江西师范大学学报(自然科学版) 2010年 b,c,d].对任意序列 S,有 S十[]=[]十S=S.对序列 S,S[1]表示序列的首个元素,sE2…]表示 Js中由 第2个元素至序列末尾元素组成的子序列. 用 %表示空树,t.1、t.r分别表示根t的左子树和右子树 .为二叉树类型附加

文档评论(0)

m3lv5hh + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档