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

Алгоритм Хаффмана

Читайте также:
  1. q в любой форме (например, в виде графической схемы) составить алгоритм решения задачи, например как показано на рисунке 2.4.2;
  2. Алгоритм - помощь пациенту при одевании
  3. Алгоритм анализа занятия педагога дополнительного образования детей
  4. Алгоритм анализа риска
  5. Алгоритм выполнения задания
  6. Алгоритм выполнения работы
  7. Алгоритм действий спикера в ответ на запрос журналиста

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

Основная идея состоит в следующем: чем чаще встречается символ, тем меньшим количеством бит он кодируется (соответственно, чем реже встречается символ, тем длиннее его кодовая битовая последовательность).

Образующаяся в результате кодирования иерархическая структура прикладывается к сжатому документу в качестве таблицы соответствия.

Пример кодирования символов русского алфавита представлен на рисунке.

 

1 бит
А
 

2 бита
 
О

4 бита
 
Т
Е
 

6 бит
 
Р
 
К
 
И
С
 

8 бит
8 значений

10 бит
16 значений

----  
16 бит
128 значений

 

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

Пусть задан текст, в котором буква 'А' входит 10 раз, буква 'В' - 8 раз, 'С'- 6 раз, 'D' - 5 раз, 'Е' и 'F' - по 4 раза. Тогда один из возможных вариантов кодирования по алгоритму Хаффмана приведен в таблице 1.

(В. Симонович, 2002 г: Образующаяся в результате кодирования иерархическая структура прикладывается к сжатому документу в качестве таблицы соответствия)

Таблица 1.

Символ Частота вхождения Битовый код
A    
B    
C    
D    
E    
F    

Как видно из таблицы 1, размер входного текста до сжатия равен 37 байт, тогда как после сжатия - 93 бит, то есть около 12 байт (без учета длины словаря). Коэффициент сжатия равен 32%.

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

Используя 16 бит, можно закодировать до 256 различных символов; 20 бит – 1024 лексических единиц (группы символов, слоги и даже слова).

На файлах малых размеров алгоритм Хаффмана малоэффективен, т.к. к сжатому архиву необходимо прикладывать таблицу соответствия. Практика показывает, что его эффективность зависит и от заданной предельной длины кода (размера словаря). В среднем, наиболее эффективными оказываются архивы с размером словаря от 512 до 1024 единиц (длина кода до 18-20 бит).


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



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