确定自动机状态转换表的空间压缩方法技术

技术编号:4045900 阅读:306 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种确定自动机状态转换表的空间压缩方法,包括:将确定自动机状态转换表表示为一个m×n的矩阵A,其中m代表确定自动机中的状态的个数,n代表字符集的大小;定义一个大小为m的列向量X和一个大小为n的行向量Y;对所述的列向量X和所述的列向量Y做迭代计算,直到对于任意的1≤i≤m,X[i]是多重集Di.中频率最高的元素,并且对于任意的1≤j≤n,Y[j]是多重集D.j中频率最高的元素;其中,所述的Di.={A[i,j]-Y[j]|1≤j≤n},所述的D.j={A[i,j]-X[i]|1≤i≤m};由所述的矩阵A、列向量X和行向量Y计算稀疏矩阵R,并压缩所得到的稀疏矩阵R;其中,R[i,j]=A[i,j]-X[i]-Y[j]。本发明专利技术的确定自动机状态转换表的空间压缩方法在减少内存中所占用空间的同时,大大减少了空间开销。

【技术实现步骤摘要】

本专利技术涉及信息检索领域,特别涉及。
技术介绍
近年来,正则表达式匹配已经成为网络安全领域的一个研究焦点。网络通信过程 中对实时性和高效性的需求,增强了确定自动机(DFA)在识别正则表达式过程中的重要 性。然而,随着正则表达式在实际应用中的不断复杂化,由正则表达式所生成的DFA的状态 规模也不断增大,DFA状态规模的不断增大使得计算机存储空间的消耗急剧增长,这种急剧 增长已经成为限制正则表达式应用的一个瓶颈。基于上述原因,需要对DFA空间进行压缩, DFA空间的压缩方法已经成为学者关注的焦点。现有技术中存在DFA空间的压缩方法,如在参考文献1 “Fast and memory-efficient regular expression matching for deep packet inspection. Proceedings of the 2006 ACM/IEEE symposium on Architecture for networking and communications systems 2006, San Jose, California, USA December 03-05,2006” 中 利用规则重写和规则分类的方法来简化正则表达式,文中提出把一组正则表达式集合分成 若干组,每组都可用中等规模的DFA来识别。然而这一重写规则的方法仅适用于非重叠匹 配的情况。在参考文献 2 “Algorithm to Accelerate Multiple Regular Expressions Matching for Deep Packet Inspection Conference -SIGCOMM' 06 September 11-15, 2006”中提出了用D2FA方法来压缩DFA的存储空间。D2FA方法利用默认转换来消除重复 的转换,但是识别一个字符的状态变换时间将成比例的增长。在参考文献3 “An improved algorithm to accelerate regular expression evaluation, Proceedings of the 3rd ACM/IEEE Symposium on Architecture for networking and communications systems, 145-154,2007”提出了一种DFA的压缩方法,它在处理长度为N的字符串时最多做2N次状 态变迀,这种方法可达到与D2FA相当的压缩效果,但同样具有识别时间长的缺陷。在参考文 献 4 "Animproved DFA for fast regular expression matching,ACM SIGCOMM Computer Communication Review, Volume 38,Issue 5 (October 2008),Pages 29—40”中,提出了用 δ FA方法来消除DFA状态转换表中的冗余。在DFA的遍历过程中,对相同的输入字符临近 状态分享大部分的下一跳状态,因此当前状态的转换可以从其父节点的状态转换表中动态 的检索出来。但是每次状态转换都需要更新当前状态的状态转换表,非常费时。在参考文献 5 "XFA :Faster Signature Matching with Extended Automata, Security and Privacy, 2008. SP 2008. IEEESymposium, pp. 187-201,18-22May 2008”提出了用 XFA 的方法来解决 两类特殊的正则表达式的指数爆炸问题。该方法对DFA进行扩展,在DFA的每个状态上附 加计数器来记录匹配过程中正则表达式中字符重复的次数。该方法只能解决某些正则表达 式的指数爆炸问题,不具有通用性。综上所述,现有技术中的方法存在两个共同的特点(1)增加时间开销来换取空 间的减少;(2)没有最坏情况下的空间开销保证。虽然上述方法在某些特殊的情况下是有效的,但是仍需要做进一步的改进。
技术实现思路
本专利技术的目的是克服现有技术中的确定自动机状态表的空间压缩方法所具有的 时间开销大的缺陷,从而提供一种时间开销与空间开销都有明显提高的空间压缩方法。为了实现上述目的,本专利技术提供了一种, 包括步骤1)、将确定自动机状态转换表表示为一个mXn的矩阵A,其中m代表确定自 动机中的状态的个数,η代表字符集的大小;步骤2)、定义一个大小为m的列向量X和一个大小为η的行向量Y ;步骤3)、对所述的列向量X和所述的列向量Y做迭代计算,直到对于任意的 1 ^ i ^m, X是多重集Di.中频率最高的元素,并且对于任意的1 < j < n,Y是多 重集Dj中频率最高的元素;其中,所述的Di. = {A_Y |1彡j ( η},所述的Dj = {A-X |1 ^ i ^m};步骤4)、由所述的矩阵A、列向量X和行向量Y计算稀疏矩阵R,并压缩所得到的稀 疏矩阵 R;其中,R = A-X_Y。上述技术方案中,所述的步骤3)包括步骤3-1-1)、以随机的方式为所述的列向量X和所述的行向量Y赋初值;步骤3-1-2)、计算列向量X的值,包括首先令Di. = {A_Y|l彡j彡n},然后用a表示所述Di.中出现频率最高的 元素,如果a在Di.中的出现次数大于X在Di.中的出现次数,则令X =^否则乂 的值保持不变;步骤3-1-3)、计算行向量Y的值,包括首先令Dj = {A_X |1彡i彡m},然后用a等于Dj中出现频率最高的元 素,如果3在0」中的出现次数大于Y在0」中的出现次数,则令Y =a,否则Y的 值保持不变;步骤3-1-4)、判断所述列向量X与行向量Y的值是否发生变化,如果两者都没有发 生变化,结束步骤3)的操作,否则重新执行步骤3-1-2)。上述技术方案中,所述的步骤3)包括步骤3-2-1)、以随机的方式为所述的列向量X和所述的行向量Y赋初值;步骤3-2-2)、计算行向量Y的值,包括首先令Dj = {A_X |1≤i≤m},然后用a等于Dj中出现频率最高的元 素,如果3在0」中的出现次数大于Y在0」中的出现次数,则令Y =a,否则Y的 值保持不变;步骤3-2-3)、计算列向量X的值,包括首先令Di. = {A_Y|l≤j彡n},然后用a表示所述Di.中出现频率最高的 元素,如果a在Di.中的出现次数大于X在Di.中的出现次数,则令X =^否则乂 的值保持不变;步骤3-2-4)、判断所述列向量X与行向量Y的值是否发生变化,如果两者都没有发生变化,结束步骤3)的操作,否则重新执行步骤3-2-2)。上述技术方案中,在所述的步骤4)中,采用矩阵压缩方法对所述的稀疏矩阵R进 行压缩。上述技术方案中,所述的矩阵压缩方法为包括二分查找法、三数组法和 Tetris-哈希法在内的经典矩阵压缩方法。本专利技术还提供了一种用所述的所得到的 结果实现状态查询的方法,包括步骤1)、读取当前状态S,当前输入字符c ;步骤2)、令 t = X +Y ;步骤3)、查看稀疏矩阵R中的元素R是否为零,如果不是,用t+R替换 t,如果是,则无需替换;所得到的结果t为所要转换的下一个状态。上述技本文档来自技高网
...

【技术保护点】
一种确定自动机状态转换表的空间压缩方法,包括:步骤1)、将确定自动机状态转换表表示为一个m×n的矩阵A,其中m代表确定自动机中的状态的个数,n代表字符集的大小;步骤2)、定义一个大小为m的列向量X和一个大小为n的行向量Y;步骤3)、对所述的列向量X和所述的列向量Y做迭代计算,直到对于任意的1≤i≤m,X[i]是多重集D↓[i].中频率最高的元素,并且对于任意的1≤j≤n,Y[j]是多重集D.↓[j]中频率最高的元素;其中,所述的D↓[i].={A[i,j]-Y[j]|1≤j≤n},所述的D.↓[j]={A[i,j]-X[i]|1≤i≤m};步骤4)、由所述的矩阵A、列向量X和行向量Y计算稀疏矩阵R,并压缩所得到的稀疏矩阵R;其中,R[i,j]=A[i,j]-X[i]-Y[j]。

【技术特征摘要】

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

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

1