How and when to create a suffix link in suffix tree?
有人能给我一个关于如何和何时在后缀树中创建后缀链接的例子吗?
如果我的字符串是
希望能给我们一些图片来说明每一步。
非常感谢。
要理解这一点,首先要记住有三种节点在后缀树中:好的。
- 根
- 内部节点
- 叶节点
在下图中,这是EDOCX1的后缀树(0),黄色圆是根,灰色、蓝色和绿色是内部的节点,小的黑色的是树叶。好的。
1 2 | ABAB -> BAB -> AB -> B (blue) (green) (gray1) (gray2) |
这就是为什么它们被称为后缀链接(整个序列是称为后缀链)。好的。
它们有什么用?好的。
它们对许多事情都有好处。但是,他们玩后缀树Ukkonen算法中的特殊作用特别是建筑在这里描述的规则3中:插入最后一个字符后在某些点x的后缀s中,算法需要插入后缀s的最后一个字符在o(1)time中。在为此,它使用后缀链接直接跳转到该位置。x-1并进行插入。好的。
但是,请注意,没有必要在后缀树中放置后缀链接。它们不是后缀树定义的一部分,只是一些构造或使用后缀树的算法所使用的特殊链接。好的。
关于单字符节点:如果有一个内部节点x,其字符串(即从根到x路径上的字符串)只包含一个字符,该怎么办?根据上面的定义,x没有后缀链接。但是,您可以假定如果它有一个后缀链接,它将指向根节点。此外:根据上面的定义,如果内部节点没有后缀链接,则它必须是一个单字符节点,因此可以始终假定,如果内部节点没有后缀链接,则它必须是一个单字符节点,因此,表示s-1后缀的节点是根节点。(在本例中,有些算法可能会添加指向根节点的显式后缀链接。)感谢J_Random_Hacker对此的评论。好的。好啊。