基于抽象字符串的算法识别研究与实现

来源 :中国石油大学(北京) | 被引量 : 0次 | 上传用户:shires2006
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着当前软件规模的不断上升,软件维护的复杂度和效率日益受到关注。为了减少软件后期维护的复杂度、增加维护的效率,研究者提出了一系列程序理解的方法。这些方法降低了学习现有软件系统的成本,以辅助人工进行软件维护。在程序理解中,算法作为预先定义好的程序抽象化概念,直接诠释了程序的本质。基于这一点,算法识别是程序理解中的重要研究方向。本文在研究和分析现有算法识别技术的基础上,提出了基于抽象字符串的方法进行程序算法识别。  将程序源代码抽象为字符串表现形式的方法称为抽象字符串方法。在算法识别中,由于算法定义了具体的程序计算过程,所以实现同一类算法的程序具有同样的计算序列,体现在源代码上意味着具有近似的代码结构。然而不同的编程风格会带来在具体代码上的差异。通过将源代码抽象为字符串的方法,可以在消除具体代码差异的同时不影响计算序列的信息,从而可以提高算法识别的准确率。由抽象字符串方法生成的字符串作为程序源代码特征在数据体积上远小于原始的源代码,使得算法识别的效率得以提升。  在基于抽象字符串方法构建的源代码特征基础上,应用字符串相似度方法以及隐马尔科夫方法进行算法识别。字符串相似度方法利用实现同类算法的源代码会生成近似的抽象字符串的特性来实现算法识别。其通过对同类算法的源代码抽象字符串进行提取公共子串的方式获得算法特征字符串,并将算法特征字符串与待测程序抽象字符串进行相似度计算来判定待测程序实现了何种算法;隐马尔科夫方法是在抽象字符串的基础上,统计待测程序抽象字符串属于某一种算法的概率,从而判断待测程序实现了何种算法。隐马尔科夫方法对每一种算法建立对应的隐马尔科夫模型作为知识库。根据隐马尔科夫中的概率计算公式,计算待测程序在各种算法的隐马尔科夫模型下的概率,从而推断出它最可能是哪一种算法的具体实现。  实验结果显示字符串相似度方法相对于隐马尔科夫方法,在识别的准确性和查全率方面具有更优良的表现。同时,隐马尔科夫方法还有多种其它的建模方式可供改进,使得该方法在算法识别上拥有进一步优化的潜力。
其他文献
Web系统已成为当前主流的互联网应用模式,其性能能否满足服务质量约束(ServiceLevelAgreement,SLA)的需求至关重要,否则将导致客户流失,收益受损等严重后果。基于性能模型的保障
随着信息技术的快速发展,软件应用范围越来越广。但同时软件开发也面临着越来越多新的挑战。如何面对快速变化的需求、如何用更短的时间和更少的成本开发软件和如何面对同行业
随着社会、经济和移动互联网的迅速发展,商业、家庭、公共安全等领域的无线业务对频谱资源的需求越来越迫切。频谱紧缺的问题已经成为制约无线通信发展的瓶颈。认知无线电网
当今社会机器人技术正逐步渗透到了人类生产和生活的各个领域,并已经成为21世纪最热门的研究领域之一。目标检测、定位与跟踪是机器人实现更高一级的智能行为必须具备的基本能
数据管理技术是利用计算机硬件和软件技术对数据进行有效的收集、存储、处理和应用的过程。随着数据形式的多样化以及应用需求的多元化,数据管理技术面临了新的困难和挑战。近
多智能体系统(Multi-Agent System,简称MAS)作为分布式人工智能的重要研究领域,从20世纪90年代起得到了快速的发展,并在诸多行业有着重要的应用。同时,越来越多的多智能体系统提出
大量的大规模密集型数据需要存储在多个服务器中,而应用越来越广泛的云计算环境很好地解决了大规模密集型数据在分配过程中遇到的规模性问题。随着云计算技术的发展,云环境下的
与LTL、CTL以及PDL等较简单的时序与模态逻辑相比,μ-演算由于含有不动点算子,拥有非常强大的表达能力,因而付出的代价是其可满足性的判定、模型的构造以及对应公理系统的完备性
近年,统计机器翻译取得了很大的进展:从基于词的模型,到基于短语的模型,再到各种句法的模型。虽然句法的模型有诸多优点,如可以处理长距离调序等,但它们也并不是完美的,都存在各自
随着我国航天技术的发展,航天系统功能越来越复杂,对计算机软硬件的要求也越来越高。传统软件系统已无法满足航天系统对于软件的实时性、可靠性和安全性的需求。为此,有必要在软