Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведская ТМ / Теория по Инф.сетям / Компрессия данных.doc
Скачиваний:
53
Добавлен:
27.03.2016
Размер:
78.34 Кб
Скачать

Арифметические методы

Основные принципы арифметического кодирования были разработаны в конце 70-х годов. Арифметическое кодирование, так же как и вероятностные методы, использует в качестве основы технологии сжатия вероятность появления символа в файле, однако сам процесс арифметического кодирования имеет принципиальные отличия. В результате арифметического кодирования символьная последовательность (строка) заменяется действительным числом больше нуля и меньше единицы.

Рассмотрим процесс арифметического кодирования слова "REDUNDANCE" (избыточность). Частота появления каждой буквы в этом слове равна 0.1 за исключением букв E, D и N, которые встречаются дважды, и, соответственно, вероятность их появления равна 0.2. Далее каждой букве присваивается интервал вероятности (range), длина которого рассчитывается исходя из вероятности их появления в слове (табл. 2).

Буква

Вероятность

Интервал

A

0.1

0.0-0.1

C

0.1

0.1-0.2 

D

0.2

0.2-0.4 

E

0.2

0.4-0.6 

N

0.2

0.6-0.8 

R

0.1

0.8-0.9 

U

0.1

0.9-1.0 

Таблица 2. Интервалы вероятности для символов в слове Redundance.

Дальнейшую процедуру арифметического сжатия поясним с помощью табл. 3. Первая буква слова - 'R' - получает интервал с нижней границей 0.8 и с верхней - 0.9. Нижняя граница интервала и становится первой значащей цифрой кода. Затем производится расчет границ подинтервалов для каждой последующей буквы по алгоритму: нижняя граница нового интервала равна предыдущей нижней границе (для буквы Е это 0.8) плюс произведение предыдущего интервала (для буквы Е это будет интервал 0.9-0.8=0.1) и нижней (для расчета верхней границы интервала - верхней) границы интервала для буквы Е (эти значения соответственно равны 0.4 и 0.6; их берем из табл. 2). В результате, последовательность символов 'REDUNDANCE' заменяется числом 0.8478570048. Таким образом, вместо 10 байт необходимых для хранения символьной строки нам потребуется всего 4 байта для записи числа.

Символ

Нижняя граница

Верхняя граница

R

0.8

0.9

E

0.84

0.86

D

0.844

0.848

U

0.8476

0.848

N

0.84784

0.84792 

D

0.847856

0.847872

A

0.8478560

0.848

N

0.84785696

0.84785728

C

0.847856992

0.847857024 

E

0.8478570048

0.8478570432

Таблица 3. Пошаговое представление строки REDUNDANCE методом арифметического кодирования.

Арифметическое кодирование позволяет обеспечить высокую степень сжатия данных, особенно в случаях, когда мы имеем дело с данными, где частота появления различных символов сильно отличается друг от друга. В то же время сама процедура арифметического кодирования требует мощных вычислительных ресурсов, и до недавнего времени этот метод мало применялся в сетевых приложениях из-за медленной работы алгоритма и, соответственно, существенного времени задержки при передаче пакета. Лишь появление мощных моделей RISC-процессоров позволило создать эффективные устройства арифметического сжатия данных.