3.5.3. Арифметическое кодированиеСхема кодирования с переменной длиной кода, описанная в § 3.5.2, имеет главный недостаток, который заключается в том, что символам приписываются фиксированные кодовые слова, имеющие целую длину бит. Такой метод может быть только подоптимальным, так как число бит, обеспечивающее наилучший теоретический результат, зависит от информационной емкости, которая часто бывает нецелым числом. Степень сжатия, достигаемая кодами переменной длины, становится особенно малой при работе с символами, имеющими вероятность больше 0,5, так как в этом случае наименьшая допустимая длина кода равна 1 биту. Арифметическое кодирование является весьма эффективной альтернативой кодам Хаффмана. С их помощью можно плотнее приблизиться к теоретически наилучшим границам сжатия статистических данных [8]. Арифметический кодер преобразует исходную последовательность символов в одно-единственное действительное число, которое приближается к теоретическому оптимальному нецелому числу бит, необходимому для представления каждого символа последовательности.
Принципиальное преимущество метода арифметического кодирования заключается в том, что передаваемое кодовое число (в нашем случае - это число 0,394, которое можно представить в двоичном виде девятью битами), не ограничивается заданием целого числа битов для каждого отдельного символа кодируемой последовательности. Для достижения оптимального сжатия данная последовательность должна быть закодирована с помощью бит. В нашем примере арифметический код имеет длину 9 бит, что близко к оптимальному значению. Схема кодирования, в которой используется целое число бит для каждого символа сжимаемой последовательности (например, кодирование Хаффмана), неспособна приблизиться к оптимальному числу бит, поэтому арифметическое кодирование превосходит по эффективности компрессии кодирование Хаффмана.
|