【问题标题】:Ukkonen's suffix tree algorithm, what is necessary?Ukkonen的后缀树算法,有什么必要?
【发布时间】:2014-11-21 19:24:11
【问题描述】:

是的,我读过这个:Ukkonen's suffix tree algorithm in plain English?

这是对算法的一个很好的解释,但杀死我的不是算法本身,而是用于实现它的数据结构。

我需要数据结构尽可能小和尽可能快,我已经看到许多仅使用节点的实现,有些只有边,有些只有边和节点等。然后有一些变化,我正在阅读的网站声称一个节点不需要有一个指向其父节点的指针,其他地方不考虑如何管理节点的子节点。

我的想法是有一个带有 int start 和 int * end(指向当前结束或阶段 i)的 Node 结构。每个节点都有一个 suffix_link 指针,一个指向其父节点的指针,以及一个指向包含其子节点的向量的指针。

我的问题是,这些东西对于实现后缀树是否足够和必要?我可以以任何方式最小化它吗?我还没有看到向量中有孩子的实现,所以我对自己的想法持怀疑态度。有人能解释一下以这种方式仅使用节点实现后缀树需要什么吗?

【问题讨论】:

  • 只是一个旁注,看看后缀数组。据说它们更容易实现。

标签: c++ data-structures suffix-tree


【解决方案1】:

以下可能会有所帮助:

Ukkonen’s Suffix Tree Construction

我们有
1. start, end代表边标签
2.后缀链接
3. 儿童数组

【讨论】:

    【解决方案2】:

    当我必须实现该算法时,更好解释的文档是原始的 Ukkonen paper,还有一个 newer with images

    是的,这个文档里面都是实现Ukkonen的后缀树算法的。

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 1970-01-01
      • 2010-11-21
      • 2012-03-16
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多