Каково текущее состояние алгоритмов сжатия только текста?
-
04-07-2019 - |
Вопрос
В честь Премия Хаттера, каковы лучшие алгоритмы (и краткое описание каждого) для сжатия текста?
Примечание:Цель этого вопроса — получить описание алгоритмов сжатия, а не программ сжатия.
Решение
Компрессоры, расширяющие границы, объединяют алгоритмы для достижения безумных результатов.Общие алгоритмы включают в себя:
- В Преобразование Берроуза-Уиллера и здесь - перемешивать символы (или другие битовые блоки) с помощью предсказуемого алгоритма для увеличения повторяющихся блоков, что упрощает сжатие источника.Распаковка происходит как обычно, и результат не перемешивается с помощью обратного преобразования.Примечание:BWT сам по себе ничего не сжимает.Это просто упрощает сжатие источника.
- Прогнозирование по частичному совпадению (PPM) - эволюция арифметическое кодирование где модель прогнозирования (контекст) создается путем обработки статистики об источнике, а не использования статических вероятностей.Несмотря на то, что его корни лежат в арифметическом кодировании, результат может быть представлен с помощью кодирования Хаффмана или словаря, а также арифметического кодирования.
- Смешение контекстов. Арифметическое кодирование использует статический контекст для прогнозирования, PPM динамически выбирает один контекст, смешивание контекстов использует множество контекстов и взвешивает их результаты.PAQ использует смешивание контекстов. Вот обзор высокого уровня.
- Динамическое марковское сжатие - связано с PPM, но использует контексты битового уровня, а не байтовые или более длинные.
- Кроме того, участники премии Хаттера могут заменять общий текст мелкобайтовыми записями из внешних словарей и различать текст в верхнем и нижнем регистре специальным символом вместо использования двух отдельных записей.Вот почему они так хороши при сжатии текста (особенно текста ASCII) и не столь полезны для общего сжатия.
Максимальное сжатие Это довольно крутой сайт для тестирования текста и общего сжатия.Мэтт Махони публикует еще один эталон.Особый интерес может представлять Махони, поскольку в нем указан основной алгоритм, используемый для каждой записи.
Другие советы
всегда есть lzip.
Кроме шуток:
- Если совместимость вызывает беспокойство, PKZIP (
DEFLATE
алгоритм) по-прежнему побеждает. - bzip2 — лучший компромисс между относительно широкой базой установки и довольно хорошей степенью сжатия, но требует отдельного архиватора.
- 7-Zip (
LZMA
алгоритм) очень хорошо сжимается и доступен по лицензии LGPL.Однако немногие операционные системы поставляются со встроенной поддержкой. - Rzip это вариант bzip2, который, на мой взгляд, заслуживает большего внимания.Это может быть особенно интересно для огромных файлов журналов, требующих длительного архивирования.Также требуется отдельный архиватор.
Если вы хотите использовать PAQ в качестве программы, вы можете установить пакет zpaq
в системах на основе debian. Использование (см. Также man zpaq
)
zpaq c archivename.zpaq file1 file2 file3
Сжатие составило 1/10 размера файла zip . (1,9 млн против 15 млн)