一篇文章 轻松搞懂 AC自动机

您所在的位置:网站首页 ac自动机需要建tire树吗 一篇文章 轻松搞懂 AC自动机

一篇文章 轻松搞懂 AC自动机

2024-07-12 19:04| 来源: 网络整理| 查看: 265

索引 概念 前后缀匹配 Trie树 AC自动机的实现 初始化 Fail指针的构建 匹配字符串

一名蒟蒻向您问好。

概念

这是 AC自动机,不是自动AC机, 是一个十分常用的多模式字符串匹配算法 (也就是一个主串跟很多串匹配,叫多模式串匹配,那些串就叫模式串)

AC自动机是建立在Trie树上的,它利用fail失配指针(叫别的也一样),来寻找一个其它模式串的前缀与当前模式串的后缀相等。 (比起后缀自动机没有就自己建一条的直接而言,AC自动机这样指针索引的方式似乎更委婉(但后缀自动机的难度似乎更加“委婉”呢(微笑脸))

也就是说,AC自动机是一个魔改的Trie树(或者说加料),其思想和KMP算法的前后缀匹配不谋而合,不过一个在树上,一个在序列里。

前后缀匹配

虽然我们要讲的是树上的,但为了理解思想,我们用比较好理解的字符串来看,虽然只是一个储存结构的问题。

例如我们有:

主串: "ABCD" 模式串: "AB" "BC" "BCD" 那么我们要匹配的话,普通的过程是像这样: ABCD AB +1 AB AB BC BC +1 BC BCD BCD BCD +


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3