Открыть сервис

Алгоритмы сжатия данных

Алгоритм сжатия данных — это математический метод или набор правил, предназначенный для уменьшения объёма данных (файлов, потоков, сигналов) путём устранения избыточности информации. Сжатие позволяет сократить требуемый объём памяти для хранения данных и уменьшить пропускную способность канала связи при их передаче. Обратный процесс восстановления исходных данных (или их приближения) называется декомпрессией или распаковкой.

Основные принципы

Сжатие данных основано на двух фундаментальных свойствах информации: избыточности и случайности. Избыточность проявляется в повторяющихся последовательностях символов, предсказуемых закономерностях или неравномерном распределении вероятностей появления различных символов. Алгоритмы сжатия стремятся заменить избыточные фрагменты более короткими кодами, используя статистические модели данных.

Математической основой сжатия служит теория информации, заложенная в работах Клода Шеннона. Ключевое понятие — энтропия, которая определяет минимально возможное количество бит для представления одного символа сообщения при заданном распределении вероятностей. Эффективность алгоритма оценивается коэффициентом сжатия — отношением размера исходных данных к размеру сжатых.

Классификация алгоритмов

По типу сжатия

Сжатие без потерь (lossless) — процесс, при котором восстановленные данные полностью идентичны исходным. Используется для текстовых файлов, исполняемых программ, архивов, медицинских снимков. Примеры: ZIP, GZIP, PNG, FLAC.

Сжатие с потерями (lossy) — процесс, при котором восстановленные данные отличаются от исходных, но в пределах допустимой погрешности. Применяется для мультимедийных данных (аудио, видео, изображения), где незначительная потеря качества незаметна для человеческого восприятия. Примеры: JPEG, MP3, MPEG-4.

По способу обработки данных

Потоковые (адаптивные) алгоритмы — обрабатывают данные последовательно, строя модель по мере поступления. Не требуют предварительного анализа всего файла. Пример: LZ77.

Блочные (статические) алгоритмы — сначала анализируют весь блок данных, строят оптимальную модель, затем сжимают. Требуют больше памяти, но могут дать лучший коэффициент сжатия. Пример: алгоритм Хаффмана с предварительным подсчётом частот.

Основные алгоритмы и методы

Алгоритмы без потерь

Алгоритм Хаффмана (Huffman coding) — один из первых и наиболее известных методов. Строит оптимальное префиксное дерево на основе частот символов, присваивая более короткие коды часто встречающимся символам. Разработан Дэвидом Хаффманом в 1952 году. Используется в форматах ZIP, JPEG (часть цепочки), MP3.

Арифметическое кодирование (Arithmetic coding) — более эффективный, чем Хаффман, метод, который кодирует всё сообщение в одно число в интервале [0, 1). Позволяет приблизиться к теоретическому пределу энтропии. Используется в стандартах JPEG 2000, H.264, CABAC.

Алгоритмы LZ (Lempel-Ziv) — семейство словарных методов, разработанных Абрахамом Лемпелем и Якобом Зивом в 1977–1978 годах. Основные варианты:

Алгоритм Барроуза — Уилера (BWT, Burrows-Wheeler Transform)преобразование, которое переставляет символы так, чтобы одинаковые символы оказывались рядом, что повышает эффективность последующего сжатия. Используется в формате bzip2.

Дельта-кодирование (Delta encoding) — записывает разности между последовательными значениями. Эффективно для данных с плавными изменениями (аудио, временные ряды).

Кодирование длин серий (RLE, Run-Length Encoding) — заменяет последовательности одинаковых символов на пару (символ, количество повторов). Прост и эффективен для изображений с большими однотонными областями (BMP, PCX).

Алгоритмы с потерями

JPEG (Joint Photographic Experts Group)стандарт сжатия изображений. Основан на дискретном косинусном преобразовании (DCT), которое переводит блоки пикселей в частотную область, после чего высокочастотные компоненты квантуются (отбрасываются) с меньшей точностью.

MPEG (Moving Picture Experts Group) — семейство стандартов сжатия видео. Использует межкадровое предсказание (I-, P-, B-кадры) и DCT-преобразование. Наиболее известны MPEG-2 (DVD) и MPEG-4 AVC/H.264 (современное видео).

MP3 (MPEG-1 Audio Layer 3) — формат сжатия аудио с потерями. Основан на психоакустической модели, которая удаляет звуки, неразличимые для человеческого уха.

Вейвлет-сжатие (Wavelet compression) — использует вейвлет-преобразование, которое даёт лучшее качество при низких битрейтах по сравнению с DCT. Применяется в формате JPEG 2000 и в аудиокодеке FLAC (без потерь).

Применение

Алгоритмы сжатия данных широко используются в различных областях:

Критерии выбора алгоритма

Выбор конкретного алгоритма зависит от нескольких факторов:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →