- •ПРЕДИСЛОВИЕ
- •Глава 1. ИНФОРМАЦИОННАЯ ЭНТРОПИЯ
- •§ 1.3. Модели источников дискретных сообщений
- •§ 1.5. Равномерное кодирование
- •Глава 2. МЕТОДЫ КОДИРОВАНИЯ
- •§ 2.1. Неравномерное кодирование: постановка задачи
- •§ 2.3. Кодирование Хаффмана
- •§ 2.5. Арифметическое кодирование
- •СПИСОК ЛИТЕРАТУРЫ
- •ОТВЕТЫ К ЗАДАЧАМ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
- •ЗАКЛЮЧЕНИЕ
4**. Для источника из предыдущей задачи попробовать получить общую зависимость энтропии Hn ( X ) от n и t.
Контрольные вопросы
1.Дайте определение n-мерной энтропии и энтропии на символ.
2.Приведите свойства информационных мер Hn ( X ) и H( X | X n−1) для стационарных источников.
3.Чему равны энтропии Hn ( X ) и H( X | X n−1) для постоянного источника?
4.Приведите выражения для энтропий Hn ( X ) и H( X | X n−1) в случае простого стационарного марковского источника.
§ 1.5. РАВНОМЕРНОЕ КОДИРОВАНИЕ
После того как мы ввели теоретические характеристики информационных свойств дискретных источников, можно было бы приступить к изучению различных методов сжатия данных. Однако здесь будет уместно сделать паузу и рассмотреть простейший из существующих методов кодирования – равномерное кодирование. Несмотря на то, что этот метод не представляет никакого интереса для реальных проблем сжатия информации, с педагогической точки зрения он будет являться для нас весьма полезным. С одной стороны, при рассмотрении этого подхода нам станет понятнее, как энтропия источника связана со скоростью передачи информации, а с другой стороны, равномерное кодирование выявит наиболее типичные проблемы, характерные для задач кодирования в целом.
Итак, при равномерном кодировании последовательность генерируемых источником символов разбивается на подпоследовательности (блоки) одинаковой длины n: х = (х1, х2, …, хn), xi X . Каждый такой блок рассматривается независимо от других. При кодировании применяется кодовый
40
алфавит A, в качестве которого будем рассматривать множество A ={0,1}. Символы этого алфавита называютсякодовыми символами.
ОПРЕДЕЛЕНИЕ 1.5.1. Равномерным кодом длины l называется подмножество C {0,1}l , то есть произвольное подмножество бинарных последовательностей длины l.
Далее элементы кода C будем называть кодовыми словами. Количество кодовых слов, то есть мощность множества C, будем называть
мощностью кода.
ОПРЕДЕЛЕНИЕ 1.5.2. Скоростью равномерного кода С называется величина
|
log |
2 |
| C | |
|
|
R = |
|
|
бит/символ. |
(1.5.1) |
|
|
n |
||||
|
|
|
|
||
В формуле (1.5.1) скобки означают округление вверх до ближайшего целого.
Чтобы почувствовать «физический смысл» скорости равномерного кода R, рассмотрим один важный частный случай. Допустим, что
C ={0,1}l , то есть равномерный код совпадает с множеством всех бинарных последовательностей длины l. Тогда, как легко видеть, С = 2l , откуда получаем
R = nl бит/символ.
Ясно, что кодирование в этом случаесводится к замене блоков длиныn, составленных из символов алфавита X, кодовыми словами длины l, которые затем записываются в устройство хранения информации или передаются по каналу связи. Таким образом, скорость равномерного кода – это удельные затраты (в битах) на передачу или хранение одного символа источника.
41
В общем случае кодирование – это отображение множества X n
на множество слов кода C, а декодирование – это отображение C → X n. Если эти отображения являются взаимообратными друг к другу, то декодер восстановит исходное сообщение, поступившее ранее на вход кодера. Ясно, что однозначное кодирование возможно, если
X |
|
n ≤ |
|
C |
|
. |
(1.5.2) |
|
|
|
Вычисляя логарифм от обеих частей этого неравенства, получаем
n log2 X ≤ log2 C .
Вспоминая свойство энтропии H( X ) ≤ log2 X (см. § 1.1, свойство1.1.5), получаем неравенство, усиливающее предыдущее:
n H( X ) ≤ log2 C .
Используя формулу (1.5.1), окончательно получаем
R ≥ H( X ).
Следовательно, при однозначном кодировании скорость равномерного кода с необходимостью должна быть большей или равной собственной энтропии источника.
Рассмотрим теперь ситуацию, когда неравенство (1.5.2) не выполнено. Это означает, что количество кодовых слов меньше, чем число кодируемых блоков символов источника. Несмотря на то, что эта ситуация кажется абсолютно бесполезной в приложениях, тем не менее она все же встречается на практике. Речь, прежде всего, идет о так называемом
42
сжатии с потерями (англ. lossy compression), то есть о методе сжатия, при котором данные после декодирования могут отличаться от исходных, но степень этого отличия является несущественной при их использовании. Чаще всего такое сжатие применяется для мультимедийных данных: аудиоили видеоданных, изображений, цифровой телефонии и т. п.
Итак, при нарушении условия (1.5.2) для некоторых кодируемых блоков не найдется «свободных» кодовых слов, и нам придется одним и тем же кодовым словом закодировать несколько различных блоков. Следовательно, при получении таких кодовых слов декодер не сможет однозначно восстановить переданный ему блок. Возникает так называемая ошибка кодирования.
Рассмотрим подробнее процессы кодирования и декодирования в случае нарушения неравенства (1.5.2).
Во множестве X n выделим подмножество T такое, что T = C . После этого каждому элементу множества T взаимооднозначно сопоставим некоторое кодовое слово из C. В этом случае T называется множеством однозначно кодируемых слов.
Оставшимся словам из множества X n , которым не хватило свободных кодов, припишем произвольные коды из C. Сделать это можно как угодно, например, приписав всем словам из X n \ T одно и то же кодовое слово. Декодер, получив на вход некоторый код c C , будет преобразовывать его в соответствии с заданной кодовой таблицей в некоторое слово из множества T. Отметим, что всякий раз, когда источник сгенерирует слово, не принадлежащее множеству T, на выходе декодера будет появляться слово, не совпадающее с входом кодера. Как мы уже говорили выше, это событие называется ошибкой кодирования. Вероятность этого со-
бытия perr = P{x T} будем называть вероятностью ошибки кодирова-
ния. Разумной рекомендацией в такой ситуации является выбор подмножества T X n таким образом, чтобы вероятность ошибки кодирования была минимально возможной.
43
Пример 1.5.1. Рассмотрим источник, порождающий три символа a, b и c, вероятности которых есть p(a) =0.5, p(b) =0.4 и p(c) = 0.1. Будем рассматривать блоки длины n = 2 . В этом случае множество кодируемых слов состоит из | X |n =32 =9 элементов. Для простоты допустим, что источник является постоянным, то есть вероятность каждого слова равна произведению вероятностей входящих в него символов. Распределение вероятностей слов источника приведено в табл. 1.5.1:
|
|
|
|
Таблица 1.5.1 |
|
Пример равномерного кода |
|
||
|
|
|
|
|
Слово |
|
Вероятность |
|
Код |
aa |
|
0.25 |
|
000 |
|
|
|
|
|
ab |
|
0.20 |
|
001 |
|
|
|
|
|
ac |
|
0.05 |
|
010 |
|
|
|
|
|
ba |
|
0.20 |
|
011 |
|
|
|
|
|
bb |
|
0.16 |
|
100 |
|
|
|
|
|
bc |
|
0.04 |
|
101 |
|
|
|
|
|
ca |
|
0.05 |
|
110 |
|
|
|
|
|
cb |
|
0.04 |
|
111 |
|
|
|
|
|
cc |
|
0.01 |
|
111 |
|
|
|
|
|
Согласно неравенству (1.5.2) для однозначного кодирования множество кодовых слов C должно иметь мощность C ≥ 9. Ясно, что данное условие достигается при минимальной длине кода l = 4 , так как запас кодовых слов в этом случае будет равен 2l =16 , в то время как для l = 3 мы будем иметь
2l =8. Однако коды длины l = 4 являются чрезмерно избыточными, так как среди 16 потенциальных кодовых слов использоваться будут только 9. Другими словами, скорость кодирования в случае четырехразрядных кодов, равная R = log2 9 / 2 ≈1.585 бит/символ, будет большей, чем в случае трехразрядных кодов: R = 3 / 2 =1.5 бит/символ. В последнем случае наши удельные затраты будут меньше на 0.085 бит, что, конечно, дает
44
незначительный выигрыш при кодировании коротких сообщений, но может существенно сэкономить пропускные ресурсы канала связи в случае передачи длинных текстов.
Если мы готовы пойти на уменьшение скорости кодирования в ущерб его однозначности и будем использовать коды длины l = 3, то нам необходимо отобрать множество однозначно кодируемых словT. Как было сказано выше, целесообразнее всего сделать это таким образом, чтобы минимизировать вероятность ошибки кодирования perr . Для нашего примера решение этой задачи очевидно: множество T должно содержать все кодируемые слова, кроме словаcc (так как вероятность этого слова минимальна). ▲
На практике очень часто возникает следующая задача: построить равномерный код, который одновременно обладал бы малой скоростью кодирования R и малой вероятностью ошибки кодирования perr . Из приведенных нами выше рассуждений видно, что скорость кодирования может быть уменьшена только за счет сужения множества однозначно кодируемых слов T. Но с уменьшением скорости R обязательно увеличится вероятность ошибки кодирования! Выходит, эта задача не имеет решения?
Давайте сформулируем задачу немного по-другому: с какой скоростью возможно кодирование, чтобы вероятность ошибки была пренебрежимо малой? Оказывается, что в таком виде задача является вполне содержательной, а ее решение для стационарных источников выражается следующими двумя утверждениями, носящими названия прямой и обрат-
ной теорем кодирования:
1) если R > H( X ) , то достижима сколь угодно малая ошибка кодирования;
2) если R < H( X ), ошибка кодирования не может быть сделана наперед заданной малой величиной.
Здесь H(X) – энтропия источника. Подробнее с информацией об этих теоремах можно ознакомиться в [3].
45
Задачи для самостоятельного решения
1. Вычислить скорость R равномерного кода длины l, если кодируются блоки длины n, состоящие из символов алфавита мощности X =11.
а) n = 5, l = 8;
б) n = 3, l =16 .
2*. Постоянный источник с алфавитом X ={a,b,c,d,e} имеет следующее распределение символов: p(a) =0.4, p(b) = p(c) =0.2 , p(d ) = p(e) =0.1. Построить равномерный код длины l = 4 , минимизирующий ошибку кодирования, в случае кодирования блоков длины n = 2 .
Контрольные вопросы
1.Что называют равномерным кодом?
2.Дайте определение скорости равномерного кода. Поясните его
смысл.
3.Сформулируйте необходимое условие, при котором возможно однозначное кодирование.
4.Какое событие называют ошибкой кодирования?
5.Как связаны скорость кода и вероятность ошибки кодирования
сэнтропией источника?
46
