Читать реферат по информатике, вычислительной технике, телекоммуникациям: "Арифметическое кодирование. Кодирование длин повторений" Страница 2

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

- 0.2), что пpименительно к уже имеющемуся рабочему интервалу [0.80 - 0.82) сужает его до величины [0.802 - 0.804).

Следующим символом, поступающим на вход кодера, будет буква И с выделенным для нее фиксированным интервалом [ 0,3 – 0,6). Применительно к уже имеющемуся рабочему интервалу получим [ 0,8026 - 0,8032 ).

Пpодолжая в том же духе, имеем: вначале[0.0 - 1.0)

после пpосмотpа Р [0.8 - 1.0)

А [0.80 - 0.82)

Д [0.802 - 0.804)

И [0.8026 - 0.8032)

О [0.80302 - 0.80308)

В [0.803032 - 0.803038)

И [0.8030338 - 0.8030356)

З[0.80303488 - 0.80303506)

И [0.803034934 - 0.803034988)

Р [0.8030349772 - 0.8030349880)

Результат кодирования: интервал [0,8030349772 – 0,8030349880]. На самом деле, для однозначного декодирования теперь достаточно знать только одну границу интервала – нижнюю или верхнюю, то есть результатом кодирования может служить начало конечного интервала - 0,8030349772. Если быть еще более точным, то любое число, заключенное внутри этого интервала, однозначно декодируется в исходное сообщение. К примеру, это можно проверить с числом 0,80303498, удовлетворяющим этим условиям. При этом последнее число имеет меньшее число десятичных разрядов, чем числа, соответствующие нижней и верхней границам интервала, и, следовательно может быть представлено меньшим числом двоичных разрядов.

Нетрудно убедиться в том, что, чем шире конечный интервал, тем меньшим числом десятичных (и, следовательно, двоичных) разрядов он может быть представлен. Ширина же интервала зависит от распределения вероятностей кодируемых символов – более вероятные символы сужают интервал в меньшей степени и , следовательно, добавляют к результату кодирования меньше бит. Покажем это на простом примере.

Допустим, нам нужно закодировать следующую строку символов: A A A A A A A A A #, где вероятность буквы А составляет 0,9. Процедура кодирования этой строки и получаемый результат будут выглядеть в этом случае следующим образом:

Входной символ Нижняя граница Верхняя граница

0.01.0

A0.00.9

A0.00.81

A0.00.729

A0.00.6561

A0.00.59049

A0.00.531441

A0.00.4782969

А0.0 0.43046721

А0.0 0.387420489

#0.3486784401 0.387420489

Результатом кодирования теперь может быть, к примеру, число 0.35 , целиком попадающее внутрь конечного интервала 0.3486784401 – 0.387420489. Для двоичного представления этого числа нам понадобится 7 бит (два десятичных разряда соответствуют примерно семи двоичным ), тогда как для двоичного представления результатов кодирования из предыдущего примера – 0,80303498 – нужно 27 бит !!!

Декодирование

Пpедположим, что все что декодер знает о тексте, – это конечный интеpвал [0,8030349772 - 0,8030349880]. Декодеру, как и кодеру, известна также таблица распределения выделенных алфавиту интервалов. Он сpазу же понимает, что пеpвый закодиpованный символ есть Р, так как результат кодирования целиком лежит в интеpвале [0.8 - 1), выделенном моделью символу Р согласно таблице .

Тепеpь повтоpим действия кодера:

вначале [0.0 - 1.0);

после пpосмотpа [0.8 - 1.0).

Исключим из результата кодирования влияние теперь уже известного первого символа Р, для этого вычтем из результата кодирования нижнюю границу диапазона, отведенного для Р, – 0,8030349772 – 0.8 = =0,0030349772 – и разделим полученный результат на ширину интервала, отведенного для Р, – 0.2. В результате получим 0,0030349772 / 0,2 = =0,015174886. Это число


Интересная статья: Быстрое написание курсовой работы