“LCP 数组、BWT与FM index以构造好的后缀序为输入或邻近结构,不属于 SA 构造步骤本身。在线文本追加也会改变大量后缀次序,静态构造算法不能局部套用。”
形式陈述 ​
定义与例子 ​
把文本字 banana$ 的排序后 BWT 为 annb$aa。
第一列
直觉
BWT 把“字符前面接着什么上下文”转换成排序后相邻行中的局部规律。排序矩阵的首列按字符分组,末列则保留每一行向前一个字符;相同字符的出现次序稳定对应,使 LF 可以沿原文本逐字符后退。可逆性来自这条排列关系,而不是末列单独保留了原位置。
边界与用途 ​
BWT 长度与输入相同,本身没有压缩;它把相似上下文字符聚集,后续 run-length、move-to-front 或熵编码才缩短。没有终止符时,循环移位排序与后缀排序也不等价。
BWT 不是哈希,也不单独支持模式搜索;配合 rank/select 和采样位置才形成 FM-index。
多个终止符或终止符不唯一最小时,循环行锚点与后缀次序都要重新定义。变换可逆也不表示加密;它只是输入字符的一种排列,不提供保密性。
例子与边界
banana$ 的完整轨迹 ​
按字典序排列后缀为 $、a$、ana$、anana$、banana$、na$、nana$,对应 suffix array annb$aa。这比显式构造全部循环移位省空间,却与带唯一终止符的移位矩阵定义等价。
首列 $aaabnn。在末列中第 2 个 a 与首列中第 2 个 a 对应同一循环行,因为稳定排序保留相同字符的相对 occurrence rank;这就是 first–last 性质。
推论与应用
逆变换与区间更新 ​
给末列位置 $ 所在行反复 LF,逆序读出字符便恢复唯一文本。没有终止符或主索引,只能恢复某个循环旋转。
FM-index的 backward search 维护后缀区间
参考资料
- Burrows, Wheeler, A Block-sorting Lossless Data Compression Algorithm, 1994.
- Ferragina, Manzini, “Opportunistic Data Structures with Applications,” FOCS 2000.