在后缀树中查找关键字的所有索引

时间:2011-10-07 19:48:39

标签: indexing suffix-tree

enter image description here

这是输入文本“mississippi”的后缀树的可视化图形。在这个例子中,我正在搜索的关键字是“si”。我想我明白了如何获得“si”的第一个索引

  • 从根节点#1开始
  • 第一个边是“s”,所以我们向下走到节点#2
  • 节点#2的第二个边缘是“i”,因此我们检索节点#7,并且此节点将索引存储到文本中。

但是现在第二次出现“si”...我是否继续搜索下一个出现的子树#7?对我来说真的没有意义。

或者,是否必须以不同的方式组装树以支持多个索引?

1 个答案:

答案 0 :(得分:1)

问题是树中没有足够的信息。

指向标有6的节点的路径表示原始单词中出现两个(通常是所有)。您要做的是当您按算法描述处理前缀时,您希望在节点中存储索引。一般来说,算法不会存储这样的信息,但很容易修改它。

每次访问节点时,写入将原始字符串中的位置追加到匹配位置列表。

  1. (空树)
  2. (路径“si”,节点“6”(“6”节点中的附加信息:4-5),树的其余部分)
  3. (路径“si”,节点“6”(“6”节点中的附加信息:4-5,7-8),树的其余部分)