AC自动机 - 关于Fail指针
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指针相关推荐
- P5357 【模板】AC自动机(二次加强版)(AC自动机建fail树dfs求模式串出现次数)
P5357 [模板]AC自动机(二次加强版)(AC自动机建fail树dfs求模式串出现次数) 传送门 形式上,AC 自动机基于由若干模式串构成的 Trie 树,并在此之上增加了一些 fail 边:本质 ...
- 字符串处理 —— AC 自动机
[概述] KMP 算法用于解决长文本的单模板匹配问题,字典树用于解决单个单词(短文本)多模板匹配问题,而 AC 自动机用于解决的是长文本的多模板匹配问题,其是以 trie 树的结构为基础,结合 KMP ...
- AC自动机——多个kmp匹配
(并不能自动AC) 介绍: Aho-Corasick automaton,最经典的处理多个模式串的匹配问题. 是kmp和字典树的结合. 精髓与灵魂: ①利用trie处理多个模式串 ②引入fail指针. ...
- AC自动机(Aho-Corasick automation)(转)
AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法. 解决的问题:给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文 ...
- 字符串算法 | AC自动机算法
1.简介 一种多模式串匹配算法, 可以快速从主串中同时找出所有包含的所有模式串. 对比KMP是单模式匹配, 虽然可以使用单模式串匹配算法逐个进行查找模式串, 但是实际场景中,若模式串的数量可能很大,并 ...
- AC自动机原理及代码实现
目录 一 定义 二 构建字典树 三 构建 AC 自动机 四 模式匹配 五 性能分析 六.代码实现 一 定义 AC 自动机是 KMP 算法和 Trie 树的结合,是经典的多模匹配算法. 首先将多个模式串 ...
- 字符串处理【AC自动机】 - 原理 AC自动机详解
字符串处理[AC自动机] - 原理 AC自动机详解 AC自动机(Aho-Corasick automaton)在1975年产生于贝尔实验室,是著名的多模匹配算法. 学习AC自动机,要有KMP和Trie ...
- 极限定律 My Algorithm Space AC自动机算法详解
转载自:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html 首先简要介绍一下AC自动机:Aho-Corasick automatio ...
- Python实现多模匹配——AC自动机
Python实现多模匹配--AC自动机 目标:学习AC自动机,多模匹配. 要求:尽可能用纯Python实现,提升代码的扩展性. 一.什么是AC自动机? AC自动机,Aho-Corasick autom ...
最新文章
- C++11中default的使用
- 毕业使人头秃:发现自己的idea已经被人发表了,该怎么办?
- blog微服务架构代码_聊聊微服务架构
- 皮一皮:这大概就是年轻的味道...
- Noip2016换教室
- spaCy教程(翻译自官网)
- 带你看看获得鲁班奖的数据中心工程建设的有多完美!!
- Python教程:import与from ... import ...的区别
- 小议看板列与职能筒仓
- 山东理工大计算机专业学什么科目,2020年山东理工大学计算机科学与技术学院880数据结构硕士研究生入学考试科目大纲...
- 我很笨,请带着真心靠近我
- DataSet存储数据和结构到XML
- [蓝桥杯2018初赛]第几个幸运数-数论+枚举
- 计算机活动感悟怎么写,计算机教学心得体会范文五篇.doc
- Codeforces Beta Round #71 C【KMP+DP】
- 区块链 Solidity中uint转string 数字转字符串
- 移动办公平台忘记密码怎么办?移动办公平台下载
- 弯曲时空量子场论的历史与现状 (上)
- OpenCV 4 中文文档(更新mat部分)
- 高考476分在浙江计算机学院,2021年高考476分左右能上什么大学(100所)
热门文章
- 嵌入式linux 试卷,嵌入式Linux模拟试卷
- python tfidf特征变换_Spark MLlib机器学习开发指南(4)--特征提取--TF-IDF
- Golang——文件创建和写入、OpenFile追加写入、Open读取文件、ReadBytes缓冲区读取、os.Args、flag
- linux操作系统桌面应用与管理第2版,linux操作系统桌面应用与管理(62页)-原创力文档...
- 河北体检系统诚信企业推荐_应用多的隔膜计量泵价格诚信企业推荐
- 量子计算机迷宫,一个简单的例子,带你读懂量子计算机
- python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...
- MySQL表结构管理
- 高可用MySQL MHA介绍
- 美团面试题:Hashmap的结构,1.7和1.8有哪些区别,深入的分析