后缀树和后缀数组的一些资料收集
2010-06-06 22:10
211 查看
后缀树(Suffix tree)是一种数据结构,能快速解决很多关于字符串的问题。后缀树的概念最早由Weiner 于1973年提出,既而由McCreight 在1976年和Ukkonen在1992年和1995年加以改进完善。
后缀树提出的目的是用来支持有效的字符串匹配和查询。
一个具有m个词的字符串S的后缀树T,就是一个包含一个根节点的有向树,该树恰好带有m个叶子,这些叶子被赋予从1到m的标号。 每一个内部节点,除了根节点以外,都至少有两个子节点,而且每条边都用S的一个非空子串来标识。出自同一节点的任意两条边的标识不会以相同的词开始。后缀树的关键特征是:对于任何叶子i,从根节点到该叶子所经历的边的所有标识串联起来后恰好拼出S的从i位置开始的后缀,即S[i,…,m]。树中节点的标识被定义为从根到该节点的所有边的标识的串联。
图中示意了字符串 "I know you know I know "的后缀树。内部节点用圆来表示,叶子用矩形来表示,该例子中有六个叶子,被标号为1到6。 终止字符在图中被省略掉了。
同理, 若干字符串组成的后缀树, 称为一个扩展的后缀树:n个字符串Sn,其中字符串的长度为mn, 由这些字符串组成一个扩展的后缀树 T ,它是一个包含一个根节点的有向树,该树有mn个叶子,每个叶子都用一个两数字的坐标tuple(k,l)来标识,其中k的范围是从1到n,而l的范围是从1到mk ,每一个内部节点,除了根节点外,都有两个子节点并且每条边都用一个非空的S中若干单词构成的一个子串来标识。并且出自同一节点的任意两条边的标识的第一个单词不能相同。对于任意的叶子(i,j),从根节点到该叶子所经历的所有边的标识的串联恰好拼出后缀Si,该后缀从位置j开始,就是说它们拼出了Si[j..mi]。
用 Ukkonen 算法构造后缀树/后缀数组,O(n),用链表存放子节点(代码)
用倍增算法构造后缀数组,O(n log n)
后缀树与后缀数组
后缀数组(IOI国家集训队论文)
后缀树提出的目的是用来支持有效的字符串匹配和查询。
一个具有m个词的字符串S的后缀树T,就是一个包含一个根节点的有向树,该树恰好带有m个叶子,这些叶子被赋予从1到m的标号。 每一个内部节点,除了根节点以外,都至少有两个子节点,而且每条边都用S的一个非空子串来标识。出自同一节点的任意两条边的标识不会以相同的词开始。后缀树的关键特征是:对于任何叶子i,从根节点到该叶子所经历的边的所有标识串联起来后恰好拼出S的从i位置开始的后缀,即S[i,…,m]。树中节点的标识被定义为从根到该节点的所有边的标识的串联。
图中示意了字符串 "I know you know I know "的后缀树。内部节点用圆来表示,叶子用矩形来表示,该例子中有六个叶子,被标号为1到6。 终止字符在图中被省略掉了。
同理, 若干字符串组成的后缀树, 称为一个扩展的后缀树:n个字符串Sn,其中字符串的长度为mn, 由这些字符串组成一个扩展的后缀树 T ,它是一个包含一个根节点的有向树,该树有mn个叶子,每个叶子都用一个两数字的坐标tuple(k,l)来标识,其中k的范围是从1到n,而l的范围是从1到mk ,每一个内部节点,除了根节点外,都有两个子节点并且每条边都用一个非空的S中若干单词构成的一个子串来标识。并且出自同一节点的任意两条边的标识的第一个单词不能相同。对于任意的叶子(i,j),从根节点到该叶子所经历的所有边的标识的串联恰好拼出后缀Si,该后缀从位置j开始,就是说它们拼出了Si[j..mi]。
用 Ukkonen 算法构造后缀树/后缀数组,O(n),用链表存放子节点(代码)
用倍增算法构造后缀数组,O(n log n)
后缀树与后缀数组
后缀数组(IOI国家集训队论文)
相关文章推荐
- 实用算法实现-第 8 篇 后缀树和后缀数组 [2 最长公共子串]
- 初学ASP.Net时在论坛收藏收集的一些资料备忘 选择自 JadyZhu 的 Blog
- 收集:初学ASP.Net时在论坛收藏收集的一些资料备忘
- 对LINQ的一些资料收集
- 一些安卓资料的收集
- 字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组(转)
- 现在入职了,分享一些以前收集比较全的资料!
- 快速上手Spring--1.收集的一些资料
- 收集一些练习英语口语的资料和美剧
- 快速上手Spring--1.收集的一些资料
- 收集一些WPF、WCF等资料
- 初学ASP.Net时在论坛收藏收集的一些资料备忘
- 实用算法实现-第 8 篇 后缀树和后缀数组 [2 最长公共子串]
- 后缀树与后缀数组
- 【收集的资料】linux 文件操作的一些命令
- 初学ASP.Net时在论坛收藏收集的一些资料备忘
- BZOJ3238 Ahoi2013 差异 后缀自动机,后缀树,后缀数组解法三合一
- 快速上手Spring--1.收集的一些资料
- 初学ASP.Net时在论坛收藏收集的一些资料备忘
- 快速上手Spring--1.收集的一些资料