确定自动机的空间压缩方法技术

技术编号:3854018 阅读:282 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种确定自动机的空间压缩方法,包括:对确定自动机中的各个状态做分簇操作,得到多个用于表示状态集合的簇;将确定自动机中各个状态的转移边按簇分类,得到多个簇矩阵、与所述簇矩阵对应的位图以及一个剩余矩阵;其中,所述簇矩阵包括指向同一簇的转移边,所述位图用于描述所对应簇矩阵中相关元素的有效性;所述剩余矩阵包括确定自动机中未被包含到所述簇矩阵中的剩余转移边;为所述簇矩阵中的各行提取基值,然后将所述簇矩阵转换成一个偏移量矩阵,再将偏移量矩阵中的各行合并,增加用于标记可合并状态的索引数组,得到所述簇矩阵的压缩矩阵。本发明专利技术不仅在压缩效果上有所提高,而且在实现正则表达式匹配时在匹配速度上有很大的提高。

【技术实现步骤摘要】

本专利技术涉及网络安全领域,特别涉及。
技术介绍
正则表达式(Regular Expression)是计算机科学中用来描述或者匹配 一系列符合某个句法规则的字符串的单个字符串。利用正则表达式来匹配 那些符合某个模式的文本内容的方法也被称为正则表达式匹配算法。正则 表达式匹配算法一直都是计算机科学的研究焦点之一,它被广泛应用于网 络入侵检测、计算机病毒特征码匹配、网络信息内容安全、信息检索等多 个领域中。确定自动机(DFA)是正则表达式匹配算法的基础,DFA在计算机中 以状态转换表的方式加以存储。通常,用DFA进行正则表达式匹配的基 本过程如下步骤a、对于给定的正则表达式,用经典的方法构建相应的DFA; 步骤b、采用DFA对输入的文本(或者网络流)进行匹配。这一匹配 过程又包括步骤b-1 、当前状态current处于DFA的初始状态;步骤b-2、对于每一个输入的文本字符t,根据状态转换表的内容从 自动机的当前状态current跳转到它的后继状态next;步骤b-3、如果后继状态next是自动机的接受状态,那么说明当前文 本位置发生了一次匹配,输出匹配位置;步骤b-4、继续处理下一个字符。从上述过程可以看出,DFA是正则表达式匹配过程的核心。DFA中用 于记录当前状态current到后继状态next的转换情况的状态转换表的大小 (也就是下文中所提到的DFA存储空间)对实现正则表达式匹配时所占 用的计算机存储资源的多少直接相关,而正则表达式匹配的速度也和DFA 状态转换的速度有着密切的联系。近年来,随着待处理信息量的不断增强和实时处理的紧迫需求,对正则表达式匹配算法的性能提出了更高的要求。正则表达式匹配算法的性能 包括匹配速度和所占用计算机存储资源两个方面,而DFA正与这两个方面有着密切的联系。因此,本领域技术人员希望通过对DFA的改变来改 进现有的正则表达式匹配算法,使得改进后的正则表达式匹配算法能够对 DFA存储空间进行压缩以减少对计算机存储资源的占用,并能加快DFA 状态的转换速度。在参考文献1 (Algorithm to Accelerate Multiple Regular Expressions Matching for Deep Packet Inspection Conference: SIGCOMM'06 September 11-15,2006)中提出了 D^A方法来压缩DFA的存储空间。它通过引入默 认转移(default transition)来减少状态转移的数目,从而降低自动机的存 储空间。引入默认转移能够极大地减少DFA的状态转移,在该文中所记 载的实验表明,该方法平均能够减少95%的状态转移。但是该方法的缺陷 在于每处理一个字符可能需要在D2FA中进行多次状态跳转,导致实际 的匹配性能不高。在参考文献2 ( An improved DFA for fast regular expression matching, ACM SIGCOMM Computer Communication Review, Volume 38, Issue 5(October 2008), Pages 29-40 )中提出了 5 FA方法来压缩DFA的状态表。 该方法提取子状态和父状态的相同元素来消除状态转换表的冗余。在状态 访问序列中,如果当前状态t要访问的元素next与其前一个状态s的 对应元素next相同,那么可以直接从前一个状态中读取相应的值。 该方法能够取得非常好的压缩效果,但是非常费时的。综上所述,现有技术中所公开的正则表达式匹配算法无法同时提高 DFA空间的压缩效果与DFA状态的转换速度,从而影响了正则表达式匹 配算法的最终匹配性能。
技术实现思路
本专利技术的目的是克服现有技术无法同时提高DFA空间的压缩效果与 DFA状态的转换速度的缺陷,从而提供一种在压缩效果与转换速度上达到 良好平衡的方法。为了实现上述目的,本专利技术提供了 一种, 包括步骤1 )、对确定自动机中的各个状态做分簇操作,得到多个用于表示6步骤2)、将所述确定自动机中各个状态的转移边按步骤1 )所得到的 簇分类,得到多个簇矩阵、与所述簇矩阵对应的位图以及一个剩余矩阵; 其中,所述簇矩阵包括指向同一簇的转移边,所述位图用于描述簇矩阵中 相关元素的有效性;所述剩余矩阵包括确定自动机中未被包含到所述簇矩 阵中的剩余转移边;步骤3)、为所述簇矩阵中的各行提取基值,然后将所述簇矩阵转换成 一个偏移量矩阵,再将偏移量矩阵中的各行合并,增加用于标记可合并状 态的索引数组,得到所述簇矩阵的压缩矩阵。上述技术方案中,还包括步骤4)、压缩所述的剩余矩阵。上述技术方案中,所述的步骤l)包括步骤l-l)、从确定状态机的初始状态开始做广度优先遍历,得到trie 树结构;步骤l-2)、对所得到的trie树中的各个状态做分簇操作,得到多个用 于表示状态集合的簇;其中,在做分簇操作时,将所述确定自动机的初始 状态作为 一个单独的簇,将所述确定自动机中 一个状态的所有直接后继状 态的集合作为一个簇。上述技术方案中,所述的步骤2)包括步骤2-1 )、判断所述确定自动机中剩余转移边的数目是否小于阈值, 若小于,则将剩余的转移边填入所述的剩余矩阵中,否则,执行下一步;步骤2-2 )、将所述确定自动机中剩余的所有转移边中指向同 一簇最多 的转移边转移到 一个簇矩阵中,并用 一个对应的位图表示该簇矩阵中元素 的有效性。上述技术方案中,在所述的步骤3)中,所述的基值为基值所在行所 对应簇中的最小值,所述的偏移量矩阵中的偏移量为所述簇矩阵中的转移 边的值与所述基值间的差。上述技术方案中,在所述的步骤3)中,将偏移量矩阵中的各行合并 时,满足以下规则在矩阵T中,当且仅当对任意字符c满足T--l 或者T:-l或者T二T时,行r和行s是可合并的,其中,"-r代表对应位置的值为无效值。 上述技术方案中,所述的位图包括多个与所述簇矩阵具有一一对应关系的位图,所述位图用于描述与其具有对应关系的簇矩阵中元素的有效性。上述技术方案中,所述的位图包括一个位图,所述位图利用位图中元 素的数值大小描述所述转移边在按簇分类后的位置。本专利技术还提供了 一种由所述的所得到的矩阵实现正则表达式匹配的方法,包括输入文本,用所述矩阵对所述输入文本进行匹配。 上述技术方案中,所述的用所述矩阵对所述输入文本进行匹配包括 步骤a)、在一个簇矩阵对应的位图中查看bitmap是否为有效状态,若为有效状态,则将所述簇矩阵中基值base和偏移量T]之和的值作为当前状态的直接后继状态,若为无效状态,执行下一步; 其中,所述的s代表当前状态,所述的c代表输入文本中所要匹配的字符,所述的equal代表用于标记可合并状态的索引数组,所述的T代表簇矩阵;步骤b)、判断是否还存在未经处理的簇矩阵,若存在,则取出未经处 理的下一个蔟矩阵及其位图后,重新执行步骤a),否则,执行下一步;步骤c)、从所述的剩余矩阵中取出T']的值,作为当前状态的直 接后继状态;其中,所述的T'表示剩余矩阵。上述技术方案中,在所述的步骤b)中,按照所包含的转移边数量的 多少依次选择所述的簇矩阵。本专利技术还提供了一种确定自动机的空间压缩装置,包括分簇模块、本文档来自技高网
...

【技术保护点】
一种确定自动机的空间压缩方法,包括: 步骤1)、对确定自动机中的各个状态做分簇操作,得到多个用于表示状态集合的簇; 步骤2)、将所述确定自动机中各个状态的转移边按步骤1)所得到的簇分类,得到多个簇矩阵、与所述簇矩阵对应的位图以及 一个剩余矩阵;其中,所述簇矩阵包括指向同一簇的转移边,所述位图用于描述簇矩阵中相关元素的有效性;所述剩余矩阵包括确定自动机中未被包含到所述簇矩阵中的剩余转移边; 步骤3)、为所述簇矩阵中的各行提取基值,然后将所述簇矩阵转换成一个偏移量 矩阵,再将偏移量矩阵中的各行合并,增加用于标记可合并状态的索引数组,得到所述簇矩阵的压缩矩阵。

【技术特征摘要】

【专利技术属性】
技术研发人员:杨毅夫刘燕兵刘萍郭莉
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

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

1