Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Элементы теории информации в защите информации. Учебное пособие для академического бакалавриата
.pdf
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 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
