Метод кодирования Шеннона-Фано. Кодовое дерево. Свойство префикса.
Метод кодирования Шеннона-Фано.
-
Все символы алфавита в кодовых словах должны использоваться равновероятно.
-
Вероятность появления символа на некоторой позиции не должна, зависеть от всех предшествующих символов и их количества.
Пример 1.
Перед кодированием целесообразно все сообщения упорядочить по убыванию вероятности.
|
|
|
Разряд |
Код |
||
|
1-й |
2-й |
3-й |
|||
|
|
1/8 |
0 |
0 |
0 |
000 |
|
|
1/8 |
1 |
001 |
||
|
|
1/8 |
1 |
0 |
010 |
|
|
|
1/8 |
1 |
011 |
||
|
|
1/8 |
1 |
0 |
0 |
100 |
|
|
1/8 |
1 |
101 |
||
|
|
1/8 |
1 |
0 |
110 |
|
|
|
1/8 |
1 |
111 |
||
![]()
![]()
![]()
![]()
Пример 2. Рассмотрим не равномерное распределение.
|
|
|
Разряд |
Код |
|||
|
1-й |
2-й |
3-й |
4-й |
|||
|
|
1/2 |
1 |
|
|
|
1 |
|
|
1/8 |
0 |
1 |
1 |
011 |
|
|
|
1/8 |
0 |
010 |
|||
|
|
1/16 |
0 |
1 |
1 |
0011 |
|
|
|
1/16 |
0 |
0010 |
|||
|
|
1/16 |
0 |
1 |
0001 |
||
|
|
1/16 |
0 |
0000 |
|||
![]()
![]()
![]()
![]()
![]()
Если статистика такова, что
(где
),
то метод всегда будет давать оптимальный
код. Если нет, то достичь нижней границы
вряд ли удастся.
![]()
![]()
![]()
Кодовое дерево.

Тот факт, что мы каждому концевому узлу ставим в соответствие кодовое слово равносильно выполнению свойства префикса.
Определение. Кодовое дерево является полным, если из каждого промежуточного узла ровно D ветвей.
Неполных деревьев для D=2 не бывает.
Утверждение. Принцип исключения концевых узлов.
Кодовые деревья имеют длины:
.
![]()
M – число сообщений заданного множества
Наличие концевого узла порядка не больше
исключает из дерева
узлов максимального порядка.
Свойство префикса.
– кодовое слово
–
-й
префикс кодового слова ![]()
Определение. Код обладает свойством префикса, если никакое кодовое слово не является i-ым префиксом никакого другого кодового слова.
|
0011 |
011 |
1 |
010 |
|
|
|
|
|
