Алгоритм сжатия PPM
PPM(англ.Prediction by Partial Matching— предсказание по частичному совпадению) — адаптивныйстатистическийалгоритмсжатия данных без потерь,основанный наконтекстном моделированиии предсказании. Модель PPM использует контекст — множество символов в несжатом потоке, предшествующих данному, чтобы предсказывать значение символа на основе статистических данных. Сама модель PPM лишь предсказывает значение символа, непосредственное сжатие осуществляется алгоритмамиэнтропийного кодирования,как например,алгоритм Хаффмана,арифметическое кодирование.
Длина контекста, который используется при предсказании, обычно сильно ограничена. Эта длина обозначаетсяnи определяет порядок модели PPM, что обозначается какPPM(n).Неограниченные модели также существуют и обозначаются простоPPM*.Если предсказание символа по контексту изnсимволов не может быть произведено, то происходит попытка предсказать его с помощьюn-1символов. Рекурсивный переход к моделям с меньшим порядком происходит, пока предсказание не произойдёт в одной из моделей либо когда контекст станет нулевой длины (n=0). Модели степени 0 и −1 следует описать особо. Модель нулевого порядка эквивалента случаю контекстно-свободного моделирования, когда вероятность символа определяется исключительно из частоты его появления в сжимаемом потоке данных. Подобная модель обычно применяется вместе с кодированием по Хаффману. Модель порядка −1 представляют собой статическую модель, присваивающую вероятности символа определенное фиксированное значение; обычно все символы, которые могут встретиться в сжимаемом потоке данных, при этом считаются равновероятными. Для получения хорошей оценки вероятности символа необходимо учитывать контексты разных длин. PPM представляет собой вариант стратегии перемешивания, когда оценки вероятностей, сделанные на основании контекстов разных длин, объединяются в одну общую вероятность. Полученная оценка кодируется любым энтропийным кодером (ЭК), обычно это некая разновидность арифметического кодера. На этапе энтропийного кодирования и происходит собственно сжатие.
Большое значение для алгоритма PPM имеет проблема обработки новых символов, ещё не встречавшихся во входном потоке. Это проблема носит названиепроблема нулевой частоты.Некоторые варианты реализаций PPM полагают счётчик нового символа равным фиксированной величине, например, единице. Другие реализации, как например, PPM-D, увеличивают псевдосчётчик нового символа каждый раз, когда, действительно, в потоке появляется новый символ (другими словами, PPM-D оценивает вероятность появления нового символа как отношение числа уникальных символов к общему числу используемых символов).
Опубликованные исследования алгоритмов семейства PPM появились в середине 1980-х годов. Программные реализации не были популярны до 1990-х годов, потому как модели PPM требуют значительного количестваоперативной памяти. Современные реализации PPM являются одними из лучших средиалгоритмов сжатия без потерьдля текстов наестественном языке.[1][2]
Практическое использование
[править|править код]Варианты алгоритма PPM на данный момент широко используются, главным образом для компрессии избыточной информации и текстовых данных. Следующие архиваторы используют PPM[3]:
- boa, основан на PPMz (Ian Sutton)
- HA,PPM order 4, оригинальный метод оценки вероятности ухода (Harry Hirvola)
- lgha, основан на коде архиватора ha (Юрий Ляпко)
- ppmpacktc, основан на коде PPMd, PPMz, PPMVC и коде HA с реализацией hsc (Александр Мясников)
- arhangel, основан на алгоритмах ha с добавлением набора фильтров для различных данных (Юрий Ляпко)
- PPMd — реализация PPM order-2..16, применяется наследование информации («дурилка» Дмитрия Шкарина)
- ppmz — реализован метод Z (Charles Bloom)
- rk — реализация PPMz с набором фильтров (Malcolm Taylor)
- rkuc — PPM с порядками 16-12-8-5-3-2-1-0 (Malcolm Taylor)
- rkive (Malcolm Taylor)
- x1 — реализация LZP и PPM (Stig Valentini)
- RAR(версии 3 и 4) — реализация варианта PPMd, PPMII
- 7-Zip— реализация варианта PPMd
- WinZip(версии 10 и выше) — реализация варианта PPMd
Примечания
[править|править код]- ↑http://www.maximumcompression.com/algoritms.phpАрхивная копияот 13 января 2021 наWayback MachineRecent PPM implementations are among the best-performing lossless compression programs for natural language text.
- ↑Introduction to data compressionАрхивная копияот 28 сентября 2015 наWayback MachineISBN 1-55860-558-4page 141 «some of the best-performing text compression algorithms are variants of the ppm algorithm»
- ↑Введение в PPM .Дата обращения: 26 мая 2008.Архивировано9 января 2021 года.
Литература
[править|править код]- J.G. Cleary, and I.H. Witten,Data compression using adaptive coding and partial string matching(недоступная ссылка),IEEE Transactions on Communications,Vol.32(4), pp. 396–402, April 1984.
- A. Moffat,Implementing the PPM data compression scheme,IEEE Transactions on Communications,Vol.38(11), pp. 1917–1921, November 1990.
- J.G. Cleary, W.J. Teahan, and I.H. Witten, Unbounded length contexts for PPM, In J.A. Storer and M. Cohn, editors,Proceedings DCC-95,IEEE Computer Society Press, 1995.
- C. Bloom,Solving the problems of context modeling.
- W.J. Teahan,Probability estimation for PPM.
- T. Schürmann and P. Grassberger,Entropy estimation of symbol sequences(недоступная ссылка),Chaos,Vol.6,pp. 414–427, September 1996.