后缀自动机

right集:SAM读入字符串 a 后能识别的后缀的集合, 这些后缀分别从{r1 , r2 , r3, ... rx}开始。spa

后缀自动机的每一个节点都是一个right集, 由于每一个非叶子节点至少有两个儿子,因此咱们能够知道parent树的总结点个数是O(n)的(大概为2倍)。字符串

parent树中的叶子节点的right集大小为 1,由于任何两个节点的right集要么是真包含,要么是相离,因此全部叶子节点都是相离的,io

那么咱们能够经过统计parent树某个节点的子树中叶子个数来肯定其Right集的大小统计

 

统计字符串 a 在 s 中的出现次数:总结

咱们知道sam读入一个字符串 a, 会到达一个节点 stateA, 那么显然 stateA 的right集的大小即为答案。集合

 

不一样子串个数:co

即全部节点的 val(i) - val(fa(i)) 便可。由于对于一个节点映射出的子串,它们的长度是连续的,而且每一个长度都惟一对应了一个子串。字符

相关文章
相关标签/搜索