Сжатие данных - это процесс, при котором объем цифровых данных уплотняется или уменьшается. Это уменьшает объем требуемого места для хранения и сокращает время передачи данных. В телекоммуникациях сжатие сообщений отправителем из источника называется кодированием источника.
По сути, сжатие данных направлено на удаление избыточной информации. Для этого данные преобразуются в представление, которое позволяет представить всю – или, по крайней мере, большую часть – информации в сокращенной форме. Этот процесс выполняется кодировщиком и называется сжатием. Обращение вспять называется декомпрессией.
Сжатие без потерь, кодирование без потерь или уменьшение избыточности - это когда сжатые данные могут быть использованы для извлечения точных исходных данных. Это необходимо, например, при сжатии исполняемых программных файлов.
В случае сжатия с потерями или уменьшения нерелевантности исходные данные обычно больше не могут быть восстановлены в точности из сжатых данных, т.е. часть информации теряется; алгоритмы стараются максимально опустить только “неважную” информацию. Такие методы часто используются для сжатия изображений или видео, а также аудиоданных.
Как работает сжатие данных
В наши дни при передаче цифровых данных на большие расстояния происходит сжатие данных. Это помогает экономить ресурсы при передаче или хранении данных, придавая им максимально минимальную форму, в зависимости от приложения. Сжимать можно только те данные, которые в той или иной форме являются избыточными. При отсутствии избыточности – например, в случае полностью случайных данных – сжатие без потерь в принципе невозможно из-за сложности по Колмогорову. Аналогично, принцип голубятни запрещает сжатие любого файла без потерь. Сжатие с потерями, с другой стороны, всегда возможно: алгоритм ранжирует данные в соответствии с их важностью, а затем отбрасывает “неважные” данные. В списке того, насколько важны те или иные компоненты, все больше и больше можно отбрасывать, соответствующим образом меняя “порог сохранения”.
В случае сжатия данных для сжатия или восстановления данных требуются вычислительные усилия как со стороны отправителя, так и со стороны получателя. Однако вычислительные усилия сильно различаются для разных методов сжатия. Например, Deflate и LZO очень быстры как при сжатии, так и при распаковке, в то время как LZMA, например, обеспечивает особенно интенсивное сжатие – и, следовательно, минимально возможные объемы данных – с большими затратами, в то время как сжатые данные могут быть преобразованы обратно в исходную форму очень быстро. Это вынуждает выбирать другой метод сжатия в зависимости от области применения. Таким образом, методы сжатия оптимизируются либо с точки зрения пропускной способности, энергопотребления, либо сокращения объема данных, и сжатие не всегда направлено на максимально компактное представление. Разница становится очевидной в этих примерах:
- Если видео- или звукозаписи транслируются в прямом эфире, сжатие и восстановление должны выполняться как можно быстрее. Потеря качества оправдана, если поддерживается максимальная (возможная) скорость передачи. Это относится, например, к телефонным разговорам, где собеседника часто все равно понимают, даже если качество звука низкое.
- Если один файл загружается бесчисленным количеством пользователей, стоит использовать медленный, но очень мощный алгоритм сжатия. Уменьшенная пропускная способность при передаче легко компенсирует время, затраченное на сжатие.
- При резервном копировании и архивировании данных необходимо использовать алгоритм, который также может быть использован в отдаленном будущем. В этом случае можно рассматривать только распространенные, проверенные алгоритмы, которые иногда не обладают наилучшими показателями сжатия.
Тип данных также имеет значение для выбора метода сжатия. Например, две программы сжатия, обычно используемые в Unix-подобных операционных системах, gzip и bzip2, обладают такими свойствами, что gzip сжимает блоки размером всего 32 000 байт, в то время как bzip2 имеет размер блока 900 000 байт. Избыточные данные сжимаются только внутри этих блоков.
Оригинал: What is Data Compression