Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Сжатие информации. Алгоритм Хаффмена

Читайте также:
  1. Алгоритм выполнения ДЗ №2
  2. Алгоритм действий при выполнении задания
  3. Алгоритм действий при выполнении задания
  4. Алгоритм действий при проведении гемотрансфузии
  5. Алгоритм диагностического поиска.
  6. Алгоритм дискретизации
  7. Алгоритм изучения и описания микропрепарата

Метод Хаффмена (Huffman) разработан в 1952 г. Он более практичен и никогда по степени сжатия не уступает методу Шеннона-Фэно, более того, он сжимает максимально плотно. Код строится при помощи двоичного (бинарного) дерева. Вероятности (частоты) значений д.с.в. приписываются его листьям; все дерево строится, опираясь на листья. Величина, приписанная к узлу дерева, называется весом узла. Два листа с наименьшими весами создают родительский узел с весом, равным сумме их весов; в дальнейшем этот узел учитывается наравне с оставшимися листьями, а образовавшие его узлы от такого рассмотрения устраняются. После постройки корня нужно приписать каждой из ветвей, исходящих из родительских узлов, значения 0 или 1. Код каждого значения д.с.в. – это число, получаемое при обходе ветвей от корня к листу, соответствующему данному значению.

Замечание: Для методов Хаффмена и Шеннона-Фэно каждый раз вместе с собственно сообщением нужно передавать и таблицу кодов.

1. Вычисляем количество символов в сообщении (без учета пробелов) и частоту каждого символа.

L=21.

Х А Н И Р О М Г Е Д В Ч
                       

 

Энтропия:

2. Упорядочиваем символы по частоте появления в тексте по убыванию:

Н– А – И – Е – Х – Р – О – М – Г – Д – В – Ч.

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

 

 

Симво-лов Н А И Е Х Р О М Г Д В Ч
Часто-та                        

 


  (11) (10) (9) (8) (7)   (6) (5) (4)   (3) (2)     (1)  
                                                   
             
 
             
 
 
 
   
 
       
 
 
   
 
 
   
 
   
 

4. Каждой из ветвей, выходящей из узла, присваиваем код 0 или 1 слева направо, начиная с нижнего узла

5. Код каждого символа получаем при обходе ветвей от корня (нижнего узла) к листу (самому верхнему узлу), соответствующему данному символу.

Н– 000

А –001

И –010

Е –011

Х –1000

Р –1001

О –1010

М –1001

Г –1100

Д –1101

В –1110

Ч –1101

- средняя длина кода

 


Дата добавления: 2015-11-30; просмотров: 29 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.007 сек.)