一种对WuManber算法进行测试的方法和系统转让专利

申请号 : CN201110161094.7

文献号 : CN102831051B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张宇刘萍刘燕兵郭莉陈训逊李楠宁薛晨

申请人 : 中国科学院计算技术研究所国家计算机网络与信息安全管理中心

摘要 :

本发明公开了一种对WuManber算法进行测试的方法和系统。所述方法,包括下列步骤:根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;对WuManber算法使用所述测试数据进行测试,获得WuManber算法的最低运算速度。

权利要求 :

1.一种对WuManber算法进行测试的方法,其特征在于,所述方法,包括下列步骤:步骤100,根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;该步骤100还包括:步骤110,根据模式串集合以及WuManber算法使用的散列函数,计算HASH表及HASH表的长度;

步骤120,根据所述HASH表的长度以及HASH表每一项通过散列函数对应的字符块生成有向无回路图;

步骤130,根据构造的所述有向无回路图,计算从起点到终点的一条最长路径,将路径上的标记组成的字符串记为L,L的长度为n-(lmin-b),其中,n为所述测试数据的长度,b为字符块B的长度,lmin为所述模式串的最短长度;

步骤140,将所述字符串L前面增加长度为lmin-b的任意属于字符集Σ的字符串作为要构造的测试数据,并将所述测试数据存储到外部存储器中;

步骤200,对WuManber算法使用所述测试数据进行测试,获得WuManber算法的最低运算速度。

2.根据权利要求1所述的对WuManber算法进行测试的方法,其特征在于,所述步骤

110,包括下列步骤:

步骤111,根据所述模式串集合以及WuManber算法使用的散列函数计算出HASH表;

步骤112,计算所述HASH表每一列的长度w。

3.根据权利要求2所述的对WuManber算法进行测试的方法,其特征在于,所述步骤

111,包括下列步骤:

步骤111a,根据配置信息获取字符集的大小σ和字符块大小b;

步骤111b,根据所述模式串集合计算模式串个数r和模式串最短长度lmin;

步骤111c,根据计算模式串集合中每个模式串对应的字符块和WuManber算法使用的散列函数计算出每个模式串对应的HASH表的表项,构造出HASH表。

4.根据权利要求1所述的对WuManber算法进行测试的方法,其特征在于,所述步骤

120,包括下列步骤:

步骤121,将结点vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]加到图G中,vk,π,s表示长度为k以π结尾并且当前需要跳跃s个字符的文本;

步骤122,根据公式1:

和公式2:π'=Link1(π,θ),s'=SHIFT[(π)],将边e(vk,π,s,vk+1,π',s'),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到图G中,标记为θ;

步骤123,根据公式3:

计算

边的权值c(e(vk,π,s,vk+1,π',s'));

步骤124,将起点Vsource和终点Vsink加到所述有向无回路图中:Vsource指向全部vB,π,SHIFT[h(π)],θ∈Σ,π∈ N,边上 的权值为 HASH[h(Link2(π,θ))],标记 为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为

0,不需要标记,其中构造字符串的方法Link1(π,θ),π∈N,θ∈Σ,当b>2时,表示π的后b-2个字符加上θ组成字符串,构造字符串的方法Link2(π,θ),π∈N,θ∈Σ,表示以π开头θ结尾长度为b的字符串。

5.一种对WuManber算法进行测试的系统,其特征在于,所述系统,包括:测试数据生成模块,用于根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;该测试数据生成模块还包括:数据预处理单元,用于根据模式串集合以及WuManber算法使用的散列函数,计算HASH表及HASH表的长度;

数据整理模块,用于根据所述HASH表的长度以及HASH表每一项通过散列函数对应的字符块生成有向无回路图;

计算模块,用于根据构造的所述有向无回路图,计算从起点到终点的一条最长路径,将路径上的标记组成的字符串记为L,L的长度为n-(lmin-b),其中,n为所述测试数据的长度,b为字符块B的长度,lmin为所述模式串的最短长度;

数据输出模块,用于将所述字符串L前面增加长度为lmin-b的任意属于字符集Σ的字符串作为要构造的测试数据,并将所述测试数据存储到外部存储器中;

测试模块,用于对WuManber算法使用所述测试数据进行测试,获得WuManber算法的最低运行速度。

6.根据权利要求5所述的对WuManber算法进行测试的系统,其特征在于,所述数据预处理单元,包括:HASH表生成模块,用于根据所述模式串集合以及WuManber算法使用的散列函数计算出HASH表;

长度计算模块,用于计算所述HASH表每一列的长度w。

7.根据权利要求6所述的对WuManber算法进行测试的系统,其特征在于,所述HASH表生成模块,包括:配置信息分析模块,用于根据配置信息获取字符集的大小σ和字符块大小b;

模式串分析模块,用于根据所述模式串集合计算模式串个数r和模式串最短长度lmin;

HASH表输出模块,用于根据计算模式串集合中每个模式串对应的字符块和WuManber算法使用的散列函数计算出每个模式串对应的HASH表的表项,构造出HASH表。

8.根据权利要求5所述的对WuManber算法进行测试的系统,其特征在于,所述数据整理模块,包括:中间节点添加模块,用于将结点vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]加到图G中,vk,π,s表示长度为k以π结尾并且当前需要跳跃s个字符的文本;

边添加模块,用于根据公式:

和公式:π'=Link1(π,θ),s'=SHIFT[(π)],将边e(vk,π,s,vk+1,π',s'),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到图G中,标记为θ;

权值计算模块,用于根据公式:

计算

边的权值c(e(vk,π,s,vk+1,π',s'));

端点计算模块,用于将起点Vsource和终点Vsink加到所述有向无回路图中:Vsource指向全部vB,π,SHIFT[h(π)],θ∈Σ,π∈N,边上的权值为HASH[h(Link2(π,θ))],标记为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为

0,不标记,其中构造字符串的方法Link1(π,θ),π∈N,θ∈Σ,当b>2时,表示π的后b-2个字符加上θ组成字符串,构造字符串的方法Link2(π,θ),π∈N,θ∈Σ,表示以π开头θ结尾长度为b的字符串。

说明书 :

一种对WuManber算法进行测试的方法和系统

技术领域

[0001] 本发明涉及多模式串匹配技术领域,特别是涉及一种对WuManber算法进行测试的方法和系统。

背景技术

[0002] 多模式串匹配是计算机科学领域的一个经典问题,对它的研究已经持续了几十年,已有的算法也有几百个。多模式串匹配算法广泛的应用在信息检索、信息过滤、病毒检测、入侵检测、计算生物学等方面。近年来,随着网络信息安全应用的发展,多模式串匹配技术作为其核心技术之一,也得到了很大的发展,尤其是在大规模、超大规模的串匹配、模糊匹配、正则匹配、硬件匹配技术等方面,都随着应用的强烈需求而迅速发展。
[0003] 多模式串匹配算法的应用环境有模式串集合本身、运行机器、输入文本等几个方面,它们都对算法的性能有影响。对于一个特定的多模式串匹配的应用,模式串集合和运行机器都是固定的,只有输入文本是一直在变化的,因此对于不同的输入文本,检测的速度会有变化。因此,通过设计相应的检测数据,利用多模式串匹配算法检测该测试数据,以产生最多的检测次数,使得多模式串匹配算法的测试速度剧烈下降,以寻找可以使多模式串匹
配算法最低速度提高的改进方法。
[0004] WuManber算法是一种常用的多模式串匹配算法,它是Boyer-Moore算法的一种派生形式。它采用了Boyer-Moore算法的框架,使用长度为b的字符块B(block character)
而不是单个字符来计算坏字符(bad-character)的距离表SHIFT。此外,在进行匹配的时
候,它使用散列表HASH选择模式串集合中的一个子集与当前文本进行匹配验证,减少无谓
的运算。WuManber算法的执行时间主要依赖模式串集合中最短的模式串长度,它不会随着
模式串集合大小的增加而成比例增长,其时间要远少于使用每一个模式串和Boyer-Moore
算法对文本进行匹配的时间总和。
[0005] WuManber算法在预处理阶段,主要构造SHIFT表和HASH表,图1是根据模式串集合{aba,abba,bbb}在字符块长度为2,字符集大小为2时构造的SHIFT表和HASH表的示意
图;如图1所示。在匹配阶段,求出当前匹配窗口内文本片断的末尾块字符的散列值h(B),如果该散列值对应的转移距离SHIFT[h(B)]大于0,则当前窗口内文本片断不匹配,将匹配
窗口向右移动SHIFT[h(B)]位;否则当前窗口内的文本可能和某个模式串匹配,利用散列
值h(B)选取模式串的一个子集HASH[h(B)],逐个与文本进行验证,以得到最终的匹配成功
结果。
[0006] 由WuManber算法的原理可以看出,算法的匹配时间主要消耗在两个方面:一个是计算当前窗口的散列值,另外一个是当存在一个可能的匹配时(SHIFT值为0时),对相应
HASH表项后链接的多个模式串进行一一验证。显然,后面的一个耗时要远远大于前面一个。
因此,如果一组数据能使WuManber算法产生较多验证次数,则检测这组数据的速度会大大
下降。

发明内容

[0007] 本发明的目的在于提供一种对WuManber算法进行测试的方法和系统,通过构造测试数据,对WuManber算法进行测试,来寻找可以使匹配模块最低速度提高的改进方法。
[0008] 为实现本发明的目的而提供的一种对WuManber算法进行测试的方法,其特征在于,所述方法,包括下列步骤:
[0009] 步骤100,根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;
[0010] 步骤200,对WuManber算法使用所述测试数据进行测试,获得WuManber算法的最低运算速度。
[0011] 所述步骤100,包括下列步骤:
[0012] 步骤110,根据模式串集合以及WuManber算法使用的散列函数,计算HASH表及HASH表的长度;
[0013] 步骤120,根据所述HASH表的长度以及HASH表每一项通过散列函数对应的字符块生成有向无回路图;
[0014] 步骤130,根据构造的所述有向无回路图,计算从起点到终点的一条最长路径,将路径上的标记组成的字符串记为L,L的长度为n-(lmin-b),其中,n为所述测试数据的长度,b为字符块B的长度,lmin为所述模式串的最短长度;
[0015] 步骤140,将所述字符串L前面增加长度为lmin-b的任意属于字符集∑的字符串作为要构造的测试数据,并将所述测试数据存储到外部存储器中。
[0016] 所述步骤110,包括下列步骤:
[0017] 步骤111,根据所述模式串集合以及WuManber算法使用的散列函数计算出HASH表;
[0018] 步骤112,计算所述HASH表每一列的长度w。
[0019] 所述步骤111,包括下列步骤:
[0020] 步骤111a,根据所述配置信息获取字符集的大小σ和字符块大小b;
[0021] 步骤111b,根据所述模式串集合计算模式串个数r和模式串最短长度lmin;
[0022] 步骤111c,根据计算模式串集合中每个模式串对应的字符块和WuManber算法使用的散列函数计算出每个模式串对应的HASH表的表项,,构造出HASH表。
[0023] 所述步骤120,包括下列步骤:
[0024] 步骤121,将结点vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]加到图G中,vk,π,s表示长度为k以π结尾并且当前需要跳跃s个字符的文本;
[0025] 步骤122,根据公式1:
[0026]
[0027] 和公式2:π′=Link1(π,θ),s′=SHIFT[(π)],
[0028] 将边e(vk,π,s,vk+1,π′,s′),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到图G中,标记为θ;
[0029] 步骤123,根据公式3:
[0030]计算边的权值c(e(vk,π,s,vk+1,π′,s′));
[0031] 步骤124,将起点Vsource和终点Vsink加到所述有向无回路图中:Vsource指向全部vB,π,SHIFT[h(π)],θ∈∑,π∈N,边上的权值为HASH[h(Link2(π,θ))],标记为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为0,不需要标记。
[0032] 为实现本发明的目的还提供一种对WuManber算法进行测试的系统,所述系统,包括:
[0033] 测试数据生成模块,用于根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;
[0034] 测试模块,用于对WuManber算法使用所述测试数据进行测试,获得WuManber算法的最低运行速度。
[0035] 所述测试数据生成模块,包括:
[0036] 数据预处理单元,用于根据模式串集合以及WuManber算法使用的散列函数,计算HASH表及HASH表的长度;
[0037] 数据整理模块,用于根据所述HASH表的长度以及HASH表每一项通过散列函数对应的字符块生成有向无回路图;
[0038] 计算模块,用于根据构造的所述有向无回路图,计算从起点到终点的一条最长路径,将路径上的标记组成的字符串记为L,L的长度为n-(lmin-b),其中,n为所述测试数据的长度,b为字符块B的长度,lmin为所述模式串的最短长度;
[0039] 数据输出模块,用于将所述字符串L前面增加长度为lmin-b的任意属于字符集∑的字符串作为要构造的测试数据,并将所述测试数据存储到外部存储器中。
[0040] 所述数据预处理单元,包括:
[0041] HASH表生成模块,用于根据所述模式串集合以及WuManber算法使用的散列函数计算出HASH表;
[0042] 长度计算模块,用于计算所述HASH表每一列的长度w。
[0043] 所述HASH表生成模块,包括:
[0044] 配置信息分析模块,用于根据所述配置信息获取字符集的大小σ和字符块大小b;
[0045] 模式串分析模块,用于根据所述模式串集合计算模式串个数r和模式串最短长度lmin;
[0046] HASH表输出模块,用于根据计算模式串集合中每个模式串对应的字符块和WuManber算法使用的散列函数计算出每个模式串对应的HASH表的表项,构造出HASH表。
[0047] 所述数据整理模块,包括:
[0048] 中间节点添加模块,用于将结点vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]加到图G中,vk,π,s表示长度为k以π结尾并且当前需要跳跃s个字符的文本;
[0049] 边添加模块,用于根据公式:
[0050]
[0051] 和公式:π′=Link1(π,θ),s′=SHIFT[(π)],
[0052] 将边e(vk,π,s,vk+1,π′,s′),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到图G中,标记为θ;
[0053] 权值计算模块,用于根据公式:
[0054]计算边的权值c(e(vk,π,s,vk+1,π′,s′));
[0055] 端点计算模块,用于将起点Vsource和终点Vsink加到所述有向无回路图中:Vsource指向全部vB,π,SHIFT[h(π)],θ∈∑,π∈N,边上的权值为HASH[h(Link2(π,θ))],标记为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为0,不标记。
[0056] 本发明的有益效果是:
[0057] 1、采用本发明的一种对WuManber算法进行测试的方法和系统,能够用来对使用WuManber算法作为匹配模块的系统进行测试。使用匹配模块检测设计的检测数据,能产生
最多的检测次数,使得匹配模块速度剧烈下降,这时可以检测该系统是否可以工作在这种
极端环境下。如果该系统在匹配模块检测设计生成的数据时,依然可以稳定工作,则说明该系统在任何真实环境下都可以容忍匹配模块的检测速度。
[0058] 2、采用本发明的一种对WuManber算法进行测试的方法和系统,能够改进使用WuManber算法作为匹配模块的系统。很多系统对匹配模块都有最低速度的要求,使用
WuManber算法实现的匹配模块的检测速度跟模式串集合和散列函数有很大的关系,可以调
整模式串集合的内容和散列函数,使用设计生成的数据进行测试,来寻找可以使匹配模块
最低速度提高的改进方法。

附图说明

[0059] 图1是根据模式串集合{aba,abba,bbb}在字符块长度为2,字符集大小为2时构造的SHIFT表和HASH表的示意图;
[0060] 图2是本发明的一种对WuManber算法进行测试的方法的步骤流程图;
[0061] 图3是本发明中生成能够使WuManber算法验证次数最多的测试数据的步骤流程图;
[0062] 图4是本发明中对数据进行预处理的步骤流程图;
[0063] 图5是本发明中计算HASH表的步骤流程图;
[0064] 图6是本发明中构造有向无回路图的步骤流程图;
[0065] 图7是本发明的一种对WuManber算法进行测试的系统的结构示意图;
[0066] 图8为构造的有向无环图。

具体实施方式

[0067] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种对WuManber算法进行测试的方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0068] 本发明的一种对WuManber算法进行测试的方法和系统,通过构造测试数据,在利用WuManber算法检测该测试数据时,能够产生最多的检测次数,使得WuManber算法的测试
速度剧烈下降以寻找可以使WuManber算法的最低速度提高的改进方法。
[0069] 在后面的描述中,使用符号如下:字符集为∑,|∑|=σ,模式串集合为P={p1,p2,...,pr},模式串的个数为|P|=r,模式串的最短长度为lmin,文本T的长度为n,字符块B的长度为b。长度为b-1的字符串集合记为N。当前搜索窗口的最后b个字符为B′,HASH[h(B′)]对应了一个至少有一个模式串的候选模式串链表,它的长度记为w。设构造
字符串的方法Link1(π,θ),π∈N,θ∈∑,当b>2时,表示π的后b-2个字符加上θ
组成字符串,例如:b=3,π=ab,θ=c则Link1(π,θ)=bc,当b=2时,Link1(π,
θ)=θ,π∈N,θ∈∑。设构造字符串的方法Link2(π,θ),π∈N,θ∈∑,表示以
π开头θ结尾长度为b的字符串,例如:b=3,π=ab,θ=c则Link2(π,θ)=abc。
[0070] 下面结合上述目标详细介绍本发明的一种对WuManber算法进行测试的方法,图2是本发明的一种对WuManber算法进行测试的方法的步骤流程图,如图2所示,所述方法,包括下列步骤:
[0071] 步骤100,根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;
[0072] 本发明的重点就在于设计生成能够使WuManber算法验证次数最多的测试数据,下面详细说明具体的生成方法。图3是本发明中生成能够使WuManber算法验证次数最多
的测试数据的步骤流程图,如图3所示,所述步骤100,包括下列步骤:
[0073] 步骤110,数据预处理:通过模式串集合以及WuManber算法使用的散列函数计算HASH表及所述HASH表每一列的长度w;
[0074] 图4是本发明中对数据进行预处理的步骤流程图,如图4所示,所述步骤110,包括下列步骤:
[0075] 步骤111,根据模式串集合以及WuManber算法使用的散列函数计算出HASH表;
[0076] 图5是本发明中计算HASH表的步骤流程图,如图5所示,所述步骤111,包括下列步骤:
[0077] 步骤111a,根据配置信息获取字符集的大小σ和字符块大小b;
[0078] 步骤111b,根据所述模式串集合计算模式串个数r和模式串最短长度lmin;
[0079] 步骤111c,根据计算模式串集合中每个模式串对应的字符块和WuManber算法使用的散列函数计算出每个模式串对应的HASH表的表项,构造HASH表。
[0080] 其中,所述配置信息文件和模式串集合文件存储在外部存储空间中。配置信息文件中记录了WuManber算法使用的字符集的大小,模式串集合文件中记录了WuManber算法
检测数据时使用的所有模式串。
[0081] 步骤112,计算所述HASH表每一列的长度w;
[0082] HASH表的每一列对应着若干模式串,这些模式串的字符块通过散列函数计算出的值是相同的,对应着HASH表的同一项,这些模式串的个数即为HASH表每一列的长度,w=
HASH[h(B′)]。
[0083] 步骤120,构造有向无回路图:根据所述HASH表的长度以及HASH表每一项通过散列函数对应的字符块生成有向无回路图G;
[0084] 图G中包含若干结点和边,根据步骤110中数据预处理步骤得到的信息分别构造结点和边,每条边包含两个信息:权值和标记。
[0085] 构造结点:图G中结点包括所有vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]以及起点Vsource和终点Vsink。
[0086] 构造边及其权值和标记:根据公式1和公式2,将边e(vk,π,s,vk+1,π′,s′),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到G中,标记为θ,根据公式3计算边的权值c(e(vk,π,s,vk+1,π′,s′)),Vsource指向全部vB,π,SHIFT[h(π)],θ∈∑,π∈N,边上的权值为HASH[h(Link2(π,θ))],标记为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为0,不需要标记。
[0087] 图6是本发明中构造有向无回路图的步骤流程图,如图6所示,所述步骤120,包括下列步骤:
[0088] 步骤121,将结点vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]加到图G中,vk,π,s表示长度为k以π结尾并且当前需要跳跃s个字符的文本;
[0089] 步骤122,根据公式1:
[0090]
[0091] 和公式2:π′=Link1(π,θ),s ′=SHIFT[(π)],
[0092] 将边e(vk,π,s,vk+1,π′,s′),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到图G中,标记为θ;
[0093] 步骤123,根据公式3:
[0094]计算边的权值c(e(vk,π,s,vk+1,π′,s′));
[0095] 步骤124,将起点Vsource和终点Vsink加到图G中:Vsource指向全部vB,π,SHIFT[h(π)],θ∈∑,π∈N,边上的权值为HASH[h(Link2(π,θ))],标记为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为0,不需要标记。
[0096] 步骤130,计算图G中最长路径:根据构造的有向无回路图G,计算从起点到终点的一条最长路径,将路径上的标记组成的字符串记为L,L的长度为n-(lmin-b);
[0097] 步骤140,根据所述最长路径,生成测试数据:将所述字符串L前面增加长度为lmin-b的任意属于∑的字符串,即为要构造的测试数据,将测试数据存储到外部存储器中。
[0098] 步骤200,对WuManber算法使用设计生成的所述测试数据进行测试,获得WuManber算法的最低运算速度。
[0099] 相应于本发明的一种对WuManber算法进行测试的方法和,还提供一种对WuManber算法进行测试的系统,图7是本发明的一种对WuManber算法进行测试的系统的结
构示意图,如图7所示,所述系统,包括:
[0100] 测试数据生成模块1,用于根据模式串集合以及WuManber算法使用的散列函数,设计生成能够使WuManber算法验证次数最多的测试数据;
[0101] 测试模块2,用于对WuManber算法使用所述测试数据进行测试,获得WuManber算法的最低运行速度。
[0102] 所述测试数据生成模块1,包括:
[0103] 数据预处理单元11,用于根据模式串集合以及WuManber算法使用的散列函数,计算HASH表及HASH表的长度;
[0104] 数据整理模块12,用于根据所述HASH表的长度以及HASH表对应的字符块生成有向无回路图;
[0105] 计算模块13,用于根据构造的所述有向无回路图,计算从起点到终点的一条最长路径,将路径上的标记记为L,L长度为n-(lmin-b),其中,n为所述测试数据的长度,b为字符块B的长度,lmin为所述模式串的最短长度;
[0106] 数据输出模块14,用于将所述L前面增加(lmin-b)个任意属于字符集∑的字符作为要构造的测试数据,并将所述测试数据存储到外部存储器中。
[0107] 所述数据预处理单元11,包括:
[0108] HASH表生成模块111,用于根据所述模式串集合以及WuManber算法使用的散列函数计算出HASH表;
[0109] 长度计算模块112,用于计算所述HASH表每一列的长度w。
[0110] 所述HASH表生成模块111,包括:
[0111] 配置信息分析模块111a,用于根据所述配置信息获取字符集的大小σ和字符块大小b;
[0112] 模式串分析模块112b,用于根据所述模式串集合计算模式串个数r和模式串最短长度lmin;
[0113] HASH表输出模块113c,用于将HASH表每一项对应的模式串集合和集合的大小作为HASH表每一项的长度HASH[h(B′)],构造出HASH表。
[0114] 所述数据整理模块12,包括:
[0115] 中间节点添加模块121,用于将结点vk,π,s,k∈[b,n],π∈N,s∈[1,lmin-b+1]加到图G中,vk,π,s表示长度为k以π结尾并且当前需要跳跃s个字符的文本;
[0116] 边添加模块122,用于根据公式:
[0117]
[0118] 和公式:π′=Link1(π,θ),s′=SHIFT[(π)],
[0119] 将边e(vk,π,s,vk+1,π′,s′),k∈[b,n-1],π∈N,s∈[1,lmin-b+1]加到图G中,标记为θ;
[0120] 权值计算模块123,用于根据公式:
[0121]计算边的权值c(e(vk,π,s,vk+1,π′,s′));
[0122] 端点计算模块124,用于将起点Vsource和终点Vsink加到所述有向无回路图中:Vsource指向全部vB,π,SHIFT[h(π)],θ∈∑,π∈N,边上的权值为HASH[h(Link2(π,θ))],标记为Link2(π,θ);全部vn,π,s,π∈N,s∈[1,lmin-b+1]节点都指向Vsink,边上的权值全部为0,不需要标记。
[0123] 较佳地,下面结合一实例详细介绍本发明的技术方案:
[0124] 对于模式串集合{aaa,bab,bba,abba},在b=2,σ=2,n=6时,图8为构造的有向无环图G,图中粗线为最短路径。前lmin-b=1个字符可以任意取,这里假设取a。
在图8中,根据权值最大的路径上面的符号信息,可以依次得到字符串abbbb。前面加上字
符a,最终构造出的长度为6的数据为:aabbbb。
[0125] 生成特定长度的测试数据,记录WuManber算法扫描这组数据的时间。用测试数据的长度除以扫描时间,即可得出单位时间扫描数据的长度即WuManber算法的速度。
WuManber算法扫描设计生成的测试数据的速度,是WuManber算法的最低速度,是测试
WuManber算法的一个有效指标。
[0126] 本发明的有益效果在于:
[0127] 1、采用本发明的一种对WuManber算法进行测试的方法和系统,能够用来对使用WuManber算法作为匹配模块的系统进行测试。使用匹配模块检测设计的检测数据,能产生
最多的检测次数,使得匹配模块速度剧烈下降,这时可以检测该系统是否可以工作在这种
极端环境下。如果该系统在匹配模块检测设计生成的数据时,依然可以稳定工作,则说明该系统在任何真实环境下都可以容忍匹配模块的检测速度。
[0128] 2、采用本发明的一种对WuManber算法进行测试的方法和系统,能够改进使用WuManber算法作为匹配模块的系统。很多系统对匹配模块都有最低速度的要求,使用
WuManber算法实现的匹配模块的检测速度跟模式串集合和散列函数有很大的关系,可以调
整模式串集合的内容和散列函数,使用设计生成的数据进行测试,来寻找可以使匹配模块
最低速度提高的改进方法。
[0129] 通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
[0130] 以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。