русс | укр

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

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

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

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


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

Код Хаффмана


Дата добавления: 2014-03-21; просмотров: 1121; Нарушение авторских прав


 

Близким к коду Шеннона-Фано, но ещё более выгодным является код Хаффмана. Постро-ение этого кода опирается на простое преобразование того алфавита, на котором запи-сываются передаваемые по линиям связи сообщения. Это преобразование называется сжатиемалфавита.

 

Пусть имеется алфавит A, содержащий буквы A1; A2; : : : ; An, вероятности появления ко-торых в сообщении соответственно равны p1; p2; : : : ; pn. При этом мы считаем буквы рас-положенными в порядке убывания их вероятности (p1 > p2 > : : : > pn). Условимся не различать между собой две наименее вероятные буквы алфавита (an1; an) - новая буква b алфавита A1: a1; a2; : : : ; an2; b и вероятностью появления p1; p2; : : : ; pn2; (pn1+ pn).


 


Алфавит A1 называется алфавитом, подученным из алфавита A c помощью одной опера-ции сжатия. Расположим буквы нового алфавита A1 в порядке убывания их вероятностей и подвергнем сжатию алфавит A1. При этом мы придём к алфавиту A2, получаемому из алфавита A двукратным сжатием. Продолжая эту процедуру мы будем приходить ко всё более коротким алфавитам. После N − 2-кратного сжатия мы придём к алфавиту An2, содержащему всего 2 буквы.

 

 

ПримерПустьn= 6(алфавит из6букв),вероятности которых равны соответственно

 

0:4; 0:2; 0:2; 0:1; 0:05; 0:05.

 

Рассмотрим наш алфавит из 6 букв с соответствующими вероятностями:

 

N буквы Исх алфавит A A1 A2 A3 A4
0:4 0 0:4 0 0:4 0 0:4 0 0:6 1
           
0:2 10 0:2 10 0:2 10 0:4 11 0:4 0
           
0:2 111 0:2 111 0:2 111 0:2 10  
           
0:1 1101 0:1 1101 0:2 110    
           
0:05 11001 0:1 1100      
           
0:05 11000        
           

 



Условимся приписывать двум буквам последнего алфавита кодовые обозначения 1 и 0. Если кодовые обозначения уже приписаны всем буквам алфавита Aj, то буквам преды-дущего алфавита Aj1, сохранившимся и в алфавите Aj мы припишем те-же кодовые обозначения, которые они имели в алфавите Aj. Двум буквам алфавита Aj1 : A; A", слившимся в одну букву b алфавита Aj мы припишем обозначения, получающиеся из ко-дового обозначения буквы b добавлением цифр 1 и 0 в конце.

 

Легко увидеть, что из самого построения получаемого таким образом кода Хаффмана вы-текает, что он удовлетворяет условию: никакое кодовое обозначение не является здесь начало другого, более длинного, кодового обозначения. Заметим также, что кодирова-ние некоторого алфавита по методу Хаффмана также, как и по методу Шеннона - Фано не является однозначно определённой процедурой, однако отметим, что среднее чис-ло k элем сигналов, приходящихся на одну букву алфавита для всех построенных кодов всегда остаётся одинаковым. Можно показать, что код Хаффмана является самым эко-номнымиз всех возможных в том смысле,что ни для какого другого метода кодирова-ния букв некоторого алфавита среднее число k элементарных сигналов, приходящихся на одну букву не может быть меньше того, какое получается при кодировании по методу Хаффмана.

 

 



<== предыдущая лекция | следующая лекция ==>
Код Шеннона - Фано | Основная теорема о кодировании


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


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

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

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


 


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

 
 

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

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