Записанные таким образом сообщения затем разбиваются на две по воз-
можности равновероятностные подгруппы. Всем сообщениям первой подгруп-
пы присваивают цифру 1 в качестве первого кодового символа, а сообщениям
второй подгруппы – цифру 0. Аналогичное деление на подгруппы продолжает-
ся до тех пор, пока в каждую подгруппу не попадает по одному сообщению.
Найденный код весьма
близок к оптимальному. В самом деле, энтропия
сообщений:
.
собщение
бит
)(log
9
1
)()(
75,2)02,0log02,004,0log04,0
05,0log05,008,0log08,009,0log09,009,0log09,0
13,0log13,015,0log15,035,0log35,0(
≅++
+++++
+++−
=
∑
=
−=
xx
i
i
i
PPXH
(6.3)
Средняя длина кодового слова:
.84,210,020,020,032,036,027,039,030,070,0
9
1
=++++++++=
∑
=
=i
i
L
x
L
(6.4)
Среднее число нулей:
29,110,016,015,024,018,018,013,015,0)0(
=
+
=
. (6.5)
Среднее число единиц:
.55,104,005,008,018,009,026,015,070,0)1(
=
+++=
(6.6)
Вероятность появления нулей:
.455,0
84,2
29,1
)0(
)0( ===
L
L
P
(6.7)
Вероятность появления единиц
.545,0
84,2
55,1
)1(
)1( ===
L
L
P
(6.8)
Таким образом, получили код близкий к оптимальному.
6.1.2. Код Хаффмана. Для получения кода Хаффмана все сообщения выпи-
сывают в порядке убывания вероятностей. Две наименьшие вероятности объе-
диняют скобкой (табл. 6.2) и одной из них присваивают символ 1, а дру-
гой – 0.
Затем эти вероятности складывают, результат записывают в промежутке
между ближайшими вероятностями. Процесс объединения двух сообщений с
наименьшими вероятностями продолжают до тех пор, пока
суммарная вероят-
ность двух оставшихся сообщений не станет равной единице. Код для каждого
сообщения строится при записи двоичного числа справа налево путем обхода
по линиям вверх направо, начиная с вероятности сообщения, для которого
строится код.
Средняя длина кодового слова (табл. 6.2)
L = 2,82, что несколько меньше,
52