卧薪尝胆,厚积薄发。
后缀自动机
Date: Thu Aug 16 19:11:00 CST 2018 In Category: 总结

最小状态后缀自动机:

把结束集合相同的状态合在一起,增量法构造。
$AAAAxBAAAAxBAA$
$last=AAAAxBAAAAxBAA$
$last$ 祖先依次为:
$1$ 、 $BAAAAxBAA,xBAAAAxBAA,AxBAAAAxBAA,$
$AAxBAAAAxBAA,AAAxBAAAAxBAA,AAAAxBAAAAxBAA$
$2$ 、 $BAA,xBAA,AxBAA,AAxBAA,AAAxBAA,AAAAxBAA$
$3$ 、 $AA$
$4$ 、 $A$
其中 $3$ 是第一个有 $x$ 转移的节点。沿 $parent$ 树上升父亲是儿子的后缀, $maxl_{fa}+1=minl_{son}$
在后面加入 $x$ ,则前两个没有 $x$ 转移,可以直接把转移设成 $np$ 。
$q=s[p].tr[x]$ , $q=x,Ax,AAx,AAAx,AAAAx$ 。
$q$ 代表的状态的 $Right$ 集合为 $\{5,11\}$ ,但加入 $x$ 后应变成两个节点 $x,Ax,AAx$ 和 $AAAx,AAAAx$ , $Right$ 集合分别为 $\{5,11,15\}$ 和 $\{5,11\}$ 。让 $q$ 变成 $AAAx,AAAAx$ ,新建 $nq=x,Ax,AAx$ ,显然原来 $q$ 的 $parent$ 还是 $nq,q,np$ 的祖先,前两个因为是一个串分裂出来的,只是 $right$ 比原来多了最后一位,而 $q$ 的 $parent$ 的 $right$ 集合一定也多了最后一位,所以 $parent[q]$ 是他们所有的祖先,因为 $nq$ 代表原来 $q$ 能放在后缀的部分,所以一定是 $q$ 的短的几个,而新的 $q$ 代表了原来的 $q$ 除去 $nq$ 之外较长的几个,也就是说 $nq$ 是 $q$ 的后缀且 $maxl_{nq}+1=minl_q$ ,所以一定有 $par_q=nq$ , $np$ 也是 $right$ 集合包含 $n+1$ 的状态中 $maxl$ 最p大的一个,所以 $par_{np}=nq$ 。
In tag:
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡