我正在寻找一种快速的后缀数组构造算法。我对易于实现和原始速度比渐近复杂性更感兴趣(我知道可以在 O(n) 时间内通过后缀树构造后缀数组,但这需要很多空间;显然其他算法有糟糕的最坏情况大 O 复杂性,但在实践中运行得非常快)。我不介意生成 LCP 数组作为副产品的算法,因为无论如何我都需要一个用于我自己的目的。
我找到了各种后缀数组构造算法的分类,但它已经过时了。我听说过SA-IS、qsufsort和BPR,但我真的不知道它们之间的比较,也不知道是否有更好的算法。考虑到 suffix-array 领域现在看起来有多热,我希望其他一些算法在它们发布后已经取代了它们。我似乎记得曾经看过一篇描述一种名为“split”的快速算法的论文,但我现在一辈子都找不到它。
那么,目前最先进的技术是什么?理想情况下,我想要一份当前最佳算法的简短列表(如果可能,请附上链接)并快速概述它们的相对优势和劣势。