经典中英文模式匹配算法比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生毕业论文
题目名称 经典中英文
模式匹配算法比较
学生姓名 张 宏 学号 20114042034
学 院 信息科学与工程学院
专业年级 2011计科1
指导教师 莫礼平 职称 高级实验师
填写时间 2014年9月28日
吉首大学教务处制
经典中英文模式匹配算法比较
目录
摘要 (1)
Abstract (1)
第一章绪论 (2)
1.1概述 (2)
1.2本文的研究内容及论文组织结构 (3)
第二章模式匹配算法 (3)
2.1模式匹配的定义 (3)
2.2经典模式匹配算法—KMP算法 (4)
第三章常用的单模式匹配算法 (5)
3.1 一种改进的KMP算法 (5)
3.2 BM算法 (6)
第四章常用的多模式匹配算法 (12)
4.1 AC算法 (12)
4.2 WM算法 (19)
第五章大规模图数据库上的模式匹配算法 (22)
5.1数据存储的方式及图的访问接口 (22)
5.2模式匹配算法的实现 (23)
第六章一种适合中文的模式匹配算法 (24)
6.1 完全哈希表和状态矩阵存储方式的不足 (24)
6.2 一种带跳转距离的邻接链表存储方式 (25)
6.3 AC_SC算法描述 (27)
第七章实验测试及结果分析 (30)
7.1 实验环境 (30)
7.2 实验方案 (30)
7.3 实验结果与分析 (31)
结语 (32)
参考文献 (34)
摘要
模式匹配作为网络信息安全的核心技术之一,其效率直接影响整个系统的性能,一直也是学术界和工业界关注和讨论的热题。在当下,随着互联网的普及,网名数量呈几何增长,大规模数据甚至海量信息给网络信息安全带来了新的挑战,所以研究模式匹配算法具有重要的学术意义以及广阔的应用前景。
本文分析了KMP、BM、AC和WM四种经典模式匹配算法,并提出了KMP 算法的一种改进策略。在面临复杂数据难以管理新形势下,本文还介绍了一种大规模图数据库上的模式匹配算法。由于对中文模式匹配的需求日益增加,本文也介绍了一种适合中文环境的模式匹配。
最后,以codeblocks编译器为工具,分析比较了四种经典模式匹配算法的性能。
关键字:模式匹配;单模式匹配;多模式匹配;大规模;中文环境。
Abstract
Pattern matching,as one of the core technologies of network information security, has been affecting the performance of the whole system, and has been being the hot topics that the academia and industry pay attention to and discuss. At present, with the popularization of Internet, net population showed a geometric growth, large-scale data and even mass data of network have brought new challenges to information security. As a result, the research of pattern matching algorithm has important academic significance and broad application prospects.
In this paper, four classical pattern matching algorithms for KMP, BM, AC and WM are analyzed, and an improved KMP algorithm is come up. And under the new situation of the complex data been difficult to manage, this paper also describes a large-scale pattern matching algorithm based on the map database. With the increasing demand for Chinese environment pattern matching, this paper actually introduces a pattern matching for this condition.
At last, the performance of four classical pattern matching algorithms is analyzed under the CodeBlocks compiler.
Key words:pattern matching; simple pattern matching; multiple pattern; large scale; Chinese environment.
第一章绪论
1.1概述
1.1.1研究背景与意义
随着Internet技术的广泛应用和深入研究,特别是互联网的普及,国民经济信息进程的推荐、网络应用的发展和普及,各行各业对计算机网络的依赖程度越来越高。
搜索问题是计算机科学中最基本问题,串匹配问题就是在一个符号序列中查找另一个或者一些符号序列的搜索问题。在我们使用计算机的过程中,使用模式串匹配技术的例子随处可见,例如任何文本编辑、处理应用程序都包括了模式串搜索。
模式串匹配技术的发展是与其应用密切相关的。模式串匹配技术最直接的应用时构建数据的全文检索系统,以及图书文献目录的查询系统;随着网络技术和生物技术的不断发展,特别是在信息安全和生物信息学领域上,人们对模式匹配技术的要求不断提高。
1.1.2模式匹配技术产生、发展与研究现状
最早的模式匹配算法是经典的单模式匹配算法是由Knuth、Morris和Pratt于1977年提出的KMP算法[1]——该算法对文本串从左到右匹配,一旦失配,就利用“部分匹配”将模式串向右“滑动”若干个字符后继续与文本串的当前字符进行匹配,直至匹配(不)成功。同一年,Boyer和Moore提出了BM算法[2]——该算法利用坏字符移动规则和好后缀移动规则计算模式串的左移的距离,与KMP算法的最大的不同之处在于,当文本串与模式串在某个位置对齐之后,KMP 算法是从对齐位置向后依次执行匹配(不一定是模式串的第一个元素)。而BM 算法是从模式串的末尾位置(一定是模式串的最后一个元素)向前与文本串依次执行匹配。
最早的多模式匹配算法是由A.V.Aho和M.J.Corasicky于1975年提出的AC 算法[3] ——该算法结合了KMP算法的思想和有限状态自动机理论,匹配之前先对模式串集合构造有限状态自动机,匹配过程中通过状态转移表扫面一边文本串,就可识别出所有模式串。1994年Wu Sun和Manber提出了另一种多模式匹配算法WM算法[4] ——该算法融合了BM算法坏字符规则和完全Hash散列的思想,利用前缀表和哈希散列表,对所有的模式串进行处理,只扫描一遍文本即可识别多个模式串。
近年来由于互联网的普及,大数据的大量深入研究,对模式匹配算法提出了更高的要求,文献[5]提出了一种应对大规模数据的模式匹配算法。对于复杂数据的模式匹配,文献[6]提出了一种大规模图数据库上的模式匹配。随着中文模式串匹配需求的增加,适合中英文环境的模式匹配成了研究热题,文献[7]中提出了一种基于有限状态自动机的中文多模式匹配算法,该算法在保证合理的内存空间占用下,大幅提升了算法的匹配性能。