一种利用越界保护机制对字符串匹配进行加速的方法技术

技术编号:2824763 阅读:331 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供的是一种利用越界保护机制对字符串匹配进行加速的方法。根据待匹配文本长度,得到文本尾位置,这里假定文本最末字符位于loc位置;在loc+1位置设置1个字符的隔离字,该隔离字是任意在模式中没有出现的字符;拷贝模式串至文本的loc+2位置;进行不检查是否下标越界的字符串匹配,在输出模式匹配位置前进行是否下标越界的判断,若没有下标越界,则输出匹配位置,若下标越界,则结束匹配动作。本发明专利技术所述方法与字符串匹配的具体实现无关,是现有各种字符串匹配问题的通用改进方法。由于在整个串匹配过程中模式匹配后的输出动作是串匹配过程中所有动作中出现频率最低的动作,本发明专利技术所述方法可以将检查下标越界操作的总数降至最低。

【技术实现步骤摘要】
(一)
本专利技术涉及的是一种信息处理方法,具体地说是一种用于信息处理领域中的字符串匹配方法。(二)
技术介绍
字符串匹配可以理解为从给定的符号序列中找出一个或若干具有某种性质的模式。字符串匹配问题应用范围极其广泛,几乎所有涉及文本处理的应用中都会涉及到字符串匹配操作,该问题是网络安全、信息检索、计算生物学等重要领域的核心问题。目前随着网络安全问题的凸显,以及超大型数据库、高速搜索引擎、人类基因图谱计划等应用的出现,对高速匹配算法的需求非常强烈。字符串匹配可根据待处理文本在进行匹配操作时是否已知来进行分类。若进行匹配时文本已知的匹配应用为离线文本匹配,如在文本文件中进行匹配或者在socket缓冲区中进行匹配等应用;当匹配时文本未知并在不断更新的匹配应用则为在线文本匹配,匹配时文本仍在不断更新。目前各种匹配应用以离线文本匹配为主。在处理离线文本时,现有字符串匹配算法至少在每发生一次跳跃时判定是否出现待读入字符超出文本边界的事件(或称下标越界,其中KMP类算法在每读入一个字符时均需检查是否下标越界)。由于字符串匹配所处理的文本长度一般远大于模式的长度,实际的操作中下标越界的出现概率很低,这样频繁的检查是否下标越界降低了匹配应用的实际性能。为降低下标越界检查的开销,HUME A.与SUNDAY D.M.提出的tunedBoyer-Moore算法(简称tuned BM算法,HUME,A.,SUNDAY,D.M.,Fast stringsearching,Software-Practice&Experience,1991,21(11),1721-1248)中给出了一种越界保护的思想。tuned BM算法在较大字符集下(如英文文本检索)是目前最常用而且性能最高的精确单模式匹配算法,该算法被著名的字符串匹配软件Gungrep作为精确单模式匹配的处理算法。tuned BM算法利用BM坏字符规则进行跳跃,每次跳跃后待读入字符为窗口最末字符,并且当被读入字符和模式最末字-->符匹配时窗口的跳跃距离为0。利用此特性,tuned BM算法中提出了一种简单的越界保护机制,在文本的末尾接入m个字符的越界保护带,越界保护带内字符与模式的最末字符一致。这样,当窗口沿文本匹配至文本尾后,当出现下标越界时,此时的待读入字符位于越界保护带中,因此,窗口的跳跃距离将为0,窗口将不再继续向后跳跃。因此可进行若干次跳跃后,才检查一次是否发生下标越界。这样的做法将把下标越界的检查的开销分摊在若干次跳跃中,降低了每次跳跃的平均开销。上述方法被称为简易的越界保护方法,该方法并没有将越界保护检查的次数降到最低。同时,该方法只能适用于tuned BM算法,其他算法由于没有当待读入字符和模式最末字符匹配时跳跃距离为0的特性,而无法应用到其他算法中。(三)
技术实现思路
本专利技术的目的在于提供一种可将下标越界检查开销降至最低,并且可顺利应用于现有大多数串匹配算法和串匹配应用的利用越界保护机制对字符串匹配进行加速的方法。本专利技术的目的是这样实现的:按以下步骤进行:a)根据待匹配文本长度,得到文本尾位置,假定文本最末字符位于loc位置;b)在loc+1位置设置1个字符的隔离字,该隔离字是任意在模式中没有出现的字符;c)拷贝模式串至文本的loc+2位置;d)进行正常的字符串匹配,在输出模式匹配位置前进行是否下标越界的判断,若没有下标越界,则输出匹配位置,若下标越界,则结束匹配动作。其中,对于某些算法,c)步中所述的拷贝模式串至文本的loc+2位置应拷贝多次,多模式匹配应用中拷贝待匹配的多个模式中的其中一个模式。对任何不会出现匹配遗漏的字符串匹配算法(含多模式匹配,待扩展字符匹配,正则表达式匹配和近似匹配等等应用),当下标越界时,上述c)步骤所接入的模式串均将引发一次模式匹配事件的发生,本专利技术所述方法与字符串匹配的具体实现无关,是现有各种字符串匹配问题的通用改进方法。同时,在整个串匹配-->过程中模式匹配后的输出动作是串匹配过程中所有动作中出现频率最低的动作,本专利技术所述方法可以将检查下标越界操作的总数降至最低。目前,本方法在精确单模式匹配算法:KMP,shift-or,tuned BM,Horspool,BNDM,BOM,QS,KARP-RABIN;多模式匹配算法Aho-Corasick,Wu-Manber,SBOM;正则表达式匹配算法Thompson自动机,Glushkov自动机,近似匹配算法中的PEX算法,MultiHash算法;等等算法上均成功实现,实验表明,在各种串匹配算法上均能获得稳定的性能提高。本专利技术适用范围包含任何不会发生匹配遗漏的离线串匹配算法和部分在线串匹配算法,保护范围不只包括上述实验中所述算法。(四)附图说明图1为本专利技术的流程图。(五)具体实施方式下面结合附图举例对本专利技术做更详细地描述:一种利用越界保护机制对字符串匹配进行加速的方法,按以下步骤进行:a)根据待匹配文本长度,得到文本尾位置,假定文本最末字符位于loc位置。b)在loc+1位置设置1个字符的隔离字,该隔离字可以是任意在模式中没有出现的字符。用以防止当文本末尾若干字符和所加入的越界保护带头若干字符恰好为模式的一次出现时出现的错误匹配。c)拷贝模式串至文本的loc+2位置(视情况可拷贝多次,多模式匹配应用中拷贝待匹配的多个模式中的其中一个模式)。d)进行正常的字符串匹配,但无需在每次跳跃时判断是否出现下标越界,在输出模式匹配位置前才进行是否下标越界的判断,若没有下标越界,则输出匹配位置,若下标越界,则结束匹配动作。    下面对实现最简单的BF算法为例,利用本专利技术所提方法对该算法进行加速。原始的BF算法如下:(其中,t为文本串,pat为模式串,n为文本串长度,m为模式串长度,matchtime为发生匹配的次数,memcmp和memset均为标准C库函数)char*i=t-1;while(++i<(n-m)){if(memcmp(i,pat,m)==0){OUTPUT(i);matchtime++;本文档来自技高网
...

【技术保护点】
一种利用越界保护机制对字符串匹配进行加速的方法,其特征是:    a)根据待匹配文本长度,得到文本尾位置,假定文本最末字符位于loc位置;    b)在loc+1位置设置1个字符的隔离字,该隔离字是任意在模式中没有出现的字符;    c)拷贝模式串至文本的loc+2位置;    d)进行正常的字符串匹配,在输出模式匹配位置前进行是否下标越界的判断,若没有下标越界,则输出匹配位置,若下标越界,则结束匹配动作。

【技术特征摘要】
1、一种利用越界保护机制对字符串匹配进行加速的方法,其特征是:a)根据待匹配文本长度,得到文本尾位置,假定文本最末字符位于loc位置;b)在loc+1位置设置1个字符的隔离字,该隔离字是任意在模式中没有出现的字符;c)拷贝模式串至文本的loc+2位置;d)进行正常的字符串匹配,在输出模式匹配位置前进行是...

【专利技术属性】
技术研发人员:范洪博姚念民
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:93[中国|哈尔滨]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1