Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Элементы теории информации в защите информации. Учебное пособие для академического бакалавриата
.pdf
8.4. Сложность вычисления арифметического кода
( )
1/i
yx
i
py x
−
∑
не означает, что вычислительная сложность кодирования
слова длины n пропорциональна n, так как с каждым шагом линейно растет разрядность перемножаемых чисел.
Предположим, что вероятности p
,…,pM сообщений
1
записаны в виде чисел разрядности d. Тогда в соответствии с (8.3) и (8.4) на каждом шаге алгоритма кодирования выполняется умножение числа определенной
разрядности на d-разрядное число, то есть разрядность
вероятностей слов (в том числе кумулятивных вероятностей) возрастает на d битов. Следовательно, после первого
шага вероятности слов длины 2 представляются числами
разрядности до величины 2d. После i-го шага вероятности представляются числами разрядности до величины
(i+1)d, i=1,…,n–1. Если считать, что сложность выполнения каждой операции (как сложения, так и умножения)
над d-разрядными числами пропорциональна d, то общая
сложность алгоритма кодирования имеет порядок
O(d+2d+…+nd) = O(n
2
d).
Замечания. 1) На практике все же возможна реализация арифметического кодирования с вычислительной
сложностью порядка O(nd) за счет некоторой потери
в точности вычислений.
2) Арифметическое кодирование достаточно легко
адаптируется для кодирования источников с памятью.
В случае простой однородной цепи Маркова необходимо
при вычислении использовать условные вероятности
p(x
i/xi-1
) и q(xi/x
), где
i-1
q(x
i/xi-1
) =
.
Пример 8.3. Пусть ДИОС генерирует слова в алфавите X={a,b,c,d,e}, где вероятности букв равны соответственно 0,2, 0,3, 0,15, 0,1, 0,25. В таблице 8.4 приведены
вычисления кодера для сгенерированного источником
слова x=debcdab длины 7.
— 131 —

Глава 7. Неравномерное кодирование упорядоченных ансамблей
Вычисления арифметического
кодера для слова debcdab
Таблица 8.4
№ шага i
x
p(xi) q(xi)
i
F
i
G
i
0 - - - 0,0000 1,0
1
2
3
4
5
6
7
d
0,1 0,65 0,65 0,1
e
0,25 0,75 0,725 0,025
b
0,3 0,2 0,73 0,0075
c
0,15 0,5 0,73375 0,001125
d
0,1 0,65 0,73448125 0,0001125
a
0,2 0,0 0,73448125 0,0000225
b
0,3 0,2 0,73448575 0,00000675
Кумулятивные вероятности начальных подслов слова debcdab (то есть слов d, de, deb, debc, debcd, debcda) и са-
мого этого слова записаны в столбце F, вероятности тех
же начальных подслов записаны в столбце G.
Числа, записанные в i-й строке столбца F и G (соответствующей i-му шагу алгоритма кодирования), обозначим соответственно F
и Gi, i=1,2,… Тогда длина кодового
i
слова
l=–logG
+1=–log0, 00000675+1=19.
7
Кодовое слово с(x) определяется 19-ю разрядами после
запятой в двоичной записи числа F
/2=0,734489125.
7+G7
Имеем:
[0,734489125]
= 0,10111 10000 00011 1011…,
2
значит, кодовое слово имеет вид:
с(x) = (10111 10000 00011 1011).
— 132 —

8.5. Декодирование кода Гилберта-Мурадля дискретного постоянного источника
11
∑
2
8.5. Декодирование кода Гилберта-Мура
для дискретного постоянного источника
В связи с описанием алгоритма арифметического кодирования последовательностей длины n возникают следующие важные вопросы для реализации кодирования
при больших значениях n:
1) требуемая точность вычислений возрастает вместе
с n весьма быстро;
2) алгоритм кодирования завершается после анализа
всей последовательности, что подразумевает необходимость задержки в выдаче кодового слова, где время задержки пропорционально n.
Обе эти проблемы на практике преодолимы за счет
того, что входная последовательность обрабатывается
постепенно и обработанные на некотором шаге данные,
связанные с последовательностью, не используются
в последующих шагах кодирования. Следовательно, алгоритм может быть построен так, чтобы часть данных,
не нужных для дальнейших вычислений и не влияющих
на окончательный результат, выдавалась на выход кодера без большой задержки. Это позволяет сократить существенно не только время задержки, но и вычислительную
сложность кодирования. Чтобы убедиться в этом, поясним устройство алгоритма декодирования.
Пусть источник X порождает буквы 1,…,M с вероятностями p
кумулятивные вероятности q
1<j≤M. Также посчитаны величины s
,…,pM соответственно, по которым посчитаны
1
,…,qM, где q1=0, qj =
1
p
j
+
j=qj
, длины ко-
ijp≤≤−
,
i
довых слов
l
=–log(pj/2)=–logpj+1
j
— 133 —

Глава 7. Неравномерное кодирование упорядоченных ансамблей
2
lj−
и кодовые слова сj, полученные округлением чисел sj,
j=1,…,M.
Обозначим:
пятой двоичная запись числа s
запятой образуют кодовое слово c
s
— округленная до lj разрядов после за-
j
(разряды числа
j
), j=1,…,M; s(с) — ра-
j
s
j
после
циональное число из сегмента [0,1], у которого двоичная
Задача декодера — восстановить сообщение j по кодо-
вому слову с или, что равносильно, по числу s(с).
Теорема 8.4. Слово с кодирует сообщение источника
j∈{1,…,M} такое, что
q
≤ s(с) < q
j
где q
M+1
=1.
Доказательство. По условию число s(с)∈{
s
}. Длина lj кодового слова сj определена выражением
M
–logp
ем первых l
величины s
s
+1, само кодовое слово сj получено использовани-
j
получается число
j
разрядов после запятой в двоичной записи
j
, j=1,…,M. Поэтому в результате округления
j
s
, отличающееся от числа sj на вели-
j
чину (погрешность округления), не больше чем
j+1
,
s
,…,
1
≤pj/2.
Отсюда верны неравенства:
s
q
≤
< q
j+1
.
j
j
Так как данным ограничениям удовлетворяет един-
s
ственное число из множества {
s
1
,…,
}, то число s(с)
M
и определяет однозначно сообщение j. Теорема доказана.
Заметим, что при декодировании кода Гилберта-
Мура использовались числа q
s
, что существенно для применения аналогичного мето-
j
и не использовались числа
j
да арифметического декодирования.
Пример 8.4. Требуется декодировать кодовые
слова с
∈{(001), (10010), (10111)}, созданные методом
i
Гилберта-Мура, для источника независимых букв алфавита {1,…,7} с вероятностями букв
— 134 —

8.6. Декодирование арифметического кодадля дискретного постоянного источника
,F
F
F
(p1; …; p7) = (0,12; 0,25; 0,18; 0,08; 0,06; 0,1; 0,21).
По вероятностям букв вычисляем кумулятивные вероятности
(q
; …; q7) = (0; 0,12; 0,37; 0,55; 0,63; 0,69; 0,79).
1
Для слова с=(001) вычисляем: s(с)=0,125. Так как
q
≤s(с)<q3, то слову с соответствует сообщение 2.
2
Для слова с=(10010) вычисляем: s(с)=0,5625. Так
как q
≤s(с)<q5, то слову с соответствует сообщение 4.
4
Для слова с=(10111) вычисляем: s(с)=0,71875. Так
как q
≤s(с)<q7, то слову с соответствует сообщение 6.
6
8.6. Декодирование арифметического кода
для дискретного постоянного источника
Декодирование арифметического кода последова-
тельности длины n выполняется за n шагов. Поочередно
на каждом шаге восстанавливается одна буква последовательности x=(x
вычисленной по кодовому слову c(x).
Для арифметического кода идея декодирования
на i-м шаге буквы x
с декодированием кода Гилберта-Мура, i≥1.
Пример вычислений алгоритма декодирования при-
веден в таблице 8.5.
Отличие от декодирования кода Гилберта-Мура
в том, что для буквы x
возможного ее значения (перебираются все буквы алфавита) и для каждой гипотезы с помощью рекуррентных формул вычисляется кумулятивная вероятность. Истинной
признается та гипотеза для x
вероятность наиболее близка к границе
вышает значения
гов — декодированное сообщение x.
,…,xn) с использованием границы
1
последовательности имеет аналогию
i
строятся гипотезы относительно
i
, для которой кумулятивная
i
, но не пре-
. Результат вычислений после n ша-
— 135 —

Глава 7. Неравномерное кодирование упорядоченных ансамблей
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
Декодирование последовательности
c(x)=(100010101).
шаг
i
0
S
i
гипотеза
G
i
x
∈{a,b,c}
i
c(x)=(100010101) →
q(a),
q(b),
q(c)
S
= 0,541
i+qiGi
Таблица 8.5
реше-
ние
p(xi)
x
i
1 0,0000 1,0000
2 0,1000 0,6000
3 0,5200 0,1800
4 0,5380 0,1080
5 0,5380 0,0108
a
b
c
a
b
c
a
b
c
a
b
a
b
c
0,0
0,1
0,7
0,0
0,1
0,7
0,0
0,1
0,7
0,0
0,1
0,0
0,1
0,7
0,0000 <
0,1000 <
0,7000 >
0,1000 <
0,1600 <
0,5200 <
0,5200 <
0,5380 <
0,6460 >
0,5380 <
0,5488 >
0,5380 <
0,5391 <
0,5456 >
b
0,6
c
0,3
b
0,6
a
0,1
b
0,6
Итак, декодеру известны алфавит X={1,…,M}, ве-
роятности p
,…,pM, кумулятивные вероятности q1,…,qM,
1
длина последовательности n и кодовое слово c(x), по которому вычислено число
. Задача декодера — вычислить
последовательность x.
— 136 —

8.7. Снижение вычислительной сложности арифметического кода
1
i
x
1
xa
1
/ixb
1
/ixc
1
xa
1
/ixb
1
/ixc
1
i
x
F
1
i
x
1
i
x
В ходе алгоритма кумулятивные вероятности началь-
ных подслов слова bcbab (то есть слов b, bc, bcb, bcba) записываются в столбец S, вероятности начальных подслов
и самого этого слова записываются в столбец G.
На шаге 1 в столбцах S и G записываются начальные
значения: S
=0, G1=1.
1
На шаге i алгоритм декодирования определяет букву
x
, i>0, где при i>1 буквы x1,…,x
i
уже определены.
i-1
Вычисления состоят в следующем: для имеющихся
значений S
нии буквы x
и Gi рассматриваются гипотезы a, b, c о значе-
i
и для каждого значения гипотезы с исполь-
i
зованием кумулятивных вероятностей q(a), q(b), q(c) гипотез вычисляются кумулятивные вероятности слова
в условиях всех гипотез (обозначим их q(
и q(
q(
)), то есть вычисляются числа
i
/
)=Si+q(a)Gi, q(
)=Si+q(b)Gi, q(
i
/
), q(
)=Si+q(c)Gi.
В качестве решения принимается та из гипотез,
в условиях которой кумулятивная вероятность слова
принимает наибольшее значение, не превышающее
Далее записываем в последний столбец вероятность p(x
i
принятой гипотезы.
На шаге i+1 записываем в столбец S принятое значе-
ние S
кумулятивной вероятности q(
i+1
) (в таблице 8.5
оно выделено жирным шрифтом) и в столбец G — значение G
вероятности p(
i+1
) и повторяем вычисления, как
на предыдущем шаге.
Шаг n завершает декодирование.
)
.
)
8.7. Снижение вычислительной
сложности арифметического кода
В предыдущем разделе отмечено, что вычислительная сложность арифметического кодирования блоков
длины n оценивается величиной порядка O(n
— 137 —
2
d), где

Глава 7. Неравномерное кодирование упорядоченных ансамблей
d — разрядность чисел, определяющих вероятности сообщений (букв) ансамбля. Отмечено также, что возможна
реализация арифметического кодирования с вычислительной сложностью порядка O(nd) за счет некоторой
потери в точности вычислений. Во всяком случае, как
в кодере, так и в декодере выполняются вычисления над
данными, разрядность которых имеет порядок длины
n кодируемых и декодируемых блоков. При больших
n это может приводить к значительной величине вычис-
лительной сложности кодирования и декодирования.
Эта проблема преодолевается с помощью последовательного анализа битов кодового слова и исключения
старших разрядов из расчета более младших разрядов.
То есть при кодировании старшие разряды исключаются
из расчета еще до того, как определено полностью кодовое
слово. Аналогично поступают и при декодировании.
Еще раз обратимся к примеру 8.2 арифметического
кодирования блока длины 5. В соответствии с таблицей 8.3
имеем при i>3: 0,5≤F
≤0,75; Gi<0,1. Значит, первые 2 симво-
i
ла (10) до завершения кодирования уже не изменятся и могут
быть переданы по каналу. Заметим, что указанные ограничения на числа F
выполнены в силу того, что второй бит равен
i
0, в противном случае эти ограничения не выполнены.
После отправки символов (10) выполнение алгоритма
кодирования продолжается, но данные необходимо преобразовать так, чтобы уменьшилась их разрядность и сохранилась корректность вычислений. Это выполняется
с помощью так называемой нормировки чисел F
мировка числа F
— это вычитание из него константы 1/2
i
и Gi. Нор-
i
(определяемой тем, что первый отправленный бит равен
1) и в полученной разности — сдвиг запятой на один разряд вправо. Этот сдвиг приводит к уменьшению на 1 разрядности чисел F
, i>3. Для сохранения корректности вы-
i
числений необходимо также уменьшить на 1 разрядность
— 138 —

8.8. Задачи и упражнения
чисел Gi. Нормировка числа Gi состоит в сдвиге в нем
запятой на один разряд вправо, корректность этой нормировки обеспечена неравенством G
<0,1.
i
Трудность в реализации описанного подхода возникает в случае, когда число F
число после нескольких шагов нормировки близко к
но меньше
1
/2. Тогда в двоичной записи Fi = [0,0111…]
или полученное из него
i
1
/2,
и при длинной серии из единиц наступает так называемое
состояние неопределенности, не позволяющее определить
ограничения на числа F
и Gi и выполнить их нормиров-
i
ку. В состоянии неопределенности невозможна отправка
нескольких битов по каналу до завершения кодирования.
Если состояние неопределенности продлится при
выполнении большого числа шагов кодирования, то возможен дефицит числа ячеек памяти, необходимой для
хранения чисел F
и Gi. Тогда при длинной серии из еди-
i
ниц в записи чисел кодер изменяет форму записи: вместо
серии из единиц кодер хранит длину этой серии.
Неопределенность разрешится одним из двух способов: или очередной разряд в двоичной записи F
равным 0, или при вычислении очередного числа F
окажется
i
про-
i
изойдет перенос единицы из младших разрядов, то есть
получим F
= [0,1000…]. В канал отправляется в первом
i
случае двоичное слово 0111…111, во втором случае — двоичное слово 1000…000.
Аналогичные приемы используются и при арифметическом декодировании.
8.8. Задачи и упражнения
8.1. Дискретный источник над алфавитом {1,…,8}
имеет вероятности символов:
а) (0,07; 0,15; 0,14; 0,17; 0,12; 0,13; 0,15; 0,07);
б) (0,11; 0,15; 0,13; 0,14; 0,12; 0,13; 0,12; 0,1).
— 139 —

Глава 7. Неравномерное кодирование упорядоченных ансамблей
,,
,,
Закодируйте символы источника кодом Гилберта-Мура, определите кодовые слова для 1-го, 2-го и 3-го
символов и среднюю длину кодовой комбинации.
8.2. Дискретный источник над алфавитом {1,…,9}
имеет вероятности символов:
а) (0,14; 0,08; 0,06; 0,12; 0,19; 0,05; 0,07; 0,17; 0,12);
б) (0,06; 0,08; 0,09; 0,16; 0,19; 0,06; 0,07; 0,18; 0,11).
Закодируйте символы источника кодом Гилберта-Мура, определите кодовые слова для 1-го, 5-го и 9-го
символов и среднюю длину кодовой комбинации.
8.3. Для источника с вероятностями букв (0,28; 0,25;
0,17; 0,12; 0,08; 0,07; 0,03) построить коды Хаффмена,
Шеннона, Гилберта-Мура. Определить для каждого кода
среднюю длину кодовых слов и сравнить с энтропией
источника.
8.4. В модели ДИОС с марковски зависимыми символами алфавита {0,1}, с матрицей переходных вероятно-
стей знаков P=(p
)=
ij
06 04
035065
и с вектором начального
распределения (0,3; 0,7) определите вероятность всех со-
общений длины 4 и постройте их кодовые слова методом:
а) Хаффмена; б) Шеннона; в) Гилберта-Мура.
Определите энтропию источника всех сообщений
длины 4.
8.5. В модели ДИОС с марковски зависимыми символами алфавита {0,1,2}, с матрицей переходных вероятно-
02404036
стей P=(p
,,,
)=
02 035045
,, ,
ij
043027 03
,, ,
и с вектором начального
распределения (0,3; 0,15; 0,55) определите вероятность
всех сообщений длины 3 и постройте их кодовые слова
методом:
а) Хаффмена; б) Шеннона; в) Гилберта-Мура.
Найдите энтропию источника всех сообщений длины 3.
— 140 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
