后缀树搜索时间

时间:2011-04-28 14:24:59

标签: algorithm search complexity-theory suffix-tree

有谁知道下面声明的原因?或者有更好的网站可以提出这类问题吗?任何指针都会受到赞赏。

  

如果一个模式出现在文本(长度为n)k次,那么在该文本的后缀树中搜索所有那些k次的模式将花费O(n + k)。

2 个答案:

答案 0 :(得分:0)

后缀树搜索的时间长度与您搜索的模式的长度成正比。如果为密西西比州构建后缀树并搜索ssi。必须执行的查找将是3.时间是O(n),其中n是模式的长度。

答案 1 :(得分:0)

根据您在何处找到此声明,可能有特定原因导致其在上下文中成立。

然而,'+ k'的通常原因只是需要O(k)额外的操作来插入在返回给用户的结果列表中找到的每个匹配项。当使用反向文件而不是后缀树时,情况不一定如此,因为在索引中找到的反转列表(也称为发布列表)已经最终结果列表(至少如果我们假设(a)查询仅包含单个标记,(b)反向列表未压缩存储。

但通常后缀树(除非是特别准备的)不包含此类匹配列表。因此,在匹配期间,您可以识别通过树的路径,从某个内部节点结束。从那里,您必须遵循该内部节点的子树中的所有路径,以识别告诉您匹配的实际位置的叶节点(每个匹配一个叶节点),并在返回的结果列表中插入匹配位置用户。最后一步是花费O(k)时间。

另请注意,遵循内部节点子树中的所有路径,您可能会花费大量额外时间,其中总复杂度甚至高于O(n + k)。这取决于在子树中是否存在从内部节点到叶节点的任何直接指针。