Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Арифмитическое кодирование.rtf
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
121.43 Кб
Скачать

К чему такие сложности?

Из всего сказанного не видно, в чем преимущество арифметического кодирования перед кодированием Хаффмена. Разница становится заметна тогда, когда частота встречаемости символов во входном сообще­нии сильно отличается друг от друга.

Пусть заранее известна вероятность появления символа 'Ш' в некотором сообщении, и она равна 0.9.

В табл. 6 показано то, как алгоритм арифметиче­ского кодирования обработает сообщение “ШШШШШШШ!”.

Очевидно, что число 0.4375 (в двоичном виде 0.0111) может однозначно закодировать это сообще­ние. Это значит, что мы закодировали сообщение дли­ной 8 символов в 4 бита. Оптимальное кодирование Хаффмена могло бы дать минимум 8 битов.

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

Монитор 1.94

Таблица 6 Арифметическое кодирование сообщения "ШШШШШШШ!"

ОчереднойСимвол

НижняяГраница

ВерхняяГраница

0.0

1.0

Ш

0.0

0.9

Ш

0.0

0.81

Ш

0.0

0.729

Ш

0.0

0.6561

Ш

0.0

0.59049

Ш

0.0

0.531441

Ш

0.0

0.4782969

!

0.43046721

0.4782969

кодирования, значительно выше, чем при кодирова­нии по методу Хаффмена, он работает медленнее. Арифметическое кодирование может быть использо­вано в тех случаях, когда степень сжатия важнее, чем временные затраты на сжатие информации. •

Рекомендуемая литература

1. Witten Ian H., Neal Radford M., Cleary John G. Arithmetic coding for data compression// Communications of the ACM.- June 1987.- Vol. 30.-№6.

2. Nelson Mark, The Data Compression Book.- USA: M&T Books, 1991.

3. Storer J.A. Data Compression.- USA: Computer Science Press, 1988.

Комментарии к листингу

Приведенная программа является несколько модифицированной версией алгоритма, опубли­кованного в работе [1]. Она написана на языке С и реализует адаптивную версию арифмети­ческого кодирования. Для того чтобы исполь­зовать ее в конкретных приложениях, скорее всего, понадобится существенная оптимизация исходного текста для достижения приемлемого быстродействия.

В следующем номере

Следующая статья этой серии будет посвящена алгоритмам группы LZ(LZ77, LZ78, LZSS), кото­рые лежат в основе почти всех современных программных и аппаратных средств сжатия ин­формации. PKZIP, LHA, Stacker, SuperStor, Dblspace и многие другие используют ту или иную модификацию алгоритма LZ. Кроме того, алгоритм LZ является незапатентованным алго­ритмом, так что, познакомившись с ним, вы сможете помериться силами с такими гиганта­ми, как Microsoft, PKWare и Stac Electronics.