Алгоритм меняет дерево сжатия таким образом, чтобы наиболее частые последовательности кодировались наименьшим количесвом символов
пример:
aa bbb cccc ddddd eeeeee fffffffgggggggg
исходное сообщение | вероятность | код |
---|---|---|
a | 2/40 | 1001 |
b | 3/40 | 1000 |
c | 4/40 | 011 |
d | 5/40 | 010 |
e | 6/40 | 111 |
f | 7/40 | 110 |
g | 8/40 | 00 |
<пробел> | 5/40 | 101 |
В основе - свойство наследования:
Бинарное кодовое дерево имеет свойство наследования, если каждый узел
кроме корневого имеет наследников и если узлы могут быть перечислены в
порядке неувеличивающихся весов для каждого узла со стороны
наследников
Бинарный префиксный ход - код Хаффмана тогда и только тогда, когда
кодовое дерево имеет св-во наследования
Преимущества:
Начало - корневой узел (0) - узел, в котором заключены оставшиеся сообщения