- •Глава 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.