Сжатие данных: от кодов Хаффмана до предела Шеннона
Формула
\text{Compressed size} \geq N \cdot H \text{ bits}\text{Compression ratio} = \frac{\text{Original size}}{\text{Compressed size}}H \leq \bar{L} < H + 1 \quad \text{(single-symbol Huffman)}\frac{H}{k} \leq \bar{L}_k < \frac{H}{k} + \frac{1}{k} \quad \text{(block-}k\text{ Huffman)} Частые вопросы
Как работает кодирование Хаффмана?
Кодирование Хаффмана присваивает более короткие двоичные коды частым символам и более длинные — редким. Алгоритм строит двоичное дерево снизу вверх: многократно объединяя два узла с наименьшими частотами, пока не останется одно дерево. Символы на неглубоких листьях получают короткие коды; глубокие листья — длинные. Результат — префиксный код (ни одно кодовое слово не является префиксом другого), минимизирующий ожидаемую длину кода для данного частотного распределения.
Что такое теорема Шеннона о кодировании источника?
Теорема Шеннона о кодировании источника (теорема о бесшумном кодировании) утверждает, что источник с энтропией H бит на символ нельзя сжать без потерь ниже H бит на символ в среднем. И наоборот, можно сжать до скорости сколь угодно близкой к H, используя достаточно длинные блочные коды. Тем самым энтропия устанавливается как фундаментальный предел сжатия без потерь.
Почему нельзя сжать случайные данные?
Истинно случайные данные имеют максимальную энтропию — все символы равновероятны и паттернов нет. Поскольку энтропия равна log₂(N) для N равновероятных символов, сжатый размер равен исходному. По принципу голубятни любая схема сжатия, укорачивающая одни входы, должна удлинить другие. Для равномерно случайных данных ни один вход не вероятнее другого, поэтому систематическое сжатие невозможно.
Чем отличается сжатие без потерь от сжатия с потерями?
Сжатие без потерь (Хаффман, LZ77, DEFLATE) сохраняет каждый бит исходных данных — распакованный выход идентичен входу. Сжатие с потерями (JPEG, MP3, H.264) отбрасывает информацию, считающуюся перцептивно незначимой, достигая гораздо более высоких коэффициентов сжатия ценой точности. Теорема Шеннона о кодировании источника описывает сжатие без потерь; теория скорость–искажение описывает сжатие с потерями.
Источники
- [object Object]
- [object Object]
- [object Object]