Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Элементы теории информации в защите информации. Учебное пособие для академического бакалавриата

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
7.4. Коды Шеннона
2
li−
2
li−
l
Так как li = –logpi ≥ –logpi, то отсюда следует:
≥
p
i
.
Следовательно,
q
– qi ≥
j
.
Двоичная запись правой части этого неравенства имеет после запятой l Значит, кодовые слова с в одном из первых l
–1 нулей, за которыми следует 1.
i
и сj различаются по крайней мере
i
символов после запятой.
i
В силу произвольности выбора сообщений с номера­ми i и j, где i<j, получаем, что код Шеннона префиксный. Теорема доказана.
Замечания. 1) Длины кодовых слов в коде Шеннона такие же, как в доказательстве прямой теоремы коди­рования (теорема 6.2). Так как все выкладки теоремы справедливы для случая кода Шеннона, то верна оценка средней длины кодовых слов:
< H+1.
2) В коде Шеннона длина кодового слова каждого сообщения взята чуть больше собственной информации сообщения, и как результат средняя длина кодовых слов получилась чуть больше энтропии источника.
Обсудим графическую интерпретацию кодирования методом Шеннона, это пригодится в дальнейшем при об­суждении арифметического кодирования.
Рассмотрим источник трех сообщений: М=3, p
p
=0,3, p3=0,1. Числовой отрезок [0,1] разобьем на три от-
2
резка длины p
, p2, p3 (рисунок 7.4), тогда начала отрезков,
1
=0,6,
1
сопоставленные сообщениям источника, соответствуют кумулятивным вероятностям q
=0, q2=0,6, q3=0,9.
1
Пусть требуется закодировать сообщение «2». Соот­ветствующая ему точка q сунках 7.4, а — в. Обозначим r
=0,6 отмечена кружком на ри-
2
отрезок [0,1].
0
— 111 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
Рисунок 7.4. Графическая интерпретация кодирования методом Шеннона
Опишем по шагам алгоритм нахождения кодового
слова.
Шаг 1. Для определения первого символа кодового
слова (рисунок 7.4, а) следует определить, в какой поло­вине (левой или правой) отрезка r
находится точка 0,6.
0
Правило таково: если в левой половине, то символ равен 0, если в правой — то символ равен 1. В данном случае точка 0,6 находится в правой половине отрезка r
, это оз-
0
начает, что первый символ кодового слова равен 1.
Далее левая половина отрезка r правой половины отрезка r обозначенного r
p
, при s=1 проверяется неравенство
1
2
, то есть для отрезка [1/2,1],
0
≤ l(rs), (7.2)
игнорируется и для
0
где l(r) — длина отрезка r. Если неравенство неверно, то кодовое слово состоит из единственного символа и ал­горитм определения кодового слова завершен. Если нера­венство верно (здесь это так), то выполняем следующий шаг.
Шаг 2. Для нахождения второго символа кодового слова (рисунок 7.4, б) определяем, что точка 0,6 находит­ся в левой половине отрезка r
— 112 —
, поэтому в соответствии
1
7.4. Коды Шеннона
2
li−
с указанным правилом второй символ кодового слова равен 0. Далее правая половина отрезка r и для правой половины отрезка r [1/2,3/4], обозначенного r
, при s=2 проверяется неравен-
2
, то есть для отрезка
1
игнорируется
1
ство (7.2).
Если неравенство неверно, то алгоритм определения кодового слова завершен, в данном случае (7.2) неверно и кодовое слово, состоящее из 2-х символов, равно «10».
Шаг k. Если на (k–1)-м шаге алгоритм определения ко- дового слова не завершен, то для нахождения k-го символа кодового слова определяем, в какой половине отрезка r находится точка q
, и в соответствии с указанным правилом
2
k–1
определяем k-й символ кодового слова. Далее половина от­резка r и для другой половины отрезка r резок r
, в которой не содержится точка q2, игнорируется,
k–1
, при s=k проверяется неравенство (7.2).
k
, обозначенной как от-
k–1
Алгоритм определения символов кодового слова за­вершается на шаге k, если l(r
)<p2, в этом случае длина
k
кодового слова равна k.
Замечания. 1) Алгоритм выполняет конечное число шагов, так как каждый последующий отрезок r длину в 2 раза меньшую, чем отрезок r
k–1
.
имеет
k
2) Алгоритм кодирования сообщения i завершается
построением кодового слова длины k, если отрезок r ны, не превышающей p (в примере r содержит q
содержит q1, q2 и q3; r1 содержит q2 и q3; r2
0
). Единственность точки qi на отрезке rk — это
2
, содержит единственную точку qi
i
дли-
k
достаточное условие однозначности декодирования кодо­вого слова длины k.
3) При передаче l
i декодирование выполняется однозначно, если l(r =
≤pi, или, что равносильно, li≥-logpi. Последнее усло-
двоичных символов сообщения
i
k
)=
вие совпадает с условием определения длин кодовых слов в коде Шеннона.
— 113 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
Таким образом, построение методом Шеннона кодо-
вого слова длины k для сообщения i можно интерпретиро­вать как построение ряда отрезков r
,…,rk, где каждый
0,r1
последующий отрезок есть половина предыдущего, и от­резок r жит иных чисел из множества {q
длины не большей pi содержит число qi и не содер-
k
,…,qM}.
1
Заметим, что наиболее трудоемкой частью алгоритма кодирования Шеннона может быть сортировка множества сообщений источника по убыванию вероятностей. Сорти­ровка M сообщений потребует при больших M порядка MlogM операций попарного сравнения вероятностей со­общений источника. Это обстоятельство делает во многих случаях применение кода Шеннона непрактичным.
7.5. Задачи и упражнения
7.1. Постройте дерево кода Шеннона-Фано и найдите среднюю длину кодовых слов для ансамбля {1,…,М} с ве­роятностями:
а) М=7; 1/4, 1/8, 1/8, 1/4, 1/16, 1/8, 1/16; б) М=8; 1/4, 1/8, 1/16, 1/8, 1/16, 1/8, 1/8, 1/8.
7.2. Дискретный источник над алфавитом {1,…,8} имеет вероятности символов
(0,25; 0,25; 0,125; 0,125; 0,125; 0,0625; 0,03125;
0,03125).
Закодируйте символы данного ансамбля кодом Шен­нона-Фано, найдите среднюю длину кодовых слов, а так­же энтропию и избыточность источника.
7.3. Дискретный источник над алфавитом {1,…,12}
имеет вероятности символов
1/32×(8, 4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1).
Закодируйте символы данного ансамбля кодом Шен­нона-Фано, найдите среднюю длину кодовых слов, а так­же энтропию и избыточность источника.
— 114 —
7.5. Задачи и упражнения
7.4. Закодируйте n букв источника X кодом Хафф­мена, постройте кодовое дерево, найдите среднюю длину кодовых слов и энтропию источника.
Найдите избыточность r кода Хаффмена и ее оценку с помощью наибольшей вероятности сообщений источ­ника:
а) n=5, P(X)=(0,4; 0,25; 0,15; 0,15; 0,05);
б) n=5, P(X)=(0,51; 0,23; 0,15; 0,09; 0,02);
в) n=5, P(X)=(0,53; 0,19; 0,14; 0,10; 0,04);
г) n=7, P(X)=(0,28; 0,22; 0,15; 0,13; 0,12; 0,07; 0,03);
д) n=9, P(X)=(0,23; 0,20; 0,18; 0,11; 0,1; 0,07; 0,05; 0,04; 0,02).
7.5. Дискретный источник над алфавитом {1,…,7}
имеет вероятности символов:
а) (0,2; 0,18; 0,16; 0,14; 0,12; 0,12; 0,08);
б) (0,25; 0,15; 0,12; 0,16; 0,14; 0,1; 0,08).
Постройте дерево кода Хаффмена, найдите среднюю длину кодовой комбинации и сравните ее с наименьшей длиной кодовой комбинации при равномерном кодирова­нии с нулевой ошибкой.
7.6. Оцените число М независимых сообщений ан­самбля, если средняя длина l кодовых слов кода Хаффме­на не меньше: а) 2,5; б) 3,1.
7.7. Оцените число М независимых сообщений ан­самбля, если в коде Хаффмена средняя длина слов l=3 и избыточность не больше: а) 0,5; б) 0,21.
7.8. Оцените избыточность кодов Хаффмена для ан­самблей с распределением вероятностей (даны по убыва­нию, s=0,086):
A={0,27;0,18;…}; B={0,39;0,19;…}; C={0,63;0,11;…};
D={0,71;0,11;…}.
7.9. Оцените избыточность кода Хаффмена для ан­самбля n сообщений, вероятности которых образуют арифметическую прогрессию с разностью a:
a) n=10, a=0,01; б) n=150, a=0,002.
— 115 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
l
l
7.10. Закодировать методом Шеннона ансамбль X={1,2,3,4,5,6,7} с вероятностями букв 0,25; 0,21; 0,18; 0,12; 0,1; 0,08; 0,06. Найти энтропию H источника и сред­нюю длину
кодовых слов.
Решение.
p
0,25 0,21 0,18 0,12 0,1 0,08 0,06
q
0 0,25 0,46 0,64 0,76 0,86 0,94
l
2 3 3 4 4 4 5
0,00 0,010 0,011 0,1010 0,1100 0,1101 0,11110
[q]
2
c
00 010 011 1010 1100 1101 11110
Отсюда получаем: H = 2,6527,
= 2×0,25+3(0,18+0,21)+4(0,12+0,1+0,08)+5×0,06 =
=3,17.
7.10. Закодируйте n букв источника X кодом Шен­нона, постройте кодовое дерево, найдите среднюю длину кодовых слов и энтропию источника:
а) n=9, P(X)=(0,28; 0,18; 0,12; 0,11; 0,1; 0,07; 0,06;
0,05; 0,03);
б) n=9, P(X)=(0,25; 0,17; 0,13; 0,12; 0,11; 0,08; 0,07;
0,05; 0,02);
в) n=10, P(X)=(0,24; 0,16; 0,14; 0,12; 0,1; 0,08; 0,06;
0,05; 0,03; 0,02);
г) n=11, P(X)=(0,19; 0,18; 0,13; 0,11; 0,1; 0,08; 0,07;
0,05; 0,04; 0,03; 0,02).
7.11. Используя графическую интерпретацию кода Шеннона, постройте кодовые слова букв «2»и «3»ансам- бля n букв:
а) n=5, P(X)=(0,46; 0,23; 0,17; 0,11; 0,03); б) n=6, P(X)=(0,32; 0,24; 0,19; 0,11; 0,09; 0,05).
— 116 —
ГЛАВА 8.
2
i
p
Неравномерное
кодирование неупорядоченных
ансамблей
Кодирование методами, представленными в данной главе, построено так, чтобы исключить требование упо­рядоченности сообщений источника по вероятностям со­общений. Это позволяет избавиться от трудоемкой проце­дуры сортировки множества сообщений (Приложение 8). Однако следствием такого упрощения является увеличе­ние длин кодовых слов и как результат средней длины кодовых слов.
8.1. Коды Гилберта-Мура
Пусть вероятности сообщений 1, …, M источника равны p дом Гилберта-Мура сообщению i ставится в соответствие не кумулятивная вероятность q
, …, pM соответственно. При кодировании мето-
1
, а величина
i
= qi +
s
i
, i=1,…,M.
Если при кодировании методом Шеннона монотонно возрастающей является последовательность {q
}, то при
i
кодировании методом Гилберта-Мура монотонно возрас­тает и последовательность {s
Лемма 8.1. Последовательность {s
}, i=1,…,M.
i
,…,sM} монотонно
1
возрастающая.
Доказательство. Рассмотрим при i<j разность:
— 117 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
1kkjp≤<
∑
2
1kkip≤<
∑
2
i
p
k
ikjp≤<
∑
2
ji
pp−
2
ji
pp−
2
ji
pp+
p
sj – si =
+
j
–
–
=
=
+
≥ pi +
=
> 0.
Лемма доказана. Кодовое слово кода Гилберта-Мура для буквы i опре-
деляется первыми l записи числа s
l
знаками после запятой в двоичной
i
, i=1,…,M, где
i
= –log(pi/2) = –logpi+ 1.
i
Алгоритм построения кода Гилберта-Мура состоит из последовательного вычисления для всех букв источни­ка i=1,…,M:
• кумулятивных вероятностей q
• чисел s
, длин кодовых слов li,
i
• двоичных кодовых слов с
,
i
разрядности li.
i
Пример 8.1. Закодируем методом Гилберта-Мура ансамбль X={1,2,3} с соответствующими вероятностями букв {0,1; 0,6; 0,3}. В таблице 8.1 приведены промежу­точные вычисления и результат построения кода Гилбер­та-Мура и кода Шеннона при игнорировании неупорядо­ченности вероятностей сообщений.
Запись [a] есть число a в двоичной системе счисления.
Таблица 8.1
Построение кода Гилберта-Мура
сi — код
i p
i
1 0,1 0,0=[0,00000…] 0,05=[0,00001…] 5 00001 0000
2 0,6 0,1=[0,00011…] 0,4=[0,01100…] 2 01 0
3 0,3 0,7=0,10110…] 0,85=[0,11011…] 3 110 10
q
i
s
i
— 118 —
l
Гилберта-
i
Мура
с
— код
i
Шеннона
8.1. Коды Гилберта-Мура
l
2
li−
2
i
p
max{ , }
2
ji
pp
{ }
min ,2ll
ij
−
l
Из таблицы 8.1 получаем, что средняя длина кодо-
вых слов
=2,6 в случае кода Гилберта-Мура и l=1,6
в случае кода Шеннона.
Данный пример плказывает, что в силу неупорядо­ченности вероятностей сообщений код Шеннона получил­ся бы непрефиксным в отличие от кода Гилберта-Мура.
Теорема 8.1. Код Гилберта-Мура префиксный.
Доказательство. Рассмотрим сообщения i и j при i<j, где s
по лемме 8.1.
i<sj
Для однозначной декодируемости кода достаточно показать, что кодовые слова с l символах после запятой, где l=min{l
По условию l
= –log(pi/2) ≥ –log(pi/2), тогда
i
и сj различаются в первых
≤
i
,
i,lj
}.
и в соответствии с леммой 8.1 получаем:
– si ≥
s
j
Из неравенства s
j–si
≥
= 2–l.
≥2–l следует, что двоичная запись правой части этого неравенства имеет после запятой l–1 нулей, за которыми следует 1. Значит, кодовые слова
с
и сj различаются по крайней мере в одном из первых
i
l символов после запятой. В силу произвольности выбора
сообщений с номерами i и j при i<j получаем, что код Гил­берта-Мура префиксный. Теорема доказана.
Замечание. Длины кодовых слов в коде Гилберта­Мура длиннее на 1 кодовых слов в коде Шеннона. Значит, для средней длины кодовых слов в коде Гилберта-Мура верна оценка:
< H+2.
Представим графическую интерпретацию кодирова­ния методом Гилберта-Мура (рисунок 8.1) для источника из примера 8.1 с вероятностями сообщений 0,1; 0,6; 0,3.
— 119 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
Пусть требуется закодировать сообщение «2». Соответ­ствующая ему точка s
=0,4 отмечена кружком на рисун-
2
ках 8.1, а–в. Обозначим r0 отрезок [0,1].
Рисунок 8.1. Графическая интерпретация кода Гилберта-Мура
Опишем пошаговый алгоритм нахождения кодового
слова.
Шаг 1. Для определения первого символа кодового
слова (рисунок 8.1, а) следует определить, в какой поло­вине (левой или правой) отрезка r
находится точка 0,4.
0
Правило прежнее: если в левой половине, то символ равен 0, если в правой — то символ равен 1. В данном случае точка 0,4 находится в левой половине отрезка r
, это озна-
0
чает, что первый символ кодового слова равен 0.
Далее правая половина отрезка r левой половины отрезка r обозначенного r
p
, при s=1 проверяется неравенство
1
/2 ≤ l(rs), (8.1)
2
, то есть для отрезка [0,1/2],
0
игнорируется и для
0
где l(r) — длина отрезка r. Если неравенство не выпол­нено, то кодовое слово состоит из единственного символа и алгоритм определения кодового слова завершен. Если неравенство верно (в данном случае это так), то выполня­ем следующий шаг.
— 120 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]