Warning: session_start(): open(/tmp/sess_995774daeab7b0ac806477a2d66e0014, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/6/6a0f3843c5ea426c08feea4e44f84973.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:hotpot:ac自动机 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:hotpot:ac自动机

这是本文档旧的修订版!


AC自动机

引入

$AC$ 自动机是一种多模式串匹配算法,一般用于解决对于在文本串中匹配一系列模式串(例:给一个文本串和一系列模式串,问模式串在文本串中一共出现了多少次)

实现方法

具体的实现方法我们可以参考 $KMP$,在每次匹配失败了之后,则需要从 $i$ 回到 $fail(i)$,即 $fail(i)$ 位置的前缀的是 $i$ 这个位置的前缀的后缀。

而 $AC$ 自动机则是在 $trie$ 上实现这样的操作。

如图所示

2020-2021/teams/hotpot/ac自动机.1597999299.txt.gz · 最后更改: 2020/08/21 16:41 由 lotk