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

Методы контекстного моделирования

При применении методов контекстного моделирования процесс сжатия символа условно разделяют на два этапа:

  • этап моделирования,

  • этап кодирования.

На этапе моделирования строят вероятностную контекстную модель. На этапе кодирования символу присваивают код в рамках текущей контекстной модели.

Вероятностная контекстная модель n – го порядка – это список символов (и их частот), появившихся в контексте n – го порядка. Контекст n – го порядка – набор последовательных n символов.

Пример 5.8. Найти контексты 2 – го порядка для символов a, b, c последовательности

abacab.

  1. Для символа a можно указать два контекста 2 – го порядка: ab и ac.

  2. Для символа b можно указать один контекст 2 – го порядка: ca.

  3. Для символа c можно указать один контекст 2 – го порядка: ba.

При использовании методов контекстного моделирования вводят также контекстные модели 0 – го и (–1) – го порядков. Контекстная модель 0 – го порядка содержит частоты символов исходной последовательности, меняющиеся по мере выполнения сжатия. Контекстная модель (–1) – го порядка содержит одинаковые частоты (обычно равные 1) для всех возможных входных символов.

Алгоритм сжатия по методу контекстного моделирования заключается в следующем.

  1. Построить контекстные модели (–1) – го, 0 – го, 1 – го, …, Nmax – го порядков, где Nmax – максимальный порядок контекстной модели. В контекстной модели (–1) – го порядка частотам всех символов присвоить одинаковые значения. Ввести в рассмотрение во всех моделях 0 – го, 1 – го, …, Nmax – го порядков символ ESC с частотой 1. Установить в качестве текущего контекста произвольный контекст порядка от (–1) – го до Nmax – го.

  2. Прочитать символ входной последовательности.

  3. Если в текущей контекстной модели символ невозможно закодировать, то выдать код символа ESC, уменьшить на 1 порядок контекста и повторить п. 3, иначе – получить и выдать его код. Кодирование выполняется по методу энтропийного или арифметического сжатия.

  4. Увеличить на 1 частоту символа во всех контекстных моделях, связанных с текущим контекстом.

  5. Изменить текущий контекст в соотвествии с закодированным символом.

  6. Перейти к п. 2.

Пример 5.9. Сжать последовательность символов

aba.

с помощью метода контекстного моделирования с максимальным порядком контекста Nmax = 1.

  1. Построить контекстные модели.

Контекстная модель (–1) – го порядка:

Символ

a

b

Частота

1

1

Контекстная модель 0 – го порядка:

Символ

a

b

ESC

Частота

0

0

1

Контекстные модели 1 – го порядка:

Контекст

a

b

Символ

a

b

ESC

a

b

ESC

Частота

0

0

1

0

0

1

Сделать текущим контекстом контекст (–1) – го порядка.

  1. Прочитать символ a. В текущем контексте этому символу можно присвоить по методу Хаффмена код 1.

  2. Изменить контекстные модели.

Контекстная модель (–1) – го порядка:

Символ

a

b

Частота

2

1

Контекстная модель 0 – го порядка:

Символ

a

b

ESC

Частота

1

0

1

Контекстные модели 1 – го порядка:

Контекст

a

b

Символ

a

b

ESC

a

b

ESC

Частота

0

0

1

0

0

1

Сделать текущим контекстом контекст 1 – го порядка: a.

  1. Прочитать символ b. В текущем контексте этот символ закодировать невозможно, поэтому выдать 0 – код символа ESC и перейти к контексту 0 –го порядка. Так как в данном контексте символ b также невозможно закодировать, то выдать 1 – код символа ESC и перейти к контексту (–1) – го порядка и выдать код 10.

  2. Изменить контекстные модели.

Контекстная модель (–1) – го порядка:

Символ

a

b

Частота

2

2

Контекстная модель 0 – го порядка:

Символ

a

b

ESC

Частота

1

1

1

Контекстные модели 1 – го порядка:

Контекст

a

b

Символ

a

b

ESC

a

b

ESC

Частота

0

1

1

0

0

1

Сделать текущим контекстом контекст 1 – го порядка: b.

  1. Прочитать символ a. В текущем контексте этот символ закодировать невозможно, поэтому выдать 0 – код символа ESC и перейти к контексту 0 –го порядка. В этом контексте символу a можно присвоить код 1.

  2. Изменить контекстные модели.

Контекстная модель (–1) – го порядка:

Символ

a

b

Частота

3

2

Контекстная модель 0 – го порядка:

Символ

a

b

ESC

Частота

2

1

1

Контекстные модели 1 – го порядка:

Контекст

a

b

Символ

a

b

ESC

a

b

ESC

Частота

0

1

1

1

0

1

Сделать текущим контекстом контекст 1 – го порядка: a.

Таким образом, выходная последовательность имеет вид:

1011001.