论文部分内容阅读
ASP(Answer set Programming)已从一个纯理论的知识表示和推理形式体系,发展成为一个具有很强的形式化支持的计算方法。目前,ASP方法的发展越来越受重视,但ASP程序调试技术的研究相对较少。ASP程序的高度声明性特点隐藏了大部分的计算细节,使得程序设计人员在理解计算过程和执行结果上比较困难,因此,调试ASP程序有一定的难度。为了提高程序效率,大部分程序设计语言都有丰富的开发工具和相应的软件工程方法,但现存软件工程方法和工具很难直接应用于 ASP程序的开发。为此,需要研究专门的 ASP程序设计方法和相应的软件开发工具。目前存在三种典型的针对 ASP程序的调试方法:标签技术、诊断技术和基于支撑原因分析(justification)图的方法。本文分析了以上程序调试方法,并根据实际需要和存在的问题,提出了改进算法,为 ASP程序的调试提供了更好的支撑。在研究中取得的主要成果有: 1)基于启发式搜索的ASP程序支撑原因分析算法。基于支撑原因分析图的ASP程序调试技术可以指出程序中错误的来源及相互之间的联系,且以图的形式直观地给出所有可能的错误方式。然而实际应用中常常希望能尽快找到一个错误及其来源,以加快ASP程序调试的效率。为此,本文把启发式搜索技术引入ASP程序支撑原因分析算法,在生成支撑原因分析图时利用启发式函数,只搜索对回答集产生有影响且有可能更快找到一个支撑原因的规则。实例分析表明了该算法的可用性和效率。 2)利用支撑原因分析算法改善基于标签的ASP程序调试。标签技术可找出并以集合形式给出程序错误,但不能清晰表达集合中错误之间的关系,为此,本文把支撑原因分析算法引入基于标签的调试技术中,弥补了标签技术在程序调试提供支持方面的不足,并通过实例表明该方法的有效性。 3)原子推理图与支撑原因分析图关系分析及应用。ASP程序的原子推理图以图的形式表明程序中原子之间的推导关系,目前通常用于ASP程序回答集存在性判断。支撑原因分析图以图的形式解释了某原子关于某个回答集为真或为假的原因。本文分析了原子推理图与支撑原因分析图的联系,给出了一个从原子推理图获得原子支撑原因分析图的算法,从而为ASP回答集判定算法与程序调试的集成提供了一定的支撑。