Опубликован: 10.10.2007 | Уровень: профессионал | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 2:

Словарные методы сжатия данных

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Аннотация: В лекции дается описание основной идеи словарных методов сжатия данных, рассматриваются классические алгоритмы Зива-Лемпела, такие как LZ77, LZSS, LZ78, приводится практическая реализация каждого из перечисленных алгоритмов

Идея словарных методов

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

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

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

Уменьшение размера возможно в первую очередь за счет того, что обычно в сжимаемых данных встречается лишь малая толика всех возможных строк длины n, поэтому для представления индекса фразы требуется, как правило, меньшее число битов, чем для представления исходной строки. Например, рассмотрим количество взаимно различных строк длины от 1 до 5 в тексте на русском языке (роман Ф.М. Достоевского "Бесы", обычный неформатированный текст, размер около 1.3 Мбайт) - см. табл. 2.1:

Таблица 2.1.
Длина строки Количество различных строк Использовано комбинаций, % от всех возможных
5 196969 0.0004
4 72882 0.0213
3 17481 0.6949
2 2536 13.7111
1 136 100.0000

Иначе говоря, размер (мощность) алфавита равен 136 символам, но реально используется только {{{\rm{2536}}} \over {136 \cdot 136}} \cdot 100\%  \approx 13.7\% от всех возможных двухсимвольных строк, и т.д.

Далее, если у нас есть заслуживающие доверия гипотезы о частоте использования тех или иных фраз, либо проводился какой-то частотный анализ обрабатываемых данных, то мы можем назначить более вероятным фразам коды меньшей длины. Например, для той же электронной версии романа "Бесы" статистика встречаемости строк длины 5 представлена в табл. 2.2:

Таблица 2.2.
N Количество строк длины 5, встретившихся ровно N раз Количество относительно общего числа всех различных строк длины 5, %
1 91227 46.3%
2 30650 15.6%
3 16483 8.4%
4 10391 5.3%
5 7224 3.7%
\ge 6 40994 20.7%
Всего 196969 100.0%

Заметим, что из всех 197 тысяч различных строк длины 5 почти половина встретилась лишь один раз, поэтому они вообще не будут использованы как фразы при словарном кодировании в том случае, если словарь строится только из строк обработанной части потока. Наблюдаемые частоты оставшейся части строк быстро уменьшаются с увеличением N, что указывает на выгодность применения статистического кодирования, когда часто используемым фразам ставятся в соответствие коды меньшей длины.

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

Очевидно, что процессы моделирования и кодирования, рассматриваемые в главе "Методы контекстного моделирования", для словарных методов сливаются. Моделирование в явном виде может выполняться уже только для индексов. Заметим, что апологеты идеи универсальных моделирования и кодирования последовательно изучают любой метод, не вписывающийся явно в их модель, и обычно достаточно убедительно доказывают, что для него можно построить аналог в виде статистического метода. Так, например, доказано, что несколько рассматриваемых ниже словарных алгоритмов семейства Зива-Лемпела могут быть воспроизведены в рамках контекстного моделирования ограниченного порядка, либо с помощью моделей состояний [2.6, 2.9].

Ниже будут рассмотрены алгоритмы словарного сжатия, относимые к классу методов Зива-Лемпела. В качестве примера словарного алгоритма иного класса укажем [2.7].

Методы Зива-Лемпела ориентированы на сжатие качественных данных, причем эффективность применения достигается в том случае, когда статистические характеристики обрабатываемых данных соответствуют модели источника с памятью.

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Сергей Иванов
Сергей Иванов
Россия, г. Смоленск ул. Николаева д. 19а кв. 56
Ирина Усанова
Ирина Усанова
Россия, г. Чистополь