我只是想知道,在何时后缀树比增强型后缀数组更优。
在阅读了Replacing suffix trees with enhanced suffix arrays之后,我不再看到使用后缀树的理由。有些方法可能会变得复杂,但你可以用一个后缀数组做到与使用后缀树相同的操作,且时间复杂度相同但占用更少的内存。
甚至有一项调查表明,后缀数组速度更快,因为它们更加友好缓存并且产生的缓存未命中比后缀树少(所以缓存可以更好地预测数组的使用情况,然后递归树结构)。
那么,是否有人知道在何时选择后缀树而不是后缀数组呢?
编辑 好吧,如果你知道更多,请告诉我,目前有:
- 后缀数组不允许在线构建
- 某些模式匹配算法在后缀树上运行得更快
- (附加)由于可以在线构建,因此可以将其保存在硬盘上并扩展现有的后缀树。如果使用SSD,速度也应该很快。