SAM 后缀自动机

这玩意还真的好玄学,看了半天,也就看了个大概吧

确实很妙

总算理解了parent树,但是关于SAM的DAG的性质的证明并没有看太懂,也没有特别明白。。。

update:又看了一会,原来是自己把定义搞错了,后缀自动机其实是在满足以下条件的最简状态,主要是难构造,掌握构造代码就好了,证明就不管了c。

条件如下:(摘自KesdiaelKen的blog《史上最通俗的后缀自动机详解》

1.有一个源点,若干个终止点。边代表在目前的字符串后加上的字母。从源点到任意一个节点的任意路径可以形成一个字符串。

2.从源点到任意节点的任意路径形成的字符串均为原串子串。从源点到任意节点的任意路径不能形成的字符串均不为原串子串。(简单来说,这个图可以表示,且仅可以表示出原串的所有子串)

3.从源点到任意终止节点的任意路径形成的字符串均为原串后缀。

4.从源点出发的任意两条不同路径形成的字符串不相同。

不过主要就是记一下结论吧

在SAM上,从源点跑到任意一个点的一条路径都是一个子串,不重,且所有路径形成子串的并集就是原串子串集。

也一定要理解parent 树

上一篇:PSAM嵌入式驱动---概念


下一篇:bam/sam 文件格式详解