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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]