SA后缀数组学习笔记

发布时间 2023-05-27 17:02:38作者: pdpd_zaa

什么是后缀数组

后缀数组主要是用来处理字符串的,分为两种方法:倍增法以及 DC3,但由于倍增法通俗易懂,码量小,常数小,所以今天这篇文章我就只介绍倍增法(不可能是因为我不会 DC3)

前缀知识

No.1 基数排序

跟桶排序差不了多少,思想就是:将整数按位数切割成不同的数字,然后按每个位数分别比较。按每个位数从低位数到高位数分别比较。

然后在后缀数组中,我们就借用了这个思想来处理一个二元组,这之后我们还会接着讲。

No.2 文章中的数组介绍

\(sa_i\):排名为i的后缀的位置

\(rak_i\):从第i个位置开始的后缀的排名,
下文为了叙述方便,把从第i个位置开
始的后缀简称为后缀i
\(tp_i\):基数排序的第二关键字,意义与sa一样
,即第二关键字排名为i的后缀的位置

\(tag_i\):i号元素出现了多少次。辅助基数排序。