后缀数组、后缀自动机学习笔记
后缀数组
定义
我们约定字符串 \(s\) 的后缀 \(i\) 指 \(s_{i\dots n}\)。
后缀数组(Suffix Array)主要是两个数组 \(sa\) 和 \(rk\),\({sa}_i\) 表示后缀排序后第 \(i\) 小的后缀编号,\({rk}_i\) 表示后缀 \(i\) 的排名。
显然,\({sa}_{{rk}_i}={rk}_{{sa}_i}=i\)。
例如对字符串 \(\textrm{aabaaaab}\) 的后缀排序如下:
\[\begin{array}{c:cccccccc} rk & 4 & 6 & 8 & 1 & 2 & 3 & 5 & 7 \\ s & \textrm{a} & \textrm{a} & \textrm{b} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{b} \\ \hline {sa}_1=4 & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{b} & & & \\ {sa}_2=5 & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{b} & & & & \\ {sa}_3=6 & \textrm{a} & \textrm{a} & \textrm{b} & & & & & \\ {sa}_4=1 & \textrm{a} & \textrm{a} & \textrm{b} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{b} \\ {sa}_5=7 & \textrm{a} & \textrm{b} & & & & & & \\ {sa}_6=2 & \textrm{a} & \textrm{b} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{b} \\ {sa}_7=8 & \textrm{b} & & & & & & & \\ {sa}_8=3 & \textrm{b} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{a} & \textrm{b} & & \\ \end{array} \]求法
待填坑。