Каковы хорошие алгоритмы для извлечения структур / сжатия последовательностей? - PullRequest
2 голосов
/ 21 ноября 2011

Какие хорошие алгоритмы для извлечения иерархической структуры из последовательностей?

Моя главная задача - сжатие последовательности, и последовательность имеет некоторую иерархическую структуру.Меня не слишком беспокоит время выполнения алгоритма, хотя длина последовательности составляет до 256 тыс. Символов, и она не должна выполняться дольше, чем несколько секунд.

До сих пор я знал о алгоритме sequitur , и я хотел бы знать о любых других алгоритмах / идеях, которые могут быть аналогичным образом полезными.

EDIT: декомпрессия должна быть очень простой.

EDIT2: Я сжимаю код.Я разработал довольно большую функцию в виде огромного базового блока кода, который работает быстрее, чем исходная рекурсивная функция для некоторых размеров, но затем код становится громоздким и большим по мере изменения параметра.Я экспериментировал с sequitur для сжатия полностью проработанной функции, и она хорошо работает - это позволяет мне достичь некоторого среднего уровня между рекурсивной функцией и полностью проработанным базовым блоком.Теперь мне интересно, есть ли другие алгоритмы, которые я тоже должен попробовать.

1 Ответ

1 голос
/ 22 ноября 2011

LZ77 и LZ78 и преобразование Барроуза-Уилера - хороший способ начать.Первые два хорошо работают с потоковыми данными и могут иметь очень быстрые реализации.Чистый словарный стиль LZ78 хорошо подходит для извлечения иерархических структур.

Если вы меньше беспокоились о быстром сжатии и просто хотели получить структуру, алгоритм sequitur будет непростым - AFAICT, он лучшийв классе.

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