多模匹配算法之Aho-Corasick

原创 2016年05月30日 20:40:25

背景

除剔除那些含有敏感词的文本,由于有大量的敏感词,所以通过简单的正则表达式和字符串查找的方式效率太低,每次都有遍历一次字符串。而AC算法的核心思想就是避免不必要的回溯使搜索一直沿着向前的方向,最大可能的减小了时间复杂度,时间复杂度O(N),N为所有的字符串的长度,而且关键字的字数和长度无关。

基本思路

该算法核心:字典树的构建及搜索路径的确定
算法动画示例:确实很给力
1. 字典树的构造
就是把你要匹配的敏感词,用树结构来进行表示,树边就是单词中的字符,如下图所示,在单词的最后位置添加连接节点也就是下图中的0。
h

  1. 搜索路径的确定
    1)当前字符匹配,表示从当前节点沿着树边有一条路径可以到达目标字符,此时只需沿该路径走向下一个节点继续匹配即可,目标字符串指针移向下个字符继续匹配

    2) 当前字符无匹配,表示当前节点的任何一条边都无法达到要匹配的字符,此时不能沿现有路径前进,只能回溯,回溯到存在的最长的后缀字符串处,如果没有任何后缀字符串匹配则回溯到树根处。然后从当前回溯节点判断是否可以到达目标字符串字符
    (未完待续)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

基于Trie树的多模匹配算法实现和及优化

1.多模匹配算法简介     多模式匹配在这里指的是在"一个字符串"中寻找"多个模式字符字串"的问题。一般来说,给出一个长字串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字串中是我...

【模式匹配】之——多模匹配 上篇(AC算法)

from : http://blog.csdn.net/sun2043430/article/details/8821089 前言多模匹配之二维数组法代码多模匹配之二维数组法...

AC多模匹配算法小结

 AC多模匹配算法小结1.AC算法的原理本程序采用了AC的多模匹配方法。Aho_Corasick自动机匹配算法是最著名的多模匹配算法之一。该算法在1975年产生于贝尔实验室。AC自动机匹配算法基于一种...

AC多模匹配算法-测试效率

总结:AC算法对无规则匹配数据和有关联匹配数据影响不是很明显。 无论是有匹配还是无关匹配,大概遍历1G文件都需要10s左右。1G文件中都是0到9的字符。无匹配操作时,单纯遍历1G文件耗时情况[roo...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

多模字符串匹配算法之AC自动机—原理与实现

简介: 本文是博主自身对AC自动机的原理的一些理解和看法,主要以举例的方式讲解,同时又配以相应的图片。代码实现部分也予以明确的注释,希望给大家不一样的感受。AC自动机主要用于多模式字符串的匹配,本质...

Aho-Corasick 多模式匹配算法、AC自动机详解

http://www.cnblogs.com/xudong-bupt/p/3433506.html Aho-Corasick算法是多模式匹配中的经典算法,目前在实际应用中较多。 Aho-C...

对Diffie-Hellman密钥交换算法实现的一点改进

Diffie-Hellman 算法描述: 目前被许多商业产品交易采用。HD 算法为公开的密钥算法,发明于1976年。该算法不能用于加密或解密,而是用于密钥的传输和分配。      DH 算法的安全性体...
  • hairetz
  • hairetz
  • 2009年04月30日 19:10
  • 5330
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多模匹配算法之Aho-Corasick
举报原因:
原因补充:

(最多只允许输入30个字)