java版的AC多模式匹配算法

时间:2014-12-05 08:18:28
【文件属性】:

文件名称:java版的AC多模式匹配算法

文件大小:47KB

文件格式:RAR

更新时间:2014-12-05 08:18:28

多模式 AC AhoCorasick 匹配 算法

AC多模式匹配算法 特点:应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点:一是扫描文本时完全不需要回溯,二是时间复杂度为O(n)与关键字的数目和长度无关,但所需时间和文本长度以及所有关键字的总长度成正比。 算法思想:用多模式串建立一个确定性的树形有限状态机,以主串作为该有限状态机的输入,使状态机进行状态的转换,当到达某些特定的状态时,说明发生模式匹配。AC 多模式匹配算法的实现可分预处理和搜索查找两个阶段。在预处理阶段根据待匹配的模式串组生成有限状态机;搜索查找阶段状态机根据输入的文本串进行状态跳转,当到达某一状态时,该状态有匹配的模式串,则匹配成功。AC 状态机包括goto、fail 和output 3 个函数。 实现步骤:1. 构造字典树;2. 搜索路径的确定(即构造失败指针);3. 模式匹配过程。


【文件预览】:
ac.java
----ACDemo.rar(31KB)
----ac_src_app.rar(17KB)
----ac_arithmetic.jar(10KB)

网友评论

  • 这个我试用了一下,很好用,效率也很高。真心不错
  • 正好需要这个,就找到这了,赞一个
  • 这个真心流弊,已经用到项目上了
  • 真心好,很适合初学者
  • 很棒、很棒!
  • 经典算法,很不错的
  • 很好用 速度还可以
  • 一定要感谢下,暑期实验室项目,后来毕业设计都用到了!非常感谢
  • 不知道为什么这个AC算法的实现这么复杂 很奇怪
  • 如果是java的就更好了
  • 一定要感谢下,暑期实验室项目,后来毕业设计都用到了!非常感谢!
  • 例子非常好
  • 风格不错,很好的代码,谢谢楼主分享!
  • 挺好的资料,项目用上了。
  • 很好的资料,有助于我的开发!
  • 相当不错,已经用上了
  • AC算法,还可以
  • java版的ac,学习ac算法特别好
  • 例子写的非常全,不错
  • 非常不错的代码
  • 写的挺好,例子再完整点就好了
  • 仔细跟了一下,确实很强大啊。。。不过在创建完字典后,处理state的fail时,为啥要用自己的那个queue呢,java本身的效率低么?
  • 代码很详细,没有注释,对于我这种初学者比较难理解
  • 资源很好。给开发中的我很多帮助,但是注释多一些的确会事半功倍~
  • 非常好,感谢展示的这个例子,还有key表,想必哥们也是搞安全的吧