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