字符串进阶——谈谈后缀全家桶(1) 后缀树

本文详细介绍了后缀树的概念,从Trie树转换到后缀树的过程,并重点解析了Ukkonen算法的特性及其实现,包括时间复杂度、空间复杂度以及三种运行法则。此外,还列举了后缀树在模式匹配、最长重复子串等字符串处理问题中的应用。
摘要由CSDN通过智能技术生成

后缀是什么
然而如果单从字符串构造来讲任何 S[ilen[S]]S(1ilen[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 的所有后缀进行 Trie 树构造,例如”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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值