ВУЗ:
Составители:
26
………… …….
ОТ 90
ПРОГРАММ 91
Арифметическое кодирование
Данный алгоритм эффективен, когда размер используемого алфавита по-
рядка нескольких символов (2,3 символа) и при этом каждый символ достаточно
часто повторяется . Этот подход удобен для сжатия текстов , содержащих инфор-
мацию о графических изображениях.
Арифметическое кодирование является методом , позволяющим упаковывать
символы входного алфавита без потерь при условии, что известно распределение
частот этих символов , и является наиболее оптимальным, т.к. достигается теоре-
тическая граница степени сжатия .
Предполагаемая требуемая последовательность символов , при сжатии мето -
дом арифметического кодирования , рассматривается как некоторая двоичная
дробь из интервала [0, 1). Результат сжатия представляется как последователь-
ность двоичных цифр из записи этой дроби.
Идея метода такова: исходный текст рассматривается как запись этой дроби,
где каждый входной символ является "цифрой" с весом, пропорциональным веро -
ятности его появления . Этим объясняется интервал , соответствующий минималь-
ной и максимальной вероятностям появления символа в потоке.
Пример 22. Пусть алфавит состоит из двух символов : a и b с вероятностями со -
ответственно 0,75 и 0,25.
Рассмотрим наш интервал вероятностей [0, 1). Разобьем его на части, длина
которых пропорциональна вероятностям символов . В нашем случае это [0; 0,75)
и [0,75; 1). Суть алгоритма в следующем : каждому слову во входном алфавите
соответствует некоторый подинтервал из интервала [0, 1), а пустому слову соот-
ветствует весь интервал [0, 1). После получения каждого следующего символа
интервал уменьшается с выбором той его части, которая соответствует новому
символу. Кодом цепочки является интервал , выделенный после обработки всех
ее символов , точнее, двоичная запись любой точки из этого интервала, а длина
полученного интервала пропорциональна вероятности появления кодируемой
цепочки.
Применим данный алгоритм для цепочки "aaba":
Шаг Просмотренная цепочка Интервал
0 Нет [0,1)
1 А
[0,0.75)
2 Аа
[0,0.5625)
3 Ааб
[0.421875,0.5625)
4 Ааба
[0.421875,0.52734375
)
Границы интервала вычисляются так : берется расстояние внутри интервала
(0,5625-0,421875=0,140625), делится на частоты [0; 0,10546875) и [0,10546875; 1)
и находятся новые границы [0,421875; 0,52734375) и [0,52734375; 0,5625).
26 ………… ……. ОТ 90 ПРОГРАММ 91 Арифметическое кодирование Данный алгоритм эффективен, когда размер используемого алфавита по- рядка нескольких символов (2,3 символа) и при этом каждый символ достаточно часто повторяется. Этот подход удобен для сжатия текстов, содержащих инфор- мацию о графических изображениях. Арифметическое кодирование является методом, позволяющим упаковывать символы входного алфавита без потерь при условии, что известно распределение частот этих символов, и является наиболее оптимальным, т.к. достигается теоре- тическая граница степени сжатия. Предполагаемая требуемая последовательность символов, при сжатии мето- дом арифметического кодирования, рассматривается как некоторая двоичная дробь из интервала [0, 1). Результат сжатия представляется как последователь- ность двоичных цифр из записи этой дроби. Идея метода такова: исходный текст рассматривается как запись этой дроби, где каждый входной символ является "цифрой" с весом, пропорциональным веро- ятности его появления. Этим объясняется интервал, соответствующий минималь- ной и максимальной вероятностям появления символа в потоке. Пример 22. Пусть алфавит состоит из двух символов: a и b с вероятностями со- ответственно 0,75 и 0,25. Рассмотрим наш интервал вероятностей [0, 1). Разобьем его на части, длина которых пропорциональна вероятностям символов. В нашем случае это [0; 0,75) и [0,75; 1). Суть алгоритма в следующем: каждому слову во входном алфавите соответствует некоторый подинтервал из интервала [0, 1), а пустому слову соот- ветствует весь интервал [0, 1). После получения каждого следующего символа интервал уменьшается с выбором той его части, которая соответствует новому символу. Кодом цепочки является интервал, выделенный после обработки всех ее символов, точнее, двоичная запись любой точки из этого интервала, а длина полученного интервала пропорциональна вероятности появления кодируемой цепочки. Применим данный алгоритм для цепочки "aaba": Шаг Просмотренная цепочка Интервал 0 Нет [0,1) 1 А [0,0.75) 2 Аа [0,0.5625) 3 Ааб [0.421875,0.5625) [0.421875,0.52734375 4 Ааба ) Границы интервала вычисляются так: берется расстояние внутри интервала (0,5625-0,421875=0,140625), делится на частоты [0; 0,10546875) и [0,10546875; 1) и находятся новые границы [0,421875; 0,52734375) и [0,52734375; 0,5625).
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »