Изменения
→Кодирование Хаффмана: Добавил иллюстрацию и исправил коды. Не надо перестраивать дерево, это ухудшает восприятие.
Допустим, у нас есть следующая таблица частот:
Допустим, у нас есть следующая таблица частот:
{| class="wikitable"
{| class="wikitable"
! 15 || 7 || 6 || 6 || 5
!Символ
!А
!Б
!В
!Г
!Д
|-
|-
| А || Б || В || Г || Д
!Частота
| 15 || 7 || 6 || 6 || 5
|}
|}
Чтобы определить код для каждого из символов, входящих в сообщение, мы должны пройти путь от листа дерева, соответствующего текущему символу, до его корня, накапливая биты при перемещении по ветвям дерева (первая ветвь в пути соответствует младшему биту). Полученная таким образом последовательность битов является кодом данного символа, записанным в обратном порядке.
Чтобы определить код для каждого из символов, входящих в сообщение, мы должны пройти путь от листа дерева, соответствующего текущему символу, до его корня, накапливая биты при перемещении по ветвям дерева (первая ветвь в пути соответствует младшему биту). Полученная таким образом последовательность битов является кодом данного символа, записанным в обратном порядке.
[[Файл:Huffman-codetree.svg|thumb|Дерево для данного примера]]
Для данной таблицы символов коды Хаффмана будут выглядеть следующим образом.
Для данной таблицы символов коды Хаффмана будут выглядеть следующим образом.
{| class="wikitable"
{| class="wikitable"
!Символ
! А || Б || В || Г || Д
! А || Б || В || Г || Д
|-
|-
| 0 || 100 || 101 || 110 || 111
!Код
| 0 || 10 || 110 || 1110 || 1111
|}
|}