后缀自动机+后缀树小记(重!)🐥

后缀自动机:可以接受一个字符串 $s$ 的所有子串的自动机

后缀树:将一个字符串的所有后缀编成一个**压缩**后的 Trie

后缀自动机性质:

1. 由不超过 $2n-1$ 个点构成(所以数组要开2倍)

2. 每个节点是个 endpos 集合,表示其中所有字符串在 $s$ 中结束的位置的集合

3. 反串的 parent 树构成 $s$ 的后缀树

4. 后缀树上两个节点的 lca 对应于这两个后缀的 lcp (然后变成大数据结构)

后缀树性质:

1. 可以由后缀自动机构建而来

2. 每个节点不存储字符,而是代表 startpos 集合的转变(类似于后缀自动机的 endpos),而每条代表着若干个字符

3. 后缀树上父节点的 startpos 集合包含为其所有儿子的 startpos 集合的并(且一定是不交并)

4. 沿着后缀树走,走到任意一条上时,走过的串在原串中出现的位置集合为这条边正下方的的 startpos 集合

5. 叶节点的 startpos 集合大小恰为 1,且唯一元素就是后缀自动机中求出来的 maxlen

6. 结合 3. 4. 5. ,我们预处理出来每个节点 startpos 集合的最小值与最大值,就可以知道一条边上对应的子串出现的第一个位置与最后一个位置

posted @ 2022-03-09 11:45  CharlieVinnie  阅读(105)  评论(0编辑  收藏  举报