Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТИ_2006_ВСЕ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.19 Mб
Скачать

Метод арифметического сжатия

В настоящее время методы энтропийного сжатия вытесняются арифметическим методом. Данный метод основан на отображении последовательности символов в вещественное число из полуинтервала [0, 1). Рассмотрим арифметическое сжатие на примере.

Пример 5.7. Выполнить сжатие последовательности символов

abacab

с помощью метода арифметического сжатия.

  1. Определить частоты символов и упорядочить их в порядке убывания частот:

    Символ

    a

    b

    c

    Частота

    3

    2

    1

  2. Разбить интервал от 0 до 1 на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0

    0.5

    0.833

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

    0.5

    0.833

    1

  3. Прочитать символ a. Определить интервал, соответствующий символу a, и разбить его на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0

    0.25

    0.42

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

    0.25

    0.42

    0.5

  4. Прочитать символ b. Определить интервал, соответствующий символу b, и разбить его на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0.25

    0.335

    0.392

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

    0.335

    0.392

    0.42

  5. Прочитать символ a. Определить интервал, соответствующий символу a, и разбить его на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0.25

    0.2925

    0.32

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

    0.2925

    0.32

    0.335

  6. Прочитать символ c. Определить интервал, соответствующий символу c, и разбить его на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0.32

    0.3275

    0.3325

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

    0.3275

    0.3325

    0.335

  7. Прочитать символ a. Определить интервал, соответствующий символу a, и разбить его на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0.32

    0.32375

    0.32625

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

    0.32375

    0.32625

    0.32375

  8. Прочитать символ b. Определить интервал, соответствующий символу b, и разбить его на участки пропорционально частотам символов:

    Символ

    a

    b

    c

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

    0.32375

    0.325

    0.32583

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

    0.325

    0.32583

    0.32625

  9. Выбрать любое число из диапазона [0.325, 0.32583), например 0.3255.

  10. Отбросив целую часть и дробную точку, получить число 3255.

  11. Выполнив перевод числа 3255 в двоичную систему счисления, получить код исходной последовательности:

110010110111.

Так же, как и для методов энтропийного сжатия, существуют адаптивные варианты арифметического метода. Однако вместо применения символа ESC в этом случае создают первоначальный список, содержащий все символы с частотами 1. Это позволяет закодировать любой символ входной последовательности.