ImageVerifierCode 换一换
格式:PDF , 页数:6 ,大小:602.57KB ,
资源ID:3175877      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3175877.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于KMP算法的改进算法KMPP.pdf)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于KMP算法的改进算法KMPP.pdf

1、Computer Engineering and Applications 计算机工程与应用 基金项目基金项目:国家自然科学基金重大国际(地区)合作研究项目(81320108019);福建省自然科学基金项目(2014J01220)。作者简介作者简介:李莉(1991),女,硕士研究生,研究方向为软件工程,数据挖掘;江育娥(1970),女,博士,教授,研究领域为数据挖掘;林劼(1972),男,博士,副教授,研究领域为序列算法,生物信息学,数据挖掘(通讯作者);江秉华(1962),男,博士,教授,研究领域为分子生物学,生物信息学。E-mail: 1 基于 KMP 算法的改进算法 KMPP 李莉1,江

2、育娥1,林劼1,江秉华2 LI Li1,JIANG Yu e1,LIN Jie1,JIANG Binghua2 1.福建师范大学 软件学院,福建 福州 350100 2.南京医科大学 病理系,南京 210029 1.School of Faculty of Software,Fujian Normal University,Fuzhou 350100,China 2.Department of Pathology,Nanjing Medical University,Nanjing 210029,China LI Li,JIANG Yue,LIN Jie,JIANG Binghua.KMPP

3、of improved algorithm based on KMP.Computer Engineering and Applications.Abstract:KMP algorithm and BM algorithm are classical single pattern matching algorithms,Because the pointer i in the text can only move one character at each time in KMP algorithm,the overall matching efficiency is not high,so

4、 the improved algorithm(KMPP)accordingly to combine the advantages of the KMP algorithm with BM algorithm together is proposed.The core of KMPP algorithm is when a mismatch occurs at position j,it calculates the position in the text where the last character of pattern will align with after the patte

5、rn move the value of next j.If the last character of pattern do not match with the corresponding text position,then the bad character rules applied.The moving distance of pointer i in the text is a two-step jumping distance,thus the pointer can move farthest at each time.The experimental result show

6、s that the comparison number of KMPP algorithm is far less than the KMP algorithms number and it is an efficient of pattern matching algorithm.Key words:pattern matching;KMP algorithm;BM algorithm;KMPP algorithm 摘要:摘要:KMP 算法和 BM 算法是经典的单模式匹配算法,但 KMP 算法中文本指针 i 每次只能移动一个字符,整体的匹配效率并不高,结合 KMP 算法和 BM 算法的优点

7、提出一种改进算法(KMPP)。算法的思想是模式串与文本在 j 处不匹配时,预算出模式串移动 nextj后末字符在文本中的位置,当该位置的文本字符与末字符不匹配时,则用该字符进行坏字符匹配,这两步的跳跃距离就是文本指针 i 移动的距离,从而使指针 i 每次移动的距离达到最大。实验结果表明,该算法匹配次数远低于 KMP 算法的匹配次数,提高了模式匹配的效率。关键词关键词:模式匹配;KMP 算法;BM 算法;KMPP 算法 doi:10.3778/j.issn.1002-8331.1405-0426 文献标识码:A 中图分类号:TP3111 引言引言 在当前大数据的时代,无论是金融、文学、生物信息还

8、是计算机领域,文本都是必不可少的信息组成元素。面对不断出现的大量文本,如何快速精确地找到文本中需要的信息成为研究的重点。目前的互联网正面临着越来越严重的网络安全问题,网络入侵涉及到网络信息的保密性、完整性、可用性、真实性和可控性,因此入侵检测技术成为当前的研究热点,而精确字符匹配算法效率的提升对网络出版时间:2014-12-11 15:26网络出版地址:http:/ KMP 算法的改迚算法 KMPP 2 提高网络入侵检测系统(NIDS)的性能起到很大的作用。随着各个领域的关联性的提高,产生的文本数据量越来越大,很多领域都需要在大量信息中查找特定的信息。例如生物信息领域中的DNA测序定位、航海领

9、域中的海洋数据查询、计算机领域中的高效搜索引擎等。由此可见,寻找更有效的字符串匹配算法是当务乊急。本文结合经典的单模式匹配算法 KMP 和 BM 的优点,提出一种更高效率的匹配算法KMPP(KMP Plus),该算法不仅仅在匹配次数上进低于经典算法BF 与 KMP,而且在时间性能上也大大提高了,KMPP 算法针对文本查找信息的效率有很大的提高。2 2 相关算法分析相关算法分析 在介绍相关的算法前,先作以下的定义:文本表示为 T=T0.n-1,长度为 n;模式串表示为 P=P0.m-1,长度为 m;幵且满足条件 n=m。如果存在 i 使得:Ti=P0,Ti+1=P1.Ti+m-1=Pm-1,那么

10、模式串 P 就出现在文本 T 的 i 处。单模式匹配问题就是找出文本 T 中所有匹配的模式串 P 的起始位置。单模式匹配经典算法包括基于字符比较的匹配算法、基于自动机的匹配算法、基于位平行的匹配算法、常量空间字符串的匹配算法1。本文论述的算法是基于字符比较的单模式匹配算法。基于字符比较的主要匹配算法有 BF(Brute-Force)算法2、KMP(Knuth-Morris-Pratt)算法3、BM(Boyer-Moore)算法4等,其改迚算法主要有 BMH 算法5、QS 算法6-7、AKC 算法8、针对 next 函数迚行修改的 KMP 改迚算法-(下文称为 NKMP 算法)9等。本文主要是在

11、 KMP 算法的基础上,提出新的改迚算法 KMPP(KMP Plus),幵将 KMPP 与 KMP、BM、NKMP 算法的性能做了对比,理论与实验均证明 KMPP 的性能高于 BM、KMP、NKMP 算法。2.12.1 KMP 算法算法 1969 年 Knuth、Morris 和 Pratt 提出快速单模式匹配算法-KMP 算法3。KMP 算法消除了 BF 算法中的指针i回溯问题。比较过程中模式串是从左往右移动,字符比较也是从左往右比较。若 Ti=Pj,则继续比较 Ti+1=Pj+1;若 Ti!=Pj,则 i 值不变,j 值等于 nextj,再迚行下一轮的匹配。其中 nextj的值表示 P0j

12、-1中最长后缀的长度,且这个最长后缀等于相同字符序列的前缀,对 next 数组的定于如下:)(其他情况且时,当10存在0|max01-11110,.PPP.PPPj,kkjNext(j)jj-kj-kk-在下一次匹配时只需确定j的位置即可,从而提高模式匹配的效率,KMP 算法的时间复杂度为 O(m+n)。表 1 为 KMP 算法匹配过程,其中 T=“acbccadbacbacc”,P=“acbacc”。表 1 KMP 算法匹配过程 序号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 文本串 a c b c c a d b a c b a c c 第一次 a c b a c c

13、 第二次 a c b a c c 第三次 a c b a c c 第四次 a c b a c c 第五次 a c b a c c 第六次 a c b a c c 第七次 a c b a c c 2001 年,复旦大学朱洪教授主要针对KMP 匹配算法的预处理 next 函数迚行修改,在计算 nextj值时,多加一步判断PnextjPj10。这种改迚算法主要针对的是特殊的字符串,例如 P=“aabaabaac”,即在模式串中出现 Pnextj=pj的次数越多,且文本出现这种模式串越多,提高的效率就越高。NKMP 算法的时间复杂度为O(m+n),2010 年杨俊丼也对此改迚算法迚行分析研究9。200

14、6 年华东科技大学鲁宏伟教授根据自定义的特征值 k 提出一种新的模式匹配算法。当此改迚算法的 k 值几乎为 1 时,即 nextj的值大部分为 0 时,该算法的提高效率幵不高11。综合两种改迚算法的比较结果,最终采用运行效率更好的NKMP 算法迚行比较论述。2.2 2.2 Boyer-Moore(BM)算法算法 1977 年 Boyer 和 Moore 提出了著名的BM 算法4,BM 算法在迚行匹配的时候,从文本 T 左边向右移动模式串 P,而模式串P 与文本 T 在字符比较的时候是从右往左Computer Engineering and Applications 计算机工程与应用 3 比较。

15、BM 算法在匹配的时候要同时根据坏字符跳跃表和好后缀跳跃表,取两者中的最大值作为模式串的右移量。BM 算法的最坏时间复杂度为 O(m*n),最好时间复杂度为 O(n/m)。坏字符跳转规则定义如下,其中 ch 为文本 T 与模式 P 比较时出现的不匹配文本字符:)(他情况2其11|max)2(中未出现P在ch即 1)1(,mjch,Pjjm-j;jm),jch(m;Pj(ch)BCp 以文本 T=“acbccadbacbacc”和模式串P=“acbacc”为例,文本 T 与模式串 P 从右往左比,当模式串 P 的 j 处字符与文本的i+j 处不匹配时,即 Ti+j!=Pj,则移动模式串的距离为

16、BCp(Ti+j)。好后缀跳跃规则定义如下:)(31111111(|mins),.m-s(jP,.,m-Pss),Pj-s(j&Pjs),.msPj,.,mPjsGSp(j)例子的匹配过程见表 2 所列。表 2 BM 算法匹配过程 序号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 文本串 a c b c c a d b a c b a c c 第一次 a c b a c c 第二次 a c b a c c 第三次 a c b a c c 第四次 a c b a c c 3 3 KMPP 算法算法 3.13.1KMPP 算法思路算法思路 KMP 算法消除了 BF 算法中的文本指针 i 回溯问题,但指针 i 每次只能移动一个字符,而且模式串每次的跳转量都小于当前 j 值,当字符不匹配概率大时,j 值往往很小,所以 KMP 的整体匹配效率幵不高12。本文结合 KMP 算法和 BM 算法坏字符跳转规则的优点,提出一种改迚算法 KMPP,该算法可以增加指针 i 每次移动的距离,从而提高匹配效率13-15,与 BM 不同,该算法的最坏时间复杂度为 O(m+n),理论上也优于BM

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1