多模式的串匹配方法和装置的制造方法

文档序号:9667361阅读:720来源:国知局
多模式的串匹配方法和装置的制造方法
【技术领域】
[0001] 本发明实施例涉及计算机数据处理技术领域,尤其涉及一种多模式的串匹配方法 和装置。
【背景技术】
[0002] 串匹配问题是计算机科学领域中最为经常遇到的一类问题。串匹配算法在信息减 弱、分子生物学、数据压缩等方面有着非常广泛的应用。串匹配算法可以被分为单模式串匹 配算法和多模式串匹配算法。而在多模式串匹配算法中,Aho-Corasick算法和Wu-Manber 算法是最为经典的两种算法。
[0003] Aho-Corasick算法简称AC算法,是KMP单模式串匹配算法处理多模式串的扩展算 法。AC算法采用有限状态自动机来组织所有的模式串,集成了KMP算法,通过计算最长前缀 移动窗口和匹配位置,以减少遍历所有匹配窗口的循环次数。
[0004] 但是,AC算法在执行过程中,是以文本串的每个字符为单位,逐一进行计算。这就 造成了在运行AC算法进行串匹配时,比较次数较多,运行效率不高。
[0005] Wu-Manber算法是BM算法在处理多模式串问题时使用的一种派生算法,它的主要 特点是集成了BM算法中不良字符转移机制,利用块字符扩展了不良字符的转移效果,同时 利用散列表来减少匹配过程的计算量。
[0006] 在Wu-Manber算法执行时,当前缀确认匹配之后,需要进行字符串其余部分的验 证,而且,这种验证是模式串的全长度验证。显然,这种模式串的全长度验证会导致对原始 文本内容提前的比对。但是在Wu-Manber算法中,并没有对这种提前发生的比对进行结果 记录,造成寻找下一个可能的匹配位置时仍然要依赖再一次的比较操作,造成算法性能的 下降。

【发明内容】

[0007] 针对上述技术问题,本发明实施例提供了一种多模式的串匹配方法和装置,以解 决AC算法中窗口滑动慢,以及Wu-Manber算法中比较结果不留存的问题。
[0008] 第一方面,本发明实施例提供了一种多模式的串匹配方法,所述方法包括:
[0009] 根据模式串创建Aho-Corasick自动机;
[0010] 根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量;
[0011] 若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹 配位置,所述滑动窗口的长度至少是2 ;
[0012] 对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行 匹配验证;
[0013] 根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述 文本串的末尾。
[0014] 第二方面,本发明实施例还提供了一种多模式的串匹配装置,所述装置包括:
[0015] 自动机创建模块,用于根据模式串创建Aho-Corasick自动机;
[0016] 移动表创建模块,用于根据模式串创建移动表,其中所述移动表记录了所述模式 串中字符块的位移量;
[0017] 位置寻找模块,用于若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述 移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2 ;
[0018] 匹配验证模块,用于对根据所述移动表找到的可能的匹配位置,根据所述 Aho-Corasick自动机进行匹配验证;
[0019] 重复寻找模块,用于根据所述移动表继续寻找下一个可能的匹配位置,直至所述 滑动窗口滑动至所述文本串的末尾。
[0020] 本发明实施例提供的多模式的串匹配方法和装置,利用移动表寻找文本串与多 个模式串之间可能的匹配位置,再利用Aho-Corasick自动机对所述可能的匹配位置进行 匹配验证,综合了AC算法及Wu-Manber算法的优点,解决了AC算法中窗口滑动慢,以及 Wu-Manber算法中比较结果不留存的问题,提高了串匹配的执行效率。
【附图说明】
[0021] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它 特征、目的和优点将会变得更明显:
[0022] 图1是本发明第一实施例提供的多模式的串匹配方法的流程图;
[0023] 图2是本发明第一实施例提供的Aho-Corasick自动机的结构示意图;
[0024] 图3是本发明第二实施例提供的多模式的串匹配方法中自动机创建操作的流程 图;
[0025] 图4是本发明第三实施例提供的多模式的串匹配装置的结构图。
【具体实施方式】
[0026] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描 述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便 于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0027] 第一实施例
[0028] 本实施例提供了多模式的串匹配方法的一种技术方案。在该技术方案中,作为主 字符串的文本串一次与至少两个模式串进行匹配。并且,所述文本串及所述模式串的内容 均出自于预先定义的一个有限的符号集合。
[0029] 参见图1,所述多模式的串匹配方法包括:
[0030] S11,根据模式串创建Aho-Corasick自动机。
[0031] 所述Aho-Corasick自动机是AC算法中必须使用的一种数据结构,它属于有限状 态自动机(Finitestatemachine,FSA)中的一种。所述Aho-Corasick自动机是Aho等人 对trie结构进行扩展后形成的,其基本结构是由所有模式串所构成的树形结构。与传统的 tire结构相比,每个节点增加了一个转移指针。所述转移指针指向每个状态的失效节点,表 示该节点对应子串在KMP算法中根据最长前缀计算出的转移节点。图2示出了由模式串集 合P= {he,she,his,hers}所构成的Aho-Corasick自动机。
[0032] 具体的,所述Aho-Corasick自动机的创建过程与现有的AC算法中Aho-Corasick 自动机的创建过程相同。具体的,可以通过分别创建所述模式串的转移函数、失效函数以及 输出函数,实现对所述Aho-Corasick自动机的创建。
[0033] S12,根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移 量。
[0034] 所述移动表也被称为shift表,是在Wu-Manber算法中必须使用的一种表。它 与哈希(hash)表及前缀(prefix)表共同形成了Wu-Manber算法独有的查询词典,使得 mi-Manber算法中可以快速的进行窗口的滑动而不需要针对每个字符进行比较,并且有效 的避免一些不必要的匹配的发生。
[0035] 所述移动表是在模式集中取每个模式串的前B个字符,计算该字符块的哈希值对 应表项的跳转值。通过所述移动表,整个字符查找的过程就变成了根据词表进行跳转的过 程。所述移动表也有自己的默认跳转值,与所有模式串中最短长度有关系。因此,假设模式 串集合中所有模式串的长度都很长的时候,执行串匹配的跳转速度会很快。
[0036] 建立所述Aho-Corasick自动机的步骤以及建立所述移动表的步骤是真正开始执 行串匹配运算之前的准备步骤。但是,由于本实施例提供的方法在执行串匹配运算时需要 使用上述两种数据结构,因此上述两种数据结构的创建必须在真正执行串匹配操作之前完 成。
[0037]S13,若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能 的匹配位置,所述滑动窗口的长度至少是2。
[0038] 利用所述滑动窗口在所述文本串上的滑动,找寻所述文本串上可能的匹配位置。 而且,所述滑动窗口的长度至少是2。
[0039] 优选的,可以通过查找所述移动表中位移量是0的位置,并将位移量为0的位置作 为可能的匹配位置。
[0040] S14,对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机 进行匹配验证。
[0041] 具体的,根据所述Aho-Corasick自动机进行匹配验证就是在所述可能的匹配位 置上运行AC算法,从而验证所述可能的匹配位置是不是与模式串真正匹配。
[0042] S15,根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至 所述文本串的末尾。
[0043] 在执行了对一个可能的匹配位置的匹配验证之后,根据所述移动表查找下一个可 能的匹配位置,并对所述下一个可能的匹配位置进行匹配验证。当所述滑动串口被滑动至 所述文本串的末尾时,所述多模式的串匹配方法执行结束。
[0044] 本实施例通过根据模式串创建Aho-Corasick自动机,根据模式串创建移动表,若 文本串的滑动窗口未滑动至所述文本串的末尾,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1