Используется ли сортировка по основанию для сортировки суффиксов?

Я пытаюсь реализовать сортировку блоков. Это из бумаги Берроуз Уилер.

(Перед этим шагом вы создаете массив суффиксов V из S)

Q4. [радикальная сортировка]
Сортируйте элементы V, используя первые два символа каждого суффикса в качестве ключа сортировки. Это может быть сделано эффективно, используя сортировку по основанию.

Я так понимаю, вы сортируете суффиксы с помощью radix sort.
Как это должно обновить массив V? Только после завершения сортировки по основанию я могу узнать отсортированную позицию суффикса. Предположим, что 4-й суффикс оказывается первым после сортировки. Итак, V[0] = i. В этом случае мы знаем (потому что я сказал вам), что я = 4. Но как алгоритм узнает об этом, поскольку мы не отслеживаем их положение. Должен ли я создать класс, который содержит как суффикс, так и номер его суффикса?

1 ответ

Решение

После быстрого прочтения; Я думаю, что у Burrows-Wheeler есть ошибка, и она подразумевает сортировку элементов W с использованием массива V для отслеживания и отображения окончательных местоположений элементов W, т.е. Так что W не изменяется, а V содержит отсортированный список индексов.

С этой точки зрения в статье рассматривается V как массив указателей на элементы в W.

Проверьте http://michael.dipperstein.com/bwt/ Внизу страницы есть отличное описание, а также исходный код алгоритма.

Другие вопросы по тегам