2023年7月20日发(作者:)
维普资讯
第27卷第2期 大庆师范学院学报 JOURNAL OF DAQING NORMAL UNIVERSnTY V01.27 No.2 Apil1.2Oo7 2007年4月 几种模式匹配算法的效率分析 巫喜红 (嘉应学院计算机科学与技术系,广东梅州514015) 摘要:分析几种模式匹配算法如KMP、BM、RK、SO。通过上机实验对这些算法的匹配时间进行测试,结果表明在 这些模式匹配算法中BM算法是速度最快效率最高的算法。 关键词:模式匹配;KMP算法;BM算法;RK算法;SO算法 作者简介:巫喜红(1975一),女,广东丰顺人,嘉应学院计算机科学与技术系讲师。 中图分类号:TP301.6文献标识码:A文章编号:1006-2165(2007)02-0050-03收稿日期:2006—12—30 0引言 模式匹配算法一直是研究焦点之一,它应用非常广泛,如拼写检查、语言翻译、数据压缩、搜索引擎、网 络入侵检测、计算机病毒特征码匹配等。 l模式匹配算法 字符串的的定位操作通常称作串的模式匹配,是一种重要的串运算 。模式匹配的定义为:对于给定 的正文主串T=T ……T (长度为n)和模式串P=P ……P (长度为m),(n>>m),要求在主串T中寻找 等于模式串P的子串,如果在T中找到等于P的子串,则称匹配成功,函数值返回为P中第一个字符相等 的字符在主串T中的序号,否则称为匹配失败,函数值返回为0。 在研究各算法前,作如下一些相关定义: 字符集:C={CI C在正文中出现} 正文串T:Tl T2……T。…Ti+ 一.…T 模式串P:Pl…Pi…P 1.1 KMP算法 KMP算法的思想是:若某趟匹配过程中T[i]和P[J]不匹配,而前J一1个字符已经匹配,此时只需右 移P,T不动,即指针i不回溯,让P[k]与T[i]继续比较。移动后重新开始比较的位置k仅与模式串有关, 因此k可以事先确定。若定义函数next(J)=k,则next函数的定义为: next(j)=max{k I P[1..k一1]=P[J—k+1..j一1]} KMP算法将模式串向右滑动可以提高匹配算法的效率,但相对比较复杂,时间复杂度为O(m+s),空 间复杂度为O(s)。 1.2 BM算法 J 受KMP算法的启发,Boyer和Moore提出了一种新的字符串快速匹配算法——BM算法。它是从另外 一个角度出发,提出一种比较新颖的方法来求解模式匹配问题。其基本思想是从右向左的把模式同文本 做比较。开始时仍是P的最左边与T的最左边对齐,当某趟比较中出现不匹配时,BM算法采用两条启发 性规则计算模式串右移的距离,即坏字符启发规则和好后缀启发规则;当与最右的模式符号做比较的文本 符号在模式中根本就没有出现,则模式可以在这个文本符号之后移位m个位置。 BM算法的关键是,对模式串P定义一个从字母到正整数的映射函数distl, distl:c一>{1,2,…,nl} distl也称为滑动距离函数,给出了可能出现的任意字符c在模式串中的位置。distl函数定义:具体 50
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689849049a290327.html
评论列表(0条)