Почему ZIP-архив нельзя сжимать бесконечно?
Почему ZIP-архив нельзя сжимать бесконечно?
Идея кажется вполне логичной. Берём файл размером 100 мегабайт, архивируем и получаем 60 мегабайт. Затем помещаем архив в новый ZIP, ещё раз уменьшаем его размер — и так продолжаем.
На практике уже второе сжатие обычно почти ничего не даёт. Иногда новый архив даже оказывается больше исходного. Причина проста: архиватор не уменьшает данные по волшебной формуле. Он ищет в них закономерности, которые можно записать короче.
Архиватор ищет повторения
Представим текстовый файл, в котором тысячу раз подряд записана буква A. Хранить каждую букву отдельно необязательно. Вместо длинной последовательности можно записать команду: «повторить A тысячу раз».
С реальными файлами всё сложнее, но принцип похожий. ZIP находит повторяющиеся фрагменты и часто встречающиеся комбинации, после чего заменяет их более короткими обозначениями.
Хорошо сжимаются обычные тексты, таблицы, исходный код и документы с большим количеством похожих данных. Пустой файл базы или лог, заполненный одинаковыми сообщениями, тоже может уменьшиться в десятки раз.
Чем предсказуемее содержимое, тем больше пространства для сжатия.
После первого сжатия закономерности исчезают
Архив уже содержит компактное описание найденных повторений. Его байты выглядят намного менее предсказуемо, чем данные исходного файла.
Если снова передать такой архив алгоритму сжатия, искать ему почти нечего. Все очевидные сокращения выполнил первый проход. Второй архиватор увидит последовательность, которая внешне напоминает случайный набор байтов.
Дополнительно каждый ZIP хранит служебную информацию: имена файлов, размеры, контрольные суммы и структуру архива. Если содержимое больше не сжимается, эти метаданные лишь добавляются сверху.
Получается забавный результат:
document.txt 100 KB document.zip 35 KB document-again.zip 35.2 KB
Конкретные числа зависят от файла и программы, но поведение типичное: первый архив заметно меньше, а следующий уже немного больше.
Почему нельзя придумать идеальный архиватор
Допустим, существует алгоритм, который уменьшает абсолютно любой файл хотя бы на один байт. Возьмём все возможные файлы размером в 100 байт и сожмём их до 99 байт.
Проблема в том, что вариантов файлов длиной 100 байт больше, чем вариантов длиной 99 байт. Некоторым исходным файлам неизбежно достанется одинаковый сжатый результат.
При распаковке программа уже не сможет определить, какой из двух оригиналов нужно вернуть. А значит, такой алгоритм не является сжатием без потерь.
Поэтому любой архиватор выигрывает на одних данных и проигрывает на других. Если множество файлов стало меньше, найдутся последовательности, которые после обработки увеличатся.
Почему фотографии и видео почти не уменьшаются?
Форматы JPEG, MP3, MP4 и многие другие уже используют собственное сжатие. Причём часто с потерями: они удаляют часть информации, которую человек, скорее всего, не заметит.
Когда такую фотографию помещают в ZIP, архиватор получает уже обработанные данные. Повторений в них мало, поэтому экономия обычно минимальна.

Похожая ситуация возникает с установочными пакетами, архивами и скомпилированными приложениями. Расширение файла может быть другим, но внутри уже находится сжатое содержимое.
Шифрованные данные тоже почти не сжимаются. Хорошее шифрование специально делает результат похожим на случайный набор байтов. Если после шифрования остаются заметные закономерности, это скорее проблема алгоритма защиты.
Можно ли всё-таки сжать ZIP повторно?
Иногда второй архив действительно становится немного меньше. Например, первый ZIP мог использовать слабые настройки, хранить несжатые файлы или содержать большие повторяющиеся метаданные.
Другой алгоритм тоже может найти закономерность, которую пропустил предыдущий. Но это частный случай, а не путь к бесконечному уменьшению.
После нескольких проходов архив перестанет сокращаться и начнёт расти из-за новых заголовков и служебных данных. Можно менять форматы и уровни сжатия, но обойти количество информации внутри файла не получится.
Сжатие не уничтожает информацию
Обычный ZIP должен восстановить исходные данные байт в байт. Если в архиве находится уникальная информация, она обязана где-то сохраниться — либо напрямую, либо в виде более коротких правил.
Удалять данные ради меньшего размера умеют форматы с потерями. Можно снизить качество фотографии или видео, убрать едва слышимые звуки из аудио. Файл станет меньше, но после распаковки оригинал уже не вернётся.
Оцените материал:
Похожие записи
Демократы начали расследование в отношении Nvidia и написали резкое письмо о «плане» Хуана, связанном с Трампом.
13.11.2026
Новая технология искусственного интеллекта может сделать малоинвазивные хирургические операции более безопасными и точными.
13.11.2026
Claude Personal Finance: нейросеть читает банковские счета. Насколько это безопасно
13.11.2026Присоединяйтесь и подпишитесь на рассылку самых свежих новостей по Email
Получайте свежие новости и идеи на почту. Без спама — только самое интересное.
Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.
