是用于后缀排序的基数排序



我正在尝试实现块排序。这是来自Burrows-Wheeler的报纸。

(在此步骤之前,您创建一个S的V后缀数组)

Q4.[基数排序]
对V的元素进行排序,使用每个后缀的前两个字符作为排序键。使用基数排序可以有效地做到这一点。

所以我知道你在用基数排序法对后缀进行排序。
这应该如何更新数组V?只有在基数排序完成后,我才能知道后缀的排序位置。假设第4个后缀是排序后的第一个后缀。所以V[0]=i。在这种情况下,我们知道(因为我告诉过你)i=4。但是算法怎么知道呢,因为我们没有跟踪他们的位置。我应该创建一个同时包含后缀及其后缀号的类吗?

快速阅读后;我认为Burrows-Wheeler有一个错误,意思是说使用数组V对W的元素进行排序,以跟踪和映射W的元素的最终位置。即,W不变,V包含索引的排序列表。

本文似乎将V视为从该点向前指向W中元素的指针数组。

结账http://michael.dipperstein.com/bwt/页面底部有一个很棒的描述以及算法的源代码。

最新更新