我只想知道,当后缀树优于增强后缀数组时。
阅读Replacing suffix trees with enhanced suffix arrays后,我看不再有使用后缀树的理由了。有些方法可能会变得复杂,但你可以使用后缀数组完成所有操作,使用后缀树可以做什么,并且需要相同的时间复杂度但内存较少。
一个survey甚至表明,后缀数组更快,因为它们缓存更友好,并且不会产生多少缓存未命中,然后产生后缀树(因此缓存可以更好地预测数组使用情况,然后在递归树结构上。)
那么,是否有人知道在后缀数组上选择后缀树的原因?
修改 好的,如果你知道更多,告诉我,到目前为止:
答案 0 :(得分:1)
SO本身有一些interesting thoughts。您还可以在线查找more technical material。有another paper可以帮助您解决问题,声称是实现这些结构的另一种有效方式。
我不是这个问题的专家,但在我看来,后缀数组可能会稍慢,即使它们更节省空间。然而,我缺乏实践经验来更详细地介绍它们。
答案 1 :(得分:-3)
另一个显示后缀树优越的例子:
如果已经有后缀树,则可以轻松构建后缀数组。
但是从后缀数组构造后缀树要复杂得多。