1 / 14
文档名称:

KMP模式匹配算法探讨.doc

格式:doc   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

KMP模式匹配算法探讨.doc

上传人:1529039003 2014/2/16 文件大小:0 KB

下载得到文件列表

KMP模式匹配算法探讨.doc

文档介绍

文档介绍:KMP模式匹配算法探讨
作者野刑缪
摘要介绍了KMP算法些与朴素查拖算法进行了比较,
提出了前缢函数的概念,并利用改进的前缓函数改进KMP算法,最后
结合KMP的改进算法给出了多次匹配的算法。
关键词串匹配,前缓函数,KMP算法
在计算机科学领域,留的表式匹配以下简积为率匹配算法一
直都是研究焕点之一。在拼写格查、诵言翻评、数据压络、携松引擎、
罡络入便桐测、计算机澳毒特征码匹配以及DN序列匹配等应用中,

现。在本文中主家表示为S=sls2s3vssn,朱式陂表示为ftlt2vtm。
单匹配从方式上可分为精确匹配、朱糊匹配、并行匹配等,睫名的匹
配算法有BP算法、RMP算法、B算法及一亚改进算法。本文主要在
精确匹配方面对MP算法进行了讨论并对它假一业政进以及利用改
进的M来实观多次李式匹配。
1R算法
最简单的朴林单匹配算法BF算法是从主宣的第一个字符和椿式
单的第一个字答进行比较,若相等则继续逐个比软后续字答,否则从
主单的第二个字答起再重潘和褐式卑的第一个字符进行比较。依次类
推,直至朱式卑和主宣中的一个子单相等,此时积为匹配成功,香则
狐为匹配央败。朴素朱式匹配算法医配奂败重新比较时只能向前移一
个字答,若主单中存在和朱式宣只有部分匹配的多个子宣,匹配指针
将多次回潼,一回潼次歇超多算法的敌率超低,它的时间复来度一舫
情况下为0nrmtla注n和分别为主单和朱式临的长度
最坏的情况下为0atn,最好的情况下为0atn。KMP表式匹配算
法正是针对上述算法的不尸俊了实质伯的改进。其基本性意是;当一
营匹配过程中出现失配时,不霸回湖主单,一是光分利用巳经得到的
部分匹配所隐含的若干个字符,过溱捧那些多余的比较,将模式十向
右溥动尽可能运的一段炼高后,继续进行比较,从而援高朱式匹
配的效率,该算法的时间复汉度为0atn。
那么知何硝定哪坤是多余的比较2在RMP算法中通过引人前缓
函欲fx未硝定每次匹配不露要比软的字符,保证了匹配烤纲向前
进行,无须回潼、假设主宣为sls2,sn.,模式单为tlt2,tm.,其
中sn,从sttl开始的子宣逼到一个不完全的匹配,使得
知果戟们能确定一个最小的整数,使得
L2
其中,所以确定!等价于确定k,这里的k值献是我们要求的
前缓函数f0。,只与给定的
褐式卑t中与主单匹配的q有关,即kfa

磬定MP前缬函数的算法如下
defineMANSI28100
TypedefunsignedcharstringMKSIZE+0号单元用木存放
巾的长度
vaidfsstringt,int柳rra
=t0a为当前朱式审的长度
array=int刑mallocahDJsizeofint0号元不用
arrayD0k0
fora2qra;at
nhilekOtknDletqJJkearrayk
iftkM=stajkek+l
arrayqlzk
关于RMP算法的前缓函数fx的示例见表1。
表1模式单abaabcac

当褪式率中有i个字符单匹配成功,第i+1个字答不匹配时,则
从if0个字符重新开姣比较,这桦不仅元须回潼,一东一次可以
向前滢动ifi个字答,大大提高了褪式匹配的敌率。下面给出朴
紊匹配算法和RMP匹配算法的比软,见表2。
表2补素匹配算法和KMP匹配算法比软表
卅素算法
P算法
时间复汇度
0orarD口
0am
向莱移动字符个歇
qfa
回湖次数

养丨n为主单长度,为朱式单长度,为匹配成功的字符个数。
2RiP算法的欣迹
在RMP算法的实际应用中,发现该算法也存在着不尸,结合下面
的表一来论述RMP模式匹配算法的改进。假设模式卑前4个字符与主
单的第i+L..i+4匹配成功,第5个字符匹配央败,此时前缓函敏
f旦=U,下一次匹配将从第1+4开姣,并直拳椰朱式串中的第2个字
答与主事中的第i+5个孛答进行比较,从表1中可知,匹配引将央败
此次比较是多余的。这说明此时的前缓函数5并不是最优,需要
对前缓函数进行改进。实质上,所谓对KMP算法的改进舫是对其前缓
函歇的欣进。
从裸1可以看出,当t5与主十中的si+5不匹配时,
t4+H=tF9+武时F4=l,即t5=t2,所以下一次匹配可以
烟进i+4EF旦=i+4个字符进行匹配,修改后的前缓函数记为
实珂止前缓函数的算法是兆调用f函数,
数进行修改,算法如下
WaidfFsstringt,intarra
zt0
ft,array3
fora1;qraiaH
hkefql
shiletkOtkHHDJ=sta+LJ
hkefk
fqj河
表3模式卑ab