Метод кодирования Шеннона-Фано

При кодировании по методу Шеннона следует придерживаться следующих правил.

1. Все сообщения Метод кодирования Шеннона-Фано - student2.ru ансамбля Метод кодирования Шеннона-Фано - student2.ru ранжируются в порядке убывания вероятности реализаций сообщений.

2. Сообщения Метод кодирования Шеннона-Фано - student2.ru делятся на две группы сообщений, приблизительно одинаковые по вероятности.

3. Всем сообщениям одной из подгрупп приписывается символ 1, другой – символ 0.

4. Сообщения каждой подгруппы опять делятся на две подгруппы, приблизительно одинаковые по вероятности, и приписываются символы 1и 0.

5. Процедура деления и приписывания символов 1 и 0 продолжается до тех пор пока не останется в каждой подгруппе по одному сообщению.

6. Полученная последовательность символов, соответствующая определённому сообщению, является отображением сообщения в двоичной системе счисления в сжатой форме.

Ввиду того, что производится последовательная процедура деления множества символов на подгруппы, количество символов в коде, соответствующее определённому сообщению, будет зависеть от вероятности реализации сообщения. В этом случае метод кодирования характеризуется средним числом символов

Метод кодирования Шеннона-Фано - student2.ru Метод кодирования Шеннона-Фано - student2.ru ,

где Метод кодирования Шеннона-Фано - student2.ru - количество символов, употребляемых для кодирования Метод кодирования Шеннона-Фано - student2.ru -го сообщения.

Пример 3.2. Процедура кодирования изложена в таблице 3.3.

Таблица 3.3  
Анс-ль Метод кодирования Шеннона-Фано - student2.ru Вер. Метод кодирования Шеннона-Фано - student2.ru P           Коды Условн. вер. Метод кодирования Шеннона-Фано - student2.ru
Метод кодирования Шеннона-Фано - student2.ru 0.20      
Метод кодирования Шеннона-Фано - student2.ru 0.2     2/3
Метод кодирования Шеннона-Фано - student2.ru 0.19     1/3
Метод кодирования Шеннона-Фано - student2.ru 0.15     2/3
Метод кодирования Шеннона-Фано - student2.ru 0.10     1/3
Метод кодирования Шеннона-Фано - student2.ru 0.08     1/3
Метод кодирования Шеннона-Фано - student2.ru 0.06   1/4
Метод кодирования Шеннона-Фано - student2.ru 0.01 1/5
Метод кодирования Шеннона-Фано - student2.ru 0.01
                   

В примере используется тот же ансамбль сообщений Метод кодирования Шеннона-Фано - student2.ru с теми же вероятностями реализаций элементов ансамбля. В колонке 3 показано разбиения множества сообщений на

два подмножества Метод кодирования Шеннона-Фано - student2.ru и Метод кодирования Шеннона-Фано - student2.ru . Далее в колонках 4 – 7 показана процедура разбиения каждого подмножества до получения подмножества, состоящего из одного сообщения. Коды, соответствующие каждому сообщению, отображены жирными символами. Все полученные коды сведены в восьмую колонку.

Кодовое дерево для рассматриваемого примера приведено на рисунке 1.2.

Как видно из таблицы и рисунка 1.2, из узлов, отображающие коды, не выходит ни одна ветвь, т.е. получен префиксный код. На кодовом дереве из узла с кодом 100 выходят ветви и останавливаются на уровне пятиразрядного кода. При этом число неиспользуемых кодов равно 4.

Характеристики Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru остаются неизменными

Метод кодирования Шеннона-Фано - student2.ru 3.16993 Метод кодирования Шеннона-Фано - student2.ru .

Метод кодирования Шеннона-Фано - student2.ru =2.79465 Метод кодирования Шеннона-Фано - student2.ru

Метод кодирования Шеннона-Фано - student2.ru 0.881615 , Метод кодирования Шеннона-Фано - student2.ru 0.118385.

Метод кодирования Шеннона-Фано - student2.ru 1 Метод кодирования Шеннона-Фано - student2.ru .

Рассмотрим ансамбль Метод кодирования Шеннона-Фано - student2.ru . По формуле полной вероятности получим Метод кодирования Шеннона-Фано - student2.ru = 0.57367, Метод кодирования Шеннона-Фано - student2.ru = 0.42633.

Количество информации, содержащееся в каждом символе ансамбля Y равно соответственно

Метод кодирования Шеннона-Фано - student2.ru

Метод кодирования Шеннона-Фано - student2.ru 0.801707 Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru 1.22996 Метод кодирования Шеннона-Фано - student2.ru .

Энтропия ансамбля Y равна

Метод кодирования Шеннона-Фано - student2.ru 0.984283 Метод кодирования Шеннона-Фано - student2.ru .

Соответственно коэффициент сжатия и коэффициент избыточности будут равны

Метод кодирования Шеннона-Фано - student2.ru 0.984283, Метод кодирования Шеннона-Фано - student2.ru 0.015717

Сравнивая коэффициенты сжатия и коэффициенты избыточности ансамблей X и Y видно при кодировании по методу Шеннона, произошло увеличение коэффициента сжатия и уменьшение избыточности ансамбля Y. Относительные величины равны соответственно

Метод кодирования Шеннона-Фано - student2.ru = 1.11645 , Метод кодирования Шеннона-Фано - student2.ru = 7.53229.

Метод кодирования Шеннона-Фано - student2.ru =

=2*0.2+3*(0.2+0.19+0.15+0.1+0.08)+4*0.06+5*(0.01+0.01)= 2.9 Метод кодирования Шеннона-Фано - student2.ru

Метод кодирования Хафмана

Правило образования кодов состоит из следующих пунктов.

1. Все сообщения Метод кодирования Шеннона-Фано - student2.ru ансамбля Метод кодирования Шеннона-Фано - student2.ru ранжируются в порядке убывания вероятности реализаций сообщений.

2. Последние два сообщения объединяются в одно сообщение с вероятностью реализации, равной сумме вероятностей, объединяемых сообщений.

3. Полученные сообщения вновь ранжируются в порядке убывания вероятности реализаций сообщений.

4. Процедура объединения и ранжирования сообщений продолжается до тех пор, пока не останется одно сообщение с вероятностью реализации, равной 1.

5. В результате процедуры объединения и ранжирования сообщений получается кодовое дерево. Каждому лучу, исходящему из узла, в котором объединяются сообщения, приписываются символы 1 и 0, ( скажем, верхнему лучу приписывается символ 1, нижнему – символ 0).

6. Запись кода, соответствующего Метод кодирования Шеннона-Фано - student2.ru -му сообщению можно начинать как с вершины кодового дерева, так и с ветви , соответствующего Метод кодирования Шеннона-Фано - student2.ru -му сообщению. Если записывать код сообщения с ветви, соответствующего Метод кодирования Шеннона-Фано - student2.ru -му сообщению, получается не префиксный код. Поэтому рекомендуется производить считывание кода, начиная с вершины кодового дерева к ветви, содержащей Метод кодирования Шеннона-Фано - student2.ru -ое сообщение.

Процедура кодирования демонстрируется на примере.

Пример 3. В примере используется тот же ансамбль сообщений Метод кодирования Шеннона-Фано - student2.ru с теми же вероятностями реализаций элементов ансамбля. Характеристики Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru остаются неизменными. На рисунке 1.3 показана реализация правила кодирования сообщений. В результате считывания символов, начиная с ветви Метод кодирования Шеннона-Фано - student2.ru -го сообщения, получены не префиксные коды. Для получения префиксных кодов производится зеркальное отображение не префиксных кодов, что показано в таблице 1

Характеристики Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru остаются неизменными.

Рассмотрим ансамбль Метод кодирования Шеннона-Фано - student2.ru . По формуле полной вероятности получим Метод кодирования Шеннона-Фано - student2.ru = 0.5303, Метод кодирования Шеннона-Фано - student2.ru = 0.4697.

Количество информации, содержащееся в каждом символе ансамбля Y равно соответственно

Метод кодирования Шеннона-Фано - student2.ru 0.915119 Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru 1.09019 Метод кодирования Шеннона-Фано - student2.ru .

Энтропия ансамбля Y равна

Метод кодирования Шеннона-Фано - student2.ru 0.997349 Метод кодирования Шеннона-Фано - student2.ru .

Соответственно коэффициент сжатия и коэффициент избыточности будут равны

Метод кодирования Шеннона-Фано - student2.ru 0.997349, Метод кодирования Шеннона-Фано - student2.ru 0.00265

Таблица 3.4  
X Вер. Метод кодирования Шеннона-Фано - student2.ru не префиксный код префиксный код Метод кодирования Шеннона-Фано - student2.ru Условн. вер. Метод кодирования Шеннона-Фано - student2.ru
Метод кодирования Шеннона-Фано - student2.ru 0.2
Метод кодирования Шеннона-Фано - student2.ru 0.2 1/2
Метод кодирования Шеннона-Фано - student2.ru 0.19 1/3
Метод кодирования Шеннона-Фано - student2.ru 0.15 2/3
Метод кодирования Шеннона-Фано - student2.ru 0.10 1/3
Метод кодирования Шеннона-Фано - student2.ru 0.08 1/4
Метод кодирования Шеннона-Фано - student2.ru 0.06 1/5
Метод кодирования Шеннона-Фано - student2.ru 0.01 1/6
Метод кодирования Шеннона-Фано - student2.ru 0.01
             

На рисунке 3.5 приведено кодовое дерево, полученное при кодировании по методу Хафмена ансамбля X.

 
  Метод кодирования Шеннона-Фано - student2.ru

Сравнивая коэффициенты сжатия и коэффициенты избыточности ансамблей X и Y видно при кодировании по методу Хафмана, произошло увеличение коэффициента сжатия и уменьшение избыточности ансамбля Y по сравнению с равномерным кодом.

Средняя длина кода при кодировании по методу Хафмана уменьшилась также и равна

Метод кодирования Шеннона-Фано - student2.ru =1.34 Метод кодирования Шеннона-Фано - student2.ru .

Как видно из рисунка 3.5, ни одна кодовая комбинация не является началом другой кодовой комбинации, т.е. код является префиксным. Свойство префиксности кода позволяет однозначно декодировать последовательность кодовых комбинаций, что видно из таблицы 3.4 и рисунка 3.5.

Следует отметить, метод кодирования Хафмана позволяет получить показатели Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru , Метод кодирования Шеннона-Фано - student2.ru более высокие, чем при кодировании по методу Шеннона. Это объясняется тем, что в методе кодирования по Шеннону допускается некоторый произвол при делении множества событий на группы.

Наши рекомендации