Выбор метода сжатия
В заключение разд. скажем несколько слов о процедуре выбора метода сжатия.
Выбор метода - это первая задача, которую должен решить разработчик программных средств сжатия данных. Выбор зависит от типа данных, которые предстоит обрабатывать, аппаратных ресурсов, требований к степени сжатия и ограничений на время работы программы. Дадим ряд рекомендаций, предполагая, что необходимо сжимать качественные данные, между элементами которых имеются сильные и достаточно протяженные статистические связи, т. е. данные порождены источником с памятью.
Прежде всего, следует учитывать, что каждый из рассмотренных в разделе универсальных методов сжатия данных источников с памятью допускает модификации, позволяющие существенно изменить параметры компрессора. Так, увеличение порядка модели РРМ приводит к заметному усилению сжатия ценой замедления работы и увеличения расхода памяти. К аналогичному результату приводит увеличение размера словаря LZ77-Meтодов, но при этом время разжатия остается практически неизменным. Свойства компрессоров на основе BWT варьируются в меньшей степени.
Ограничения на время работы программы возникают в зависимости от условий, в которых предстоит работать архиватору. Например, при сжатии данных для формирования дистрибутива программного обеспечения ограничение на время компрессии практически отсутствует, в то время как требуется максимально уменьшить время восстановления исходных данных. При резервном сохранении данных положение вещей обратно, поскольку ситуация, когда требуется выполнить разжатие, довольно редка. Необходимость оперативной передачи данных по сети обусловливает одинаковые требования к временам сжатия и разжатия; если данные передаются нескольким абонентам, некоторое преимущество имеют архиваторы, обладающие более быстрым алгоритмом разжатия.
Методы семейства LZ77 обладают наибольшей скоростью декомпрессии. Превышение над скоростью сжатия при использовании метода Хаффмана для кодирования результатов работы Ь277-метода - десятикратное. Меньшая разница у методов на основе BWT - в среднем скорость разжатия в 2-4 раза выше скорости сжатия. Декодирование при использовании РРМ на 5-10% медленнее кодирования. Компрессоры на базе частичных сортирующих преобразований малого порядка характеризуются еще большим отставанием разжатия - на некоторых файлах оно в несколько раз медленнее сжатия.
Похожая картина наблюдается, если сравнивать использование памяти при декодировании. В случае применения LZ77 расходы памяти минимальны. Архиваторы на основе РРМ наиболее требовательны - им необходимо столько же памяти, сколько и при кодировании. Следует отметить, что при сжатии требования к памяти у программ-представителей разных методов примерно близки, хотя и могут изменяться для разных типов сжимаемых данных.
Таким образом, если можно пренебречь степенью сжатия, методы семейства LZ77 наиболее эффективны для создания дистрибутивов, а методы на основе частичных сортирующих преобразований - для резервного копирования.
Типичные данные качественного характера можно условно разделить на 4 типа:
1) однородные данные (например, типичные тексты);
2) однородные данные с большой избыточностью в виде длинных повторяющихся строк (например, набор исходных текстов);
3) неоднородные данные, в которых имеется выраженная нестабильность контекстно-зависимой статистики (например, исполнимые файлы);
4) данные с малой избыточностью (например, файлы, содержащие уже сжатые блоки).
Рассмотрим, как ведут себя различные методы при сжатии данных разных типов. При анализе будем ориентироваться на наилучших представителей методов.
Для сжатия таких однородных данных, как тексты на естественных языках, наиболее подходящими являются РРМ-методы и методы на основе BWT. Первые позволяют достичь большей степени сжатия, вторые обладают большей скоростью декодирования. Программы, использующие методы семейства LZ77, сжимают указанные данные заметно хуже и, при увеличении длины словаря, существенно медленнее.
Если в однородных данных есть длинные повторяющиеся строки, у программ на основе LZ77 есть шанс себя реабилитировать. Впрочем, в этом случае наиболее выгодным будет использовать гибрид LZ77 и любого из двух его конкурентов или применять LZ77-npenpoueccHHr.
При сжатии неоднородных данных пальма первенства принадлежит семейству методов LZ77, которые при сохранении своих высоких скоростных качеств настигают по степени сжатия заметно более медленных лучших представителей РРМ-компрессоров. Если не использовать фрагментирова-ние, BWT-компрессоры показывают не очень высокую степень сжатия неоднородных данных.
На данных с малой избыточностью все методы выступают не лучшим образом. Некоторое преимущество в степени сжатия имеют архиваторы на основе LZ77 и РРМ. Но последние при этом требуют значительного расхода памяти и скорость их работы заметно падает.
В заключение приведем таблицу, в которой описаны свойства методов при сжатии качественных данных различных типов.
|
Параметр |
Метод |
Однородные данные (типичный текст) |
Однородные данные с большой избыточностью (исходные тексты программ) |
Неоднородные данные |
Данные с малой избыточностью |
|
Степень сжатия |
РРМ |
Высокая |
Высокая |
Высокая |
Невысокая |
|
BWT |
Близкая к РРМ |
Близкая к РРМ |
Без фраг-ментиро-вания - худшая |
м |
|
|
LZ77 |
Заметно худшая |
При большом количестве длинных повторов довольно высокая |
Близкая к РРМ |
м |
|
Параметр |
Метод |
Однородные данные (типичный текст) |
Однородные данные с большой избыточностью (исходные тексты программ) |
Неоднородные данные |
Данные с малой избыточностью. |
|
Скорость кодирования |
BWT |
Высокая |
Средняя |
Высокая |
Высокая |
|
РРМ |
При большом порядке модели - самая низкая; при небольшом -немного быстрее BWT |
Если не использовать сложное моделирование - высокая |
Средняя |
Низкая |
|
|
LZ77 |
Средняя, а при малом словаре - самая высокая |
Средняя, при малом словаре - высокая |
Высокая |
Высокая |
|
|
Скорость декодирования |
LZ77 |
Примерно в 10 раз выше скорости кодирования; разница еще больше на избыточных данных |
|||
|
РРМ |
Обычно на 5-10% медленнее кодирования |
||||
|
BWT |
В 2-4 раза выше скорости кодирования |
||||
|
Требуемый объем памяти при сжатии |
BWT |
Постоянный при сжатии данных любого типа |
|||
|
РРМ |
Варьируется в широких пределах, в зависимости от сложности моделирования и порядка модели; вырастает для очень неоднородных данных; в зависимости от структуры хранения контекстной информации может увеличиваться для малоизбыточных данных |
||||
|
LZ77 |
Пропорционален размеру словаря |
||||
|
Требуемый объем памяти при разжатии |
LZ77 |
Минимальный |
|||
|
РРМ |
Максимальный; если процесс моделирования симметричен, то примерно равен расходу памяти при сжатии |
||||
|
BWT |
Средний |
||||
- 556 просмотров









