русс | укр

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

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

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

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


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

Построение оптимального неравномерного двоичного кода методом Шеннона-Фано


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


Реализуем алгоритм построения кода Шеннона-Фано по пунктам. Проиллюстрируем работу алгоритма построения кода Шеннона-Фано с помощью таблицы 2.

п.1. В столбце 1 (таблица 2) буквы первичного алфавита отсортированы в порядке убывания вероятностей их появления.

п.2. Разобьем множество букв на две группы, так чтобы суммы вероятностей букв в каждой группе были по возможности одинаковы:

- первая группа – (a12, a1, a6, a10) с суммарной вероятностью

p(a12)+p(a1)+p(a6)+ p(a10)=0,15+0,14+0,12+0,12=0,53;

- вторая группа – (a11, a4, a3, a5, a7, a2, a9, a8) с суммарной вероятностью

p(a11)+p(a4)+p(a3)+p(a5)+p(a7)+p(a2)+p(a9)+p(a8)=0,111+0,09+0,08+0,07+

0,04+0,03+0,03+0,02=0,47.

 

 

Таблица 2 - Построение кода Шеннона Фано

 

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

 

п.3. Первым символам кодовых слов букв a12, a1, a6, a10 присваиваем символ «0», а первым символам кодовых слов букв a11, a4, a3, a5, a7, a2, a9, a8 присваиваем символ «1» (столбец 3, таблица 2).

п.4. Повторяется п.2 для первой группы, которая разбивается на две подгруппы: (a12, a1) и (a6, a7). В соответствии с п.3 вторым символам группы (a12, a1) присваивается символ «0». Вторым символам группы (a6, a7) присваивается символ «1».



Повторяется п.2 для группы (a12, a1), она разбивается на буквы a12 и a1.

В соответствии с п.3 третьему символу буквы a12 присваивается символ «0», а третьему символу буквы a1 - символ «1», и на этом процесс кодирования букв a12 и a1 заканчивается:

Cod a12 =000,

Cod a1 =001.

Повторяется п.2 для группы (a6, a7), она разбивается на буквы a6 и a7.

В соответствии с п.3 третьему символу буквы a6 присваивается символ «0», а третьему символу буквы a7 - символ «1», и на этом процесс кодирования букв a9 и a7 заканчивается:

Cod a6 =010,

Cod a7 =011.

Аналогично проводится кодирование остальных символов букв a11, a4, a3, a5, a7, a2, a9, a8, результаты которого представлены в столбце 3, таблица 2.

Оценим эффективность построенного кода.

Среднюю длину кодового слова вычислим по формуле (16), для чего для каждой буквы первичного алфавита воспользуемся данными из столбцов 4 и 2 таблицы 2, поместим полученные произведения в соответствующие ячейки столбца 5 и просуммируем их :

, (16)

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

nk – длина k-го кодового слова;

p(ak) – вероятность появления k-го кодового слова.

 

=3,41.

Вычислим энтропию первичного алфавита по известной формуле (6). В столбце 6 таблицы 2 произведены соответствующие вычисления:

H(A)=3,3670 бит/символ.

Вычислим коэффициент относительной эффективности по формуле (17)

(17)

 

и коэффициент статистического сжатия – по формуле (18)

(18)

 

 

Далее по ходу решения для алфавита, заданного таблицей 1, построим другой код, для него вычислим значения коэффициента относительной эффективности и коэффициента статистического сжатия и проведем сравнения. Более эффективным окажется тот код, для которого значения коэффициента относительной эффективности и коэффициента статистического сжатия окажутся большими.

 



<== предыдущая лекция | следующая лекция ==>
Выводы. | Построение для заданного числа качественных признаков вторичного алфавита M оптимального неравномерного кода методом Хаффмена


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


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

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

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


 


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

 
 

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

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