后缀自动机简介
学习自这里
这里只是为了背板而写的简介
定义
对给定字符串s的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串s的所有后缀。
通俗点说,后缀自动机就是一种自动机废话 ,它能够识别字符串s的所有后缀(当然不只识别得到后缀),并且能实行快速跳转(比如AC自动机的失配指针)。然后就可以用它搞很多事情。
用途
自行百度吧。。。太多了。。。
思想及构造实现
AC自动机有一个失配指针实现跳转,而后缀自动机用的是一个叫“后缀链接”的东西。
首先定义endpos(x)表示x这个子串在s中出现的位置的集合(终点集合)。这里的位置指的是子串的最右端。
然后这个东西有这个性质:
考虑两个非空子集u,w(length(u)<=length(w))。它们的终点集合不相交,或者endpos(w)是endpos(u)的子集。
还有一个东西l[x]表示当前节点子串的最长长度。
那么x的后缀链接fa[x]满足 endpos(