
- •Глава 3. Кодирование символьной информации
- •3.1. Постановка задачи кодирования. Первая теорема Шеннона
- •3.2. Способы построения двоичных кодов 3.2.1. Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды
- •3.2.2. Равномерное алфавитное двоичное кодирование. Байтовый код
- •3.2.3. Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе
- •3.2.4. Блочное двоичное кодирование
- •Глава 6. Кодирование
- •6.1 Алфавитное кодирование
- •6.1.1. Префикс и постфикс слова
- •6.1.2. Таблица кодов
- •6.1.3. Разделимые схемы
- •6.1.4. Префиксные схемы
- •6.1.5. Неравенства Макмиллана
- •6.2. Кодирование с минимальной избыточностью
- •6.2.1. Минимизация длины кода сообщения
- •6.2.2. Цена кодирвания
- •6.2.3. Алгоритм Фано
- •6.2.4. Оптимальное кодирование
- •6.2.5. Алгоритм Хаффмана
- •6.3. Помехоустойчивое кодирование
- •6.3.1. Кодирование с исправлением ошибок
- •6.3.2. Классификация ошибок
- •6.3.3. Возможность исправления всех ошибок
- •6.3.4. Кодовое расстояние
6.2. Кодирование с минимальной избыточностью
Для практики важно, чтобы коды сообщений имели по возможности наименьшую длину. Алфавитное кодирование пригодно для любых сообщений, то есть S = A*. Если больше про множество S ничего не известно, то точно сформулировать задачу оптимизации затруднительно. Однако на практике часто доступна дополнительная информация. Например, для текстов на естественных языках известно распределение вероятности появления букв в сообщении. Использование такой информации позволяет строго поставить и решить задачу построения оптимального алфавитного кодирования.
6.2.1. Минимизация длины кода сообщения
Если задана разделимая схема алфавитного
кодирования
,
то любая схема
,
где
является перестановкой
,
также будет разделимой. Если длины
элементарных кодов равны, то перестановка
элементарных кодов в схеме не влияет
на длину кода сообщения. Но если длины
элементарных кодов различны то длина
кода сообщения зависит от состава букв
в сообщении и от того, какие элементарные
коды каким буквам назначены.
Если заданы конкретное сообщение и конкретная схема кодирования, то нетрудно подобрать такую перестановку элементарных кодов, при которой длина кода сообщения будет минимальна.
Пусть k1,…,kn
– количества вхождений букв a1,...,an
в сообщение S,а l1,…,ln
– длины элементарных кодов
,
соответственно. Тогда, если
и
,
то
.
Действительно, пусть kj=k+a,
ki=k
и lj=l,
li=l+b,
где a,b
0.
Тогда
Отсюда вытекает алгоритм назначения элементарных кодов, при котором длина кода конкретного сообщения S будет минимальна: нужно отсортировать буквы в порядке убывания количества вхождений, элементарные коды отсортировать в порядке возрастания длины и назначить коды буквам в этом порядке.
ЗАМЕЧАНИЕ
Этот простой метод решает задачу
минимизации длины кода только для
фиксированного сообщения S
и фиксированной схемы
.
6.2.2. Цена кодирвания
Пусть заданы алфавит
и вероятности появления букв в сообщении
(pi –
вероятность появления буквы ai).
Не ограничивая общности, можно считать,
что pi+…+pn=1
и
(то есть можно сразу исключить буквы,
которые не могут появиться в сообщении,
и упорядочить буквы по убыванию
вероятности их появления).
Для каждой (разделимой) схемы
алфавитного кодирования математическое
ожидание коэффициента увеличения длины
сообщения при кодировании (обозначается
)
определяется следующим образом:
,
где
и называется средней ценой (или длиной) кодирования при распределении вероятностей P.
Пример
Для разделимой схемы А={a,b},
B={0,1},
при распределении вероятностей
цена кодирования составляет 0.5*1+0.5*2=1.5,
а при распределении вероятностей
она равна 0.9*1+0.1*2=1.1.
Обозначим
Очевидно, что всегда существует разделимая
схема
,
такая что
.
Такая схема называется схемой равномерного
кодироваия. Следовательно,
и достаточно учитывать только такие
схемы, для которых
,
где li
целое и
.
Таким образом, имеется лишь конечное
число схем
,
для которых
.
Следовательно, существует схема
,
на которой инфимум достигается:
Алфавитное (разделимое) кодирование
,
для которого
,
называется кодированием с минимальной
избыточностью, или оптимальным
кодированием, для распределения
вероятностей P.