“它与静态全文索引解决的是不同工作负载。Aho–Corasick 预处理模式集、随后在线顺序读文本,以上 $O(m+n+z)$ 是常字母表 RAM 下的确定性最坏输出敏感界;后缀树与Burro…”
定义与例子 ​
列出 (T$) 的全部循环移位,字典序排序成矩阵,BWT 是最后一列;等价地由后缀数组取每个后缀起点前一字符。banana$ 的排序后 BWT 为 annb$aa。
第一列
边界与用途 ​
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 backward search 维护后缀区间
压缩与安全边界 ​
BWT 不减少字符数。相似上下文使同字符形成 runs,run-length/熵编码才利用它;在随机文本上 runs 可能不短。变换可逆所以不是哈希,更没有保密性。
参考资料
- Burrows, Wheeler, A Block-sorting Lossless Data Compression Algorithm, 1994.
- Ferragina, Manzini, “Opportunistic Data Structures with Applications,” FOCS 2000.