基于PAR的算法形式化开发.docVIP

  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文档。上传文档
查看更多
基于PAR的算法形式化开发.doc

基于PAR的算法形式化开发* 石海鹤1,2,3 薛锦云1,2 1(中国科学院软件研究所计算机科学国家重点实验室 北京 100080) 2(江西师范大学高性能计算技术重点实验室 南昌 330022) 3(中国科学院研究生院 北京 100049) 摘要:形式化方法是构建可信软件的重要途径。基于对算法问题的分析,针对形式化方法PAR开发算法的特征,刻划了问题分划、递推关系构造方面的规律。从一类问题的形式化功能规约出发,可机械的完成问题的分划及规约的变换,自然的揭露出求解问题的算法思想,在相关工具的支持下自动生成算法程序。研究结果将算法设计中尽可能多的创造性劳动转化为非创造性劳动,降低了形式化求解算法问题的难度,提高了算法程序的可靠性和形式化开发效率。 关键词:算法;形式化方法;PAR;规约;可信软件 1 引言 随着社会对信息技术的依赖性日益增长,处于信息技术核心的计算机软件的可信性被提到一个新的高度,国内外都很重视并已开展大量的研究工作。作为学术界的领袖人物之一,Hoare在欧、美同行的支持下,正组织关于软件验证(Verified Software)的国际性项目,这被认为是计算机科学界本世纪的一个重大挑战性问题[1];美国政府制定的2006- 2015国家软件发展战略——“下一代软件工程”中,也将提高软件可信性放在四大战略任务的首位。对软件可信性的需求已从安全性至关重要的领域,如国防、航空航天、医疗器械等扩展到能源、通信、财经、制造业等关键领域。而正确性被一致认为是可信软件的极其重要的性质。 算法作为软件的核心,被誉为“计算的灵魂”[2],保证算法的正确性对提高安全攸关系统的可信度有很大帮助。统计表明,传统的非形式化方法对软件质量的保证具有一个难以逾越的顶点,而形式化方法的实践证明形式化方法是提高软件质量的重要途径[3]。20 世纪90 年代以来,在国际上,形式化方法已成为软件开发中重要的可信软件技术之一,它在保证算法的正确性、展示算法设计的过程、揭示算法设计的本质特征和一般规律方面具有重要的意义,对自动程序设计的探索将有很大的帮助[4,5]。 由于算法求解涉及到创造性劳动,形式化开发算法仍然是计算机领域中最具挑战性的问题之一。本文针对形式化方法PAR(Partition- and-Recur)[6-11]开发算法的特征,刻划了问题分划、递推关系构造方面的规律,使得从问题的形式化功能规约出发,问题的分划及规约的变换可机械的完成,自然的揭露出求解问题的算法思想,自动的生成高效的求解问题的算法程序。 接下来我们首先介绍了PAR方法,重点介绍和分析了其中的形式化功能规约机制和开发算法程序的方法;然后结合对问题的分析,详细阐述了我们提出的问题分划法则和规约变换策略;在第5节通过一个代表性的算法开发实例展示了该模式的应用效果;第6节和相关工作进行了比较;于文章最后作了总结和讨论。 2 PAR方法 PAR方法是一种统一的算法设计方法,涵盖了多种已知的算法设计技术,例如,动态规划法、贪心法、分治法、穷举法等等,支持算法程序开发的全过程。这里,算法程序是指用已实现的或抽象的程序设计语言描述的算法。如图1所示,该方法由自定义泛型算法设计语言Radl (Recurrence-based Algorithm Design Language)、泛型抽象程序设计语言Apla (Abstract Programming Language)、系统的算法和程序设计方法学及转换工具集组成。其中,PAR对从问题出发设计出Radl算法的过程提供了形式化支持;对从Radl算法经Apla程序到可执行语言程序的生成提供了自动化的支持。 图1. PAR 2.1 形式化功能规约 形式化功能规约是算法程序开发的起点。Radl语言的主要功能是描述问题的规约、规约变换规则和描述算法,由算法规约语言和算法描述语言两部分组成。Radl提供了足够抽象的机制,可集中刻划问题的功能,而不为设计和实现所涉及的问题(如效率)所干扰。 我们采用如下Radl算法规约的刻划形式: |[标识符说明]| AQ: 谓词表达式 ; AR: 谓词表达式 ; 其中标识符说明部分主要用于说明前、后置断言中出现的变量和函数的属性及类型。属性有三种:一是输入变量,用关键字in标识;二是输出变量,用关键字out标识;三是辅助变量,用关键字aux标识。类型可以是Radl语言中的标准数据类型(integer, real, boolean, char, string)、自定义简单类型(记录类型,数组类型,枚举类型和子界类型)、预定义ADT类型(集合类型,序列类型,树类型,图类型)和自定义ADT类型。 以AQ和AR开头的谓词表达式分别称为算法的前置断言和后置断言,用于表示算法的输入参数必须满足的条件和算法的输出必须满足的条

文档评论(0)

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

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

1亿VIP精品文档

相关文档