改进的近似模式匹配算法
1820 2011,Vo1.32,No.5 计算机工程与设计ComputerEngineering andDesign
改进的近似模式匹配算法
张丽霞, 宋鸿陟
(华南农业大学信息学院人机交互研究中心,广东广州510642)
摘 要:为了提高近似模式匹配算法在多次匹配情况下的效率,借鉴了文本快速过滤算法的思想,分析了平均情况下改进
的动态规划算法(DP算法),并在此基础上设计实现了一种改进的DP算法,称为IMP.DP。该算法在匹配过程中,将上一次运
算的结果存储起来,与上次相同的匹配可在原有成功匹配结果的基础上进行运算,忽略将不可能产生成功匹配的区域,只
关注剩余的区域。由算法时间复杂性和实验对比分析结果表明,该算法在多次匹配情况下,效率远远高于其它算法,从而验
证了该算法改进的有效性。 关键词:模式匹配;近似模式匹配;动态规划;文本快速过滤;IMP—DP 中图法分类号:TP301 文献标识码:A 文章编号:1000.7024(2011)05.1820.04
Improved approximate pattem matching algorithm
ZHANG Li.xia. SONG Hong—zhi
(Research Center of Human Computer Interaction,College of Information,South China Agricultural University,
Guangzhou 5 1 0642,China)
Abstract:In order to improve the efficiency of approximate pattem matching algorithm in the case of matching for several times,the dynamic programming and the text quick filter algorithm are introduced in detailed.DP algorithm is analyzed then,on this basis,an
improved algorithm named IMP-DP is designed and implemented drawing on the idea of text quick filter.In the process of matching,
the results ofthe previous operation will be stored,SO the same matching can be calculated on the basis ofthe previous successful matching. The algorithm will ignore the region which could not process the successful matching,and only concern with the remaining region.
Through time complexity analysis and experimental comparison,it is found that IMP—DP algorithm is far more efficient than other pattem
matching algorithms in the case of matching for several times.So IMP—DP is proven to be effective. Key words:pattem matching;approximate pattern matching;dynamic programming;text quick filter;IMP—DP
0引 言
模式匹配也称为字符串匹配,是计算机科学中最古老、研 究最广泛的问题之一,简单来讲,就是从给定的字符序列(通
常称为文本串)中找出一个给定的字符串(通常称为模式串) 。
随着信息化程度的不断提高,模式匹配的应用越来越广,相关
的研究也越来越多,特别是在近年来发展迅猛的信息检索领
域和计算生物学领域。因为在这两个领域中,需要处理的文 本规模越来越大,而且需要在文本中进行越来越复杂的搜索。
模式匹配有精确匹配和近似匹配之分。所谓精确匹配是
指不允许对模式串有任何改变,严格的与文本串进行匹配;近
似匹配又称模糊匹配或允许错误的匹配,是指给定一定的相 似标准,在文本串中找出所有与模式串相似的子串。即允许
对模式串进行预处理,插入、删除或替代一些字符,以得到相
似的子串。近年来,近似匹配的应用越来越广泛,例如,在信 息检索领域中对拼写错误的纠正,在计算生物学领域中的序
列比对等。
本文首先简单介绍基于动态规划算法、基于NFA搜索、
基于位并行模拟和基于过滤4类已有的近似匹配算法,然后 借鉴文本过滤算法的思想对其中的动态规划算法进行改进,
并对改进后算法的性能进行分析和测试比较。
1近似模式匹配
近似模式匹配…,可以称为“允许误差的模式匹配”,是指
在文本T中查找模式串P,并允许模式串P和它在文本中的出
现之间存在有限的k个差异。目前最流行的度量这种“差异” 的模型是编辑距离模型,给定模式串和一个对应的阈值k,k指
定了模式串和匹配结果之间允许的最大距离,称为编辑距离, 即将两个字符串转变成完全相同的串所需要的最小编辑操作
(插入、删除或替换)数目。
收稿日期:2010—09.29;修订日期:2010.12—01。 基金项目:国家自然科学基金项目(60875045)。 作者简介:张丽霞(1977一),女,山东平度人,硕士,讲师,研究方向为信息可视化、人机交互; +通讯作者:宋鸿陟(1972--),男,黑龙江 大庆人,博士,副教授,CCF高级会员,研究方向为信息可视化、人机交互。E.mail:lixia_zhang@scau.edu.
cn 张丽霞,宋鸿陟:改进的近似模式匹配算法 2011,Vo1.32,No.5 1821
已有的近似匹配算法可分为4类:第一类算法基于动态
规划 。 方法,这是最古老也是最灵活的算法,虽然不是效率最 高的算法,但是可以进行改进,能适用于比较复杂的距离模
型。第二类算法基于NFA搜索[4-5]该类算法使用给定的模式
串和阈值k构造NFA,然后将其确定化。当模式串较短时,这 类算法的效率不错。第三类算法基于位并行技术[6-7]用位并
行来模拟其它方法,是所有方法中最成功的。第四类是基于
文本过滤 的算法,它用一个快速的过滤算法跳过文本中那
些不可能存在成功匹配的大块区域,然后再利用一个非过滤
算法来验证剩下的区域是否存在成功匹配。这类算法也是最
快的算法之一,但当阈值k和模式串长度的比值增加时,其效
率迅速下降。 本文借鉴文本过滤算法思想,对动态规划算法进行改进。
下面稍详细介绍动态规划算法和文本快速过滤算法。 1.1动态规划算法
动态规划算法首先要计算编辑距离,但最终目的是要在 文本中搜索,因此我们把编辑距离ed(x,y)中的X看作模式P,Y 看作文本T。计算编辑距离使用一个矩阵M 这里M 的
含义是:将X 。变成Y 所需的最少编辑操作次数,矩阵M的计
算过程如下
M。,o=i,Mo,.=0
fM。 一l 若Xi YJ 【l+min(Mi廿1,Mi-l,j ̄M。 )否则
在T中搜索P的问题大致就是计算ed(p,T)的问题。若模 式串P的长度为m,文本串T的长度为n,则该算法的时间复
杂度为O(mn)。
E,Ukkonen对上述算法做了改进,将算法的平均时间复杂 度降低到O(kn),这个算法称为DP算法[10-11] ̄算法的思想是:
通常情况下,模式串在文本中成功匹配的数目是很少的,因
此,在上面的编辑距离矩阵M中,每一列从上往下计算很快
就达到k+1(即不匹配了),并且如果某个矩阵元素的值大于
k+l,那么搜索结果就不会依赖于这个元素的精确值。如果一 个矩阵元素的值小于或等于k,那么这个元素就称为活动的。
DP算法只计算到每一列的最后一个活动元素,不需要再对后
面的元素进行计算。
1.2文本快速过滤算法
过滤算法基于这样一种思想:判断文本中某个位置的子 串和模式串不相匹配可能要比判断二者相匹配更容易。过滤
算法能够过滤掉文本中那些不能产生成功匹配的区域,但不
能判断剩余区域是否存在成功匹配,因此,过滤算法总是要跟
一个非过滤算法结合使用。
一般情况下效果比较好的过滤算法是PEX“ 算法和AB—
NDM“ 算法。前者适合于大字母表的情况,后者适合于小字
母表的情况。
2改进的动态规划算法
在近似匹配中,对于同样的文本和模式串,经常出现匹配
次数不止一次的情况,可能会根据k值的不同进行多次的匹 配。比如在进行信息检索的时候,我们输入关键词进行搜索, 通常会得到很多搜索结果,有些非常接近,有些比较接近,有
些却差的较远,这是因为搜索引擎在进行模式匹配的时候,即
进行了精确匹配,也进行了不同程度的近似匹配,相当于k值
在不断的变化。针对这种情况,本文提出了一种在DP算法基
础上改进的动态规划算法,称为IMP.DP算法。 2.1算法的原理
IMP—DP算法借鉴了文本过滤算法的思想,将不可能产生
成功匹配的区域忽略掉,只专注剩余的区域。大致思路如下: 将上一次运算的结果存储起来,对于与上一次匹配的文本和
模式串相同的匹配,不用重复计算上一次运算的结果,而是在
原有结果的基础上经过运算得到新的结果。
在相同的文本和模式串进行多次匹配的情况下,如果k
值小于或等于上一次的k值时,算法只是搜索原来结果就能
得到新的结果;如果k值大于上一次的k值时,那么算法就在 原来结果基础上根据k值重新计算最后活动元素。在动态规
划算法中,编辑距离矩阵M已经存储了上一次匹配的运算结
果,因此只要对矩阵M进行相关处理就能得到新的匹配结果。 2.2算法的设计
IMP—DP算法适用于相同文本和模式串进行多次匹配的
情况,因此,在匹配前必须判断是否属于这种情况。如果文本 和模式串与上一次的不相同,则算法按照DP算法来运算。在
判断文本和模式串是否相同时,为了节省时间,先判断模式串
的长度和上一次的模式串的长度是否相同,不同就立刻停止
判断,如果相同就继续判断文本的长度和上一次的文本的长
度是否相同,如果相同就判断两个模式串是否等价,最后才判 断两个文本串是否等价。
确定属于相同文本和模式串进行二次匹配,根据k值来
判断是否需要运算。如果k<=k’(k.为上一次匹配的k值),就
直接搜索矩阵M的最后一行,然后输出答案。如果k>k’,就在 矩阵M中重新计算k值的最后活动元素,计算完毕后,保存运
算后的矩阵M,为下一次匹配做准备,最后搜索矩阵M的最
后一行并输出答案。IMP.DP算法的伪代码如下: IMP—DP(p= -p …P ,t=ht ̄…tlI,k)
Fori=0…mDocj=i
Lact=k+1//last active cell If(p=P&&t-T)Then
常见5种基本匹配算法
常见5种基本匹配算法
匹配算法在计算机科学和信息检索领域广泛应用,用于确定两个或多个对象之间的相似度或一致性。以下是常见的5种基本匹配算法:
1.精确匹配算法:
精确匹配算法用于确定两个对象是否完全相同。它比较两个对象的每个字符、字节或元素,如果它们在相同位置上完全匹配,则返回匹配结果为真。精确匹配算法适用于需要确定两个对象是否完全相同的场景,例如字符串匹配、图像匹配等。
2.模式匹配算法:
模式匹配算法用于确定一个模式字符串是否出现在一个文本字符串中。常见的模式匹配算法有暴力法、KMP算法、BM算法等。暴力法是最简单的模式匹配算法,它按顺序比较模式字符串和文本字符串的每个字符,直到找到一次完全匹配或结束。KMP算法通过预处理建立一个跳转表来快速定位比较的位置,减少了无效比较的次数。BM算法利用模式串的后缀和模式串的字符不完全匹配时在文本串中平移模式串的位置,从而快速定位比较的位置。
3.近似匹配算法:
4.模糊匹配算法:
5.哈希匹配算法:
哈希匹配算法用于确定两个对象之间的哈希值是否相等。哈希值是通过将对象映射到一个固定长度的字符串来表示的,相同的对象会产生相同的哈希值。常见的哈希匹配算法有MD5算法、SHA算法等。哈希匹配算法适用于需要快速判断两个对象是否相等的场景,例如文件的完整性校验、数据校验等。
以上是常见的5种基本匹配算法,它们各自适用于不同的场景和需求,选择合适的匹配算法可以提高效率和准确性,并且在实际应用中经常会结合多种算法来获取更好的匹配结果。
串的两种模式匹配算法
串的两种模式匹配算法
模式匹配(模范匹配):⼦串在主串中的定位称为模式匹配或串匹配(字符串匹配) 。模式匹配成功是指在主串S中能够找到模式串T,否
则,称模式串T在主串S中不存在。
以下介绍两种常见的模式匹配算法:
1. Brute-Force模式匹配算法 暴风算法,⼜称暴⼒算法。
算法的核⼼思想如下:
设S为⽬标串,T为模式串,且不妨设:
S=“s0s1s2…sn-1” , T=“t0t1t2 …tm-1”
串的匹配实际上是对合法的位置0≦i≦n-m依次将⽬标串中的⼦串s[i…i+m-1]和模式串t[0…m-1]进⾏⽐较:
若s[i…i+m-1]=t[0…m-1]:则称从位置i开始的匹配成功,亦称模式t在⽬标s中出现;
若s[i…i+m-1]≠t[0…m-1]:从i开始的匹配失败。位置i称为位移,当s[i…i+m-1]=t[0…m-1]时,i称为有效位移;当s[i…i+m-1] ≠t[0…m-1]
时,i称为⽆效位移。
算法实现如下:
(笔者偷懒,⽤C#实现,实际上C# String类型已经封装实现了该功能)
1 public static Int32 IndexOf(String parentStr, String childStr)
2 {
3 Int32 result = -1;
4 try
5 {
6 if (parentStr.Length > 1 && childStr.Length > 1)
7 {
8 Int32 i = 0;
9 Int32 j = 0;
10 while (i < parentStr.Length && j < childStr.Length)
11 {
12 if (parentStr[i] == childStr[j])
13 {
14 i++;
15 j++;
16 }
17 else
18 {
19 i = i - j + 1;
20 j = 0;
21 }
22 }
23 if (i < parentStr.Length)
一种改进的入侵检测模式匹配算法
第25卷第1期 2012年3月 湖南理工学院学报(自然科学版)
.J..o...u...r..n....a..1....o...f...H.....u...n...anInstituteofScience andTechnology(Natural Sciences) V01.25 No.1 Mat,2012
一种改进的入侵检测模式匹配算法
方 欣 ,邓
(1.湖南理T学院信息与通信T程学院,湖南岳阳414006;2 斌2
湖南理1二学院计算机学院,湖南岳阳414006)
摘要:随着网络的普及,网络安全问题日益严峻,入侵检测技术己经成为计算机与网络安全的重要组成部分.本文 首先介绍了入侵检测的基础知识,然后对入侵检测中的模式匹配BM算法进行分析,并在此基础上提出了改进的GBM算法 该算法有效的提高了模式匹配的效率. 关键词:入侵检测;模式匹配;BM算法;Snort 中图分类号:TP393 文献标识码:A 文章编号:1672—5298(2012)01—0038—04
An Improved Pattern Matching Algorithm
For Intr ̄"Dete ̄:titor Intrusion Detection
FANG Xin .DENG Bin (1.College ofInformation andCommunicationEngineering,HunanInstitute ofScience andTechnology,Yueyang 414006,China; 2.College of Computer Science,Hunan Institute of Science and Technology,Yueyang,4 1 4006,China)
Abstract:With the popularity of the network,the resulting network security is becoming increasingly serious;intrusion detection technology has become an important component of network security.This paper introduces the basics of intrusion detection and intrusion detection on the BM algorithm for pattern matching analysis,and on this basis,the improved GBM proposed algorithm effectively improves the efficiency of pattern matching. Key words:intrusion detection;pattern matching;BM algorithm;Snort
BMH2C单模匹配算法的研究与改进
第40卷 Vb1.40 第3期 NO.3 计算机工程 Computer Engineering 2014年3月 March 2014
・开发研究与工程应用・ 文章缩号:1000—3428(2014)03-0298—05 文献标识码:A 中圈分类号:TP301.6
BMH2C单模匹配算法的研究与改进
王艳霞,江艳霞,王亚刚,李烨
(上海理工大学光电信息与计算机工程学院,上海200082)
摘要:BMH2C算法综合BMH和BMHS算法,利用当前窗口字符f『明及其下一字符r[ 1]组成的双字符串来决定模式串右移量,
具有比BM算法、BMH算法、BMHS算法更优的性能。但对于双字符串在模式串中出现一次及以上的情况,BMH2C算法中的模
式串右移量仍有待进一步增大,从而减少当前窗口右移次数,提高BMH2C算法的匹配效率。为此,在BMH2C算法的基础上提 出一种改进算法,该算法考虑双字符串f[削f[抖1]在模式串中出现的次数,以及该双字符串在模式串中对应位置的后继字符与字符
f【抖2]的相等关系。改进算法利用2个右移数组和1个模式串预处理数组,在匹配过程中通过判断字符 2]与模式串预处理数组 中相应字符是否相等,从而选择2个右移数组之一的对应值作为当前窗口的右移量。实验结果显示,在相同条件下,对于当前窗
口移动次数和匹配所耗时间,BMH2C改进算法比BMH2C算法分别平均减少11.33%和9.40%,有效提高了匹配效率。 关健词:模式匹配;BMH2C算法;字符串;右移;预处理
Research and Improvement 0f
BMH2C Single Pattern Matching Algorithm
WANG Yan-xia,JIANG Yan-xia,WANG Ya-gang,LI Y
(School of Optical—Electrical and Computer Engineering,University of Shanghai for Science and Technology,Shanghai 200082,China)
VC++编程实现字符串的近似匹配
……………………一……… ……… ’… ……… 实用第一 智慧密集
… … … 。 …… …
c++ 程 字符 馘遮 鬣
张研韩露
摘 要:介绍了经典的单模式近似匹配算法——BPM算法,分析了算法的设计思路及关键步骤,
并用vC++编程实现。
关键词:近似匹配:BPM算法
1 引言
近似字符串匹配指的是给定一个文本T[1:n】,n是文本长
度,一个模式P[1:ml,Ill是模式的长度,以及容许的最大误
差k(k<m),找出文本T中满足误差小于k的所有字符串S,
即ed(S,P)<=k,其中ed(S,P)表示字符串S和P的距离。
如今,近似字符串匹配在入侵检测、文件检索、文本过滤、
信息查询等许多领域有着广泛的应用,是当前计算机算法设计
的重要课题之一。近似字符串匹配算法可分为基于动态规划、
基于位向量、基于过滤等几类。其中,经典算法是一种基于动
态规划生成矩阵的方法。而动态生成矩阵与位向量方法结合的
应用较广泛,其代表算法是BPM,这是一种基于动态规划的快
速位向量方法,性能良好,下面给出BPM算法的C++语言实现。
2 BPM算法设计
2.1 符号的定义
为了便于描述算法,首先给出各种符号的定义,t表示模
式匹配的的文本串,n表示文本串的长度.P表示模式匹配中
的模式串,m表示模式串的长度。k表示模式匹配中容许的误
差,W表示计算机的字长,目前使用的计算机字长一般不超过
64位。为了便于讨论,假设m<w。
2_2模式预处理
模式预处理是对模式串P的每个字符进行处理,文献【21
给出了具体的处理方法。预处理函数的输人参数是模式串
pattern,字符匹配以字节为单位进行,一个字节最多有256个
字符,用数组Peq【256]表示。在模式预处理时,先把数组
Peq[256】初始化为0,然后根据模式串中出现的字符进行赋
值。通过预处理,数组Peq保存的结果即可向量化地描述模式
串。例如,模式串为“keyword”,那么根据预处理过程,数组
模板匹配算法
1、模板匹配法:
在机器识别事物的过程中,常常需要把不同传感器或同一传感器在不同时间、不同成像条件下对同一景象获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图像中寻找相应的模式,这就叫匹配。在遥感图像处理中需要把不同波段传感器对同一景物的多光谱图像按照像点对应套准,然后根据像点的性质进行分类。如果利用在不同时间对同一地面拍摄的两幅照片,经套准后找到其中特征有了变化的像点,就可以用来分析图中那些部分发生了变化;而利用放在一定间距处的两只传感器对同一物体拍摄得到两幅图片,找出对应点后可计算出物体离开摄像机的距离,即深度信息。
一般的图像匹配技术是利用已知的模板利用某种算法对识别图像进行匹配计算获得图像中是否含有该模板的信息和坐标;
2、基本算法:
我们采用以下的算式来衡量模板T(m,n)与所覆盖的子图Sij(i,j)的关系,已知原始图像S(W,H),如图所示:
利用以下公式衡量它们的相似性:
上述公式中第一项为子图的能量,第三项为模板的能量,都和模板匹配无关。第二项是模板和子图的互为相关,随(i,j)而改变。当模板和子图匹配时,该项由最大值。在将其归一化后,得到模板匹配的相关系数:
当模板和子图完全一样时,相关系数R(i,j) = 1。在被搜索图S中完成全部搜索后,找出R的最大值Rmax(im,jm),其对应的子图Simjm即位匹配目标。
显然,用这种公式做图像匹配计算量大、速度慢。我们可以使用另外一种算法来衡量T和Sij的误差,其公式为:
计算两个图像的向量误差,可以增加计算速度,根据不同的匹配方向选取一个误差阀值E0,当E(i,j)>E0时就停止该点的计算,继续下一点的计算。
最终的实验证明,被搜索的图像越大,匹配的速度越慢;模板越小,匹配的速度越快;阀值的大小对匹配速度影响大;
3、改进的模板匹配算法
将一次的模板匹配过程更改为两次匹配;
第一次匹配为粗略匹配。取模板的隔行隔列数据,即1/4的模板数据,在被搜索土上进行隔行隔列匹配,即在原图的1/4范围内匹配。由于数据量大幅减少,匹配速度显著提高。同时需要设计一个合理的误差阀值E0:
一种改进的字符串多模式匹配算法
Computer Engineering andApplications计算机工程与应用
一种改进的字符串多模式匹配算法
董世博,李训根,殷珍珍
DONG Shibo,LI Xungen,YIN Zhenzhen
杭州电子科技大学CAD研究所,杭州310018
CAD Laboratory,Hangzhou Dianzi University,Hangzhou 3 1 00 1 8,China
DONG Shibo,LI Xungen,YIN Zhenzhen.Improved string matching algorithm.Computer Engineering and Applica-
tions,2013,49(8):133-137。
Abstract:String matching algorithm is an important method in intrusion detection.An improved algorithm is proposed for
string matching based on the discussions of several common string matching algorithms,for example,AC,AC_BMH,Sunday,
etc.This algorithm can jump over more characters to do next matching when this matching is lost.At the same time,the match- ing times decrease sharply.In this case,it improves the matching efficiency.The analysis of this algorithm’S performance and
基于模式匹配的NAC_BM算法研究
游 l敦字技术 _十广 黪 算法分析
基于模式匹配的NAC_BM算法研究
秦晓明’杨春耕 (1.焦作师范高等专科学校计算机与信息工程学院河南焦作454000; 2.焦作工贸职业学院基础部河南焦作454550)
摘要:通过对BM算法和Ac—BM算法的研究分析,综合了两种算法的优点,设计了一种新的改进算法:NAc—BM算法。该算法改进了模 式匹配的跳跃步长,并且减少了匹配次数,从而提高了模式匹配的效率。仿真实验表明,NAC—BM算法的效率优于BM算法和Ac—BM算法, 达到了对模式匹配算法的优化目的。 关键词:入侵检测;模式匹配;算法。 中图分类号"TP309.08 文献标识码:A 文章编号:1007.9416(2013)06—0135 02
1引言
在基于主机入侵检测技术中,应用比较多的是误用检测技术, 其核心多采用字符串搜索算法模式匹配技术。通过对目前广泛应用 的BM算法…和AC—BM算法 l的分析,提出基于AC—BM算法的 改进的多模式匹配算法NAC—BM算法。该算法综合了BM算法和
T
t T
4、£生奢b
l,一————— 、 P c=== =[=衄
穆
图1坏字符移动,P,不包含d
图2坏字符移动,P,包含d
P 誊氇嚣
I ———、I p 匕= 芷]互【j 工刁
黪疆
图3好字符移动,P,包含v
禽 厂—— c=== =[=茳==】 ][===]
…………… 镑瀚
图4好字符移动,P,包含v AC—BM算法的优点,改进了BM算法跳跃步长,使得每次匹配获得 最大的步长,同时应用AC算法有限状态机模式匹配自动机构造模 式树,匹配过程中移动模式树,减少了规则匹配次数,为基于主机的
入侵检测模式匹配技术提供了一种优化方法。 -
2多模式字符串匹配算法
由于BM算法是一种单模式字符串匹配算法,它每次只能完成 对一个模式的匹配工作,效率较低。虽然研究者对BM改进算法很 多,但是这些算法都没有改变BM算法的基本思想,因此不能解决效 率问题。 为了提高效率,研究者提出了多模式匹配问题 ,多模式匹配问 题可以抽象描述为:设P={he,she,his,hers}是一个模式集合,模式串 Pi中的字母来自于一个固定的字母表∑。多模式匹配问题是发现 P中所有模式在文本T中的所有出现,T:T ,T:,… ,T ∈∑。
一种基于后缀数组的近似模式匹配的过滤算法
第24卷第6期 2010年11月 甘肃联合大学学报(自然科学版) Journal of Gansu Lianhe University(Natural Sciences) VoI.24 No.6 NOV.2010
文章编号:1672—691X(2010)06・0050-06
一种基于后缀数组的近似模式匹配的过滤算法
张利香 ,王智一。
(1_平凉医学高等专科学校,甘肃平凉744000;2.武山县马力中学,甘肃武山741300)
摘要:为了提高在海量的信息中进行多重复模式查找算法的效率,提出了算法Epattern_searcher.该算法运用过 滤算法的思想而设计,同时又采用能节省空间占用的后缀数组来实现,从而提高了算法的运行速度.针对英文小 说中高频词的查找问题,对算法进行了实验测试,得到此算法的时间复杂度为o(尘 ・,z2・f l-q)的实验结
果. 关键词:编辑距离;过滤;模式匹配;后缀数组 中图分类号:TP301.6 文献标识码:A
0引言
串匹配技术已应用于文本编辑处理、文献检
索、自然语言识别、入侵检测、病毒检测、信息过滤 及计算生物学等领域[1].随着串匹配的应用领域
的扩展,经典的串匹配算法已不能满足要求,其包 括动态规划算法、自动机算法、过滤算法以及位并 行算法等[2].由于串匹配是应用中最耗时的核心
问题,好的串匹配算法能显著地提高应用效率,因
此研究并设计快速的串匹配算法具有重要的理论 价值和实际意义.
目前,在基于文本信息搜索中,使用搜索工具
百度、Google等可以快速的搜索到与你所查找问
题相关的网页内容.这里针对长篇英文小说阅读 中的高颇词的查找问题,提出了近似模式查找的 算法Epattern_searcher.要在海量的信息中查找
有意义的模式串,按一般的查找方法,所需0( 。)
的复杂度很高,所花费的时间让人难以忍受.因而
提出了一种快速的过滤算法Epattern—searcher,
改进的多模式字符串匹配算法
第27卷第6期 2007年6月 计算机应用
Computer Applications Vo1.27 No.6
June 20o7
文章编号:1001—9081(2007)06—1415—03
改进的多模式字符串匹配算法
蔡晓妍,戴冠中,杨黎斌
(西北工业大学自动化学院,陕西西安710072)
(eaixiaoyan1982@hotmail.eom) 摘要:在经典的AC多模式字符串匹配算法的基础上,结合BMH算法的优点,提出了一种快速
的多模式字符串匹配算法。一般情况下,该算法不需要匹配目标文本串中的每个字符,而是在实际比
较之前跳过尽可能多的字符,以减少字符比较的操作,实现快速匹配。在模式串较长和较短的情况
下,算法都有很好的性能。实验表明,在模式串较短时,本算法所需的时间仅为AC算法的50%~
30%;在模式串较长时,所需时间为AC算法的26.7%~15.2%。
关键词:字符串匹配;AC算法;BMH算法;多模式匹配;算法复杂度
中图分类号:TP18 文献标识码:A
Improved multiple patterns string matching algorithm
CAI Xiao—yan,DAI Guan—zhong,YANGⅡ一bin
(College ofAutomation,Noahwes ̄rn Polytechnlcal University,Xi’an Shaanxi 710072,China)
Abstract:Combined with the advantage of the Boyer-Moore-Hoospool(BMH)algorithm,a faster algorithm for
performing multiple pattems matching in a string WaS proposed on the basis of Aho—Corasick(AC)algorithm.In general,it does not need to inspect every character of the string.It skips as many characters as possible to decrease pattern match
