首先膜拜clj的ppt,记录几个要点
关于Right集合:
1.定义:一个子串str在母串S中所有出现位置的右端点。如子串str在S中出现位置为[l1,r1),[l2,r2),...,[ln,r3),则str的Right集合为{r1..rn}。会有一些子串的Right集合相同,其中最长的len为MAX(s),最短的为MIN(s)
2.性质1:给定Right(s)和len就可得出串
3.性质2:关于相交。如果Ra和Rb相交且不相等,那么Ra和Rb表示的子串一定不相交,否则两者的Right集合一定相同,不符合假设。那么设MAX(a)<MIN(b)。设r既在Ra中也在Rb中,那么必然a的子串都是b的子串的后缀。因此b出现的地方a一定出现,a出现的地方可能就没有b的位置了。所以Rb∈Ra。这个clj是不是讲错了?%>_<%
关于Parent树:
1.x为s的父亲节点当且仅当Right(s)∈Right(x)且Right(x)最小。可以证明MAX(x)=MIN(s)。我们发现parent树是树形结构而且父节点至少有两个子节点然后就可以证明点是O(N)的了好像。。?