3.2.
Коды
Хаффмана
Из
примера отчетливо видно, что чем больше разница
между
вероятностями символов, тем больше выигрыш кода Хаффмана по
сравнению с простым блоковым кодированием.
Теорема Шеннона о кодировании источников показывает, насколь-
ко
эффективным может быть такое кодирование. Но теория
инфор-
мации
также указывает на то обстоятельство, что при кодировании
могут
появляться кодовые слова очень большой длины. Это обстоя-
тельство может препятствовать практическому использованию тео-
ремы кодирования источников.
Реализация
декодера кода Хаффмана
следует
непосредственно
из
рис. 3.3. На рис. 3.4 представлено дерево, называемое кодовым
деревом декодера.
Декодирование каждого нового слова начинается с исходного уз-
ла (корня) кодового дерева. Если мы принимаем «О», то идем по
ребру,
соответствующему нулю (по верхнему ребру). В нашем при-
мере при этом мы достигаем оконечного
узла
d. Следовательно, был
нередан символ d и мы начинаем декодирование нового символа с,
корня.
Оконечный
узел
Узел
Рис.
3.4. Кодовая конструкция для D = 2 и п = 4.
Если мы принимаем «1», то идем по нижнему
ребру
и попадаем
в
узел,
из которого
выходят
два ребра. Следующий принятый бит
указывает, какое из этих
двух
ребер нужно выбрать. Мы продолжаем
эту процедуру до тех пор, пока не достигнем оконечного
узла.
В
этом
случае
мы принимаем решение о переданном символе и опять
переходим к корню кодового дерева.
При
всей простоте построения и декодирования, коды Хаффмана
обладают
тремя недостатками:
• Различные длины кодовых слов приводят к неравномерным за-