SAM——重复旋律能告诉我们什么

  • 重复旋律五:(S)中本质不同的子串数量:(sum_{i = 1}^{sz}{len_i - len_{f_i}})
  • 重复旋律六:如果节点(u)不包含子串(S[1..i]),也就是不存在母串的某个前缀,那么满足(|endpos(u)| = ∑|endpos(son(u))|),其中(son(u))(u)点的所有儿子,否则(|endpos(u)| = ∑|endpos(son(u))|+1)
  • 重复旋律七:通过(len)与桶排序在线性时间内求出(SAM)的拓扑序;可以考虑通过求出父亲与儿子的关系在(parent)树上递推出答案;多串处理时可以考虑在中间假如一些分隔字符。
  • 弦论乱入:每一节点的(endpos)的大小代表了本质相同的串的出现次数,可以通过(siz=|endpos|或者1)来解决本质相同/不同子串的问题,其中(siz)表示单个子串的出现位置,可以通过拓扑序倒序递推,而表示子树大小的(sum)则需要在(parent)树上求得。

(持续更新中……

原文地址:https://www.cnblogs.com/whenc/p/13887883.html