[发明专利]基于TCAM的确定性有穷状态自动机DFA的匹配方法和装置有效
申请号: | 201210071502.4 | 申请日: | 2012-03-16 |
公开(公告)号: | CN103294735A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 董群峰;彭坤杨 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;黄晓军 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 tcam 的确 定性 有穷 状态 自动机 dfa 匹配 方法 装置 | ||
1.一种基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,包括:
将确定性有穷状态自动机DFA的每个状态用若干三态内容寻址存储器TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,基于生成所述DFA的非确定性有穷状态自动机NFA中的链式结构,以及所述NFA和所述DFA之间的内在链式结构特征,识别出所述DFA中的链式结构;
根据所述DFA中的链式结构对所述DFA的状态进行重新编号和编码,在TCAM中对所述DFA的状态转移边进行重新编码;
以具体的所述源状态域和输入字符域的拼接作为搜索关键词,按照所述搜索关键字在所述DFA的所有TCAM条目中进行搜索,将搜索得到的目的状态域作为输出结果。
2.根据权利要求1所述的基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,所述的基于生成所述DFA的非确定性有穷状态自动机NFA中的链式结构,以及所述NFA和所述DFA之间的内在链式结构特征,识别出所述DFA中的链式结构,包括:
步骤1、根据所述DFA所表达的正则表达式构建一个ε-NFA和与之等价的DFA,所述ε-NFA表示存在着ε边的NFA,所述NFA的ε边表示不消耗任何输入字符转移到新状态的边;
步骤2、识别所述ε-NFA中的链条;
找到所有的NFA链首状态,即无任何非ε入边的NFA状态;
依次从每个NFA链首状态出发开始扩展链条:如果当前NFA状态有一条非ε出边到达下一个NFA状态,且下一个NFA状态没有ε边指向该链条上已经扩展的状态,则扩展链条至下一个NFA状态,并将下一个NFA状态作为当前状态,继续按上述方法扩展链条;否则,停止扩展该链条;
每个NFA链条都赋予一个唯一的链条ID;
步骤3、由ε-NFA构造一个标准的状态数最小化的DFA,并且记录每个DFA状态的NFA子集;
步骤4、若当前DFA状态的子集包含某个NFA链条的链首并且当DFA状态尚未标记过,则将此DFA状态标记为当前NFA链条的ID,且将该NFA链条的链首作为当前NFA状态,开始扩展一个新的DFA链条,将此DFA链条标记为当前NFA链条的ID,其步骤如下:
若当前NFA状态不存在一条非ε出边到达下一个NFA状态,则结束本次迭代;否则,对于这条非ε出边上的字符集,检查以下条件是否同时满足:
当前DFA状态对其中超过或等于一半的的字符都存在一条出边到达同一个新的不在当前DFA链表上的DFA状态,称这个新的DFA状态为“下一个DFA状态”;
下一个DFA状态的子集包含了下一个NFA状态;
下一个DFA状态不是自循环状态;
下一个DFA状态与当前DFA状态的相似度超过一定的阈值(128);
若以上条件不能同时满足,则结束本次迭代;否则,扩展DFA链条至下一个DFA状态,将下一个DFA状态作为当前DFA状态,将下一个NFA状态作为当前NFA状态;
若当前DFA状态尚未标记过,则将其标记为当前NFA链条的ID,同时将当前DFA链条标记为当前NFA链条的ID,重复本次迭代的步骤;
步骤5、每个DFA链条上的状态都被标记为某个NFA链条的ID,称这些状态为“注册状态”;不属于任何DFA链条的DFA状态则被称之为“未注册状态”。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210071502.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:生成路径的装置和方法
- 下一篇:提供域信息的设备和方法