
105
§ 3. ПОСТРОЕНИЕ ОПТИМАЛЬНЫХ
КОДОВ
МЕТОДОМ
ХАФФМАНА
Пусть код для алфавита А исходного источника не является оптимальным,
тогда рассмотрим оптимальный код, удовлетворяющий лемме 3.3.2, и пост-
роим по нему код для редуцированного источника, сопоставив букве а'
вершину а', предшествующую вершинам а
п-1
, а
п
, и сохранив за остальными
буквами а
4
(i =
1,...,п-2)
те же кодовые слова a
if
что и в оптимальном коде.
Обозначим средние длины кодовых слов для этой новой пары кодов £^ и £
г
.
Для этих чисел справедливо соотношение:
При этом ^
ср
<
^
ср
>
а
следовательно, должно выполняться неравенство
^ср
<
^ср'
что п
Р
0ТИВ0
Р
ечит
оптимальности кода, построенного для редуциро-
ванного источника. А
Опишем алгоритм Хаффмана для построения кодов. Этот алгоритм всегда
приводит к построению оптимального множества кодовых слов, в том смысле,
что никакое другое множество не имеет меньшего среднего числа символов
на букву алфавита А.
Для любого источника все наборы кодовых слов, удовлетворяющие
приведнным выше условиям, дают одну и ту же среднюю длину кодового
слова. Алгоритм Хаффмана дат возможность построить по крайней мере один
из таких наборов.
Леммы 3.3.1 и 3.3.2 требуют, чтобы две наименее вероятные буквы
были сопоставлены концевым вершинам одинакового и максимального
порядка, порождаемым одной и той же промежуточной вершиной
предыдущего порядка. В силу леммы 3.3.3 каждый источник кодируется
оптимальным кодом, так как редуцированный источник был кодирован
оптимально. Последовательная реализация этих лемм обеспечивает
построение оптимального кода методом Хаффмана.
Построение оптимального кода методом Хаффмана сводится к выполнению
двух частей алгоритма.
Алгоритм
I. Построение последовательности редуцированных источников, сходящейся к
вырожденному источнику:
1.
Буквы источника располагаем в порядке убывания вероятностей.
2.
Две наименее вероятные буквы склеиваем в одну букву редуцированного
источника и приписываем этой букве суммарную вероятность склеенных
букв.
3.
Переходим к первому пункту, если алфавит редуцированного источника
состоит из двух или более букв. В противном случае, переходим ко вто-
рой части.