Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Принципы арифметического кодирования. Преимущество арифметического кодирования перед кодированием по Хаффману



Как и в алгоритме Хаффмана, все начинается с таблицы элементов и соответствующих вероятностей. Допустим, входной алфавит состоит всего из трех элемен­тов: a 1, a 2 и a 3, и при этом

P(a 1) = 1/2

P(a 2) = 1/3

P(a 3) = 1/6

Предположим также, что нам надо закодировать последовательность a 1, a 1, a 2, a 3.

Разобьем полуинтервал [0, 1) на три части в соответствии с вероятностями элементов:

Элементу a 1 будет соответствовать диапазон [0, 1/2); элементу a 2 диапазон [1/2, 1/2 + 1/3), а элементу a 3 - диапазон [1/2 +1/3, 1).

Первый элемент сжимаемого файла равен а 1. Выберем полуинтервал, соответствующий ему [0, 1/2):

Разобьем его таким же образом на три части:

Поскольку второй элемент сжимаемой последовательности тоже равен a 1, снова выбираем самый нижний диапазон (точнее, теперь уже поддиапазон [0, 1/4)):

Аналогичным образом, продолжая процесс для оставшихся элементов входного файла а 2 и а 3, получаем такой рисунок:

Последним полученным диапазоном будет [5/24, 1/4). Теперь -внимание! Любое число из этого диапазона (например, 0,22) однозначно описывает весь входной файл. Зная вероятности появления элементов, декодер может правильно разбить диапазон [0, 1) на три части и определить, что число 0,22 находится в поддиапазоне [0, 1/2). В свою очередь, это означает, что первый элемент декодированного файла равен а 1. Затем декодер разобьет диапазон [0, 1/2) на три части и определит, что число 0,22 находится в поддиапазоне [0, 1/4), следовательно, следующий элемент выходного файла — снова а 1 и т. д.

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

Хотя для описания сжимаемого файла годится любое число конечного диапазона (0.22, 0.222, 0.222222222222,...), выбирать надо, разумеется, то, которое содержит меньше цифр, поскольку каждая лишняя цифра увеличивает размер выходного файла.

Формирование одного (длинного) кода для всего потока символов.

Присвоение кода всему передаваемому сообщению, а не отдельным его символам.





Дата публикования: 2015-01-25; Прочитано: 232 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...