Algorithm Ukkonen';广义后缀树的s算法

Algorithm Ukkonen';广义后缀树的s算法,algorithm,suffix-tree,Algorithm,Suffix Tree,我理解这一点。我只是想知道如何扩展它,使其包含多个字符串(以一个特殊字符结尾,比如“$”) 我在某个地方读到,给定字符串s1(比如说“abcddefx$”)和s2(比如说“abddefgh$”),我通常应该通过ukkonen的算法插入s1。然后用s2沿树向下移动。也就是说,我应该在树中搜索s2。 一旦我到达搜索结束的节点(“ab”,在“b”之后),我应该从那里恢复ukkonen的算法 我理解这背后的基本逻辑。但我好奇的是,旧的后缀链接会发生什么变化。它们仍然有效吗??? 此外,当我开始新的过程时

我理解这一点。我只是想知道如何扩展它,使其包含多个字符串(以一个特殊字符结尾,比如“$”)

我在某个地方读到,给定字符串s1(比如说“abcddefx$”)和s2(比如说“abddefgh$”),我通常应该通过ukkonen的算法插入s1。然后用s2沿树向下移动。也就是说,我应该在树中搜索s2。 一旦我到达搜索结束的节点(“ab”,在“b”之后),我应该从那里恢复ukkonen的算法

我理解这背后的基本逻辑。但我好奇的是,旧的后缀链接会发生什么变化。它们仍然有效吗???
此外,当我开始新的过程时,我对我的三元组(活动节点、活动长度、余数)是否应该是(代表“ab”的节点,0,0)感到困惑???

对于处理特殊字符,可以使用。这些是为您自己保留的几个特殊字符范围,但是这些范围的大小仅为4000个字符左右。根据您所使用的语言的unicode支持,这可能非常容易,也可能非常困难


如果这不起作用,与其在树中插入字符,不如将它们包装在其他类型的变量(struct、object、dictionary)中以“扩展”它们的含义。这样,您可以提供所需的额外信息(这是字符串的结尾吗?这是哪个字符串的结尾?)。然后,您可以在此新包装上提供相等的自定义运算符,而不是直接使用字符。

使用不同的特殊字符。@nhahtdh虽然这将导致绝对正确的结果,但恐怕我不能为添加到树中的每个字符串使用不同的特殊字符。这是“标准”多个字符串的解决方案。