Лекция: Алгоритм Хаффмана

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

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

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

Таблица 1.

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

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

На практике программные средства сжатия данных синтезируют эти три «чистых» алгоритмы, поскольку их эффективность зависит от типа и объема данных. В таблице 2 приведены распространенные форматы сжатия и соответствующие им программыи-архиваторы, использующиеся на практике.

Таблица 2.

Формат сжатия Операционная система MS DOS Операционная система Windows
Программа архивации Программа разархивации Программа архивации Программа разархивации
ARJ Arj.exe Arj.exe WinArj.exe WinArj.exe
RAR Rar.exe Unrar.exe WinRar.exe WinRar.exe
ZIP Pkzip.exe Pkunzip.exe WinZip.exe WinZip.exe

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

  1. создание нового архива;
  2. добавление файлов в существующий архив;
  3. распаковывание файлов из архива;
  4. создание самораспаковающихся архивов (self-extractor archive);
  5. создание распределенных архивов фиксированного размера для носителей маленькой емкости;
  6. защита архивов паролями от несанкционированного доступа;
  7. просмотр содержимого файлов разных форматов без предварительного распаковывания;
  8. поиск файлов и данных внутри архива;
  9. проверка на вирусы в архиве к распаковыванию;
  10. выбор и настройка коэффициента сжатия.

Контрольные вопросы

1. Какие факторы влияют на степень избыточности данных?
2. Что такое архив? Какие программные средства называются архиваторами?
3. Почему методы сжатия, при которых происходит изменение содержимого данных, называются необратимыми?
4. Приведите примеры форматов сжатия с потерями информации.
5. В чем состоит преимущество обратимых методов сжатия над необратимыми? А недостаток?
6. Которая существует зависимость между коэффициентом сжатия и эффективностью метода сжатия?
7. В чем состоит основная идея алгоритма RLE?
8. В чем состоит основная идея алгоритмов группы KWE?
9. В чем состоит основная идея алгоритма Хаффмана?
10. Какие вы знаете програми-архиваторы? Коротко охарактеризуйте их.

 

еще рефераты
Еще работы по информатике