русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Построение для заданного числа качественных признаков вторичного алфавита M оптимального неравномерного кода методом Хаффмена


Дата добавления: 2015-08-14; просмотров: 2071; Нарушение авторских прав


Преимущество метода Хаффмена сказывается при построении ОНК для вторичных алфавитов с числом качественных признаков m>2 (например, если сообщения передаются с помощью трех или более частот). Большая эффективность достигается за счет более строгого выбора числа L наименее вероятных букв первичного алфавита, объединяемых на первом этапе построения кодового дерева.

Число L этих букв должно удовлетворять условиям

2 L m, (19)

кроме того,

(20)

где f - целое положительное число;

K - число букв первичного алфавита;

m - количество качественных признаков вторичного алфавита.

Хаффмен показал, что для получения минимально возможного значения средней длины кодового слова кода необходимо и достаточно выполнения следующих условий:

- при p(ai)>p(at) длины i-го и t-го кодовых слов должны находиться в отношении nt ni;

- L букв первичного алфавита с наименьшими вероятностями имеют кодовые слова одинаковой длины, отличающиеся друг от друга последним символом;

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

 

Для первичных (кодируемых) алфавитов с числом качественных признаков m1=12 построение оптимального кода во вторичном (кодовом) алфавите с числом качественных признаков m2=4 сводится к процедуре построения префиксного кодового дерева.

 

Приведем ниже алгоритм выполнения задания:

 

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

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

L=2+Rm-1(K-2) (21)

букв с наименьшими вероятностями в некоторую новую букву с вероятностью, равной сумме вероятностей объединяемых букв. В (21) через 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: п.1. По формуле (21) вычисляем число букв, объединяемых на первом этапе:

L=2+R4-1(12-2)=2+ R3(10)=2+1=3.

 

Выбираем три буквы с наименьшими вероятностями aK-2=a2, aK-1=a9 и aK=a8:

p(a2)=0,03;

p(a9)=0,03;

p(a8)=0,02.

Последнему символу кода буквы a2 присваиваем значение «0» (на рисунке 1 дуга, инцидентная концевой вершине а2, получила отметку «0»), по символу буквы a9 – значение «1» (дуга, инцидентная концевой вершине а9, получила отметку «1»), и по символу буквы a8 – значение «2» (дуга, инцидентная концевой вершине а8, получила отметку «2»). Объединяем буквы a2, a9, a8 в одну букву с вероятностью

p(a2)+p(a9)+p(a8)=0,03+0,03+0,02=0,08,

редуцируя исходный ансамбль А.

Шаг 2:Повторяемпункт 2, редуцируя ансамбль , объединяем буквы с наименьшими вероятностями(объединенные на шаге 1 буквы a2, a9, a8 и буквы a4, а3 и а5):

p(a2, a9, a8)+p(a3)+p(a5)+p(a7) =0,08+0,08+0,07+0,04=0,27.

Соответствующие дуги помечаем символами «0» (дуга с весом 0,08) «1» (буква обьединенная на шаге 1, дуга с весом 0,08), «2» (дуга с весом 0,07) и «3» (дуга с весом 0,04).

 

Шаг 3: п.2.Продолжаем редуцировать ансамбль : объединяем буквы с наименьшими вероятностями:

p(a6)+p(a10)+p(a11)+p(a4) =0,12+0,12+0,11+0,09=0,44.

Соответствующие дуги помечаем символами «0» (дуга с весом 0,06) «1» (дуга с весом 0,06), «2» (дуга с весом 0,05) и «3» (дуга с весом 0,04).

 

Шаг 4:Объединяем четыре буквы – букву объединенную на шаге 3, букву объединенную на шаге 2, букву а12 и букву а1:

p(a12)+ p(a1)+ p(a3, a5, a7, a2, a9, a8)+ p(a6, a10, a11, a4)= 0,15+0,14+0,27+0,44=1,00.

На этом редуцирование исходного ансамбля А завершено (на рисунке 1 получена корневая вершина кодового дерева с сумммарной вероятностью, равной 1,0). Завершает построение недвоичного кода Хаффмена (m=4) реализация п.4 (рисунок 1).

 

 

 

Рисунок 1

 

Результат кодирования представлен в таблице 3.

 

Таблица 3

Буква р(аk) Код 1 p( ) – p(ak) log p(ak)
a12 0,15 0,15 0,4105
a1 0,14 0,14 0,3971
a6 0,12 0,24 0,3671
a10 0,12 0,24 0,3671
a11 0,11 0,22 0,3503
a4 0,09 0,18 0,3127
a3 0,08 0,16 0,2915
a5 0,07 0,14 0,2686
a7 0,04 0,08 0,1858
a2 0,03 0,09 0,1518
a9 0,03 0,09 0,1518
a8 0,02 0,06 0,1129
      =1,79 H(A)=3,3670

 



<== предыдущая лекция | следующая лекция ==>
Построение оптимального неравномерного двоичного кода методом Шеннона-Фано | Вычисление коэффициентов относительной эффективности и статического сжатия


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.