2015-05-06 5 views
1

Я знаю, что адаптивный хаффман имеет лучшую производительность, чем huffman algorhitm, но я не могу понять, почему.Huffman vs adaptive huffman

В Huffman, когда вы строите дерево и кодируете текст, вы должны отправлять частоты для каждой буквы в тексте с помощью закодированного текста. Поэтому при декодировании вы создаете дерево, как и при кодировании, а затем декодируете сообщение.

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

Где я ошибаюсь?

+0

Вам не нужно отправлять частоты, вы можете отправлять длины. – harold

+0

Да, это то, что я имел в виду ... но адаптивный хаффман должен быть лучше .. так почему лучше отправить цельное дерево, чем отправлять только длины? – user2090925

+0

Если файл (или блок) имеет разные частоты букв в разных регионах, тогда адаптивный huffman может использовать более короткие коды для частых букв в каждой из этих областей, тогда как статический huffman может использовать только среднее значение для всего файла. Если файл настолько короток, что вы не можете получить от него никакой пользы, тогда вы вместо этого выиграете от необходимости добавлять какой-либо заголовок (будь то дерево или частотные данные). – sh1

ответ

0

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