
Построение кода Хаффмана для произвольного алфавита.
Процедура Хаффмана.
В большинстве случаев
.
Процедура Хаффмана оптимальна в том смысле, что не существует никакого другого множества кодовых слов, которое обеспечивало меньшую среднюю длину кодового слова.
-ое
первоначальное множество упорядочиваем
в порядке убывания вероятностей.
Находим наименьшее
,
которое удовлетворяет 2-м условиям
.
-
Группируем вместе j сообщений -го множества, имеющие наименьшие вероятности и вычисляем общую вероятность такой группы.
-
Строим
вспомогательное множество сообщений, в котором группа из j сообщений рассматривается как отдельное сообщение с вероятностью
.
-
Мощность
множества = 1 ?
Да )
нет
)
и
возвращаемся к блоку 2.
-
Сообщения заданного множества рассматриваются как концевые узлы кодового дерева. Кодовые слова формируем путем приписывания различных символов алфавита ветвям, исходящим из каждого промежуточного узла.
Пример.
|
|
Код |
|
0,41 |
1 |
|
0,16 |
001 |
|
0,14 |
010 |
|
0,12 |
011 |
|
0,06 |
0001 |
|
0,05 |
00001 |
|
0,04 |
000000 |
|
0,02 |
000001 |