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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
8.1. Коды Гилберта-Мура
Шаг 2. Для нахождения второго символа кодового
слова (рисунок 8.1, б) определяем, что точка 0,4 находит­ся в правой половине отрезка r
, поэтому в соответствии
1
с указанным правилом второй символ кодового слова ра­вен 1. Далее левая половина отрезка r правой половины отрезка r обозначенного r
, при s=2 проверяется неравенство (8.1).
2
, то есть для отрезка [1/4,1/2],
1
игнорируется и для
1
Если неравенство не верно, то алгоритм определения кодового слова завершен, в данном случае (8.1) неверно и кодовое слово, состоящее из 2-х символов, равно (01).
… Шаг k. Если на (k–1)-м шаге алгоритм определения кодового слова не завершен, то для нахождения k-го сим­вола кодового слова определяем, в какой половине отрез­ка r
находится точка s2, и в соответствии с указанным
k–1
правилом определяем k-й символ кодового слова. Далее половина отрезка r игнорируется, и для другой половины отрезка r значенной как отрезок r
, в которой не содержится точка s2,
k–1
, при s=k проверяется неравен-
k
k–1
, обо-
ство (8.1).
Алгоритм определения символов кодового слова за­вершается на шаге k, если l(r
)<p2/2, в таком случае длина
k
кодового слова равна k.
Замечания. 1) Алгоритм выполняет конечное число шагов, так как каждый последующий отрезок r длину в 2 раза меньшую, чем отрезок r
k–1
.
имеет
k
2) Алгоритм кодирования сообщения i завершается
построением кодового слова длины k, если длина отрезка
r
не превышает pi/2, при этом rk содержит единственную
k
точку s и s
r
— это достаточное условие однозначности декодирова-
k
(в примере r0 содержит s1, s2 и s3; r1 содержит s1
i
; r2 содержит s2). Единственность точки si на отрезке
2
ния кодового слова длины k.
3) При передаче l
двоичных символов сообще-
i
ния i декодирование выполняется однозначно, если
— 121 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
2
li−
l(rk)=
≤pi/2, или, что равносильно, li≥–logpi+1. Послед-
нее условие совпадает с условием определения длин кодо­вых слов в коде Гилберта-Мура.
Таким образом, построение методом Гилберта-
Мура кодового слова длины k для сообщения i можно интерпретировать как построение ряда отрезков r …, r
, где каждый последующий отрезок есть половина
k
предыдущего и отрезок r жит число s {s
,…,sM}.
1
и не содержит иных чисел из множества
i
длины не большей pi/2 содер-
k
, r1,
0
8.2. Неравномерное непобуквенное кодирование сообщений
стационарного источника
От побуквенного кодирования перейдем к изучению методов кодирования последовательностей символов, ге­нерируемых стационарным источником.
Отметим, что к любой последовательности символов можно применить методы побуквенного кодирования. На практике эти методы достаточно просты и могут быть весьма эффективными.
Вместе с тем, имеются классы случаев, когда побук­венное кодирование — это не лучшее решение. Во-первых, в соответствии с теоремой 4.1 (об энтропии на сообщение) учет памяти кодирования может значительно повысить эффективность кодирования. Во-вторых, при побуквен­ном кодировании на кодирование каждого символа за­трачивается как минимум 1 бит, в то время как энтропия на сообщение может быть значительно меньше 1.
Пусть {x стационарным источником X={x} c определенной вероят­ностной моделью, позволяющей рассчитать вероятности
, x2, …} — последовательность, генерируемая
1
— 122 —
8.2. Неравномерное непобуквенное кодирование сообщений стационарного источника
R
R
1
n
R
R
R
n
inf
R
R
R
всех генерируемых последовательностей и по ним — эн­тропию на сообщение H=H
(X).
∞
Пусть при любом натуральном n фиксирован (ука-
зан) способ кодирования генерируемых источником блоков длины n, создающий для любого блока x∈X
n
ко­довое слово с(x) длины l(x) (этот класс способов относится к FV-кодированию). Тогда средняя скорость
кодиро-
n
вания данным способом блоков длины n определена как величина:
=
M[l(x)],
n
измеряемая в «битах на сообщение источника». Подбирая длину блоков n так, чтобы скорость
принимала наи-
n
меньшее значение, получаем определение средней скоро­сти
здесь использован символ
кодирования данным способом:
= inf
R ,
n
(а не символ min), так как
наименьшее значение может достигаться в пределе при n→∞.
Установим связь значений средней скорости FV­кодирования с характеристиками источника, в частности, с его энтропией H на сообщение. Для этого докажем обрат­ную и прямую теоремы неравномерного кодирования.
Теорема 8.2 (обратная). Для любого FV-кодирования дискретного стационарного источника с энтропией H на сообщение выполнено:
≥ H.
Доказательство. Применяя ко множеству X
n
теоре-
му 4.1 побуквенного кодирования, получаем:
M[l(x)] ≥ H(X
Второе нервенство верно, так как H с ростом n. Следовательно,
n
) = nHn(X) ≥ nH∞(X) = nH.
(X) не возрастает
≥H при любых n. Отсюда
n
n
≥H. Теорема доказана.
— 123 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
R
1
n
R
R
1
n
1
n
R
R
Теорема 8.3 (прямая). Для любого d>0 существует
способ неравномерного FV-кодирования дискретного ста­ционарного источника с энтропией H на сообщение, при котором
≤ H+d.
Доказательство. В соответствии с прямой теоремой побуквенного кодирования существует метод побуквен­ного кодирования блоков ансамбля X
M[l(x)] ≤ H(X
n
)+1 = nHn(X)+1.
n
, для которого
По определению числовой последовательности при любом d>0 найдется достаточно большое натуральное число n
Отсюда при n≥n
такое, что при любом n≥n1 выполнено:
1
H
(X) – H ≤ d/2.
n
верно неравенство
1
H
(X) ≤ H+d/2.
n
Вместе с тем, для любого d>0 найдется достаточно большое натуральное число n
такое, что при любом n≥n2
2
выполнено:
≤d/2.
Следовательно, при любом n≥max{n
≤
=
M[l(x)] ≤ Hn(X)+
n
≤ H+d/2+d/2 = H+d.
} выполнено
1,n2
Теорема доказана.
Таким образом, применяя к блокам достаточно боль­шой длины n побуквенное кодирование, можно достичь средней скорости
, где
H ≤
≤ H+о(n)
(напомним, что о(n)→0 при n→∞, см. Приложение 4).
Однако на практике это утверждение почти не­возможно реализовать из-за экспоненциального роста
— 124 —
8.3. Арифметическое кодирование
вычислительной сложности кодирования при росте дли­ны блоков n. Пусть, например, кодируются файлы, хра­нящиеся в памяти компьютера. Файлы можно рассматри­вать как сообщения, записанные в алфавите байтов, тогда порядок алфавита X=2
8
=256. При кодировании после-
довательностей длины n в алфавите X порядок алфавита
n
X
быстро растет с ростом n (таблица 8.2):
Таблица 8.2
n
Порядки алфавитов X
X
n
n
2 3 4
16
2
24
2
32
2
Работать с кодами таких размеров практически не­возможно даже с использованием современной вычисли­тельной техники.
8.3. Арифметическое кодирование
В отличие от способов побуквенного кодирования блоков длины n данный способ позволяет выполнить ко­дирование со сложностью, по порядку не превышающей
2
O(n
), и с избыточностью порядка 2/n (в ряде случаев ха-
рактеристики могут быть улучшены).
Сам алгоритм, который в научной литературе назы­вают также алгоритмом Шеннона-Фано-Элайеса, являет­ся распространением на последовательности алгоритма кодирования Шеннона.
Существенным упрощением арифметического кода по сравнению с побуквенными кодами состоит в том, что ни кодер, ни декодер не строят и не хранят всего множе­ства кодовых слов. При передаче конкретной последова­тельности x кодер вычисляет кодовое слово с(x) только для последовательности x. Используя правило кодирования,
— 125 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
j
i
x
декодер восстанавливает x по с(x), не обращаясь к другим кодовым словам.
Пусть дискретный постоянный источник X генериру­ет последовательности над алфавитом {1,…,M} с соответ­ствующими вероятностями p дирования последовательностей длины n из множества X
Обозначим: q
,…,qM — соответственно кумулятивные
1
вероятности сообщений 1,…,M; X
,…,pM. Опишем алгоритм ко-
1
n
={x}, где x=(x1,…,xn);
n
— подпоследовательность (xi,…,xj) последовательно-
сти x, где 1≤i≤j≤n.
Как следует из предварительных замечаний, ариф­метический код не требует упорядоченности по вероят­ностям последовательностей длины n из множества X
n
В этом смысле наиболее близким прототипом, относя­щимся к побуквенному кодированию, является кодиро­вание методом Гилберта-Мура.
Напомним с учетом новых обозначений, что в коде Гилберта-Мура кодовое слово с(x) формируется как как первые l(x) разрядов после точки в двоичной записи числа s(x), где l(x)=–logp(x)+1, s(x)=q(x)+p(x)/2.
Чтобы вычислить q(x), надо определить некоторый линейный порядок на множестве последовательностей X
n
Наиболее простой и естественный порядок — лексикогра­фический (алфавитный), который обозначим символом Этот порядок используется при составлении словарей.
Запись y шествует x. Бинарное отношение (порядок)
x означает, что y лексикографически пред-
для букв совпадает с естественным порядком в алфавите, для чи­сел — с естественным порядком превосходства. Если даны две последовательности x=(x наименьший индекс такой, что x
,…,xn) и y=(y1,…,yn), и i есть
1
, то yx ⇔ y
i≠yi
xi.
i
Кумулятивная вероятность последовательности x вычисляется с использованием бинарного отношения по формуле:
.
.
.
.
— 126 —
8.3. Арифметическое кодирование
( )
yx
py
∑
( )
1
∏
1
n
x
1
n
x
( )
1
11
n
nn
yx
py
∑
( )
1
1
11
11
n
n
nn
y
n
yx
py y
−
−−
∑∑
( )
1
1
11
11
n
n
nn
yx
nn
yx
py y
−
−−
=
∑∑
( )
1
11
1
11
n
nn
yx
py
−
−−
∑
( )
( )
1
1
11
11
n
n
nn
yx
nn
yx
py py
−
−−
=
∑∑
1
n
x
−
−
1
n
x
−
1
i
x
1
i
x
q(x) =
, (8.2)
где вероятность p(x) для источника без памяти (считаем, что буквы последовательности x независимы) определяет­ся формулой:
p(x) =
≤≤
in
px
.
i
Выведем для q(x) рекуррентную формулу, выразив
q(
) через q(
11nx−
). Запишем цепь равенств с использова-
нием (8.2):
q(
)=
где q(x
x
.
n
+
+
) — кумулятивная вероятность символа (буквы)
n
=
+
=
= q(
11nx−
)+p(
+
11nx−
)q(xn),
Таким образом, получены следующие рекуррентные
формулы: q(
) = q(
p(
11n
x
) = p(
) + p(
x
11n
x
)q(xn), (8.3)
11n
)p(xn). (8.4)
Каждая пара вероятностей (q( только на одном шаге для вычисления следующей пары ве­роятностей (q( ческом кодировании вновь вычисленные значения вероят­ностей можно записать в те же ячейки памяти, в которых были записаны предыдущие значения вероятностей.
Алгоритм арифметического кодирования последова­тельности x=(x лении пар вероятностей
),p(
)) используется
11ix+
),p(
,…,xn) состоит в последовательном вычис-
1
11ix+
)). Следовательно, при арифмети-
— 127 —
Глава 7. Неравномерное кодирование упорядоченных ансамблейПримеры решения некоторых задач математического анализа посредством MSExcel
1
i
x
1
i
x
1
n
x
1
n
x
1
n
x
1
n
x
(q(
),p(
)), i=1,…,n,
и в формировании кодового слова с(x) длины l(x), где
l(x) = –log(p(
)/2) = –logp(
)+1.
Кодовое слово с(x) совпадает с первыми l(x) разряда-
ми после запятой в двоичной записи числа
q(
)+p(
)/2.
Пример 8.2. Пусть источник генерирует слова в алфа­вите X={a,b,c}, где вероятности букв равны соответствен­но 0,1, 0,6 и 0,3. В таблице 8.3 приведены вычисления кодера для сгенерированного источником слова x=bcbab длины 5.
Кумулятивные вероятности начальных подслов сло­ва bcbab (то есть слов b, bc, bcb, bcba) и самого этого слова записаны в столбце F, вероятности тех же начальных под­слов записаны в столбце G.
Таблица 8.3
Вычисления арифметического кодера
для слова bcbab источника
№ шага i
x
i
p(xi) q(xi)
F
i
G
i
0 - - - 0,0000 1,0
1
2
3
4
5
b
c
b
a
b
0,6 0,1 0,1000 0,6
0,3 0,7 0,5200 0,18
0,6 0,1 0,5380 0,108
0,1 0,0 0,5380 0,0108
0,6 0,1 0,5391 0,0065
Числа, записанные в i-й строке столбца F и G (соот­ветствующей i-му шагу алгоритма кодирования), обозна­чим соответственно F слова l=–logG
+1=–log0,0065+1=9.
5
и Gi, i=1,2,… Тогда длина кодового
i
— 128 —
8.3. Арифметическое кодирование
F
F
F
Кодовое слово с(x) определяется 9-ю разрядами после
запятой в двоичной записи числа F
/2=0,5423. Так
5+G5
как 0,5423=[0,100010101…], то
с(x) = (100010101).
Замечание. Посчитаем десятичное число, обозначен-
ное
, у которого двоичная запись есть [0,100010101]. В этой записи первые 9 знаков после запятой совпадают с кодовым словом с(x) (остальные знаки двоичной записи числа F
/2=0,5423 удалены). Число
5+G5
равно 0,541, оно потребуется для декодера при восстановлении слова x источника по кодовому слову с(x). Также используем его как ориентир при расчетах в графической интерпретации алгоритма арифметического кодирования.
Графическая интерпретация алгоритма арифмети­ческого кодирования (она аналогична кодам Шеннона и Гилберта-Мура) показана на рисунке 8.2.
На i-м шаге кодирования в соответствии с (8.3) и (8.4) вычисляется число F ствующего на рисунке i-му шагу) и длина G
(начальная точка отрезка, соответ-
i
этого отрезка,
i
содержащего число, по которому определяется двоичное кодовое слово с(x) для данной последовательности x, сге­нерированной источником, i=1,2,... Например, опре­делено, что искомое число содержится после 1-го шага в отрезке [0,1; 0,7], после 2-го шага — в отрезке [0,52; 0,7], …, после 4-го шага — в отрезке [0,538; 0,5488]. По­сле 5-го шага определяем F
=0,5391. Добавив к нему G5/2
5
и оставив 9 знаков после запятой в двоичном представле­нии числа F и число
. Таким образом, кодируемое слово x источника
/2=0,5423, получаем кодовое слово с(x)
5+G5
отображается алгоритмом кодирования в единственную точку интервала (0,1).
Для однозначного восстановления сообщения x=bcbab источника по кодовому слову с(x) декодеру доста­точно 9-и знаков, поэтому ближайшая точка интервала
— 129 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
F
(0,1), соответствующая другому сообщению x', удалена от точки
на расстояние не менее 2–9=1/512.
Рисунок 8.2. Графическая интерпретация алгоритма арифметического
кодирования
8.4. Сложность вычисления арифметического кода
Оценим вычислительную сложность кодирования слова длины n. Кодирование потребует выполнения n–1 шага. Из описания алгоритма (формулы (8.3) и (8.4)) сле­дует, что на каждом шаге кодирования выполняются три операции: одно сложение и два умножения. Однако это
— 130 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]