it-swarm.com.ru

Каковы реальные применения кодирования Хаффмана?

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

Это заставляет меня задуматься, есть ли какое-нибудь реальное применение кодирования Хаффмана?

23
Jichao

Хаффман широко используется во всех основных форматах сжатия, которые могут вам встретиться - от GZIP, PKZIP (winzip и т.д.) И BZIP2 до форматов изображений, таких как JPEG и PNG.

Все схемы сжатия имеют патологические наборы данных, которые не могут быть по существу сжаты; форматы архивов, которые я перечислил выше, просто хранят такие файлы в несжатом виде при их обнаружении.

Новые арифметические и диапазонные кодировки схемы часто избегают из-за патентных проблем , означая, что Хаффман остается рабочей лошадкой в ​​индустрии сжатия.

28
Will

Смотрите Википедия статья на эту тему:

Сегодня кодирование Хаффмана часто используется в качестве «бэк-энда» для какого-либо другого метода сжатия. DEFLATE (алгоритм PKZIP) и мультимедийные кодеки, такие как JPEG и MP3, имеют внешнюю модель и квантование с последующим кодированием Хаффмана.

5
Anton Gogolev

Существует довольно много реальных приложений кодирования Хаффмана. Zip, пожалуй, наиболее широко используемый инструмент сжатия, использующий кодировку Huffman в качестве основы. Последний из наиболее эффективных алгоритмов сжатия без потерь, Brotli Compression, выпущенный Google в прошлом месяце, также использует кодирование Хаффмана. Кроме того, Brotli также использует LZ77 и несколько других фундаментальных алгоритмов сжатия без потерь. Обратитесь к Бротли.

3
Farhan Haque

Если рассматривать алгоритмы сжатия, то для каждого из них часто есть свои преимущества и недостатки. Это природа сжатия, которая, учитывая набор входных данных, существует лучшие и худшие алгоритмы сжатия для этих данных.

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

Если ваш профессор или книга создали у вас впечатление, что Хаффман не используется, они ошибаются. Например, почти все сообщения в Интернете и из Интернета в какой-то момент кодируются Хаффманом. (Несколько протоколов связи используют его.) Большинство файлов изображений (JPEG) кодируются Хаффманом. Большинство музыкальных файлов (mp3s) кодируются Хаффманом. Есть много других примеров.

Одна из причин, по которой Хаффман используется, заключается в том, что его можно «обнаружить» с помощью немного другого алгоритма, называемого адаптивным Хаффманом. Когда вы читаете файл, вы изучаете код Хаффмана и «сжимаете по ходу». Это упрощенный обзор, но вы поняли идею.

Чтобы решить, как использовать лучший алгоритм для решения проблемной ситуации, Zip-файлы позволяют использовать несколько различных сжатий в зависимости от того, что лучше для данного файла.

2
Hogan

Код Хаффмана используется для преобразования кодов фиксированной длины в коды переменной длины, что приводит к сжатию без потерь. Коды переменной длины могут быть дополнительно сжаты с использованием методов JPEG и MPEG для получения желаемой степени сжатия.

0
R. G. Gupta