Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тик №3.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
400.9 Кб
Скачать

2.3. Для заданного числа качественных признаков вторичного алфавита m построить оптимальный неравномерный код методом Хаффмана.

Для первичных алфавитов с числом качественных признаков m1 построение оптимального кода во вторичном алфавите с числом качественных признаков m2 сводится к процедуре построения префиксного кодового дерева, для чего выполняются следующие операции.

Алгоритм построения недвоичного кода Хаффмена

При выполнении алгоритма удобно строить недвоичное кодовое дерево и помечать дуги, входящие в очередную вершину, символами из множества {0, 1,…,m}.

п.1. Объединить

L=2+Rm-1(K2) (6)

букв с наименьшими вероятностями в некоторую новую букву с вероятностью, равной сумме вероятностей объединяемых букв. Через Rm-1(K2) обозначен остаток от деления (K2) на (m-1).

Полагаем, что последний символ буквы aК-L+1 равен «0», последний символ буквы aК-L+2 – «1», последний символ буквы aК-L+3 – «2» и так далее до «L».

п.2. В редуцированном ансамбле определить m букв с наименьшими вероятностями, объединить их в обобщенную букву и присвоить очередному символу каждой из объединяемых букв значения 1, 2,…, m.

п.3. Повторять п.2. до тех пор, пока не получится редуцированный ансамбль из одной буквы, которой соответствует единичная вероятность.

п.4. Для каждой буквы первичного алфавита строим недвоичное кодовое слово, которому соответствует путь на кодовом дереве от корневой вершины к соответствующей концевой вершине по отметкам дуг из множества {0, 1,…, m}.

  1. Символы алфавита m1 упорядочиваются по вероятностям:

А10 0.2

А8 0.1

А9 0.17

А7 0.14

А1 0.09

А11 0.08

А6 0.06

А4 0.05

А2 0.04

А3 0.03

А5 0.03

А12 0.01

2) В случае упорядочивания по убыванию вероятностей последние n0 символов объединяются в новый символ с вероятностью, равной сумме вероятностей объединяемых символов. При этом n0 должно удовлетворять условиям:

2 ≤ n0 ≤ m2

(m1 –n0 )/(m2 -1)=a,

где а – целое число уровней будущего кодового дерева.

m2 =3;

2 ≤ n0 ≤ 3 → n0 =2.

Найдем целое число уровней будущего кодового дерева:

m1 =12;

n0 = m1 –a*(m2 -1);

2=12-5*2;

a=5.

3) последующие объединения символов в дополнительные символы производятся с соблюдением следующих условий:

а) на всех этапах построение кодового дерева дополнительные символы объединяют n = m2 символов.

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

4) процедура объединения в новые символы продолжается до тех пор, пока вероятность очередного вновь образованного символа не будет равна 1.

5) ветвям, выходящим из корня узлов , присваиваются качественные признаки алфавита m2 в одном и том же порядке:

а) выбираются буквы aК-L+1, aК-L+2, aК-L+3 с линиями вероятности р(aК-L+1), р(aК-L+2), р(aК-L+3);

б) полагается последний символ aК-L+1 = 0, aК-L+2 = 1, aК-L+3 = 2;

в) редуцируя ансамбль объединяются aК-L+1, aК-L+2, aК-L+3 в одну вспомогательную букву, к которой приписывается суммарная вероятность р(aК-L+1), р(aК-L+2), р(aК-L+3) ;

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

Кодовые комбинации оптимального кода представляют последовательности качественных признаков, которые встречаются по пути от корня к вершинам кодового дерева.

Таким образом, на первом этапе при образовании узла кодового дерева объединяются два символа с наименьшими вероятностями, а на остальных этапах в каждом узле кодового дерева число ветвей равно 3.

На рисунке представлено кодовое дерево.

ОНК

А10

00

А8

01

А9

02

А7

10

А1

11

А11

200

А6

201

А4

202

А2

21

А3

220

А5

221

А12

222

А 10 0.2 0 0.47

А 8 0.1 1

А9 0.17 2

А 7 0.14 0 0

А 1 0.09 1 0.23 1

А 11 0.08 0 0 1

А6 0.06 1 0.19 2

А 4 0.05 2 1

А2 0.04 0.11

А 3 0.03 0 2

А 5 0.03 1

А12 0.01 2