卧薪尝胆,厚积薄发。
后缀自动机
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
ღゝ◡╹)ノ♡