Изменения

Перейти к: навигация, поиск

Арифметическое кодирование

1996 байт убрано, 08:28, 23 декабря 2011
м
Нет описания правки
Один из алгоритмов энтропийного == Определение =={{Определение|definition= '''Арифметическое кодирование (Arithmetic coding) ''' {{---}} алгоритм сжатияинформации без потерь.}}В отличие от [[Данный метод (как и алгоритм Хаффмана|алгоритма Хаффмана]], не имеет жесткого постоянного соответствия входных символов - группам бит выходного потока) является энтропийным т.е. Это дает алгоритму большую гибкость длина кода конкретного символа зависит от частоты встречаемости этого символа в представлении дробных частот встречаемости символовтексте== Характеристики ==Обеспечивает почти оптимальную степень Арифметическое кодирование показывает более высокие результаты сжатия , чем алгоритм Хаффмана, для данных с точки зрения энтропийной оценки кодирования Шеннонанеравномерными распределениями вероятностей кодируемых символов. На Кроме того, при арифметическом кодировании каждый символ требуется почти кодируется нецелым числом бит, что эффективнее кода Хаффмана (теоретически символу <tex>Ha</tex> бит, где с вероятностью появления <tex>Hp(a)</tex> — информационная энтропия источника. В отличие от [[алгоритм Хаффмана|алгоритма Хаффмана]], метод арифметического кодирования показывает высокую эффективность для дробных неравномерных интервалов распределения вероятностей кодируемых символов. Однако допустимо ставить в случае равновероятного распределения символов, например для строки бит ''010101...0101'' соответствие код длины ''s'' метод арифметического кодирования приближается к префиксному коду Хаффмана и даже может занимать на один бит больше. == Принцип действия ==Пусть у нас есть некий алфавит, а также данные о частотности использования символов <tex>–log_2(p(опциональноa). Тогда рассмотрим на координатной прямой отрезок от 0 до 1.  Назовём этот отрезок рабочим. Расположим на нём точки таким образом)</tex>, что длины образованных отрезков будут равны частоте использования символа и каждый такой отрезок будет соответствовать одному символу. Теперь возьмём символ из потока и найдём для него отрезок, среди следовательно при кодировании Хаффманом это достигается только что сформированныхс вероятностями, теперь отрезок для этого символа стал рабочим. Разобьём его таким же образом, как разбили отрезок от 0 до 1. Выполним эту операцию для некоторого числа последовательных символов. Затем выберем любое число из рабочего отрезка. Биты этого числа вместе с длиной его битовой записи и есть результат арифметического кодирования использованных символов потока.  == Источник ==[http://ruравными обратным степеням двойки).wikipedia.org/wiki/%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 Арифметическое кодирование]
113
правок

Навигация