Изменения

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