一种形式化开发非递归算法的方法.doc

上传人:吴起龙 文档编号:1592148 上传时间:2018-12-26 格式:DOC 页数:4 大小:15.32KB
返回 下载 相关 举报
一种形式化开发非递归算法的方法.doc_第1页
第1页 / 共4页
一种形式化开发非递归算法的方法.doc_第2页
第2页 / 共4页
一种形式化开发非递归算法的方法.doc_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《一种形式化开发非递归算法的方法.doc》由会员分享,可在线阅读,更多相关《一种形式化开发非递归算法的方法.doc(4页珍藏版)》请在三一文库上搜索。

1、一种形式化开发非递归算法的方法0引言 计算机科学中有多种数据结构,如广义表、树、二叉树等,都是通过递归方式定义的。由于其本身固有的递归性质,关于它们的许多问题的求解算法均可以较容易地通过递归技术加以实现;除此之外,某些常用的算法设计方法,如分治法等,会自然导致递归算法的产生。 然而,递归程序的执行过程相当于多个函数的嵌套调用,并且被调函数是主调函数本身,在执行过程中,随着控制的转移,必然导致大量参数的传递和一次次额外空间的分配,增加了时空的耗费。虽然利用递归技术设计出的算法程序具有结构清晰、可读性强、便于理解、易用数学归纳法证明等优点,但在追求执行效率,特别是使用不支持递归的程序语言的场合下,

2、人们更愿意使用非递归算法来解决递归问题。 目前已开展过很多递归消除方面的研究工作13。与这些工作不同的是,本文提出的方法以形式化方法为基础,直接面向非递归算法的开发,而不是事后的递归消除。 1开发非递归算法的方法 文献4中提出了开发未知算法程序的循环不变式新策略。该策略非常有效,尤其在使用它的递归定义技术开发一个具有内在递归属性的迭代程序的循环不变式时,这种策略更加有效。对于此策略,笔者采用简单实用的支持程序开发全过程的形式化方法PAR来确定问题求解的总策略。文献5中提出了PAR方法及相应的算法设计语言Radl和抽象程序设计语言Apla,并已开发出Apla程序到Java、C+/C#、Delph

3、i等高级语言程序的系列自动转换工具。 将PAR方法与循环不变式开发新策略中的递归定义技术相结合,得到如下的开发递归问题的非递归算法程序的方法:a)尽可能形式化地构造问题的Radl功能规约(AQ,AR)。b)把待求解的问题分划成若干与其结构相同但规模更小的子问题。c)依据分划的形式对功能规约进行变换,以获得待求解问题与其子问题之间的递推关系。d)依据递推关系进行展开,得到解题的总策略,并引进三个变量x、q、S。其中:x用于存放已解决的子问题的解,其类型依具体问题而定;q用于存放当前正准备解决的子问题,其类型也是依具体问题而定;S为序列类型,用于存放未解决而尚待解决的子问题,起着堆栈作用;同时给出

4、序列S中内容的递归定义。根据解题的总策略,可得到x、q、S间的关系,即为递归问题的循环不变式。e)根据递推关系及循环不变式,通过归纳推理获得非递归的Apla算法程序,然后证明其正确性。f)基于本文实现的支持Apla抽象数据类型的可重用部件库及自动程序转换系统,将Apla程序按需要自动地转换成各高级语言程序,如C+程序、Java程序等。 对于不同的问题,使用该方法开发出的非递归算法程序非常简短,具有统一形式。 2开发实例 21预备知识 211序列 序列是一给定类型的元素构成的有序表。设S表示一个序列,#S表示S中所含元素的个数,则序列S可以表示为S0,S1,S2,S#S-1。其中:序列头元素为S

5、h;尾元素为St;表示空序列。常用的序列操作有: 3结束语 在本文中,笔者阐述了结合PAR及循环不变式开发新策略开发非递归算法的统一方法,使用它形式化开发了最大最小元问题的非递归算法,进而得到求解该问题的Apla抽象算法程序,并对其进行了正确性证明。所得结果可在相应平台的支撑下进一步得到可执行程序。 较之现有的递归消除方法,本文提出的方法由于结合了统一的形式化方法PAR,并有部件库及转换系统的支持而简单易用,开发出的非递归算法程序非常简短,抽象程度高。 另外,用传统的方法开发求解递归问题的循环不变式是比较困难的,其表达形式也十分复杂,不便于算法程序的形式推导和证明。本文阐述的方法直接面向非递归算法的开发。由于使用了循环不变式开发新策略中的递归定义技术,简捷地得到了循环不变式的简单表达形式,通过归纳得到非递归算法程序,并对其进行形式化证明,既能保证正确性,又提高了算法的效率。 使用本文的方法,笔者已开发出了Hanoi塔问题、二叉树遍历、快速排序等经典问题的非递归算法。相信该方法对开发递归问题的非递归算法程序具有重要意义。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1