При рассмотрении алгоритмов сжатия для каждой из них часто бывают преимущества и недостатки. Это характер сжатия, который задает набор входных данных, для этих данных существуют лучшие и худшие алгоритмы сжатия.
Хаффман действительно, действительно хорош в некоторых вещах. Особенно заметно данные, которые многократно повторяют порядок и содержат подмножество пространства символов. Например, текстовые файлы на английском языке. Английский язык имеет те же буквы, что и другие буквы.
Если ваш профессор или книга дали вам впечатление, что Хаффман не используется, они ошибаются. Например, почти все коммуникации с и из Интернета в какой-то момент закодированы Хаффманом. (Для этого используется несколько протоколов связи.) Большинство файлов изображений (jpegs) закодированы в кодировке Хаффмана. Большинство музыкальных файлов (mp3) кодируются Хаффманом. Есть много других примеров.
Одна из причин, по которой используется Хаффман, заключается в том, что ее можно «обнаружить» с помощью немного другого алгоритма, называемого адаптивным Хаффманом. Когда вы читаете файл, вы узнаете код Хаффмана и «сжимаете, когда идете». Это упрощенный обзор, но вы получаете эту идею.
Чтобы решить проблему с использованием лучшего алгоритма для проблемы ситуации, zip-файлы позволяют использовать несколько различных сжатий в зависимости от того, какой лучший для данного файла.
кто-то говорит вам, свиньи. – Will
Честно говоря, «есть ли какое-то реальное сжатие без Хаффмана?» было бы более интересным вопросом (есть, но было бы более интересно) увидеть успех Real-World [TM] кодирования/сжатия Хаффмана и Адаптивного Хаффмана. Тот, кто сказал вам, что «настоящее программное обеспечение для сжатия данных не использует хаффмана», не является правильным в его собственном сознании. – SyntaxT3rr0r