“KMP 在文本到达时维护单一模式的前缀自动机状态,空间 $O( P )$,适合在线扫描。后缀树预处理固定全文后支持许多模式并报告位置;FM index以 BWT 和 rank/select…”
结构与查询 ​
对 (T$) 的 (n+1) 个后缀建立压缩Trie。每个叶对应一个后缀起点,内部节点至少两子;边标签不复制字符串,只存 (T[l..r)),故节点与空间 (O(n))。模式 (P) 沿边逐字符匹配,到达 locus 后其叶子即出现位置。
文本 banana$ 的 ana$ 与 anana$ 共享 ana 前缀,压缩后是一条边而非三个单字符节点。若复制每条边标签,总长度可能
终止符与边界 ​
唯一且字典序最小的终止符让任何后缀都不是另一后缀的前缀,并固定独立叶。Suffix link 连接 (aX) 与 (X) 的内部状态,用于线性构造,但查询正确性不依赖具体构建算法。
后缀树是显式拓扑索引;suffix array 是叶的字典序线性化,suffix automaton识别子串语言。三者空间与接口不同。
线性构建通常假设常数字母表,或假设子边字典能在线性总成本内处理;一般有序字母表可能多出对数因子。构建时间、导航时间与报告输出是三个不同成本坐标。
构造对象与边表示 ​
叶
对 banana$,根的 a 子树共享 ana 前缀,叶起点 1 与 3 在 ana 后分叉。若把 ana 分别复制到多条边,所有后缀边标签总长度会回到
模式查询逐步执行 ​
查询 ana:从根按 a 找边,逐字符比较边标签;模式若在边中途耗尽,该隐式 locus 下全部叶都是出现位置,得到 1、3。若边上第二字符失配,立即无解。每个模式字符只消费一次,所以导航字符工作
子边若用数组且字母表常数,选择为
Suffix link 与近邻索引 ​
Suffix link 从路径标签
参考资料
- Edward McCreight, “A Space-Economical Suffix Tree Construction,” JACM, 1976.
- Esko Ukkonen, “On-line Construction of Suffix Trees,” Algorithmica, 1995.