[发明专利]AC状态机的构建方法及装置无效
申请号: | 201210038061.8 | 申请日: | 2012-02-17 |
公开(公告)号: | CN102646115A | 公开(公告)日: | 2012-08-22 |
发明(设计)人: | 陈国鹏 | 申请(专利权)人: | 北京星网锐捷网络技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 马爽 |
地址: | 100036 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ac 状态机 构建 方法 装置 | ||
技术领域
本发明涉及模式匹配技术,尤其涉及一种AC状态机的构建方法及装置。
背景技术
多模式匹配问题是计算机科学的基本问题之一,多模式匹配问题可以简单描述为:当存在一个搜寻文本和一个搜寻模式集合时,搜寻模式集合包括两个以上的搜寻模式,每个搜寻模式通常是一字符串。在搜寻文本中查找搜寻模式集合中的各搜寻模式。比如:搜寻文本A为:abcdefg123456,搜寻模式集合C为{abc、ef、tian、123、67、890}。那么,进行多模式匹配后,输出的结果就是搜寻文本A中包含搜寻模式abc、ef和123。
多模式匹配只要扫描一遍搜寻文本,就能够找出该搜寻文本匹配的所有搜寻模式,具有很高的匹配效率,广泛用于入侵检测、病毒检测、搜索引擎和数据挖掘等领域。
AC(Aho-Corasick)算法是一种经典的多模式匹配算法,能够在任意的搜寻文本中定位任一个搜寻模式的所有位置。该算法利用有限自动机巧妙地将字符比较转化为状态转移。其原理是:首先根据搜寻模式集合定义一个有限状态模式匹配机,然后把搜寻文本作为模式匹配状态机的输入,只要匹配到搜寻模式,就会通报此搜寻模式成功。在标准的AC算法中,搜寻文本的每次输入是一个字节。
以搜寻模式集合{he、she、his、hers}为例,由此搜寻模式集合构建的AC状态机如图1A~1C所示。图1A~图1C为现有技术AC状态机的示意图。图1A的关键字树中,每一个圆圈表示一个状态节点,每个状态节点都包含三个重要数据:转移(goto)函数(图1A)、失效(failure)函数(图1B)、输出(output)函数(图1C)。
其中,goto函数用于把一个由状态和输入字符组成的二元组映射成另一个状态或是失效;
failure函数用于把一个状态映射到另一个状态。当goto函数报告失效时,failure函数就会被询问;
output函数,用于表示某个搜寻模式已经被匹配。
在基本AC状态机的状态迁移中,在当前状态S和输入字符c下,下一个状态为:
操作1:如果goto(S,c)存在,那么下一个状态为goto(S,c),算法结束,否则,执行操作2;
操作2:将failure(S)赋值给S,执行操作1。
由于在基本AC状态机中,如果goto函数的结果不存在,就会导致一次或是多次的访问failure函数,为了提高AC状态机的效率,现有技术提出一种去failure的AC状态机。在去failure的AC状态机中,每一个状态节点没有failure函数,而是把goto函数和failure函数统一为:下一个状态(nextstate)函数。
去failure的AC状态机的示意图和标准AC状态机的示意图是一样的,只是每个状态节点下,不再有goto函数和failure函数,而是用nextstate函数替代。nextstate函数用于把一个由状态和输入字符组成的二元组映射成另一个状态。即通过nextstate函数,可获知一个确定的下一个状态。
有了nextstate函数后,AC状态机的迁移就简单多了,在当前状态S和当前输入字符c下,那么下一个状态就是:nextstate(S,c)。
为了方便获取nextstate函数,每一个状态节点需保存下一个状态表,每一个状态节点的下一个状态表记录:在当前状态下,在不同的输入字符时的下一个状态值,即在当前状态下,输入某个字符,那么将迁移到哪一个状态。由于字符是一个字节,能够表示美国信息互换标准代码(American Standard Code for Information Interchange,以下简称:ASCII)码中的0~255。其中,ASCII码值表记录的是用户所看到的字符与计算机内部的真正数值之间的映射,由于一个字节的取值范围是0~255,因而ASCII码值表有256个单元。比如:用户看到的字母a,计算机内部的保存数值是97;用户看到的数字1,计算机内部的保存数值是31,等等。因而下一个状态表是一个具有256个成员的数组。以图1A中的状态节点1为例,状态节点1在256个不同ASCII码值输入时的下一个状态表,可以如表1所示。
表1
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京星网锐捷网络技术有限公司,未经北京星网锐捷网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210038061.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:钒电池全氟磺酸质子膜及其制备方法
- 下一篇:一种治疗糖尿病的中药