Основой статистического (оптимального) кодирования сообщений является теорема К. Шеннона для каналов связи без помех.

Кодирование по методу Шеннона-Фано-Хаффмена называется оптимальным, так как при этом повышается производительность дискретного источника, и статистическим, так как для реализации оптимального кодирования необходимо учитывать вероятности появления на выходе источника каждого элемента сообщения ( учитывать статистику сообщений).

Производительность и избыточность дискретного источника согласно определениям равны, соответственно,

, ;

откуда получаем

.

Из этой формулы видно, что для увеличения производительности нужно уменьшать избыточность g и среднюю длительность сообщений .

Известно, что H(x)<Hmax(x), если априорные вероятности различных элементов сообщения различны (H(x)= Hmax(x) при равной вероятности этих элементов). Но при неравной вероятности сообщений можно применить оптимальное (статистическое) кодирование, при котором уменьшается средняя длительность сообщений.

Идея такого кодирования заключается в том, что, применяя неравномерный неприводимый код, наиболее часто встречающиеся сообщения (буквы или слова) кодируются короткими комбинациями этого кода, а редко встречающиеся сообщения кодируются более длительными комбинациями.

Рассмотрим принципы оптимального кодирования на приводимом ниже примере.

Пусть источник сообщений выдаёт 8 различных сообщений x1 ... x8 с вероятностями 0,495; 0,4; 0,026; 0,02; 0,018; 0,016; 0,015; 0,01 (сумма вероятностей равна 1).

Располагаем эти сообщения столбцом в порядке убывания вероятностей (рис. 6). Объединяем два сообщения с самыми минимальными вероятностями двумя прямыми и в месте их соединения записываем суммарную вероятность: p(x7)+p(x8)=0,015+0,01=0,025. В дальнейшем полученное число 0,025 учитываем в последующих расчётах наравне с другими оставшимися числами, кроме чисел 0,015 и 0,01. Эти уже использованные числа из дальнейшего расчёта исключаются.

Далее таким же образом объединяются числа 0,018 и 0,016, получается число 0,034, затем вновь объединяются два минимальных числа (0,02 и 0,025) и т.д.

Построенное таким образом кодовое дерево используется для определённых кодовых комбинаций. Напомним, что для нахождения любой кодовой комбинации надо исходить их корня дерева (точка с вероятностью 1) и двигаться по ветвям дерева к соответствующим сообщениям x1 ... x8. При движении по верхней ветви элемент двоичного кода равен нулю, а при движении по нижней – равен единице. Например, сообщению x5 будет соответствовать комбинация 11010. Справа от кодового дерева записаны кодовые комбинации полученного неравномерного кода. В соответствии с поставленной задачей, наиболее часто встречающееся сообщение x1 (вероятность 0,495) имеет длительность в 1 элемент, а наиболее редко встречающиеся комбинации имеют длительность в 5 элементов. В двух последних столбцах рисунка приведено число элементов Nэi в кодовой комбинации и величина произведения p(xi)×Nэi , а представляет собой число элементов, приходящееся на одну комбинацию, т.е. в данном случае .

Если бы для кодирования был применён равномерный двоичный код, который чаще всего применяется на практике, число элементов в каждой кодовой комбинации для кодирования восьми различных сообщений равнялось бы трём (23=8), т.е. .

В рассматриваемом примере средняя длительность комбинаций благодаря применённому статистическому кодированию уменьшилась в 3/1,774=1,72 раза. Во столько же раз увеличилась и производительность источника (24).

Вопросы

  1. Какая цель достигается при оптимальном кодировании дискретных сообщений?
  2. Почему оптимальное кодирование называется оптимальным и почему статистическим?
  3. В чём заключается идея оптимального кодирования?
  4. Как осуществляется процесс кодирования дискретных сообщений оптимальным кодом по методу Шеннона - Фано - Хаффмена?
  5. Почему код Шеннона - Фано должен быть неравномерным и неприводимым?