论文部分内容阅读
算法作为计算机软件的核心,其可靠性和开发效率对于软件的可信性及应用发展具有重要意义。算法自动化是提高算法开发效率、保证算法可靠性的重要途径之一。置换和查找是计算机学科中的两类特殊问题,可应用的算法设计策略的灵活性使得置换和查找类算法程序更具多样性,同类问题求解算法程序的共性难以刻划,算法生成的自动化程度难以提高,生成的效果不理想。本文以软件形式化方法PAR为基础,借助领域建模的概念和方法对置换和查找类算法进行抽象,建立了领域特定语言和算法生成模型,以参数替换的方式自动生成了一系列已知和未知的置换和查找类算法程序,并构建了具备相应生成能力的系统,从而显著提高了两类算法的开发效率和可靠性。
本文的主要工作及研究成果包括以下几个方面:⑴针对算法形式化开发难度较大的问题,提出了基于PAR方法的一类问题的问题分划法则、规约变换策略及Radl算法生成法则,开发了支持其应用的算法形式化辅助系统原型PADS。⑵收集和分析了置换和查找算法领域的相关信息,抽象出这两个领域的算法基本操作并使用PAR提供的自定义抽象数据类型机制进行描述,建立了领域特定语言。⑶通过分析置换类算法和查找类算法的共性和可变性,将置换和查找类算法进行科学分类,设计了这两个领域的五个泛型算法构件,并使用前后置断言作为泛型约束机制刻划了操作参数的性质和行为,以保证参数替换的合理性和安全性。⑶针对目前领域构件可靠性不高的问题,从构件规约出发,使用PAR方法及本文在算法形式化方面的研究结果开发了置换和查找算法领域高可靠构件库。⑸研究了置换和查找算法领域构件间的关系,用类型构件实例化算法构件,以参数替换的方式自动生成了归并排序、快速排序、堆排序、Shell排序、散列查找等三十余个典型的置换和查找类已知算法,以及增量选择排序等若干未见于现有文献的算法,并在Apla-Java程序生成系统中予以实现,从而显著提高了算法程序的开发效率.研究结果能够发现新的算法而不只是解释或证明一些已知算法。