CN101251845A - 利用改进的Wu-Manber算法进行多模式串匹配的方法 - Google Patents

利用改进的Wu-Manber算法进行多模式串匹配的方法 Download PDF

Info

Publication number
CN101251845A
CN101251845A CNA2008100197279A CN200810019727A CN101251845A CN 101251845 A CN101251845 A CN 101251845A CN A2008100197279 A CNA2008100197279 A CN A2008100197279A CN 200810019727 A CN200810019727 A CN 200810019727A CN 101251845 A CN101251845 A CN 101251845A
Authority
CN
China
Prior art keywords
hash value
character
pattern string
displacement
string
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100197279A
Other languages
English (en)
Other versions
CN101251845B (zh
Inventor
刘继明
王东泉
谢炜
林恩峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ITIBIA TECHNOLOGIES
SUZHOU AIDIBI TECHNOLOGY Co Ltd
Original Assignee
ITIBIA TECHNOLOGIES
SUZHOU AIDIBI TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ITIBIA TECHNOLOGIES, SUZHOU AIDIBI TECHNOLOGY Co Ltd filed Critical ITIBIA TECHNOLOGIES
Priority to CN2008100197279A priority Critical patent/CN101251845B/zh
Publication of CN101251845A publication Critical patent/CN101251845A/zh
Application granted granted Critical
Publication of CN101251845B publication Critical patent/CN101251845B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种利用改进的Wu-Manber算法进行多模式串匹配的方法,包括以下步骤:1)预处理模式串:依照某个方式对每个模式串进行HASH处理,计算每个HASH值对应的移动距离;对于HASH到同一个值的多个模式串,采用AVL树存储,以加快匹配速度;2)搜索:每次读取一块字符,并计算其HASH值,取该HASH值对应的移动距离,如果距离大于0,则直接移动比较窗口继续搜索,否则在该HASH值对应的AVL树中搜索,在AVL树中搜索完成后移动比较窗口继续搜索。由此,本发明增大了移动距离,显著加快了匹配过程。

Description

利用改进的Wu-Manber算法进行多模式串匹配的方法
技术领域
本发明涉及一种多模式串匹配算法的改进,尤其涉及利用改进的Wu-Manber算法进行多模式串匹配的方法,属于算法技术领域。
背景技术
模式串匹配从来都是一个热门话题,从编辑器到生物科学,再到网络内容分析,应用领域非常广泛。这些应用领域的共同特点是需要处理的数据量巨大,需要匹配的关键词条目多而且可能很长,但对性能要求较高。为此相应的模式串匹配算法层出不穷,应用于单模式串匹配的有KMP、BM等等,应用于多模式串匹配的有AC、Wu-Manber等等。
先明确下模式串匹配问题的数学定义:字符,抽象的实体,匹配的最小单位,字母和数字均可为符号;字母表,若干个字符的有穷集合;字符串,取自某个字母表中的并置起来的有穷符号序列。串匹配问题可以精确叙述如下:字母表∑,令其上的n(n>=1)个字符串p1,p2,...,pn作为模式串,给定一个字符串T,查找T中是否包含有pi(1<=i<=n)。
由于Wu-Manber算法为BM算法的多模式扩展,以下均简单介绍:
BM(Boyer-Moore):单模式串匹配算法,采用从右到左的方法扫描模式串,是应用中最有效的单模式串匹配算法。该算法思想为,将模式串和被比较字符串沿左侧对齐,从模式串的最后一个字符开始比较,当比较到某个字符不相等时,将比较窗口向右移动;移动的距离在预处理模式串时生成,包括良好后缀转移和不良字符转移。
Wu-Manber:多模式串匹配算法,为BM的多模式扩展,同样采用从右到左的方法扫描模式串,计算移动距离时仅利用BM中的不良字符转移,同时该算法又利用了hash的思想减小匹配范围。由于模式串众多,在读取被比较字符串时,采取读入多个字符的方法,即一次读入一块字符。
发明内容
本发明的目的是克服现有技术存在的不足,提供一种利用改进的Wu-Manber算法进行多模式串匹配的方法,旨在有效加速Wu-Manber算法的匹配过程。
利用改进的Wu-Manber算法进行多模式串匹配的方法,包含以下步骤:
1)预处理模式串:计算每个模式串对应的SHIFT数组,并将该串插入对应的链表或AVL树;
a)计算SHIFT数组:模式串P,只考虑P的前lmin个字符,每B个字符为一块,计算HASH值,设该HASH值对应的移动距离s1,该字符块到模式串末端的距离为s2,则该HASH值对应的移动距离重新置为s1和s2的最小值;计算P末端的B个字符的HASH值,将该HASH值对应的移动距离最高位置1;
b)模式串插入:模式串P,只考虑前lmin个字符,计算P的后B个字符的HASH值,若其对应的模式串个数小于给定值N,则插入模式串链表,否则计算P的前B个字符的HASH值,以此为关键字插入对应的AVL树;
2)搜索:比较窗口长度为lmin个字符,在当前比较窗口下,计算后B个字符块的HASH值,取对应的移动距离shift,若最高位不为1,则直接将比较窗口向右移动shift,否则取该HASH值对应的链表或AVL树,在其中搜索,然后将比较窗口向右移动,移动距离为将最高位清0的shift。
进一步地,上述的利用改进的Wu-Manber算法进行多模式串匹配的方法,利用专门的变量存储移动距离为0的hash值,即重新定义一个数组ZERO,当ZERO为1时,表示该hash值对应的块字符为某个模式串的后缀,而SHIFT数组定义为下一次的移动距离,绝对大于0;在搜索过程中,先判断ZERO[hash]是否为1,如果是则进行深层次的匹配,下一次移动距离始终为SHIFT[hash]。
更进一步地,上述的利用改进的Wu-Manber算法进行多模式串匹配的方法,利用模式串的前缀产生hash值,同时以该hash值为关键字构造一个AVL树,将模式串作为数据插入到AVL树的相应结点中;搜索时,首先在AVL树中查找,是否有相应的hash值存在,如果没有直接移动比较窗口,否则在该AVL结点中搜索。
本发明技术方案突出的实质性特点和显著的进步主要体现在:
①在原始的Wu-Manber算法中,如果当前字符块的移动距离为0,则下一次移动距离始终为1,本发明显著增大了此处的移动距离,加快了匹配速度,而且没有增加算法的时间和空间开销;
②将HASH到同一个值的多个模式串以AVL树方式存储,由于AVL树的搜索时间复杂度为O(logn),n为结点个数,因此本发明采用AVL树大大加快了匹配过程。
附图说明
下面结合附图对本发明技术方案作进一步说明:
图1:预处理流程图;
图2:模式串计算shift数组的示意图;
图3:模式串插入到AVL树或链表的示意图;
图4:搜索流程图。
具体实施方式
本发明为Wu-Manber算法的改进,因此先说明原始的Wu-Manber算法,以下是一些术语和匹配流程:
lmin:模式串的最小长度,实际上移动距离及相应HASH值只和模式串的前lmin个字符相关;
B:一次读入的字符个数;
h1,h2:所用的HASH函数,输入为一块字符,输出为一个整数值;
SHIFT:移动数组,HASH所对应的移动距离;
HASH:链表数组,表示后缀hash值相同的模式串链表;
T=t1t2...tn:被比较字符串;
P={p1,p2,...,pr}:模式串;
(一)原始的Wu-Manber算法:
Wu-Manber算法在计算hash值时,只考虑前lmin个字符,即认为所有模式串都是等长的(lmin)。在扫描被比较字符串时,读入一块字符,计算其hash值,得到相应的移动距离shift,如果shift>0,则直接将比较窗口向右移动shift;如果shift=0,则表明该后缀有可能存在于某个模式串中,找到对应的链表(该链表包含所有后缀hash值相同的模式串),遍历其中所有模式串,并提前比较前B个字符的hash值,防止过多的比较运算。
移动数组SHIFT如下生成:
一块字符Bi,如果在所有模式串中都不出现,则该Bi对应的hash值的移动距离为lmin-B+1;如果这块字符存在于某个(或多个)模式串,则找到Bi在模式串中最靠右的位置j及对应的模式串Pi,则移动距离为lmin-B+1-j
以下是Wu-Manber的伪码表示:
Wu-Manber(P={p1,p2,...,pr},T=t1t2...tn)
1.  Preprocessing
2.       用lmin-B+1初始化SHIFT数组
3.       For每个模式串P Do
4.                  pos←lmin-B+1
5.                  Whilepos≤lmin-1 Do
6.                  h←h1(Ppos为后缀的B个字符)
7.                  SHIFT[h]←SHIFT[h]和lmin-pos的最小值
8.                  将P加入到链表HASH[h]中;pos←pos+1
9.                  End of while
10.                 End of for
11.
12.  Searching
13.      pos←lmin
14.      While pos≤n Do
15.            i←h1(tpos为后缀的B个字符)
16.            If SHIFT[i]=0 Then
17.             list←HASH[i]
18.             h←h2(tpos-lmin+1为前缀的B个字符)
19.                foreach pattern in list Do
20.             If h=h2(pattern的前B个字符)Then
21.                            Compare T with this pattern.
22.               End of if
23.            End of foreach
24.              pos←pos+1
25.       Else pos←pos+SHIFT[i]
26.       End of if
27.   End of while
(二)改进的Wu-Manber算法:
伪码的17行和24行,本发明对该算法的改进主要体现在这两行:
1)如果当前shift为0,则下一次的移动距离都为1,此处没有充分利用模式串的有用信息;
2)后缀hash值相同的模式串可能有很多,成百上千个,而此处仅仅是遍历所有的模式串,时间消耗很长。
第一个问题,利用专门的变量来存储移动距离为0的hash值,即重新定义一个数组ZERO,当ZERO(hash)为1时,表示该hash值对应的块字符可能为某个模式串的后缀,而SHIFT数组定义为下一次的移动距离(绝对大于0)。其构造过程如下:
1.  Preprocessing
2.       用lmin-B+1初始化SHIFT数组,用0初始化ZERO数组
3.       For每个模式串P Do
4.            pos←lmin-B+1
5.            While pos≤lmin-2Do
6.            h←h1(Ppos为后缀的B个字符)
7.            SHIFT[h]←SHIFT[h]和lmin-pos的最小值
8.            将P加入到链表HASH[h]中;pos←pos+1
9.            End of while
10.           h←h1(Ppos为后缀的B个字符)
11.           ZERO[h]←l
10.           End of for
在搜索过程中,先判断ZERO[hash]是否为1,如果是则进行深层次的匹配,下一次移动距离始终为SHIFT[hash]。
第二个问题,利用模式串的前缀(前B个字符)产生hash值,同时以该hash值为关键字构造一个AVL树,将模式串作为数据插入到AVL树的相应结点中;搜索时,不需要遍历所有后缀hash值相同的模式串了,首先在AVL树中查找,是否有相应的hash值存在,如果没有直接移动比较窗口,否则在该AVL结点中搜索。
对于预处理模式串:依照某个方式对每个模式串进行HASH处理,计算每个HASH值对应的移动距离;对于HASH到同一个值的多个模式串,采用AVL树存储,以加快匹配速度。
对于搜索:每次读取一块字符,并计算其HASH值,取该HASH值对应的移动距离,如果距离大于0,则直接移动比较窗口继续搜索,否则在该HASH值对应的AVL树中搜索,在AVL树中搜索完成后移动比较窗口继续搜索。
本发明完整过程如下:
1)预处理模式串:计算每个模式串对应的SHIFT数组,并将该串插入对应的链表或AVL树,参见图1;
a)计算SHIFT数组:模式串P,只考虑P的前lmin个字符,每B个字符为一块(先不考虑最后的一块),计算HASH值,设该HASH值对应的移动距离(不考虑最高位)s1,该字符块到模式串末端(仅lmin个字符长)的距离为s2(s2>0),则该HASH值对应的移动距离重新置为s1和s2的最小值;计算P末端的B个字符的HASH值,将该HASH值对应的移动距离最高位置1,参见图2;
b)模式串插入:模式串P(只考虑前lmin个字符),计算P的后B个字符的HASH值,若其对应的模式串个数小于给定值N,则插入模式串链表,否则计算P的前B个字符的HASH值,以此为关键字插入对应的AVL树,参见图3;
2)搜索:比较窗口长度为lmin个字符,在当前比较窗口下,计算后B个字符块的HASH值,取对应的移动距离shift,若最高位不为1,则直接将比较窗口向右移动shift,否则取该HASH值对应的链表或AVL树,在其中搜索,然后将比较窗口向右移动,移动距离为将最高位清0的shift,参见图4。
由上可见,本发明方法相当于以空间换取时间,多定义了一个ZERO数组来达到加速匹配的目的。但事实上,ZERO数组只用到0和1两个值,完全可以用一个bit来表示,为此将ZERO数组并入SHIFT数组,当shift=SHIFT[hash]时,shift的最高位存储的是ZERO的信息,即如果最高位为0,则直接移动比较窗口,否则进行深层次的比较。
将后缀对应hash值相同的模式串,依据前缀对应的hash值为关键字创建一个AVL树,由于AVL树的搜索时间复杂度为O(logn),因此可以大大加快匹配速度。但是由于AVL树同样占用空间,需要在时间和空间上作权衡,做法是,当如此的模式串个数小于某个给定值(比如为2)时,不生成AVL树,直接用链表存储,只有个数大于等于给定值时才构造AVL树。
综上所述,利用专门的变量表示某个HASH值对应的移动距离是否为0,而移动距离则重新定义为下一次比较窗口的移动距离,该数值绝对大于0;对比Wu-Manber算法,它在移动距离为0时,下一次的移动距离始终为1,因此本发明增大了移动距离,显著加快了匹配过程。将HASH到同一个值的多个模式串以AVL树方式存储,由于AVL树的搜索时间复杂度为O(logn),n为结点个数,因此本发明采用AVL树大大加快了匹配过程。
以上仅是本发明的具体应用范例,对本发明的保护范围不构成任何限制。凡采用等同变换或者等效替换而形成的技术方案,均落在本发明权利保护范围之内。

Claims (3)

1.利用改进的Wu-Manber算法进行多模式串匹配的方法,包括以下步骤——
1)预处理模式串:计算每个模式串对应的SHIFT数组,并将该串插入对应的链表或AVL树;
a)计算SHIFT数组:模式串P,只考虑P的前lmin个字符,每B个字符为一块,计算HASH值,设该HASH值对应的移动距离s1,该字符块到模式串末端的距离为s2,则该HASH值对应的移动距离重新置为s1和s2的最小值;计算P末端的B个字符的HASH值,将该HASH值对应的移动距离最高位置1;
b)模式串插入:模式串P,只考虑前lmin个字符,计算P的后B个字符的HASH值,若其对应的模式串个数小于给定值N,则插入模式串链表,否则计算P的前B个字符的HASH值,以此为关键字插入对应的AVL树;
2)搜索:比较窗口长度为lmin个字符,在当前比较窗口下,计算后B个字符块的HASH值,取对应的移动距离shift,若最高位不为1,则直接将比较窗口向右移动shift,否则取该HASH值对应的链表或AVL树,在其中搜索,然后将比较窗口向右移动,移动距离为将最高位清0的shift。
2.根据权利要求1所述的利用改进的Wu-Manber算法进行多模式串匹配的方法,其特征在于:利用专门的变量存储移动距离为0的hash值,即重新定义一个数组ZERO,当ZERO为1时,表示该hash值对应的块字符为某个模式串的后缀,而SHIFT数组定义为下一次的移动距离,绝对大于0;在搜索过程中,先判断ZERO[hash]是否为1,如果是则进行深层次的匹配,下一次移动距离始终为SHIFT[hash]。
3.根据权利要求1所述的利用改进的Wu-Manber算法进行多模式串匹配的方法,其特征在于:利用模式串的前缀产生hash值,同时以该hash值为关键字构造一个AVL树,将模式串作为数据插入到AVL树的相应结点中;搜索时,首先在AVL树中查找,是否有相应的hash值存在,如果没有直接移动比较窗口,否则在该AVL结点中搜索。
CN2008100197279A 2008-03-13 2008-03-13 利用改进的Wu-Manber算法进行多模式串匹配的方法 Active CN101251845B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100197279A CN101251845B (zh) 2008-03-13 2008-03-13 利用改进的Wu-Manber算法进行多模式串匹配的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100197279A CN101251845B (zh) 2008-03-13 2008-03-13 利用改进的Wu-Manber算法进行多模式串匹配的方法

Publications (2)

Publication Number Publication Date
CN101251845A true CN101251845A (zh) 2008-08-27
CN101251845B CN101251845B (zh) 2010-06-09

Family

ID=39955236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100197279A Active CN101251845B (zh) 2008-03-13 2008-03-13 利用改进的Wu-Manber算法进行多模式串匹配的方法

Country Status (1)

Country Link
CN (1) CN101251845B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901257A (zh) * 2010-07-21 2010-12-01 北京理工大学 一种多字符串匹配方法
CN102184205A (zh) * 2011-04-28 2011-09-14 哈尔滨工业大学 基于可扩展精度混沌哈希的多模式串匹配算法
CN102609450A (zh) * 2012-01-10 2012-07-25 顾乃杰 一种按字长匹配的多模式串匹配方法
CN104881439A (zh) * 2015-05-11 2015-09-02 中国科学院信息工程研究所 一种空间高效的多模式串匹配方法和系统
CN105426412A (zh) * 2015-11-03 2016-03-23 北京锐安科技有限公司 多模式的串匹配方法和装置
CN105701093A (zh) * 2014-11-24 2016-06-22 中兴通讯股份有限公司 基于自动机的模式匹配的方法及装置
CN113241121A (zh) * 2021-04-26 2021-08-10 哈尔滨理工大学 一种基于mpi的基因序列精确匹配的方法
CN113347214A (zh) * 2021-08-05 2021-09-03 湖南戎腾网络科技有限公司 一种高频状态匹配方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538322B (zh) * 2003-04-14 2010-04-21 中兴通讯股份有限公司 一种用于消除字符串模糊匹配冗余的过滤方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901257A (zh) * 2010-07-21 2010-12-01 北京理工大学 一种多字符串匹配方法
CN101901257B (zh) * 2010-07-21 2012-07-04 北京理工大学 一种搜索引擎中的多字符串匹配方法
CN102184205A (zh) * 2011-04-28 2011-09-14 哈尔滨工业大学 基于可扩展精度混沌哈希的多模式串匹配算法
CN102184205B (zh) * 2011-04-28 2016-04-13 哈尔滨工业大学 基于可扩展精度混沌哈希的多模式串匹配方法
CN102609450A (zh) * 2012-01-10 2012-07-25 顾乃杰 一种按字长匹配的多模式串匹配方法
CN102609450B (zh) * 2012-01-10 2014-07-23 顾乃杰 一种按字长匹配的多模式串匹配方法
CN105701093A (zh) * 2014-11-24 2016-06-22 中兴通讯股份有限公司 基于自动机的模式匹配的方法及装置
CN104881439A (zh) * 2015-05-11 2015-09-02 中国科学院信息工程研究所 一种空间高效的多模式串匹配方法和系统
CN104881439B (zh) * 2015-05-11 2019-03-22 中国科学院信息工程研究所 一种多模式串匹配方法和系统
CN105426412A (zh) * 2015-11-03 2016-03-23 北京锐安科技有限公司 多模式的串匹配方法和装置
CN113241121A (zh) * 2021-04-26 2021-08-10 哈尔滨理工大学 一种基于mpi的基因序列精确匹配的方法
CN113347214A (zh) * 2021-08-05 2021-09-03 湖南戎腾网络科技有限公司 一种高频状态匹配方法及系统

Also Published As

Publication number Publication date
CN101251845B (zh) 2010-06-09

Similar Documents

Publication Publication Date Title
CN101251845B (zh) 利用改进的Wu-Manber算法进行多模式串匹配的方法
CN102768681B (zh) 一种用于搜索输入的推荐系统及方法
Amir et al. Text indexing and dictionary matching with one error
CN109902142B (zh) 一种基于编辑距离的字符串模糊匹配和查询方法
CN104268280A (zh) 一种基于键值数据库的层次化存储与查询方法
Amir et al. Pattern matching in hypertext
Vinga et al. Pattern matching through Chaos Game Representation: bridging numerical and discrete data structures for biological sequence analysis
CN105515997B (zh) 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN102799600B (zh) 一种基于编码关联的多模式匹配算法及系统
CN105096944A (zh) 语音识别方法及装置
Tomohiro et al. Palindrome pattern matching
CN108509505A (zh) 一种基于分区双数组Trie的字符串检索方法及装置
CN108628907A (zh) 一种用于基于Aho-Corasick的Trie树多关键词匹配的方法
CN104268176A (zh) 一种基于搜索关键词的推荐方法及系统
CN109446293A (zh) 一种并行的高维近邻查询方法
Breslauer et al. Simple real-time constant-space string matching
CN110532284B (zh) 海量数据存储和检索方法、装置、计算机设备及存储介质
Hirvola et al. Approximate online matching of circular strings
Ganguly et al. A linear space data structure for range LCP queries
Nakashima et al. The position heap of a trie
CN109657108B (zh) 一种域名资产数据存储和查询方法和系统
CN108763170A (zh) 常数工作空间并行构造后缀数组的方法及系统
Amir et al. Pattern matching in hypertext
Jansson et al. A fast algorithm for optimal alignment between similar ordered trees
Gawrychowski et al. Validating the Knuth-Morris-Pratt failure function, fast and online

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant