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

上传人:b****1 文档编号:3175877 上传时间:2022-11-19 格式:PDF 页数:6 大小:602.57KB
下载 相关 举报
基于KMP算法的改进算法KMPP.pdf_第1页
第1页 / 共6页
基于KMP算法的改进算法KMPP.pdf_第2页
第2页 / 共6页
基于KMP算法的改进算法KMPP.pdf_第3页
第3页 / 共6页
基于KMP算法的改进算法KMPP.pdf_第4页
第4页 / 共6页
基于KMP算法的改进算法KMPP.pdf_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

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

《基于KMP算法的改进算法KMPP.pdf》由会员分享,可在线阅读,更多相关《基于KMP算法的改进算法KMPP.pdf(6页珍藏版)》请在冰豆网上搜索。

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

ComputerEngineeringandApplications计算机工程与应用基金项目基金项目:

国家自然科学基金重大国际(地区)合作研究项目(81320108019);福建省自然科学基金项目(2014J01220)。

作者简介作者简介:

李莉(1991),女,硕士研究生,研究方向为软件工程,数据挖掘;江育娥(1970),女,博士,教授,研究领域为数据挖掘;林劼(1972),男,博士,副教授,研究领域为序列算法,生物信息学,数据挖掘(通讯作者);江秉华(1962),男,博士,教授,研究领域为分子生物学,生物信息学。

E-mail:

1基于KMP算法的改进算法KMPP李莉1,江育娥1,林劼1,江秉华2LILi1,JIANGYue1,LINJie1,JIANGBinghua21.福建师范大学软件学院,福建福州3501002.南京医科大学病理系,南京2100291.SchoolofFacultyofSoftware,FujianNormalUniversity,Fuzhou350100,China2.DepartmentofPathology,NanjingMedicalUniversity,Nanjing210029,ChinaLILi,JIANGYue,LINJie,JIANGBinghua.KMPPofimprovedalgorithmbasedonKMP.ComputerEngineeringandApplications.Abstract:

KMPalgorithmandBMalgorithmareclassicalsinglepatternmatchingalgorithms,BecausethepointeriinthetextcanonlymoveonecharacterateachtimeinKMPalgorithm,theoverallmatchingefficiencyisnothigh,sotheimprovedalgorithm(KMPP)accordinglytocombinetheadvantagesoftheKMPalgorithmwithBMalgorithmtogetherisproposed.ThecoreofKMPPalgorithmiswhenamismatchoccursatpositionj,itcalculatesthepositioninthetextwherethelastcharacterofpatternwillalignwithafterthepatternmovethevalueofnextj.Ifthelastcharacterofpatterndonotmatchwiththecorrespondingtextposition,thenthebadcharacterrulesapplied.Themovingdistanceofpointeriinthetextisatwo-stepjumpingdistance,thusthepointercanmovefarthestateachtime.TheexperimentalresultshowsthatthecomparisonnumberofKMPPalgorithmisfarlessthantheKMPalgorithmsnumberanditisanefficientofpatternmatchingalgorithm.Keywords:

patternmatching;KMPalgorithm;BMalgorithm;KMPPalgorithm摘要:

摘要:

KMP算法和BM算法是经典的单模式匹配算法,但KMP算法中文本指针i每次只能移动一个字符,整体的匹配效率并不高,结合KMP算法和BM算法的优点提出一种改进算法(KMPP)。

算法的思想是模式串与文本在j处不匹配时,预算出模式串移动nextj后末字符在文本中的位置,当该位置的文本字符与末字符不匹配时,则用该字符进行坏字符匹配,这两步的跳跃距离就是文本指针i移动的距离,从而使指针i每次移动的距离达到最大。

实验结果表明,该算法匹配次数远低于KMP算法的匹配次数,提高了模式匹配的效率。

关键词关键词:

模式匹配;KMP算法;BM算法;KMPP算法doi:

10.3778/j.issn.1002-8331.1405-0426文献标识码:

A中图分类号:

TP3111引言引言在当前大数据的时代,无论是金融、文学、生物信息还是计算机领域,文本都是必不可少的信息组成元素。

面对不断出现的大量文本,如何快速精确地找到文本中需要的信息成为研究的重点。

目前的互联网正面临着越来越严重的网络安全问题,网络入侵涉及到网络信息的保密性、完整性、可用性、真实性和可控性,因此入侵检测技术成为当前的研究热点,而精确字符匹配算法效率的提升对网络出版时间:

2014-12-1115:

26网络出版地址:

http:

/KMP算法的改迚算法KMPP2提高网络入侵检测系统(NIDS)的性能起到很大的作用。

随着各个领域的关联性的提高,产生的文本数据量越来越大,很多领域都需要在大量信息中查找特定的信息。

例如生物信息领域中的DNA测序定位、航海领域中的海洋数据查询、计算机领域中的高效搜索引擎等。

由此可见,寻找更有效的字符串匹配算法是当务乊急。

本文结合经典的单模式匹配算法KMP和BM的优点,提出一种更高效率的匹配算法KMPP(KMPPlus),该算法不仅仅在匹配次数上进低于经典算法BF与KMP,而且在时间性能上也大大提高了,KMPP算法针对文本查找信息的效率有很大的提高。

22相关算法分析相关算法分析在介绍相关的算法前,先作以下的定义:

文本表示为T=T0.n-1,长度为n;模式串表示为P=P0.m-1,长度为m;幵且满足条件n=m。

如果存在i使得:

Ti=P0,Ti+1=P1.Ti+m-1=Pm-1,那么模式串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等。

本文主要是在KMP算法的基础上,提出新的改迚算法KMPP(KMPPlus),幵将KMPP与KMP、BM、NKMP算法的性能做了对比,理论与实验均证明KMPP的性能高于BM、KMP、NKMP算法。

2.12.1KMP算法算法1969年Knuth、Morris和Pratt提出快速单模式匹配算法-KMP算法3。

KMP算法消除了BF算法中的指针i回溯问题。

比较过程中模式串是从左往右移动,字符比较也是从左往右比较。

若Ti=Pj,则继续比较Ti+1=Pj+1;若Ti!

=Pj,则i值不变,j值等于nextj,再迚行下一轮的匹配。

其中nextj的值表示P0j-1中最长后缀的长度,且这个最长后缀等于相同字符序列的前缀,对next数组的定于如下:

)(其他情况且时,当10存在0|max01-11110,.PPP.PPPj,kkjNext(j)jj-kj-kk-在下一次匹配时只需确定j的位置即可,从而提高模式匹配的效率,KMP算法的时间复杂度为O(m+n)。

表1为KMP算法匹配过程,其中T=“acbccadbacbacc”,P=“acbacc”。

表1KMP算法匹配过程序号012345678910111213文本串acbccadbacbacc第一次acbacc第二次acbacc第三次acbacc第四次acbacc第五次acbacc第六次acbacc第七次acbacc2001年,复旦大学朱洪教授主要针对KMP匹配算法的预处理next函数迚行修改,在计算nextj值时,多加一步判断PnextjPj10。

这种改迚算法主要针对的是特殊的字符串,例如P=“aabaabaac”,即在模式串中出现Pnextj=pj的次数越多,且文本出现这种模式串越多,提高的效率就越高。

NKMP算法的时间复杂度为O(m+n),2010年杨俊丼也对此改迚算法迚行分析研究9。

2006年华东科技大学鲁宏伟教授根据自定义的特征值k提出一种新的模式匹配算法。

当此改迚算法的k值几乎为1时,即nextj的值大部分为0时,该算法的提高效率幵不高11。

综合两种改迚算法的比较结果,最终采用运行效率更好的NKMP算法迚行比较论述。

2.22.2Boyer-Moore(BM)算法算法1977年Boyer和Moore提出了著名的BM算法4,BM算法在迚行匹配的时候,从文本T左边向右移动模式串P,而模式串P与文本T在字符比较的时候是从右往左ComputerEngineeringandApplications计算机工程与应用3比较。

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,则移动模式串的距离为BCp(Ti+j)。

好后缀跳跃规则定义如下:

)(31111111(|mins),.m-s(jP,.,m-Pss),Pj-s(j&Pjs),.msPj,.,mPjsGSp(j)例子的匹配过程见表2所列。

表2BM算法匹配过程序号012345678910111213文本串acbccadbacbacc第一次acbacc第二次acbacc第三次acbacc第四次acbacc33KMPP算法算法3.13.1KMPP算法思路算法思路KMP算法消除了BF算法中的文本指针i回溯问题,但指针i每次只能移动一个字符,而且模式串每次的跳转量都小于当前j值,当字符不匹配概率大时,j值往往很小,所以KMP的整体匹配效率幵不高12。

本文结合KMP算法和BM算法坏字符跳转规则的优点,提出一种改迚算法KMPP,该算法可以增加指针i每次移动的距离,从而提高匹配效率13-15,与BM不同,该算法的最坏时间复杂度为O(m+n),理论上也优于BM

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > IT认证

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

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