Попробуйте упаковать
Методы сжатия информации часто
делят на два класса: с потерями (такие способы
применяются, например, для упаковки изображений) и
без потерь [1—4]. В первом случае при
сжатии часть исходной информации отбрасывается либо изменяется. После
таких операций полностью воспроизвести исходные данные
уже не представляется возможным. Во втором случае
их можно восстановить в первоначальном виде. (Разумеется, методы первой
группы нельзя использовать,
например, для сжатия файлов программ.)
Одна из первых — и весьма
распространенных — схем сжатия без потерь реализуется с
помощью алгоритма Хаффмана.
Текстовые файлы,
с которыми пользователи персональных компьютеров
встречаются практически ежедневно, состоят из алфавитноцифровых символов и
“невидимых” кодов управления (перевод строки,
возврат каретки и т.п.). Каждый такой символ в
таблице кодов ASCII представлен одним байтом, и
при подобном кодировании частота, с которой символы
встречаются в тексте, не учитывается. Алгоритм Хаффмана основан на
довольно простом принципе: символы
заменяются кодовыми последовательностями различной длины — чем чаще
употребляется символ, тем короче должна быть кодовая последовательность (алгоритм
Хаффмана называют еще кодированием символами
переменной длины). Так, в английском тексте часто
встречающимся буквам “A”, “E”, “T” можно поставить в соответствие
последовательности из трех бит, а буквам
“J”, “Q”, “Z” — последовательности из восьми бит
[1]. В одних вариантах реализации алгоритма Хаффмана употребляются готовые
кодовые таблицы (здесь можно
вспомнить азбуку Морзе), а в других кодовая таблица строится только на основе
статистического анализа информации.
Алгоритм Лемпеля — Зива (LZ),
предложенный в 1977 году, основан на поиске и
кодировании избыточной информации. Однако тут кодируются не отдельные
символы, как в алгоритме Хаффмана, а последовательности
символов. На его основе потом было создано
множество методов сжатия информации (LZ-алгоритмы). Программа,
реализующая LZ-алгоритм,
просматривает данные и выполняет статистический анализ
для построения своей кодовой таблицы или словаря (методы сжатия
этой группы употребляются, например, в утилитах PKZIP,
WinZIP, ARJ, LHARC и некоторых других
программах-упаковщиках) [1, 3—5].
Через несколько лет появился
усовершенствованный вариант алгоритма — алгоритм
Лемпеля — Зива — Уэлча (LZW).
В 1987 году на основе алгоритма
LZW в компании CompuServe был
создан формат GIF (Graphics Interchange
Format — формат обмена графическими
файлами) [4, 6 — 8].
Алгоритм RLE (Run
Length Encoding — “групповое” кодирование)
первоначально разрабатывался специально для
хранения графической информации. Метод основан на
представлении последовательности одинаковых байтов
в виде двух величин [1, 6]. Одна из них равна количеству
повторяющихся символов, а другая представляет собой код
этого символа. Например, строка из
семи букв “А”, трех букв “В” и четырех букв “С” (АААААААВВВСССС)
может быть записана в виде 7А3В4С, что дает
существенное сокращение ее длины. Данный метод
применяется, в частности, для сжатия файлов графического формата PCX.
Усовершенствованный алгоритм RLE
используется в одном из вариантов формата TIFF и в
формате TGA.
В начале 1990-х годов Объединенной
группой экспертов в области фотографии (Joint
Photographic Experts Group, JPEG)
была предложена схема сжатия, которая впоследствии
получила всеобщее признание как стандартный метод сжатия неподвижных
изображений. Он получил название JPEG. В основе
алгоритма лежит известная математическая операция —
дискретное преобразование Фурье, с помощью
которого на основании выбранного “коэффициента
качества” определяется требуемое соотношение сжатия и потерь изображения
[4, 6]. Кодирование по Хаффману
вместе с RLE употребляется как составная
часть алгоритма — для дополнительного сжатия
изображения.
JPEG уже 10 лет используется как
основной алгоритм сжатия графической информации с
потерями. К примеру, когда появились первые графические браузеры (программы
просмотра web-страниц), JPEG стал главным методом сжатия
для сети Интернет, а после появления цифровых
фотокамер он стал широко применяться в этих
устройствах.
Существуют и другие алгоритмы
упаковки, в том числе специальные алгоритмы сжатия
движущихся изображений. В 1990-м году появились
первые компьютерные алгоритмы фрактального сжатия
изображений [4]. В 1994 году впервые было дано описание
быстро завоевывающего сейчас популярность алгоритма
сжатия информации на основе преобразования Бэрроуза —
Уилера (Burrows — Wheeler Transform, BWT) [5]. Еще одним
перспективным направлением является сжатие на основе так
называемых нейронных сетей...
Литература
1. Борзенко А.Е., Федоров А.Г.
Мультимедиа для всех. Изд. 2-е. М.: КомпьютерПресс, 1996.
2. Фафенбергер Б., Уолл Д.
Толковый словарь по компьютерным технологиям и Internet: Пер. с
англ. Изд. 6-е. Киев: Диалектика. 1996.
3. PKZIP и PKUNZIP // Информатика, №
46/99.
4. Васильев А. Сжатие
изображений: вчера, сегодня, завтра // Hard‘n’Soft, №
4/2001.
5. Юкин В. Операция BWT, или
Новые методы сжатия // Hard‘n’Soft, № 4/2001.
6. Шниер М. Толковый словарь
компьютерных технологий: Пер. с англ. Киев:
ДиаСофт, 2000.
7. Мостицкий И.Л. Новейший
англо-русский толковый словарь по современной электронной
технике. М.: ЛУЧШИЕ КНИГИ, 2000.
8. Пройдаков Э.М., Теплицкий Л.А.
Англо-русский толковый словарь по
вычислительной технике, Интернету
и программированию. Изд. 2-е, испр. и доп. М.:
Издательско-торговый дом “Русская редакция”, 2000.