转:Suffix Tree—后缀树

转:http://www.cppblog.com/yuyang7/archive/2009/03/29/78252.html

Suffix tree—后缀树

l 简介

后缀树是一种PAT树,它描述了给定字符串的所有后缀,许多重要的字符串操作都能够在后缀树上快速地实现。

l 定义

一个长度为n的字符串S,它的后缀树定义为一棵满足如下条件的树:

n 从根到树叶的路径与S的后缀一一对应。即每条路径惟一代表了S的一个后缀;

n 每条边都代表一个非空的字符串;

n 所有内部节点(根节点除外)都有至少两个子节点。

由于并非所有的字符串都存在这样的树,因此S通常使用一个终止符号进行填充(通常使用$)。

转:Suffix Tree—后缀树_第1张图片

l 优点

n 匹配快。对于长度为m的模式串,只需花费至多O(m)的时间进行匹配。

n 空间省。Suffix tree的空间耗费要低于Suffix trie,因为Suffix tree除根节点外不允许其内部节点只含单个子节点,因此它是Suffix trie的压缩表示。


转:Suffix Tree—后缀树_第2张图片

 

--------------------------------------------------------------------------------------------------------

其他一些介绍:

http://hi.baidu.com/zhizhesky/blog/item/40b5b81bf8dbb0098718bf26.html
http://hi.baidu.com/sophiaandphilem/blog/item/ad1d6d06b93aa87f020881ae.html
http://www.allisons.org/ll/AlgDS/Tree/Suffix/

你可能感兴趣的:(转:Suffix Tree—后缀树)