Какой символ EOF я использую в преобразовании Берроуза Уилера? - PullRequest
2 голосов
/ 14 июня 2011

Я пытаюсь реализовать Блочную сортировку. В документе «Преобразование Барроуза Уилера» для сортировки блоков необходимо добавить количество символов EOF в исходную строку S, где EOF отсутствует в S.

Но так как я буду обрабатывать двоичные файлы, возможна любая возможная комбинация битов, поэтому я не могу заранее выбрать один символ EOF, который, я уверяю, не будет в S.

Как мне решить эту проблему?

Поскольку этот символ EOF используется для сортировки суффиксов на шаге, я прочитал, что вы можете сортировать дерево суффиксов без необходимости использования этого символа EOF. Стоит ли использовать вместо этого дерево суффиксов?

1 Ответ

1 голос
/ 14 июня 2011

Вы можете создать «виртуальный» EOF, используя длину ваших контейнеров данных ИЛИ, используя отдельную таблицу EOF, которая отслеживает позиции символов ваших виртуальных символов EOF.

[обновить для другой идеи] ... Другой вариант, выберите EOF-символ, назовите его 0x00 и escape-символ, назовите его 0xFF.Сканируйте ваш ввод и для всех 0xFF и 0x00 добавьте к ним 0xFF.То есть просто убежать от них.Делайте обратное при записи данных обратно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...