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

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


图l为本发明的流程图。
具体实施方式
下面结合附图举例对本发明做更详细地描述一种利用越界保护机制对字符串匹配进行加速的方法,按以下步骤进行a) 根据待匹配文本长度,得到文本尾位置,假定文本最末字符位于loc位置。b) 在loc+l位置设置1个字符的隔离字,该隔离字可以是任意在模式中没有 出现的字符。用以防止当文本末尾若干字符和所加入的越界保护带头若 干字符恰好为模式的一次出现时出现的错误匹配。c) 拷贝模式串至文本的loc+2位置(视情况可拷贝多次,多模式匹配应用中 拷贝待匹配的多个模式中的其中一个模式)。d) 进行正常的字符串匹配,但无需在每次跳跃时判断是否出现下标越界, 在输出模式匹配位置前才进行是否下标越界的判断,若没有下标越界, 则输出匹配位置,若下标越界,则结束匹配动作。下面对实现最简单的BF算法为例,利用本发明所提方法对该算法进行加速。 原始的BF算法如下(其中,t为文本串,pat为模式串,n为文本串长度,m为 模式串长度,matchtime为发生匹配的次数,memcmp和memset均为标准C库 函数)<formula>formula see original document page 5</formula>利用本发明改进后的BF算法如下(其中,隔离字用'\177'即ASCII字符中的 Dd字符,该字符在模式中必不出现)<formula>formula see original document page 6</formula>经本发明提出的方法改进后,该算法在窗口每次滑动过程中的开销均减少了 两次次减法操作和一次条件转移,改进效果明显。设置越界保护带所带来的开销 可忽略不计。
权利要求
1. 一种利用越界保护机制对字符串匹配进行加速的方法,其特征是a)根据待匹配文本长度,得到文本尾位置,假定文本最末字符位于loc位置;b)在loc+1位置设置1个字符的隔离字,该隔离字是任意在模式中没有出现的字符;c)拷贝模式串至文本的loc+2位置;d)进行正常的字符串匹配,在输出模式匹配位置前进行是否下标越界的判断,若没有下标越界,则输出匹配位置,若下标越界,则结束匹配动作。
2、 根据权利要求1所述的一种利用越界保护机制对字符串匹配进行加速的 方法,其特征是对于某些字符串匹配应用,C)步中所述的拷贝模式串至文本 的1oc+2位置时可视情况拷贝多次,多模式匹配应用中拷贝待匹配的多个模式中的其中一个模式。
全文摘要
本发明提供的是一种利用越界保护机制对字符串匹配进行加速的方法。根据待匹配文本长度,得到文本尾位置,这里假定文本最末字符位于loc位置;在loc+1位置设置1个字符的隔离字,该隔离字是任意在模式中没有出现的字符;拷贝模式串至文本的loc+2位置;进行不检查是否下标越界的字符串匹配,在输出模式匹配位置前进行是否下标越界的判断,若没有下标越界,则输出匹配位置,若下标越界,则结束匹配动作。本发明所述方法与字符串匹配的具体实现无关,是现有各种字符串匹配问题的通用改进方法。由于在整个串匹配过程中模式匹配后的输出动作是串匹配过程中所有动作中出现频率最低的动作,本发明所述方法可以将检查下标越界操作的总数降至最低。
文档编号G06F17/30GK101271468SQ20081006444
公开日2008年9月24日 申请日期2008年5月5日 优先权日2008年5月5日
发明者姚念民, 范洪博 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1