Академический Документы
Профессиональный Документы
Культура Документы
Оптимальное кодирование
1. Основные сведения об оптимальном кодировании
Кодированием информации называется операция преобразования
сообщений, состоящих из символов первичного алфавита, в определенную
последовательность символов вторичного алфавита (элементарных
символов). Обратная операция, восстанавливающая исходное сообщение по
элементарным символам называется декодированием. Любому дискретному
сообщению можно приписать некоторое число – его код. Тогда передача
сообщений сводится к передаче кодов. Очевидно, что для восстановления по
кодам сообщений они должны быть однозначно декодируемыми. Таким
свойством обладают префиксные коды.
Префиксные коды – это такие коды, в которых ни одна более короткая
комбинация не является началом более длинной комбинации, что позволяет
производить однозначное декодирование, даже если последовательность
кодов не содержит разделителей между кодами.
Для произвольного кода V, состоящего из различных слов, можно
построить кодовое дерево. Это ориентированный граф, не содержащий
циклов, в котором вершина β1 соединена с вершиной β2 ребром,
направленным от β1 к β2, тогда и только тогда, когда β2 = β1b,
где b ∈ B = {0, 1, D – 1}, D ≥ 2. Для префиксных кодов (и только для них)
множество кодовых слов совпадает с множеством концевых вершин
(вершин, из которых не исходят ребра) кодового дерева.
Для существования однозначно декодируемого (разделимого) кода,
содержащего N кодовых слов в множестве {0, 1, D – 1} с длинами n1, n2, …,
nN, необходимо и достаточно, чтобы выполнялось неравенство Крафта
N
∑D −n i
≤1 .
i =1
10
без памяти. Для любого дискретного источника без памяти X с конечным
алфавитом и энтропией H(X) существует D-ичный префиксный код, в
котором средняя длина кодового слова n удовлетворяет неравенству
H (X ) H (X )
≤n ≤ +1,
log 2 D log 2 D
H (X )
сколь угодно близкой к величине log D .
2
H
является величина log 2 D
, то при D = 2 избыточность кода можно
n −H H
определить по формуле =1 − .
n n
12
Таблица 1
Кодирование Шеннона-Фано
X P Шаг Коды
1 2 3 4
x1 1/4 0 0 00
x2 1/4 1 01
x3, 1/8 0 0 100
x4 1/8 1 101
x5 1/16 1 0 0 1100
x6 1/16 1 1 1101
x7 1/16 1 0 1110
x8 1/16 1 1111
1. Исходный список букв X = {x1, x2, x3, x4, x5, x6, x7, x8} уже упорядочен,
1 1 1 1 1 1 1 1
так как P = , , , , , , , .
4 4 8 8 16 16 16 16
1
2. Объединим буквы x7 и x8 в одну букву x1 с вероятностью 8
и
переупорядочим список:
13
1 1 1 1 1 1 1
P1 = , , , , , , , X1 = {x1, x2, x3, x4, x1, x5, x6}.
4 4 8 8 8 16 16
1 1 1 1 1
P3 = , , , , , X3 = {x1, x2, x3, x3, x4};
4 4 4 8 8
1 1 1 1
P4 = , , , , X4 = {x1, x2, x3, x4};
4 4 4 4
1 1 1
P5 = , , , X5 = {x5, x1, x2};
2 4 4
1 1
P6 = , , X6 = {x5, x6};
2 2
P 7 = (1) , X7 = {x7}.
4. Присвоим двоичные коды символам:
x7: x5 = 0, x6 = 1;
x6: x1 = 10, x2 = 11;
x5: x3 = 00, x4 = 01;
x4: x3 = 010, x4 = 011;
x3: x1 = 000, x2 = 001;
x2: x5 = 0010, x6 = 0011;
x1: x7 = 0000, x8 = 0001.
Таким образом, получены следующие коды исходных символов:
x1 = 10, x2 = 11, x3 = 010, x4 = 011, x5 = 0010, x6 = 0011, x7 = 0000, x8 = 0001.
Средняя длина кода равна
8 1 1 1
n = ∑ ni pi = 2 ⋅ 2 ⋅ + 2 ⋅ 3 ⋅ + 4 ⋅ 4 ⋅ = 2.75 ,
i =1 4 8 16
А энтропия равна H ( X ) = −0.9 ⋅ log 2 0.9 − 0.1 ⋅ log 2 0.1 ≈ 0.47 . Избыточность
составляет около 53%. Если же закодировать двухбуквенные сочетания XiXj,
Xi, Xj ∈ {A, B} с вероятностями p(XiXj) =pipj, то по методу Шеннона-Фано
можно получить коды, представленные в таблице 2.
Таблица 2
Блочное кодирование Шеннона-Фано
XiXj pipj Шаг Код
1 2 3
AA 0.81 0 0
AB 0.09 0 10
BA 0.09 1 1 0 110
BB 0.01 1 111
Тогда средняя длина кода двухбуквенного блока будет равна n2 ≈1.29 , а на
одну букву будет приходиться n1 ≈ 0.645 . Избыточность в этом случае будет
составлять уже только около 17%. Если мы возьмем сочетания из трех букв,
то получим еще лучший результат и т.д. Увеличивая длину блоков можно
как угодно близко приблизиться к оптимальному значению энтропии.
16
7 dbdaadabacabbacbbaccbbaccbbddadadac
8 bbbbbaabacabbacbbaccbbacdbbddadadac
9 aacabaaaacdbbacbddccbbaccbbddadadbb
1 dddaadabbbabbacbbaccbbaccbbddadddaa
0
1 abcccccbacabbacbbaddbdaccbbddadadcc
1
1 abcbbbbbacabbacddacdbbaccbbadadaddd
2
17