
125 Кібербезпека / 4 Курс / 4.2_Управління інформаційною безпекою / Лiтература / V_P_Babak_A_A_Kliuchnykov-Teoreticheskye_osnovy_zashchity_informat
...pdf
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
одну точку с вероятностью P Pi (αi ) Pj (α j ), обозначив одну ветку нулем, а
другую - единицей.
3. Повторить п. 1 с учетом новой точки вместо αi и α j , если количество
образованных точек больше, чем единица. В противоположном случае мы достигли корня дерева.
Теперь попробуем воспользоваться изложенной теорией и закодировать информацию, переданную источником, на примере семи символов.
ai |
Pi (ai ) |
|
a1 |
0.01 |
|
a2 |
0.40 |
1 |
|
||
a3 |
0.08 |
0.03 |
a4 |
0.02 |
0 |
a5 |
0.10 |
|
a6 |
0.35 |
|
a7 |
0.04 |
|
Рис. 7.9. Таблица соответствия символов и их вероятностей
Рассмотрим подробно первый цикл. На рис. 7.9 изображена таблица, в которой каждому символу αi соответствует своя вероятность (частота)
Pi (αi ). Соответственно п. 1 выбираем два символа из таблицы с наименьшей вероятностью. Это α1 и α4 . Соответственно п. 2 сводим ветки дерева от α1 и α4 в одну точку и обозначаем ветку, которая ведет к α1 , единицей, а ветку, которая ведет к α4 , - нулем. Возле новой точки записываем ее вероятность (в этом случае 0,03). В дальнейшем действия повторяются уже с учетом новой точки, но без учета α1 и α4 .
После многоразового повторения указанных действий выстраивается дерево, приведенное на рис. 7.10.
По построенному дереву можно найти значение кодов b1, b2 , ..., bn , осуществив спуск от корня до соответствующего элемента αi . При прохож-
дении каждой ветки приписываем к создаваемой последовательности нуль или единицу (в зависимости от того, как именуется соответствующая ветка). Значения искомых кодов приведены в табл. 7.10.
500

|
|
|
Глава 7. Кодирование информации |
||||
ai |
Pi (ai ) |
|
|
|
|
|
Корень |
a1 |
0.01 |
|
|
|
|
1 |
1.00 |
|
|
|
|
|
|||
a2 |
0.40 |
|
1 |
|
|
|
|
|
0.03 |
|
|
|
|
||
a3 |
0.08 |
|
1 |
|
|
|
0 |
|
0.07 |
|
|
|
|||
|
|
|
|
|
|
|
|
a4 |
0.02 |
0 |
|
1 |
0.15 |
|
|
|
|
|
|
|
|
||
a5 |
0.10 |
|
0 |
|
|
|
|
|
|
|
|
|
|||
|
|
0 |
1 |
0.25 |
|
||
|
|
|
|
|
|||
a6 |
0.35 |
|
|
|
0 |
1 |
|
|
|
|
|
|
0.60 |
||
|
0.04 |
|
|
|
|
||
a7 |
|
|
|
|
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
0 |
|
Рис. 7.10. Таблица символов и вероятностей и соответствующее им дерево Хаффмана
Теперь закодируем последовательность из символов. Предположим например, что символа αi отвечает число i. Пусть есть последовательность
12672262. Нужно найти результирующий двоичный код.
Для кодирования можно использовать уже имеющуюся таблицу кодовых символов bi , взяв во внимание, что bi отвечает символу αi . В таком случае
код для цифры 1 будет представлять собой последовательность 011111, для цифры 2 будет 1, для цифры 6 последовательность 00, для цифры 7 - последовательность 01110.
|
|
Таблица 7.1 |
|
|
|
|
|
i |
bi |
Li (bi ) |
|
|
|
|
|
1 |
011111 |
6 |
|
|
|
|
|
2 |
1 |
1 |
|
|
|
|
|
3 |
0110 |
4 |
|
|
|
|
|
4 |
011110 |
6 |
|
|
|
|
|
5 |
010 |
3 |
|
|
|
|
|
6 |
00 |
2 |
|
|
|
|
|
7 |
01110 |
5 |
|
|
|
|
Искомый результат приведен в табл. 7.2.
|
|
Таблица 7.2 |
|
|
|
Данные |
12672262 |
Длина кода |
|
|
|
Исходные |
001 010 110 111 010 010 110 010 |
24 бит |
|
|
|
Кодированные |
011111 1 00 01110 1 1 00 1 |
19 бит |
|
|
|
501

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
В результате кодирования мы выиграли 5 бит и записали последовательность с помощью 19 бит вместо 24. Однако это не дает полной оценки сжатия данных. Оценим степень сжатия кода. Для этого понадобится энтропическая оценка. Математически энтропия подается как сумма произведений вероятностей разных состояний системы на логарифмы этих вероятностей, взятых с противоположным знаком:
n
H ( X ) Pi logd Pi ,
i 1
где X - случайная величина (в этом примере - кодовый символ), а d - произвольная основа, больше единицы. Выбор основы равносильный выбору определенной единицы измерения энтропии. Поскольку рассматриваются двоичные цифры, то за основу целесообразно взять d 2.
Таким образом, энтропию для нашего случая можно записать как
n
H (b) Pi (αi ) log2 Pi (αi ).
i 1
Энтропия равна минимально допустимой средней длине кодового символа Lmin в битах, а самая средняя длина кодового символа вычисляется по формуле
n
L(b) Pi (αi )Li (bi ).
i 1
Подставляя соответствующие значения в формулы для H (b) и L(b), получим
H (b) 2,048, L(b) 2,100.
Значения H (b) и L(b) очень близкие, что говорит о реальном выигры-
ше в выборе алгоритма. Теперь сравним среднюю длину выходного символа и среднюю длину кодового символа:
Lâèõ.ñ 3 1,429 .
L(b) 2,1
Таким образом, получили сжатие в соотношении 1:1,429. Избыточность кода Хаффмана. Для посимвольных по алгоритму Хаф-
фмана кодов средняя длинна кодовых слов удовлетворяет неравенству
|
|
|
l |
H 1, |
(7.7) |
где H - энтропия ансамбля.
Избыточностью неравномерного кода Хаффмана называется разность
502

Глава 7. Кодирование информации
r l H.
Она показывает степень «несовершенства» кода в том понимании, что при кодировании с избыточностью r на каждое сообщение тратится на r бит больше, чем в принципе можно было бы израсходовать, если использовать теоретически наилучший (возможно, нереализованный) способ кодирования.
Итак, из формулы (7.7) вытекает, что для кода Хаффмана избыточность r 1. Однако при решении практических задач избыточность существенным образом меньше единицы, поэтому нужно найти самую точную оценку средней длины кодовых слов. Этого нельзя сделать, не ограничив множества рассматриваемых источников.
Код Шеннона. Рассмотренный раньше префиксный код Хаффмана является оптимальным неравномерным кодом. Во время рассмотрения прямой теоремы посимвольного кодирования уже говорилось о том, что избыточность 1 бит на букву не такая уже и большая при большом значение энтропии.
Рассмотрим источник, который выбирает сообщение из множества X M с вероятностями {p1, ..., pM }. Считаем, что символы упорядо-
чены по спаданию вероятностей, т.е. p1 p2 ... pM . Поставим в соответ-
ствие, кроме того, каждой букве так называемую кумулятивную вероятность по правилу
M 1
q1 0, q2 p1, ..., qM pi .
i 1
Кодовым словом Шеннона для сообщения с номером m является двоичная последовательность, которая представляет собой первые lm log pm разрядов после запятой в двоичной записи числа qm .
Пример 7.4. Рассмотрим тот самый ансамбль, что и в предыдущем примере. В табл. 7.1 приведены промежуточные вычисления и результат постро-
ения кода Шеннона. Средняя длина кодовых слов l . В этом случае избыточность кода Шеннона оказалась на 0,5 бит большей, чем избыточность кода Хаффмана. Кодовое дерево кода показано на рис. 7.11, из которого вытекает, почему код неэффективный (или неоптимальный). Кодовые слова для символов b, d, e, f можно укоротить на 1 бит без потери свойства однозначной декодированности.
Вспомним, что длина слова и его вероятность связаны соотношением
li log2 pi log2 pi .
Поэтому
pi 2 li .
С учетом этого неравенства
503

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
|
|
|
|
|
|
q |
j |
q 2 li . |
|
|
|||
|
|
|
|
|
|
|
|
i |
|
|
|||
a |
0,35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Буква |
Кодовое |
b |
0,20 |
|
|
|
|
|
|
|
|
|
|
слово |
|
|
|
|
|
|
0,60 |
|
|
|
a |
00 |
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
b |
10 |
|
|
|
|
|
|
|
|
|
0 |
||||
c |
0,15 |
|
|
|
|
|
|
|
|
|
c |
010 |
|
0,25 |
|
|
|
|
|
1 |
|
|
d |
011 |
|||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
e |
110 |
||
|
0,10 |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||||
d |
|
|
|
|
|
|
|
|
|
f |
111 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,40 |
|
|
|
1 |
|
|
||||||
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
e 0,10
0,2
f 0,10
Рис. 7.11. Пример построения дерева кода Хаффмана
Построение кода Шеннона для этого примера иллюстрирует табл. 7.3.
|
|
|
|
|
Таблица 7.3 |
Буква |
Вероятность |
Кумулятивная |
Длина кодо- |
Двоичная |
Кодовое |
|
pm |
вероятность qm |
вого слова |
запись |
слово |
|
|
|
Im |
q |
cm |
|
|
|
|
2 |
|
a |
0,35 |
0,00 |
2 |
0,00... |
00 |
b |
0,20 |
0,35 |
3 |
0,0101... |
010 |
c |
0,15 |
0,55 |
3 |
0,10001... |
100 |
d |
0,10 |
0,70 |
4 |
0,10110... |
1011 |
e |
0,10 |
0,80 |
4 |
0,11001... |
1100 |
f |
0,10 |
0,90 |
4 |
0,11100.. |
1110 |
Соответствующее дерево иллюстрирует рис. 7.12. |
|
|
|||
|
|
|
a |
|
|
|
0 |
|
b |
|
|
|
|
|
|
|
|
|
|
|
c |
|
|
|
1 |
|
|
d |
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
f |
|
|
Рис. 7.12. Дерево Шеннона для источника табл. 7.3 |
|
504

Глава 7. Кодирование информации
В двоичной записи числа в правой части имеем после запятой li нулей и единицу в позиции с номером li . Это означает, что по крайней мере в одном из li разрядов слова ci и c j отличаются, а значит, ci не является префиксом для c j . Поскольку это правильно для любой пары слов, то код явля-
ется префиксным.
Длины кодовых слов в коде Шеннона точно такие же, какие были взяты при доказательстве прямой теоремы кодирования. Повторяя выкладки, полу-
чаем уже известную оценку для средней длины кодовых слов: l H 1.
При построении кода Шеннона мы выбрали длины кодовых слов так, чтобы они приближенно равнялись (были немного большими) собственной информации соответствующих сообщений. В результате средняя длина кодовых слов оказалась такой, что приближенно равняется (немного больше) энтропии ансамбля.
Пример 7.5. Рассмотрим еще одну графическую интерпретацию процесса кодирования. Она будет полезной в дальнейшем при обсуждении арифметического кодирования.
Рассмотрим числовой отрезок [0,1], на котором разместим один за другим отрезки длиной p1, ..., pm . Пример разбивки отрезка [0,1] для случая
M , p1 0,6; p2 0,3; p3 0,1 приведен на рис. 7.13. Как вытекает из рис.
7.13, а, кумулятивные вероятности |
q1 0; q2 |
0,6; |
q3 0,9 отвечают нача- |
лам отрезков. Эти точки идентифицируют сообщение источника. |
|||
p1 |
|
p2 |
p3 |
а |
|
|
|
q 0 |
1/2 |
q2 |
q3 |
1 |
|
|
б |
q2 |
|
|
1/2 |
3/4 |
q |
|
|
|
|
3 |
в
1/2 |
q2 |
Рис. 7.13. Графическая интерпретация кода Шеннона
Предположим, что нужно закодировать сообщение с номером m . Соответствующая ему точка обозначена на рис. 7.13, в кружочком. На первом шаге передачи кодового символа 0 или 1 кодер указывает, в которой (ле-
вой или правой) половине отрезка 0,1 находится начало соответствующего
505

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
сообщению отрезка. В этом случае передается 1, и тем самым область возможных положений переданной точки уменьшается вдвое, что и показано на рис. 7.13, б. На следующем шаге передается символ 0, поскольку точка находится в левой половине интервала, то длина интервала неопределенности уменьшается до 1/4.
Заметим, что после второго шага в интервале неопределенности осталась только одна точка, а потому передачу можно закончить. Это состоялось не случайно. Дело в том, что длина интервала равняется 1/4, что меньше длины кратчайшего близлежащего отрезка, которая равна 0,3. Именно поэтому гарантируется единственность точки, а соответственно, однозначность декодирования.
В общем случае после передачи lm двоичных символов длина интервала неопределенности равна 2 lm . Декодирование будет однозначным, если 2 lm pm или lm log2 pm . Это условие полностью совпадает с правилом
выбора длин кодовых слов в коде Шеннона.
При выборе длины кодовых слов мы ориентировались только на отрезок, который лежит справа от точки qm . Упорядоченность букв по спаданию ве-
роятностей гарантирует, что левый отрезок всегда будет длинней, чем правый.
Код Гильберта - Мура. При построении кода Шеннона требовалась благоустроенность сообщений по спаданию вероятностей. В алгоритме построения кода Шеннона сортировка букв или символов входного алфавита - наиболее трудоемкая часть. Упростим построение кода, модифицировав кодирование так, чтобы упорядоченность не требовалась. Графическая интерпретация кода Шеннона (рис. 7.14) подсказывает путь к выполнению этой задачи.
p1 |
p2 |
p3 |
|
||
|
|
|
|
||
q 0 |
1 q2 |
2 |
1/2 |
q3 3 |
1 |
1 |
|
|
|
|
0 1 q2 |
1/4 |
2 |
1/2 |
1/4 |
q2 3/8 |
2 |
1/2 |
Рис. 7.14. Графическая интерпретация кода Гильберта - Мура
Предположим, что вероятности не благоустроенные. Тогда при кодировании сообщения с номером m нужно учитывать не только вероятность
506

Глава 7. Кодирование информации
(длину отрезка) pm , а и длину предыдущего отрезка pm , которая может
быть очень малой, почти нулевой, и тогда длина слова будет больше даже в случае, если вероятность p большая. Соответствующую сообщению точку смещаем с начала отрезка (точка qm ) в его середину (точка qm pm / 2), а длину кодового слова выбираем так, чтобы до конца передачи кодового слова длина интервала неопределенности была не больше, чем pm / 2. Это и будет
кодовое слово кода Гильберта - Мура.
Рассмотрим источник, который выбирает буквы из алфавита X M с вероятностями {p1, ..., pM }. Поставим в соответствие каждой
m
букве m M кумулятивную вероятность qm pi и вычислим для
i 1
каждой буквы значения m по формуле
m qm p2m .
Кодовым словом Гильберта - Мура для xm является двоичная последо-
вательность, которая представляет собой первые l |
m |
log |
2 |
p |
2 |
раз- |
||
|
|
|
|
m |
|
|
||
рядов после запятой в двоичной записи числа m . |
|
|
|
|
|
|
||
Пример 7.6. |
Рассмотрим источник |
с распределением |
|
вероятностей |
||||
p1 ; p ; |
p . Вычисления, |
связанные |
|
с построением |
кода |
Гильберта - Мура для этого источника, приведены в табл. 7.4.
Представление числа а в двоичной форме обозначается записью [а]. В последнем столбце табл. 7.4 показано, какой вид имели бы кодовые слова соответствующего кода Шеннона, если бы буквы не были упорядочены по вероятностям. Код вышел непрефиксным.
Таблица 7.4
Бук |
Веро- |
Кумулятивная |
m |
Длина |
Кодовое |
Кодо- |
ва |
ят- |
вероятность qm |
|
кодо- |
слово |
вое |
xm |
ность |
|
|
вого |
Гильбер- |
слово |
|
pm |
|
|
слова |
та - Мура |
Шен- |
|
|
|
|
Im |
|
нона |
1 |
0,1 |
0,0 = (0,00000...) |
0,05 = (0,00001) |
5 |
00001 |
0000 |
2 |
0,6 |
0,1 = (0,00011...) |
0,40 = (0,01100) |
2 |
01 |
0 |
|
|
|
|
|
|
|
3 |
0 |
0,7 = (0,0 = 10110...) |
0,85 = (0,11011) |
3 |
110 |
10 |
|
|
|
|
|
|
|
Код Гильберта - Мура в общем случае является префиксным и однозначно декодированным. Все слова кода Гильберта - Мура не более чем на единицу длиннее слов кода Шеннона и имеют такую оценку средней длины
кодовых слов: l H 2.
507

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
Рассмотрим код Гильберта - Мура на базе его графической интерпретации, приведенной на рис. 7.14, для источника из примера 7.6. Предположим, что передается буква с номером 2. Ей отвечает точка . По построению
соседние точки отдалены от нее на расстояние по меньшей мере p2 / 2.
Кодер передает бит за битом, и при этом каждый раз интервал неопределенности суживается вдвое. Передачу можно закончить, когда длина интервала неопределенности будет не больше p2 / 2. В этом примере достаточно пере-
дать 2 бита.
Алгоритм декодирования кода Гильберта - Мура формируется согласно длине кодовых слов, которые выбираются так, что в результате округления к lm разрядам значения m qm pm / 2 уменьшаются не больше, чем на pm / 2
(погрешность округления не превышает 2 lm pm / 2). Поэтому в неравенстве
qm qm 1.
В этом алгоритме при декодировании используются только значение qi , i m и не используются значение i . Это важно, когда речь идет о декодировании арифметического кода. Также при декодировании арифметическо-
го кода для полученного из канала округленного значения |
F мы будем ре- |
|||
куррентно вычислять наиболее близкое к F , |
но не больше |
F значение ку- |
||
мулятивной вероятности q(x). Результатом |
декодирования |
будет соответ- |
||
ствующая последовательность сообщений x . |
|
|
|
|
Итак, |
декодеру известен алфавит |
X M , |
вероятности |
|
{p1, ..., pM }, |
кумулятивные вероятности {q1, ..., qM }, длина последовательно- |
сти сообщений n и полученное из канала значение F. Задача состоит в вычислении последовательности сообщений x.
Арифметическое кодирование. Метод арифметического кодирования дает возможность эффективно кодировать блоки длины n с избыточностью порядка 2/n и со сложностью, которая возрастает только пропорционально квадрату длины блока п.
За счет малого проигрыша в скорости кода можно достичь даже линейной по длине кода сложности. Арифметическое кодирование все шире применяется в разнообразных системах обработки информации.
Рассмотрим для упрощения соображений дискретный постоянный источник, который выбирает сообщение из множества X M с вероят-
ностями {p1, ..., pM }. Обозначим через {q1, .., qi } кумулятивные вероятности сообщений. Наша задача состоит в кодировании последовательностей множества X n ={x}. Описывая алгоритм кодирования, будем использовать обо-
508

Глава 7. Кодирование информации
значение xij для короткой записи подпоследовательности (xi , ..., xj ) последовательности x x xn .
Применим к ансамблю X n {x} довольно простой и эффективный посимвольный код. Упрощение заключается в том, что ни кодер, ни декодер не
сохраняет и не строит всего множества из |
X n |
кодовых слов. Вместо этого |
|
при передаче конкретной последовательности |
x кодером вычисляется кодо- |
||
вое слово c (x) только для данной последовательности x. |
Правило кодирова- |
||
ния обычно известно декодеру, и он восстанавливает x |
по c (x), не имея |
полного списка кодовых слов.
Возможными алгоритмами для использования в такой схеме можно рассматривать код Шеннона и код Гильберта - Мура. Тем не менее, использование кода Шеннона допускает благоустроенность сообщений по спаданию вероятности. При больших n сложность приведения в порядок становится недопустимо большой, поэтому единым претендентом остается код Гильберта - Мура.
Соответственно правилу построения кода Гильберта - Мура кодовое слово
формируется по вероятности |
p (x) и кумулятивной вероятности q (x) как |
|
первые l x log p x 1 |
разрядов после точки в двоичной записи числа |
|
|
|
|
x q x p x . |
Для того чтобы вычислить q(x), нужно договориться |
о некоторой нумерации последовательностей из X n . Наиболее естественный способ нумерации последовательностей - использование лексикографической благоустроенности. Лексикографический порядок на последовательностях обозначают знаком « ». Запись y x означает, что y лексикографически
передает x. Лексикографический порядок - это порядок, который обычно используется при составлении словарей. Итак, основная задача состоит в вычислении кумулятивной вероятности
|
|
|
|
|
|
|
|
|
|
|
q |
|
x |
|
|
p |
|
y , |
|
(7.8) |
|
|
|
|
|
|
y x |
|
|
|
|
|
поскольку для источника без |
|
памяти |
вероятности |
последовательностей |
||||||
p (x) вычисляются довольно просто по формуле |
|
|
||||||||
|
|
|
|
|
n |
|
xi . |
|
|
|
p x p |
|
|
||||||||
|
|
|
|
|
i 1 |
|
|
|
|
|
Алгоритм арифметического кодирования |
|
|
||||||||
1. По вероятностям {p1, .., |
pM } |
сообщений источника исчисляются ку- |
||||||||
мулятивные вероятности q1 0 ï ðè |
j 2, ..., M , qj |
qj 1 |
pj 1. |
509