Сжатие данных – одна из важнейших тем информатики и вычислительной техники. Она лежит в основе хранения, передачи и обработки информации. Без сжатия современные архивы, аудио-, видео-, графические и даже текстовые файлы занимали бы в разы больше места, а скорость работы сетей и устройств оставалась бы низкой. Для подготовки к ЕГЭ понимание принципов сжатия данных, типов алгоритмов, механизмов кодирования и декодирования, а также умение анализировать и применять методы сжатия – необходимые элементы цифровой грамотности.
1. Определение сжатия данных
Сжатие данных (компрессия) – это процесс преобразования информации с целью уменьшения её объёма для хранения или передачи. Результат сжатия – компактное представление исходных данных с минимальными потерями информации (или вовсе без них).
2. Классификация алгоритмов сжатия
1. Сжатие без потерь (lossless compression)
Все исходные данные могут быть восстановлены из сжатого файла без искажений.
Применяется для текстов, программ, таблиц, архивов, где важна точность восстановления.
Примеры алгоритмов и форматов: ZIP, RAR, 7z, PNG, FLAC, Huffman coding, LZW, Run-Length Encoding (RLE).
2. Сжатие с потерями (lossy compression)
Часть информации теряется, но восприятие пользователем ухудшается незначительно (оптимизация для восприятия человеком).
Используется для изображений, аудио, видео, где небольшие потери допустимы: JPEG, MP3, MP4, AAC, OGG.
Позволяет достичь гораздо большей степени сжатия по сравнению с lossless.
3. Основные принципы и этапы сжатия данных
Анализ избыточности: выявление повторяющихся фрагментов, последовательностей, закономерностей.
Кодирование: преобразование часто встречающихся элементов в более короткие коды, редких – в длинные (префиксные коды).
Замена повторяющихся блоков: сжатие последовательностей одинаковых символов или байтов (например, RLE).
Использование словарей: запоминание ранее встречавшихся фрагментов (алгоритмы LZW, LZ77).
Декодирование: процесс восстановления исходных данных по сжатому представлению и правилам кодирования.
4. Правила и ограничения сжатия данных
Не все данные одинаково хорошо сжимаются – случайные или уже сжатые файлы (например, ZIP в ZIP) не дадут выигрыш по размеру.
Используйте сжатие с потерями только там, где допустима потеря информации – фото, музыка, видео.
Понимайте компромисс между степенью сжатия и скоростью обработки – максимальное сжатие требует больше времени.
Архивируйте важные данные с помощью lossless-компрессии – для надёжного восстановления.
Правильно выбирайте формат в зависимости от типа файла – для текста (ZIP, 7z), для фото (JPEG, PNG), для музыки (MP3, FLAC).

В заданиях встречаются вопросы на анализ принципов работы алгоритмов Хаффмана, RLE, LZW.
Необходимо уметь оценивать выигрыш от сжатия, строить схемы кодирования и декодирования.
Требуется вычислять размеры сжатых файлов, анализировать различные способы хранения и передачи информации.
Важно понимать, где допустимо применять lossless/lossy-методы и каковы последствия выбора метода сжатия.
Упражнение 1
Вопрос:
Объясните принцип работы алгоритма RLE и покажите, как строка AAAAAABBBBCCCCDD превращается при сжатии.
Решение:
RLE (Run-Length Encoding) заменяет группы одинаковых символов на сам символ и количество повторов.
Пример: AAAAAABBBBCCCCDD → 6A4B4C2D (или A6B4C4D2).
Для восстановления данные декодируются обратно по числам и символам.
Упражнение 2
Вопрос:
Файл размером 8 Мбайт после сжатия занимает 2 Мбайта. Каков коэффициент сжатия и степень сжатия в процентах?
Решение:
Коэффициент сжатия = исходный размер / сжатый = 8/2 = 4.
Степень сжатия = (1 - (сжатый размер / исходный)) * 100% = (1 - 0.25) * 100% = 75%.
Ответ: коэффициент сжатия – 4, степень сжатия – 75%.
Упражнение 3
Вопрос:
С помощью кода Хаффмана закодированы буквы с частотами: A – 6, B – 4, C – 3, D – 1. Постройте примерное дерево Хаффмана и запишите коды.
Решение:
Находим наименее вероятные символы и объединяем их:
D(1) + C(3) = DC(4)
Далее:
DC(4) + B(4) = DCB(8)
Остаётся: DCB(8), A(6)
DCB(8) + A(6) = 14
Примерные коды (ваша реализация может отличаться, важно дерево):
A: 0
B: 10
C: 110
D: 111
Упражнение 4
Вопрос:
Файл содержит 1 000 000 символов, каждый символ кодируется 8 битами. Какой будет размер файла после сжатия, если после алгоритма Хаффмана средняя длина кода – 4 бита?
Решение:
Исходный размер: 1 000 000 * 8 = 8 000 000 бит (1 000 000 байт ≈ 976,6 Кбайт).
После сжатия: 1 000 000 * 4 = 4 000 000 бит (500 000 байт ≈ 488,3 Кбайт).
Сжатие вдвое.
Упражнение 5
Вопрос:
В чём разница между форматами JPEG и PNG для хранения изображений с точки зрения сжатия данных?
Решение:
JPEG использует сжатие с потерями: часть информации теряется, но файлы намного меньше. Подходит для фотографий, где небольшие потери незаметны.
PNG использует только сжатие без потерь: идеально для схем, скриншотов, где важна точность передачи цвета и структуры.
PNG обычно даёт меньшую степень сжатия по размеру, чем JPEG для фотографий, но обеспечивает абсолютную точность.
Тренируйте преобразование текстов с помощью простых алгоритмов (RLE, Хаффман).
Учитесь вычислять коэффициент и степень сжатия по исходным и сжатым размерам.
Осваивайте работу с различными форматами файлов: ZIP, JPEG, PNG, MP3.
Различайте, в каких случаях использовать сжатие с потерями, а в каких – без.
Решайте задачи на построение схем кодирования и декодирования, анализ объемов данных.
Сжатие данных в файлах – неотъемлемая часть цифрового мира. Освоение алгоритмов, умение анализировать и применять методы компрессии, понимание особенностей различных форматов – залог эффективного управления информацией и успешной сдачи ЕГЭ по информатике.