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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
8.8. Задачи и упражнения
8.6. Закодируйте арифметическим кодом последова­тельность y на выходе двоичного источника с независи­мыми буквами и с вероятностью единицы p:
а) y=(01011); p=0,45; б) y=(011010); p=0,35; в) y=(011101); p=0,7.
8.7. Закодировав арифметическим кодом все двоич­ные последовательности длины 3 с независимыми буква­ми и с вероятностью единицы p=4/9, определите среднюю скорость кодирования для блоков длины 3.
8.8. Закодируйте арифметическим кодом слово y источника с независимыми буквами a, b, c, имеющими вероятности p
а) y=(abaac); (p б) y=(cababc); (p в) y=(bcbacc); (p
, p2 и p3 соответственно:
1
1;p2;p3
)=(0,2; 0,45; 0,35);
)=(0,1; 0,4; 0,5);
1;p2;p3
)=(0,25; 0,2; 0,55).
1;p2;p3
8.9. Закодируйте арифметическим кодом слово y источника с независимыми буквами a, b, c, d имеющими вероятности p
а) y= (dabdc); (p б) y=(cdadbc); (p в) y=(bcdacd); (p
, p2, p3, p4 соответственно:
1
1;p2;p3;p4
1;p2;p3;p4
1;p2;p3;p4
)=(0,2; 0,15; 0,35; 0,3);
)=(0,1; 0,25; 0,5; 0,15);
)=(0,25; 0,2; 0,15; 0,4).
8.10. В модели ДИОС с независимыми символами ал­фавита {0,1,2} с вектором распределения (0,3; 0,45; 0,25) определите среднюю скорость кодирования для блоков длины 3 при арифметическом кодировании.
8.11. Для источника независимых букв a,b,c,d,e с ве­роятностями 0,18; 012; 023; 0,31; 0,16 соответственно закодируйте арифметическим кодом слово y:
а) y=(abaacba); б) y=(cababcca); в) y=(bcbaccba).
— 141 —
Глава 7. Неравномерное кодирование упорядоченных ансамблей
8.12. Декодируйте коды сm∈{(00101), (0111), (10101), (1100)} Гилберта-Мура источника n независимых букв с распределением вероятностей P:
а) n=8, P=(0,11; 0,09; 0,18; 0,19; 0,08; 0,07; 0,16;
0,12);
б) n=8, P=(0,14; 0,08; 0,18; 0,19; 0,05; 0,07; 0,17;
0,12);
в) n=9, P=(0,13; 0,08; 0,15; 0,16; 0,05; 0,07; 0,17;
0,12; 0,07).
Решение а). Вычисления даны в таблице.
p
0,11 0 00100 0,125 2
0,09 0,11 0111 0,4375 4
0,18 0,2 10101 0,65625 6
0,19 0,38 1100 0,75 7
0,08 0,57
0,07 0,65
0,16 0,72
0,12 0,88
q c
s(c) x=s-1(c)
8.13. Декодируйте арифметический код с(y) сообще­ния y длины 5 на выходе источника независимых букв X={a,b,c} с распределением вероятностей P:
а) с(y)=(110011000), P={0,4; 0,15; 0,45}; б) с(y)=(00101000001), P={0,5; 0,2; 0,3}. Решение а). Вычисления даны в таблице.
x = с a b c a.
— 142 —
8.8. Задачи и упражнения
F
F
F
F
F
F
F
F
F
F
F
F
F
F
шаг
S
i
0
1 0,0000 1,0000
2 0,7000 0,3000
3 0,7000 0,1500
4 0,7750 0,0300
5 0,7960 0,0090
i
гипотеза
G
i
x
∈{a,b,c}
i
c(x)=(110011000) →
a
b
c
a
b
c
a
b
c
a
b
c
a
b
c
q(a),
q(b),
q(c)
0,0 0,5
0,7
0,0
0,5 0,7 0,0
0,5
0,7 0,0 0,5
0,7
0,0 0,5 0,7
S
i+qiGi
= 0,796875
0,0000 < 0,5000 <
0,7000 <
0,7000 <
0,8500 >
ххх
0,7000 <
0,7750 <
0,8050 > 0,7750 < 0,7900 <
0,7960 <
0,7960 <
0, 8005 >
ххх
реше-
ние
x
i
с
a
b
c
a
p(xi)
0,3
0,5
0,2
0,3
0,5
8.14. Декодируйте арифметический код с(y) сообще­ния y длины 5 на выходе источника независимых букв X={a,b,c,d,e} с распределением вероятностей P:
а) с(y)=(0001000011000), P={0,18; 0,12; 0,23; 0,31;
0,16};
б) с(y)=(01100001001010), P={0,2; 0,4; 0,13; 0,23;
0,04}.
— 143 —
ГЛАВА 9.
Универсальное кодирование
9.1. Определяющие свойства
универсального кодирования
Рассмотренные методы неравномерного кодирова­ния достаточно эффективны и практичны. Вместе с тем, они имеют общий недостаток: на практике их эффек­тивность существенно зависит от того, насколько веро­ятностная модель источника близка к модели, которая взята за основу при построении кода. В связи с этим представляет значительный интерес задача кодиро­вания источника при отсутствии полной информации у кодера и декодера о характеристиках источника. При такой постановке задачи методы кодирования называют универсальными.
Одной из областей применения универсальных мето­дов кодирования является создание архиваторов для хра­нения файлов в памяти ЭВМ. Они используются также в современных кодерах аудио- и видеоинформации.
При универсальном кодировании предполагается, что входом кодера является последовательность сооб­щений x=(x известны алфавит кодера, алгоритм его работы и длина n последовательности. Эффективность кодирования пони­мается как создание кодового слова наименьшей длины.
Однако не существует алгоритма кодирования, кото­рый «сжимал»бы в равной мере все последовательности источника. При неравномерном префиксном кодировании
,…,xn) некоторого источника X. Декодеру
1
— 144 —
9.1. Определяющие свойства универсального кодирования


Rn

lim()
n

уменьшение длины одного кодового слова влечет увеличе­ние длины других кодовых слов.
Ситуация заметно упрощается для стационарных источников. Для них можно посчитать энтропию на сооб­щение и тем самым определить наименьшую достижимую скорость кодирования (обратна теорема кодирования вер­на и при отсутствии полной информации у кодера и деко­дера о характеристиках источника). Для стационарного источника следует считать хорошим такой способ уни­версального кодирования, при котором близки скорости кодирования как при наличии, так и при отсутствии из­вестной статистики для источника.
Итак, пусть W={w} — некоторый класс моделей источников, например, класс дискретных постоянных источников. В этом случае каждая модель из W определе­на конкретным распределением вероятностей. Обозначим
H
энтропию на сообщение источника для модели w.
w
Пусть заданный алгоритм кодирования при коди­ровании последовательностей длины n обеспечивает для этой модели среднюю скорость кодирования чит, определена избыточность r
(w)=
n
R
n
R
. Зна-
n
–Hw. Избыточ-
ностью кодирования для данного алгоритма относительно класса моделей W называется величина:
sup
(W) =
r
n

{
–H
}.
w
Задача кодирования состоит в построении алгоритма, минимизирующего избыточность r
(W) в заданном классе
n
моделей W.
Естественно, что с увеличением длины n кодируемых последовательностей избыточность кодирования умень­шается. Если для заданного алгоритма
r
= 0,
n
то такое кодирование называется универсальным для множества моделей W.
— 145 —
Глава 9. Универсальное кодирование
Задача построения универсальных алгоритмов ко­дирования реально решается на практике, при этом воз­можно построение таких универсальных алгоритмов, при которых скорость убывания избыточности максимальна.
При выборе алгоритмов кодирования важно учесть два ограничения.
Первое связано с возможной временной задержкой. Один класс алгоритмов не допускает задержку при коди­ровании (on-line алгоритмы), они называются алгоритма­ми без задержки или алгоритмами мгновенного кодирова­ния. Общим свойством таких алгоритмов является то, что при кодировании каждой поступающей на кодер буквы разрешается использование информации о предшествую­щих буквах и не разрешается использование информации о последующих буквах.
Для второго класса алгоритмов (off-line алгоритмы) задержка не имеет значения. Их еще называют алгорит­мами двухпроходного кодирования. При первом прохо­де собирается информация о статистических свойствах последовательности и при втором проходе выполняется собственно кодирование.
Еще одно важное ограничение связано с вычисли­тельной сложностью кодирования и декодирования.
9.2. Двухпроходное побуквенное
кодирование на примере кодов Хаффмена
Пусть источник генерирует последовательность x=(x
,…,xn) над алфавитом X={0,1,…,M–1}. Алфавит X
1
и длина n заранее известны кодеру и декодеру. На прак­тике длина n или передается отдельно в заголовке файла стандартным способом или в алфавите имеется специаль­ный символ, обозначающий завершение файла.
— 146 —
9.2. Двухпроходное побуквенное кодирование на примере кодов Хаффмена
Рассмотрим универсальное кодирование для класса источников без памяти с неизвестным распределением вероятностей на буквах алфавита.
Естественный способ решения задачи состоит в том, что кодер просматривает последовательность и опреде­ляет частоту появления t
(a) каждой буквы a∈X в после-
n
довательности x длины n. Затем, используя полученную информацию, вычисляет оценки вероятностей для всех букв и строит некоторый код для множества X. На втором проходе кодируется последовательность x. Кодовое слово состоит из двух частей: с(x)=(с жит информацию об использованном коде и с
(x),с2(x)), где с1(x) содер-
1
(x) есть соб-
2
ственно закодированная последовательность.
Декодер по с и затем по с
(x) восстанавливает сообщение x.
2
(x) определяет использованный код
1
Из описанного здесь большого семейства алгоритмов кодирования рассмотрим алгоритм побуквенного кодиро­вания методом Хаффмена. Поясним такое двухпроходное побуквенное кодирование на примере.
Пример 9.1. Пусть источником информации явля­ются данные, хранящиеся в ЭВМ в виде байтов, значит, порядок алфавита X=256. В качестве тестовой последо­вательности используем поучительную пословицу (здесь пробелы, которые также необходимо кодировать, замене­ны подчеркиваниями):
IF_ WE_CANNOT_DO_AS_WE_WOULD_WE_SHOULD_
DO_AS_WE_CAN (9.1)
Результаты статистического анализа частот знаков и соответствующий код Хаффмена приведены в табли­це 1. Кодовое дерево и кодовые слова можно построить на основе анализа частот букв аналогично тому, как оно строилось на основе анализа вероятностей. При кодирова­нии методом Хаффмена можно построить в общем случае
— 147 —
Глава 9. Универсальное кодирование
несколько вариантов кодового дерева, которые все экви­валентны в том смысле, что средняя длина кодовых слов одинакова. На рисунке 9.1 дан вариант 1 кодового дерева, здесь буквы текста упорядочены по убыванию частот. На рисунке 9.2 дан вариант 2 кодового дерева (для него в таблице 9.1 даны кодовые слова), где буквы упорядоче­ны по расположению в тексте.
Таблица 9.1
Код Хаффмена для текста (1), n=50
Буква
I 1 6 010000
F 1 6 010001
_ 12 2 00
W 5 3 100
E 4 4 0101
C 2 5 01001
A 4 4 1010
N 3 4 1011
O 5 3 110
T 1 6 011110
D 4 4 0110
S 3 4 1110
U 2 4 1111
L 2 5 01110
H 1 6 011111
Частота
буквы
Длина кодового
слова
Кодовое слово
— 148 —
9.2. Двухпроходное побуквенное кодирование на примере кодов Хаффмена
Рисунок 9.1. Построение для текста (1) кодового дерева
Хаффмена, вариант 1
Оценим вычислительные затраты. Обозначим l1(x) и l
(x) длины слов с1(x) и с2(x) соответственно. Длина l2(x)
2
равна сумме длин кодовых слов всего текста, она находит­ся из 2-го и 3-го столбцов таблицы 1:
l
(x) = 6+6+12×2+5×3+…+2×5+6 = 178.
2
Наиболее очевидный способ передачи информации об использованном коде состоит в передаче кодовой та­блицы, то есть списка букв вкупе с кодовыми словами этих букв. Однако этот способ не самый экономичный.
Чтобы передать с
(x), передадим структуру кодового
1
дерева, по которой декодер восстановит все кодовые сло­ва. Это потребует гораздо меньше информации по сравне­нию с кодовой таблицей.
Разметим все внутренние вершины кодового дерева нулями, все листья дерева единицами (на рисунке 9.2 метки сделаны жирным курсивом).
— 149 —
Глава 9. Универсальное кодирование
Рисунок 9.2. Кодовое дерево Хаффмена для текста (1), вариант 2
Тем самым, само кодовое дерево закодировано дво­ичной последовательностью меток всех вершин, записан­ных последовательно от 0-го яруса до последнего и внутри ярусов — сверху вниз. В нашем случае имеем 29-битовое слово w:
w = (0 00 1000 001010 01101111 0110 1111).
Считывая эту последовательность, декодер восстано­вит дерево. Действительно, первый символ «0»указыва- ет, что из корня исходят два ребра, значит, на 1-м ярусе имеются 2 вершины и переданное сообщение содержит не менее двух букв. Следующие два нуля, относящиеся к 1-му ярусу, указывают, что на 2-м ярусе имеется 4 вер­шины. Следующие 4 символа 2-го яруса, указывают, что на верху 2-го яруса сначала расположен 1 лист и ниже — 3 внутренних вершины, которые на 3-м ярусе порождают 6 вершин и т.д. На 6-м ярусе расположены только листья,
— 150 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]