后缀是什么
然而如果单从字符串构造来讲任何 S[i…len[S]]⊂S(1⩽i⩽len[S]) S [ i … l e n [ S ] ] ⊂ S ( 1 ⩽ i ⩽ l e n [ S ] ) 均为字符串 S S 的后缀。
后缀树
1 从Trie到后缀树的变化
在WikiEn上后缀树的定义如下Suffix Tree.
In computer science, a suffix tree (also called PAT tree or, in an earlier form, position tree) is a compressed trie containing all the suffixes of the given text as their keys and positions in the text as their values.
对串 S S 的所有后缀进行
树构造,例如”bananas”,就会得到下面的 Suffix Trie Suffix Trie .
对 Suffix Trie Suffix Trie 压缩就得到了 Suffix Compressed Trie Suffix Compressed Trie .
这正是我们所定义的后缀树( Suffix Tree Suffix Tree ).
关于 Trie Trie 树的应用,最优秀的表现就是在该树上进行的”KMP算法”,即ac自动机,一句话概括应该就是多字符串统计问题。 Trie Trie 树的思想虽然简单却实用,有了它我们就可以设计很多关于字符串的算法。
从 Trie Trie 到后缀树,亦是利用 Trie Trie 对多字符串统计的性质完成对单个字符串的全面掌握——后缀树对单个字符串的所有后缀(包括该字符串本身自然是一个特殊的后缀,空字符串 ϵ ϵ (这里以 $ $ 符号表示)也是一个特殊的后缀)。后缀树自然可以对所有的后缀进行暴力建树,但这就失去了对“该 Trie