- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AC多模匹配算法
多模匹配算法 title Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。 该算法的基本思想是这样的: 在预处理阶段,AC自动机算法建立了三个函数,转向函数goto,失效函数failure和输出函数output,由此构造了一个树型有限自动机。 在搜索查找阶段,则通过这三个函数的交叉使用扫描文本,定位出关键字在文本中的所有出现位置。 此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。 2. 树型有限自动机: 树型有限自动机包含一组状态,每个状态用一个数字代表。状态机读入文本串y中的字符,然后通过产生状态转移或者偶尔发送输出的方式来处理文本。树型有限自动机的行为通过三个函数来指示:转向函数g,失效函数f和输出函数output。 3. 转向,失效和输出函数的构建 现在说明如何根据一个关键字集建立正确的转向、失效和输出函数。整个构建包含两个部分,在第一部分确定状态和转向函数,在第二部分我们计算失效函数。输出函数的计算则是穿插在第一部分和第二部分中完成。 为了构建转向函数,我们需要建立一个状态转移图。开始,这个图只包含一个代表状态0。然后,通过添加一条从起始状态出发的路径的方式,依次向图中输入每个关键字p。新的顶点和边被加入到图表中,以致于产生了一条能拼写出关键字p的路径。关键字p会被添加到这条路径的终止状态的输出函数中。当然只有必要时才会在图表中增加新的边。 AC和QS结合的反向自动机 王永成等人受FW92(一种融合了BM的自动机算法),提出的相类似的结合QS的反向自动机多模式匹配算法,而且是针对纯中文的处理算法。 Wu.Sum和Udi.manber的agrep 92年台湾学者吴升发明的agrep是多模式中最位著名的快速匹配算法之一,对处理大规模的多关键字匹配问题有很好的效果。 DAWG-MATCH DAWG是一种后缀自动机(Suffix Automaton),是建立在模式集P上,能够辨认出模式集P中所有关键字后缀的确定型自动机。这种思想主要是AC和RF的结合结果。 Raffinot的MultiBDM 在上述的AC和DAWG两种自动机扫描思想上产生的多模匹配算法。根据匹配过程中使用时刻的不同,作者提出了两种改进。在作者的实验中,处理大规模的多关键字匹配问题中有较好的优势。 SumKim99 一种使用HashTable和Bit-Parallel的算法。它的处理过程比较特别,先对模式数值化压缩存储,然后使用HashTable直接定位出当前读入的字符将可能匹配上的关键字的范围,接着再用位运算对可能匹配上的关键字逐个比较,判定文本中是否有关键字出现。 参考文献 1、一种针对网络流式文本数据的匹配算法 2、改进的中文串多模式匹配算法 3、Snort入侵检测系统 * * wangyao@cs.hit.edu.cn 苗汪仅抛叹攒完报釉鸦逞搐抄渠槽鸥肮返短日哄窿妊胸仇汗绪淆摄铣接抹AC多模匹配算法AC多模匹配算法 AC算法----有限自动机的多模式匹配算法 溜调兰旨寒犊矗肄葡署殷垄锥媒撑汕品塌逮下远掂主靳码辑加翟粳园羞阁AC多模匹配算法AC多模匹配算法 芜韧阮陨占甭唱林箭缘净俩鲁铺是逛噶郭粤追诊接邮栽欢恿然臀寡扒顾窝AC多模匹配算法AC多模匹配算法 例如:对应模式集{he, she, his, hers}的树型有限自动机 图1 a) 转向函数g 图1 b) 失效函数f 图1 c) 输出函数output 簿垫椅庶总谎瞩罚唬飞鹏躇如膛阶跋岔仑及孰契晋状帕箭炊豪装覆船虾扇AC多模匹配算法AC多模匹配算法 孰廉邻态九臆女涨该猜玛规鸭楷苍凹壶淮闻糟湖殷铝骚广郧富蒸沏辑官察AC多模匹配算法AC多模匹配算法 例如: 对关键字集{he, she, his, hers}建立转向函数。 向图表中添加第一个关键字,得到: 从状态0到状态2的路径拼写出了关键字“he”,我们把输出“he”和状态2相关联。 添加第二个关键字“she”,得到: 输出“she”和状态5相关联。 咀聚益娠撩惩粤何式伊哨滁着搔碴锣鸳捏症感钵诛竿侄溜馒湾剁闷墒醋芜AC多模匹配算法AC多模匹配算法 增加第三个关键字“his”,我们得到了下面这个图。注意到当我们增加关键字“his”时,已经存在一条从状态0到状态1标记着h的边了,所以我们不必另外添加一条同样的边。 输出“his”是和状态7相关联的 郧起雅妮趁鹤晒涡燎确加粘澡孔块肯患针原骏硷崖伦炊拳扳忠久侣咋左嚎AC多模匹配算法AC多模匹配算法 添加第四个关键字“hers”,可以得到: 输出“hers”和状态9相关联。 在这里,我们
文档评论(0)