版权声明:欢迎评论交流,转载请注明原作者。 https://blog.csdn.net/m0_37809890/article/details/89196518
参考资料
2018XJTU小学期课程day9-字符串_zbh
前置知识
KMP算法:单模式匹配
Trie树
多模式匹配:给定多个模式串,查询一个文本串中是否存在每个模式串。
自动机
自动机是一个五元组,包括
- 状态集合
- 符号表
- 开始状态
- 结束状态集合
- 转移函数 ,例如 表示状态 通过符号 到达状态 .
自动机实际上是一张有向图,以下默认节点0为开始状态,边缘加粗的节点为结束状态。
对于给定的串
,从开始状态出发,沿边上对应的字符前进,如果最后处于结束状态,称为该自动机接收字符串
,否则称为拒绝
.
单模式匹配自动机的构建
状态集合:自动机状态
表示已经匹配了前i个字符,最后一个状态是结束状态。
符号表:字符串的符号表
转移构造:
- 对于状态 ,符号 ,若 ,则 ;
- 否则, 从 开始,不断令 ,直到 ,此时 。
- 若最后 且 ,则 .
- 在实际应用中,往往要找到文本中的所有模式串,所以结束状态也要加上转移。
举例子:为字符串ababb构建单模式匹配自动机
多模式匹配自动机(AC自动机)的构建
状态集合:将模式串集合构建成一棵Trie树,Trie树的节点集就是自动机的状态集。