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