“first–last correspondence保证新区间正好对应前缀 $cQ$。若 $l'\ge r'$,模式不存在;处理完全部 $ P $ 个字符后,出现次数为 $r l$。”
First–Last 对应 ​
令
本文全部区间半开、Occ 不含位置
反向搜索 ​
若后缀数组区间
从空模式的全区间开始,按模式字符从右向左迭代;区间长度最终就是出现次数。每步做两次 rank,时间
banana$ 例子 ​
在文本 banana$ 的 BWT 上搜索 ana:先由字符 a 得到所有 a 开头后缀的区间,再用 n 收缩为 na,最后用 a 收缩为 ana。某一步左右端相等即为空区间,之后模式不存在;不能继续把负长度或闭区间端点代入。
边界与逆映射 ​
字符表次序决定
公式证明与定位 ​
FM-index 每隔
区间收缩的数值核对 ​
假设当前区间 a,且 a 的出现数
逐字符搜索只得到 suffix-array 行区间;若要输出文本位置,需对每一行沿 LF 走到最近采样行。一个匹配很多的模式会产生
参考资料
- Paolo Ferragina, Giovanni Manzini, Opportunistic Data Structures with Applications, FOCS, 2000.
- Paolo Ferragina, Giovanni Manzini, Indexing Compressed Text, JACM, 2005.