【发布时间】:2020-04-28 22:48:09
【问题描述】:
此问题基于 jogojapan 的this 回答。
在该答案中,他指出,对于某些后缀树/后缀数组算法,仅具有唯一标记字符 $ 就足够了,而另一些则需要 $ 来按字典顺序比较最小/最大。
阅读 Abouelhoda 等人的论文 Replacing suffix trees with enhanced suffix arrays,他们选择 $ 必须大于任何其他字符。通过这种选择,我们能够构建高效的算法,可以模拟自下而上和自上而下的后缀树遍历,以及基于这些遍历方案的各种潜在应用。
另一方面,使用诱导排序有效地构造后缀数组或 LCP 数组的算法会做出相反的选择:$ 必须是字典序最小的。 (参见:Nong 等人的 Linear Suffix Array Construction by Almost Pure Induced-Sorting 和 Johannes Fischer 的 Inducing the LCP-Array)。
对于$ 所具有的属性的这些选择是必要的还是只是为了方便而进行的,对我来说并不是很明显。
如果最快的 SA/LCP-Array 构造算法不能与许多使用后缀数组的高效算法一起使用,那将让我感到非常不幸。
- 诱导排序构造方法是否严格要求
$在字典上最小,或者如果我选择$在字典上最大,它们是否同样有效(或稍作修改)? - 如果 1 的答案是否定的,如果
$在字典上是最小的,Abouelhoda 提出的用于模拟自上而下/自下而上的后缀树遍历的算法是否适用,如果不是,可以稍微修改它们以便可以使用? - 如果 1 和 2 都没有,当我选择
$在字典上最小时,是否有完全不同的算法可用于执行类似的任务?如果它们存在,它们是什么?
【问题讨论】: