fail指针可以说是AC自动机里最难理解的东西,怎样更好的理解AC自动机的fail指针?

先来看一幅图:

看这幅图上的fail指针是怎么构造的.

树上的词分别是:

{ he , hers , his , she}

按图所示分成3层。看到第三层,是"she",其中:

①s指向root

②h先找到s的fail指针

发现是0号指针,不是h,然后h就不高兴了,再问问s的fail指针root:“你有没有儿子和我同名叫h的”

root说:“有,你指向他吧”,然后h就高兴的指向了第一行的h.

③e开始找了,首先问他老爸h:“你的fail指针指着谁”

h说:“图上第一行那个h啊”

然后e就屁颠屁颠地跑去问图上第一行那个h:“你有没有名字和我一样的儿子啊”

图上第一行那个h说:“有,他地址是xxx”

最后e的fail指针就指向xxx地址,也就是第一行那个e了

发现这样,如果一个字符串查到第三行的e以后的字符才不匹配,那说明他前面应该有个‘he’

刚好e的失败指针指向的是第一行的‘he...’的那个e;

这样就不用从h开始再找一遍,而是接着第一行的e继续往后找,从而节省了时间.

--------------------------------------------------------- End.

转载请注明:http://www.cnblogs.com/crazyacking/p/4659501.html

转载于:https://www.cnblogs.com/crazyacking/p/4659501.html

AC自动机 - 关于Fail指针相关推荐

  1. P5357 【模板】AC自动机(二次加强版)(AC自动机建fail树dfs求模式串出现次数)

    P5357 [模板]AC自动机(二次加强版)(AC自动机建fail树dfs求模式串出现次数) 传送门 形式上,AC 自动机基于由若干模式串构成的 Trie 树,并在此之上增加了一些 fail 边:本质 ...

  2. 字符串处理 —— AC 自动机

    [概述] KMP 算法用于解决长文本的单模板匹配问题,字典树用于解决单个单词(短文本)多模板匹配问题,而 AC 自动机用于解决的是长文本的多模板匹配问题,其是以 trie 树的结构为基础,结合 KMP ...

  3. AC自动机——多个kmp匹配

    (并不能自动AC) 介绍: Aho-Corasick automaton,最经典的处理多个模式串的匹配问题. 是kmp和字典树的结合. 精髓与灵魂: ①利用trie处理多个模式串 ②引入fail指针. ...

  4. AC自动机(Aho-Corasick automation)(转)

    AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法. 解决的问题:给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文 ...

  5. 字符串算法 | AC自动机算法

    1.简介 一种多模式串匹配算法, 可以快速从主串中同时找出所有包含的所有模式串. 对比KMP是单模式匹配, 虽然可以使用单模式串匹配算法逐个进行查找模式串, 但是实际场景中,若模式串的数量可能很大,并 ...

  6. AC自动机原理及代码实现

    目录 一 定义 二 构建字典树 三 构建 AC 自动机 四 模式匹配 五 性能分析 六.代码实现 一 定义 AC 自动机是 KMP 算法和 Trie 树的结合,是经典的多模匹配算法. 首先将多个模式串 ...

  7. 字符串处理【AC自动机】 - 原理 AC自动机详解

    字符串处理[AC自动机] - 原理 AC自动机详解 AC自动机(Aho-Corasick automaton)在1975年产生于贝尔实验室,是著名的多模匹配算法. 学习AC自动机,要有KMP和Trie ...

  8. 极限定律 My Algorithm Space AC自动机算法详解

    转载自:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html 首先简要介绍一下AC自动机:Aho-Corasick automatio ...

  9. Python实现多模匹配——AC自动机

    Python实现多模匹配--AC自动机 目标:学习AC自动机,多模匹配. 要求:尽可能用纯Python实现,提升代码的扩展性. 一.什么是AC自动机? AC自动机,Aho-Corasick autom ...

最新文章

  1. C++11中default的使用
  2. 毕业使人头秃:发现自己的idea已经被人发表了,该怎么办?
  3. blog微服务架构代码_聊聊微服务架构
  4. 皮一皮:这大概就是年轻的味道...
  5. Noip2016换教室
  6. spaCy教程(翻译自官网)
  7. 带你看看获得鲁班奖的数据中心工程建设的有多完美!!
  8. Python教程:import与from ... import ...的区别
  9. 小议看板列与职能筒仓
  10. 山东理工大计算机专业学什么科目,2020年山东理工大学计算机科学与技术学院880数据结构硕士研究生入学考试科目大纲...
  11. 我很笨,请带着真心靠近我
  12. DataSet存储数据和结构到XML
  13. [蓝桥杯2018初赛]第几个幸运数-数论+枚举
  14. 计算机活动感悟怎么写,计算机教学心得体会范文五篇.doc
  15. Codeforces Beta Round #71 C【KMP+DP】
  16. 区块链 Solidity中uint转string 数字转字符串
  17. 移动办公平台忘记密码怎么办?移动办公平台下载
  18. 弯曲时空量子场论的历史与现状 (上)
  19. OpenCV 4 中文文档(更新mat部分)
  20. 高考476分在浙江计算机学院,2021年高考476分左右能上什么大学(100所)

热门文章

  1. 嵌入式linux 试卷,嵌入式Linux模拟试卷
  2. python tfidf特征变换_Spark MLlib机器学习开发指南(4)--特征提取--TF-IDF
  3. Golang——文件创建和写入、OpenFile追加写入、Open读取文件、ReadBytes缓冲区读取、os.Args、flag
  4. linux操作系统桌面应用与管理第2版,linux操作系统桌面应用与管理(62页)-原创力文档...
  5. 河北体检系统诚信企业推荐_应用多的隔膜计量泵价格诚信企业推荐
  6. 量子计算机迷宫,一个简单的例子,带你读懂量子计算机
  7. python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...
  8. MySQL表结构管理
  9. 高可用MySQL MHA介绍
  10. 美团面试题:Hashmap的结构,1.7和1.8有哪些区别,深入的分析