正则表达式分组方法及装置制造方法

文档序号:6540849阅读:124来源:国知局
正则表达式分组方法及装置制造方法
【专利摘要】本发明提供一种正则表达式分组方法及装置,将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据至少一组表达式序列分组确定相应的至少一条染色体,并根据至少一条染色体确定相应的至少一个个体;确定至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;从较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对对应染色体进行交叉操作;对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据变异染色体确定对应的新一代个体;判断是否到达预置收敛次数。能够在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗。
【专利说明】正则表达式分组方法及装置
【技术领域】
[0001]本发明涉及计算机领域,尤其是一种正则表达式分组方法及装置。
【背景技术】
[0002]深度检测技术是一种基于应用层的流量监测和控制技术,其克服了传统的网包过滤和状态检测技术只能检测包头而不能检测数据载荷的缺点,通过与事先设定的规则集进行匹配,能够识别、分类或阻止具有特殊数据或者特定载荷的网包,在对抗病毒、垃圾邮件、非法入侵等方面发挥着重要作用。随着网络的发展,深度检测变得越来越复杂。因此,作为深度检测的核心技术之一,正则表达式匹配逐渐取代功能单一的精确字符串匹配,成为深度检测中规则语言的首选。
[0003]正则表达式被通过转换成等价的非确定型有限自动机(NFA)或确定型有限自动机(DFA)来实现模式匹配。NFA状态总数小,存储空间高效,但是在最坏情况下处理每个字符的时间复杂度为ο(η) (η为NFA的状态数目),对存储带宽要求很高,匹配效率低下。DFA在匹配过程中的任意时刻,对于每一字符仅有一种状态跳转可能,匹配效率高,但存在着存储空间开销较大等缺点。随着网络流量的不断增加,对正则表达式匹配引擎的速度要求越来越高;同时,实际网络环境中网包可能乱序到达,在匹配之前必须进行重组,这就要求匹配引擎能够保存中间状态。在一些情况下,DFA存在状态膨胀的问题。例如,由于“.{η}”、
等语法的存在,在将含有这类语法的正则表达式规则合并生成同一个DFA时,状态数会远大于每个规则单独生成的DFA的状态数之和。在最坏情况下,DFA的状态数目甚至呈指数爆炸。
[0004]因此,如何在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗,是实现高效匹配算法需要考虑的关键问题。

【发明内容】

[0005]本发明的目的是,提供一种正则表达式分组方法及装置,能够在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗。
[0006]本发明采用如下技术方案
[0007]—种正则表达式分组方法,包括:
[0008]101、将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据所述至少一组表达式序列分组确定相应的至少一条染色体,并根据所述至少一条染色体确定相应的至少一个个体;
[0009]102、确定所述至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;
[0010]103、从所述较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对所述对应染色体进行交叉操作;
[0011]104、对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据所述变异染色体确定对应的新一代个体;
[0012]105、判断是否到达预置收敛次数;
[0013]若是,则将所述新一代个体中的最优值作为问题的最优解;若否,则对所述新一代个体重复执行步骤102-105,直至到达预置收敛次数。
[0014]可选的,所述步骤104和步骤105之间还包括:
[0015]1041、获取所述较高适应度序列中最高适应度对应的个体,替换所述新一代个体中适应度最差的个体,并获得新一代个体。
[0016]可选的,所述步骤102中确定所述至少一个个体中每个个体的适应度包括:
[0017]对于每一代个体,找出最大DFA状态数和最小DFA状态数,并以最大DFA状态数和最小DFA状态数的和与各个个体的DFA状态数之差作为此个体的适应度。
[0018]可选的,所述步骤104中对经交叉操作后的染色体进行变异操作,获得变异染色体包括:
[0019]对于每一个个体,随机选择其染色体上的一个基因位,以变异概率Pm进行变异,获得变异染色体。
[0020]可选的,所述步骤104中根据所述变异染色体确定对应的新一代个体之后,还包括:
[0021]每产生一代新个体后,找出其适应度最差的个体,并用上一代个体中适应度最优的个体取代新一代个体中适应度最差的个体。
[0022]基于上述技术方案,将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据至少一组表达式序列分组确定相应的至少一条染色体,并根据至少一条染色体确定相应的至少一个个体;确定至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;从较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对对应染色体进行交叉操作;对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据变异染色体确定对应的新一代个体;判断是否到达预置收敛次数。能够在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗。
【专利附图】

【附图说明】
[0023]图1为本发明实施例提供的一种正则表达式分组方法的流程图;
[0024]图2为本发明实施例提供的一种种群的初始化示意图;
[0025]图3为本发明实施例提供的一种交叉前的染色体示意图;
[0026]图4为本发明实施例提供的一种交叉后的染色体示意图;
[0027]图5为本发明实施例提供的一种进行变异操作后形成的四条新的染色体示意图;
[0028]图6为本发明实施例提供的另一种正则表达式分组方法的流程图;
[0029]图7为本发明实施例提供的一种正则表达式分组装置的结构图。
【具体实施方式】
[0030]为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0031]如图1所示,本发明实施例提供一种正则表达式分组方法,包括:
[0032]101、将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据所述至少一组表达式序列分组确定相应的至少一条染色体,并根据所述至少一条染色体确定相应的至少一个个体;
[0033]102、确定所述至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;
[0034]103、从所述较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对所述对应染色体进行交叉操作;
[0035]104、对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据所述变异染色体确定对应的新一代个体;
[0036]105、判断是否到达预置收敛次数;
[0037]若是,则将所述新一代个体中的最优值作为问题的最优解;若否,则对所述新一代个体重复执行步骤102-105,直至到达预置收敛次数。
[0038]可选的,所述步骤104和步骤105之间还包括:
[0039]1041、获取所述较高适应度序列中最高适应度对应的个体,替换所述新一代个体中适应度最差的个体,并获得新一代个体。
[0040]可选的,所述步骤102中确定所述至少一个个体中每个个体的适应度包括:
[0041]对于每一代个体,找出最大DFA状态数和最小DFA状态数,并以最大DFA状态数和最小DFA状态数的和与各个个体的DFA状态数之差作为此个体的适应度。
[0042]可选的,所述步骤104中对经交叉操作后的染色体进行变异操作,获得变异染色体包括:
[0043]对于每一个个体,随机选择其染色体上的一个基因位,以变异概率Pm进行变异,获得变异染色体。
[0044]可选的,所述步骤104中根据所述变异染色体确定对应的新一代个体之后,还包括:
[0045]每产生一代新个体后,找出其适应度最差的个体,并用上一代个体中适应度最优的个体取代新一代个体中适应度最差的个体。
[0046]本发明实施例的方法,将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据至少一组表达式序列分组确定相应的至少一条染色体,并根据至少一条染色体确定相应的至少一个个体;确定至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;从较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对对应染色体进行交叉操作;对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据变异染色体确定对应的新一代个体;判断是否到达预置收敛次数。能够在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗。
[0047]下面详细介绍本发明实施例的正则表达式分组方法。
[0048]目前多核设备的计算单元数目往往是固定的。若分组数目大于计算单元数目,即生成的DFA数目多于并行计算单元数目,DFA匹配引擎的时间处理效率未能达到最优;若分组数目小于单元数目,即生成的DFA数目少于并行计算单元数目,发生计算单元空闲,未能完全利用资源。因此,最适宜的分组数目往往需要视具体情况而定。若多核设备的核心数目为k,正则表达式规则集中的规则数目为N,则分组数确定的优化问题可以描述为:
[0049]对于规模为N的正则表达式集合S=Ir1, r2,..., ri;...}, i e [1,N],分组
数k已知,求k个互不相交的子集R1, R2,...Rk且
【权利要求】
1.一种正则表达式分组方法,其特征在于,包括: 101、将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据所述至少一组表达式序列分组确定相应的至少一条染色体,并根据所述至少一条染色体确定相应的至少一个个体; 102、确定所述至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列; 103、从所述较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对所述对应染色体进行交叉操作; 104、对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据所述变异染色体确定对应的新一代个体; 105、判断是否到达预置收敛次数; 若是,则将所述新一代个体中的最优值作为问题的最优解;若否,则对所述新一代个体重复执行步骤102-105,直至到达预置收敛次数。
2.根据权利要求1所述的正则表达式分组方法,其特征在于,所述步骤104和步骤105之间还包括: 1041、获取所述较高适应度序列中最高适应度对应的个体,替换所述新一代个体中适应度最差的个体,并获得新一代个体。
3.根据权利要求1所述的正则表达式分组方法,其特征在于,所述步骤102中确定所述至少一个个体中每个个体的适应度包括:· 对于每一代个体,找出最大DFA状态数和最小DFA状态数,并以最大DFA状态数和最小DFA状态数的和与各个个体的DFA状态数之差作为此个体的适应度。
4.根据权利要求1所述的正则表达式分组方法,其特征在于,所述步骤104中对经交叉操作后的染色体进行变异操作,获得变异染色体包括: 对于每一个个体,随机选择其染色体上的一个基因位,以变异概率Pm进行变异,获得变异染色体。
5.根据权利要求1所述的正则表达式分组方法,其特征在于,所述步骤104中根据所述变异染色体确定对应的新一代个体之后,还包括: 每产生一代新个体后,找出其适应度最差的个体,并用上一代个体中适应度最优的个体取代新一代个体中适应度最差的个体。
6.一种正则表达式分组装置,其特征在于,包括: 第一模块,用于将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据所述至少一组表达式序列分组确定相应的至少一条染色体,并根据所述至少一条染色体确定相应的至少一个个体; 第二模块,用于确定所述至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列; 第三模块,用于从所述较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对所述对应染色体进行交叉操作; 第四模块,用于对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据所述变异染色体确定对应的新一代个体;第五模块,用于判断是否到达预置收敛次数; 若是,则将所述新一代个体中的最优值作为问题的最优解;若否,则对所述新一代个体重复执行步骤102-105,直至到达预置收敛次数。
7.根据权利要求6所述的正则表达式分组装置,其特征在于,还包括: 第六模块,用于获取所述较高适应度序列中最高适应度对应的个体,替换所述新一代个体中适应度最差的个体,并获得新一代个体。
8.根据权利要求6所述的正则表达式分组装置,其特征在于,所述第二模块具体用于,对于每一代个体,找出最大DFA状态数和最小DFA状态数,并以最大DFA状态数和最小DFA状态数的和与各个个体的DFA状态数之差作为此个体的适应度。
9.根据权利要求6所述的正则表达式分组装置,其特征在于,所述第四模块具体用于,对于每一个个体,随机选择其染色体上的一个基因位,以变异概率Pm进行变异,获得变异染色体。
10.根据权利要求6所述的正则表达式分组装置,其特征在于,所述第四模块具体用于,每产生一代新个体后,找出其适应度最差的个体,并用上一代个体中适应度最优的个体取代新一代个体中适应度最·差的个体。
【文档编号】G06N3/12GK103854056SQ201410099132
【公开日】2014年6月11日 申请日期:2014年3月17日 优先权日:2014年3月17日
【发明者】付哲, 王凯, 李军 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1