【发布时间】: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