基于决策树剪枝的模式匹配方法组成比例

技术编号:13959122 阅读:94 留言:0更新日期:2016-11-02 21:13
本发明专利技术提出一种基于决策树剪枝的模式匹配方法,其结合决策树剪枝方法的简化AC算法,包括自动机的生成、自动机的简化、计算失败指针、存储后缀表与匹配的执行等步骤。本发明专利技术将传统自动机类型模式匹配算法拆分为两个步骤:匹配可能的判定与匹配确认。通过简化自动机判别文本串与模式集中模式串有无匹配的可能,再进行匹配的确认。在保证速度的前提下,本发明专利技术提出的简化方法相比传统自动机类型模式匹配算法内存消耗减少35%‑40%。此外,本发明专利技术通过决策树剪枝方法可有效减小自动机规模,删除对分类判定无用的节点,有效降低传统自动机类型模式匹配的内存消耗。

【技术实现步骤摘要】

本专利技术涉及信息安全
,具体涉及一种基于决策树剪枝(Decision Tree Pruning)的模式匹配方法。
技术介绍
模式匹配算法广泛应用于入侵检测、信息检索、模式识别、基因匹配等众多领域。性能稳定的模式匹配算法是网络入侵检测系统的“倍增器”。基于自动机的模式匹配算法具备性能稳定的特点,其中以AC算法为代表。由于AC算法拥有线性最差时间复杂度,柔性高,可容忍短模式,可抵抗复杂度攻击,因此是目前首选的在线匹配算法之一。然而,随着对模式匹配性能需求的增加,基于自动机类的模式匹配算法成为高性能模式匹配体系结构设计的基础。但此类算法生成的DFSA规模较大,特别对于大规模模式集(10万以上模式集)生成自动机的规模需要大量的内存存储,这大大阻碍了自动机类匹配算法的应用。
技术实现思路
本专利技术所要解决的技术问题是针对现有基于自动机的模式匹配算法需要大量的内存存储的问题,提供一种基于决策树剪枝的模式匹配方法。为解决上述问题,本专利技术是通过以下技术方案实现的:基于决策树剪枝的模式匹配方法,包括如下步骤:步骤A.即根据自动机生成规则,将模式集中的模式串依次添加到自动机中;步骤B.在自动机生成过程中,每一个模式串添加完成,即将此模式串添加到当前节点的输出表中;步骤C.对生成的自动机进行剪枝,去除对分类来说属于非必要的节点,减少自动机节点数量,简化自动机;在对自动机进行剪枝的过程中,生成后缀表;步骤D.计算自动机各节点的状态深度,其中节点的状态深度为该节点距根节点的最短路径长度;步骤E.根据节点状态深度,计算出各节点的失败指针;步骤F.依次取出文本串中字符输入自动机,完成模式匹配。上述步骤C的过程具体为:步骤C1.对自动机的各个分支进行逐个遍历;步骤C2.当从根节点遍历至终端叶子节点的过程中,仅存在终端叶子节点这一个输出节点,即输出节点为1个时,则从终端叶子节点开始向上回溯至最后一个单分枝节点,将该单分枝节点的剪枝标志位置为1,修剪掉该单分枝节点之后的枝叶,并将该单分枝节点的后续枝叶包含的后缀以字符串的形式存储于后缀表;步骤C3.当从根节点遍历至终端叶子节点的过程中,存在除终端叶子节点这一个输出节点之外的其他输出节点,即输出节点为2个以上时,则从终端叶子节点开始向上回溯至倒数第二个输出节点,将该倒数第二个输出节点的剪枝标志位置为1,修剪掉该倒数第二个输出节点之后的枝叶,并将该倒数第二个输出节点的后续枝叶包含的后缀以字符串的形式存储于后缀表。上述步骤E的过程具体为:步骤E1.将自动机的根节点的失败指针(失败指针为节点匹配失败后的跳转方向指针)指向根节点;步骤E2.将自动机中状态深度为1的节点的失败指针也指向根节点;步骤E3.对于自动机中状态深度大于或等于2的节点s,若其父节点r经过字符a能够到达节点s即Goto(r,a)=s,则先将节点s的当前状态指向父节点r的失败状态,直至节点s的当前状态经过字符a存在下一跳节点t时,将节点s的失败指针指向节点t。上述步骤F的过程具体为:步骤F1.在执行阶段搜索过程中,自根节点开始,依次取出文本串中的字符,根据转移表Goto和失败表Fail确定下一状态节点。步骤F2.检查状态节点输出标志位q.danger:如节点输出标志位q.danger=1,则输出栈中字符串;如节点输出标志位q.danger=0,则不进行输出。步骤F3.继续检查节点剪枝标志位q.suffix。如标志位q.suffix=1,则转向后缀存储位置指针q.suffix.pointer指针指向的后缀继续进行匹配判定,完成完整的字符串判定:如成功则输出栈中字符串和对应后缀作为完整的规则,并返回相应的叶子节点q;如不成功则应直接返回至相应的叶子节点q,再根据失败函数进行跳转,继续搜索。如节点剪枝标志位q.suffix=0,则继续根据转移表Goto与失败表Fail来确定下一状态节点。本专利技术提出一种结合决策树剪枝(Pruning)方法的简化AC(Aho-Corasick)算法,包括自动机的生成、自动机的简化、计算失败指针、存储后缀表与匹配的执行。本专利技术通过决策树剪枝方法可有效减小自动机规模,删除对分类判定无用的节点,有效降低传统自动机类型模式匹配的内存消耗。本专利技术在具体实现时,将传统自动机类型模式匹配算法拆分为两个步骤:匹配可能的判定与匹配确认。通过简化自动机判别文本串与模式集中模式串有无匹配的可能,再进行匹配的确认。在保证速度的前提下,本专利技术提出的简化方法相比传统自动机类型模式匹配算法内存消耗减少35%-40%。与现有技术相比,本专利技术具有如下特点:1.本专利技术是基于决策树剪枝的AC改进算法,通过应用决策树剪枝方法可有效降低基于DFSA的AC算法的自动机规模,去除对锁定模式集中模式串无用的节点,减少节点数量;2.本专利技术在简化自动机规模,去除冗余节点的同时,达到降低AC算法内存消耗的目的,这一方法可应用到绝大多数自动机类型的模式匹配算法中,改善自动机类型模式匹配算法的空间复杂度;3.本专利技术虽然引入了决策树剪枝方法,但传统AC算法的很多实现方法只需稍加修正依然适用,并不需要添加过多额外的计算,且实验表明在匹配速度与原AC算法基本持平的前提下,实现了内存空间节省35%-40%。附图说明图1为简化前的自动机;图2为简化后的自动机;图3为简化前节点的状态深度;图4为简化后节点的状态深度;图5为简化前节点的失败指针;图6为简化后节点的失败指针。具体实施方式为了使本专利技术的技术方案及优点更加清楚明白,结合附图及实施例,对本专利技术做进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。一种基于决策树剪枝的模式匹配方法,具体步骤为:本实施例输入的文本串为T,模式集K{his,the,there,who本文档来自技高网...

【技术保护点】
基于决策树剪枝的模式匹配方法,其特征是,包括如下步骤:步骤A.即根据自动机生成规则,将模式集中的模式串依次添加到自动机中;步骤B.在自动机生成过程中,每一个模式串添加完成,即将此模式串添加到当前节点的输出表中;步骤C.对生成的自动机进行剪枝,去除对分类来说属于非必要的节点,减少自动机节点数量,简化自动机;在对自动机进行剪枝的过程中,生成后缀表;步骤D.计算自动机各节点的状态深度,其中节点的状态深度为该节点距根节点的最短路径长度;步骤E.根据节点状态深度,计算出各节点的失败指针;步骤F.依次取出文本串中字符输入自动机,完成模式匹配。

【技术特征摘要】
1.基于决策树剪枝的模式匹配方法,其特征是,包括如下步骤:步骤A.即根据自动机生成规则,将模式集中的模式串依次添加到自动机中;步骤B.在自动机生成过程中,每一个模式串添加完成,即将此模式串添加到当前节点的输出表中;步骤C.对生成的自动机进行剪枝,去除对分类来说属于非必要的节点,减少自动机节点数量,简化自动机;在对自动机进行剪枝的过程中,生成后缀表;步骤D.计算自动机各节点的状态深度,其中节点的状态深度为该节点距根节点的最短路径长度;步骤E.根据节点状态深度,计算出各节点的失败指针;步骤F.依次取出文本串中字符输入自动机,完成模式匹配。2.根据权利要求1所述的基于决策树剪枝的模式匹配方法,其特征是,步骤C的过程具体为:步骤C1.对自动机的各个分支进行逐个遍历;步骤C2.当从根节点遍历至终端叶子节点的过程中,仅存在终端叶子节点这一个输出节点,即输出节点为1个时,则从终端叶子节点开始向上回溯至最后一个单分枝节点,将该单分枝节点的剪枝标志位置为1,修剪掉该单分枝节点之后的枝叶,并将该单分枝节点的后续枝叶包含的后缀以字符串的形式存储于后缀表;步骤C3.当从根节点遍历至终端叶子节点的过程中,存在除终端叶子节点这一个输出节点之外的其他输出节点,即输出节点为2个以上时,则从终端叶子节点开始向上回溯至倒数第二个输出节点,将该倒数第二个输出节点的剪枝标志位置为1,修剪掉该倒数第二个输出节点之后的枝叶,并将该倒数第二个输出节点的后续枝叶包含的...

【专利技术属性】
技术研发人员:古天龙王亚南徐周波常亮陈帅王敏
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西;45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1