有限状态自动机生成方法、关键字匹配方法及装置和设备的制作方法

文档序号:6474998阅读:294来源:国知局
专利名称:有限状态自动机生成方法、关键字匹配方法及装置和设备的制作方法
技术领域
本发明涉及有限状态自动机领域,尤其涉及一种有限状态自动机的生成方法、关 键字匹配方法及装置和设备。
背景技术
在进行关键字的字符串匹配、文本检索、网络数据流深度内容过滤、入侵检测和网 络防毒等领域常使用Aho-Corasick算法,该算法的核心在于使用一个涵盖所有查询关键 字的有限状态自动机(Deterministic Finite State Automaton,DFA),被搜索关键字的每 个字符逐个输入到DFA中,当某个关键字命中,DFA输出报告。Aho-Corasick算法首先构造GOTO函数、然后构造FAILURE函数,最后将构造的 GOTO函数和FAILURE函数合并生成DFA,假设需要在字符串数据库中搜索4个关键字“HE”、 “SHE”、“HIS”和“HERZWXY”,生成的DFA如下表1所示。表 权利要求
一种有限状态自动机的生成方法,其特征在于,包括针对待生成的有限状态自动机DFA的每个状态,在为该状态分配的内存空间中为该状态生成第一状态对应表,所述第一状态对应表用于记录向所述待生成的DFA输入ASCII字符表的每个字符时,所述待生成的DFA的下一状态的值为0或者为非0;针对所述待生成的DFA的每个状态,在为该状态分配的内存空间中为该状态生成第二状态对应表,所述第二状态对应表用于记录所述第一状态对应表记录的下一状态的值为非0时该下一状态的值;将所有状态的第一状态对应表和第二状态对应表作为所述待生成的DFA。
2.如权利要求1所述的方法,其特征在于,所述生成第一对应表,包括针对所述待生成的DFA的每个状态,将为该状态分配的存储空间起始的N个比特分别 记录为第一标识位或第二标识位;其中,第n+1个比特记录的第一标识位用于指示在该状 态下,向所述待生成的DFA输入ASCII字符表中十进制为η的字符时所述待生成的DFA的 下一个状态的值为0 ;第n+1个比特位记录的第二标识位用于指示在该状态下,向所述待生 成的DFA输入ASCII字符表中十进制为η的字符时所述待生成的DFA的下一个状态的值为 非0 ;所述η的取值范围为
,所述N等于ASCII字符表的字符总数; 将所述N个比特位的记录作为第一对应表。
3.如权利要求1或2所述的方法,其特征在于,生成第二状态对应表,包括针对所述待生成的DFA的每个状态,按照每个下一状态的值为非0的记录在第一状态 对应表中的先后顺序,将为该状态分配的存储空间起始的N个比特之后的M个字节分别记 录为与所述每个下一状态为非0的记录对应的下一状态的值;所述M等于第一状态对应表 中所有下一状态为非0的记录的总数;将所述M个字节的记录作为第二状态对应表。
4.一种使用有限状态自动机进行关键字匹配的方法,其特征在于,包括 在当前状态下,接收输入的待查询的关键字中的一个字符;在当前状态的第一状态对应表中查询与该字符对应的有限状态自动机DFA下一状态 的记录;若查询到的记录为下一状态的值为0,则跳转至状态0,等待接收所述待查询的关键字 中的下一个字符;若查询到的记录为下一状态的值为非0,在当前状态的第二状态对应表中查询该字符 对应的下一个状态的值,根据查询的结果跳转至相应的下一状态,等待接收所述待查询的 关键字中的下一个字符;输出所述待查询的关键字的匹配结果。
5.如权利要求4所述的方法,其特征在于,在当前状态的第一状态对应表中查询该字 符对应的下一状态的记录,包括确定该字符在ASCII字符表中对应的十进制的字符η ;所述η的取值范围为
, 所述N为ASCII字符表的字符总数;从所述第一状态对应表中,获取第n+1个比特位记录的第一标识位或第二标识位;所 述第一标识位用于指示向所述DFA输入ASCII字符表中十进制为η的字符时所述DFA的下 一个状态的值为0;所述第二标识位用于指示向所述DFA输入ASCII字符表中十进制为η的字符时所述DFA的下一个状态的值为非0。
6.如权利要求4或5所述的方法,其特征在于,所述在当前状态的第二状态对应表中查 询该字符对应的下一个状态的值,包括确定该字符对应的DFA的下一个状态的记录在所述第一状态对应表中所有DFA下一状 态的值为非0的记录中的位序;在所述第二状态对应表中,获取相同位序的字节记录的该字符对应的DFA的下一个状 态的值。
7.一种有限状态自动机的生成装置,其特征在于,包括第一状态对应表生成单元,用于针对待生成的有限状态自动机DFA的每个状态,在为 该状态分配的内存空间中为该状态生成第一状态对应表,所述第一状态对应表用于记录向 所述待生成的DFA输入ASCII字符表的每个字符时,所述DFA的下一状态的值为0或者为 非0;第二状态对应表生成单元,用于针对所述待生成的DFA的每个状态,在为该状态分配 的内存空间中为该状态生成第二状态对应表,所述第二状态对应表用于记录所述第一状态 对应表记录的下一状态的值为非0时该下一状态的值;DFA生成单元,用于将所有状态的第一状态对应表和第二状态对应表作为所述待生成 的 DFA。
8.如权利要求7所述的装置,其特征在于,所述第一状态对应表生成单元,具体用于针 对所述待生成的DFA的每个状态,将为该状态分配的存储空间起始的N个比特分别记录为 第一标识位或第二标识位;其中,第n+1个比特记录的第一标识位用于指示在该状态下,向 所述待生成的DFA输入ASCII字符表中十进制为η的字符时所述DFA的下一个状态的值 为0 ;第n+1个比特位记录的第二标识位用于指示在该状态下,向所述待生成的DFA输入 ASCII字符表中十进制为η的字符时所述待生成的DFA的下一个状态的值为非0 ;所述N等 于ASCII字符表的字符总数,所述η的取值范围为
;以及将所述N个比特位的记录 作为第一对应表。
9.如权利要求7或8所述的装置,其特征在于,所述第二状态对应表生成单元,具体用 于针对所述待生成的DFA的每个状态,按照每个下一状态的值为非0的记录在第一状态对 应表中的先后顺序,将为该状态分配的存储空间起始的N个比特之后的M个字节分别记录 为与所述每个下一状态为非0的记录对应的下一状态的值;所述M等于第一状态对应表中 所有下一状态为非0的记录的总数;以及将所述M个字节的记录作为第二状态对应表。
10.一种关键字匹配的装置,其特征在于,包括接收单元,用于在当前状态下,接收输入的待查询的关键字中的一个字符;以及在状态 跳转单元进行状态跳转之后,等待接收所述待查询的关键字的下一个字符;第一状态对应表查询单元,用于在当前状态的第一状态对应表中查询与所述接收单元 接收的字符对应的有限状态自动机DFA下一状态的记录;状态跳转单元,用于在所述第一状态对应表查询单元查询到的记录为下一状态的值为 0时,跳转至状态0 ;以及在所述第一状态对应表查询单元查询到的记录为下一状态的值为 非0时,根据所述第二状态对应表查询单元查询到的下一状态的值,跳转至相应的下一状 态;第二状态对应表查询单元,用于在所述第一状态对应表查询单元查询到的记录为下一 状态的值为非0时,在当前状态的第二状态对应表中查询该字符对应的下一状态的值; 结果输出单元,用于输出所述待查询的关键字的匹配结果。
11.如权利要求10所述的装置,其特征在于,所述第一状态对应表查询单元,具体包括第一确定子单元,用于确定该字符在ASCII字符表中对应的十进制的字符η ;所述η的 取值范围为
,所述N为ASCII字符表的字符总数;第一获取子单元,用于从所述第一状态对应表中,获取第n+1个比特位记录的第一标 识位或第二标识位;所述第一标识位用于指示向所述DFA输入ASCII字符表中十进制为η 的字符时所述DFA的下一个状态的值为0 ;所述第二标识位用于指示向所述DFA输入ASCII 字符表中十进制为η的字符时所述DFA的下一个状态的值为非0。
12.如权利要求10或11所述的装置,其特征在于,所述第二状态对应表查询单元,具体 包括第二确定子单元,用于确定该字符对应的DFA的下一个状态的记录在所述第一状态对 应表中所有DFA下一状态的值为非0的记录中的位序;第二获取子单元,用于在所述第二状态对应表中,获取与相同位序的字节记录的DFA 的下一个状态的值。
13.—种网络设备,其特征在于,包括如权利要求7-9任一项所述的有限状态自动机的 生成装置以及如权利要求10-12任一项所述的关键字匹配的装置。
全文摘要
本发明公开了一种有限状态自动机的生成方法、查询方法及装置和设备,其中生成方法包括针对待生成的DFA的每个状态,在为该状态分配的内存空间中为该状态生成第一状态对应表,第一状态对应表用于记录向待生成的DFA输入ASCII字符表的每个字符时,待生成的DFA的下一状态的值为0或者为非0;针对待生成的DFA的每个状态,在为该状态分配的内存空间中为该状态生成第二状态对应表,第二状态对应表用于记录第一状态对应表记录的下一状态的值为非0时该下一状态的值;将所有状态的第一状态对应表和第二状态对应表作为待生成的DFA。与现有技术相比,本发明提供的有限状态自动机的生成方法生成的DFA,所占用的存储资源大大减少。
文档编号G06F17/30GK101944121SQ20101028902
公开日2011年1月12日 申请日期2010年9月20日 优先权日2010年9月20日
发明者黄凯明 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1