2015-01-09 3 views
-4

Что такое реальное применение алгоритма дерева хаффмана? как это жадный подход? Мне нужно краткое объяснение по использованию дерева хаффмана в решении проблем компьютерной науки, я хочу знать, где я могу использовать этот алгоритм в своем повседневном программировании.Confused about Приложения huffman tree

+2

Вы могли бы просто посмотреть его. Ты знаешь, что это правильно? Создание учетной записи переполнения стека и задание этого вопроса - буквально больше усилий. – harold

+0

Этот вопрос не по теме для StackOverflow. programers.stackexchange.com - лучшее место для более концептуальных вопросов, но то, что вы просите, может быть слишком широким и открытым для формата StackExchange. – Bacs

ответ

1

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

Представьте, что у вас было тысяча токенов, которые могут появляться в потоке. Но один из них происходит 40% времени, а остальные примерно одинаково распределены. С деревом Хаффмана вы в конечном итоге сохраните это в меньшем количестве бит, чем остальные. Это как если бы вы изобрели стенографию, за исключением того, что дерево делает это по диапазону вероятностей. Чем вероятнее токен, тем меньше бит.

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

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