Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБРОБКА ІНФОРМАЦІЇ ЗАСОБАМИ КОМП’ЮТЕРНОЇ МАТЕМА...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.08 Mб
Скачать

2.6.6 Алгоритм арифметичного кодування в загальному вигляді

ПОЧАТОК

Нижня_границі = 0,0;

Верхня_границя = 1,0;

ПОКИ існує вхідний символ ВИКОНУВАТИ

Увести черговий символ С;

Інтервал = Верхня_границя – Нижня_границя;

Верхня_границя = Нижня_границя + Інтервал Нижня_границя(С);

Нижня_границя = Нижня_границя + Інтервал Верхня_границя(С);

КІНЕЦЬ ПОКИ

ВИВЕСТИ Верхня_Границя, Нижня_границя;

КІНЕЦЬ

Границі інтервалів для всіх етапів кодування приведені у таблиці 2.12. Таким чином, числовий інтервал із границями [0,21554, 0,2156) відображає рядок повідомлення (CADA!). Для кодування цього рядка може бути виконане будь-яке число з отриманого діапазону. Нехай таким числом є нижня границя інтервалу, тобто .

Таблиця 2.12 - Границі інтервалів

Символи

Нижня границя інтервалу

Верхня границя інтервалу

Вихідний стан

0,0

1,0

C

0,2

0,5

A

0,2

0,23

D

0,215

0,221

A

0,215

0,2156

!

0,21554

0,2156

2.6.7 Лабораторна робота №8

Мета роботи. Засвоїти методику арифметичного кодування за допомогою математичного пакета MathCAD.

Хід роботи

1. На основі виданого варіанта (таблиця 2.13) виконати стиснення вхідного повідомлення, використовуючи алгоритм арифметичного кодування.

2. Обчислити імовірність кожного символа повідомлення.

3. Виконати числовий розподіл осі між символами.

4. Визначити нижню та верхню границю кожного символа.

5. Визначити кінцеву нижню та верхню границю повідомлення.

6. Зробити висновок по роботі.

Таблиця 2.13 – Варіанти завдань

Варіант

Вхідний алфавіт

Імовірність появи

Вхідне повідомлення

1

“abcdefgh”

0,1; 0,2; 0,1; 0,3; 0,2; 0,2; 0,2; 0,3

“cadaf”

2

“fefehfa”

3

“bebehh”

4

“fefecf”

5

“hehecc”

6

“klnmopqae”

0,2; 0,3; 0,1; 0,3; 0,1; 0,1; 0,2; 0,2

“onopan”

7

“kalanaq”

8

“pelenop”

9

“aoaoao”

10

“nopaepa”

Контрольні запитання

1. Який принцип побудови арифметичних кодів?

2. Укажіть переваги та недоліки арифметичних кодів?

3. В чому полягає основний алгоритм побудови арифметичного коду?

4. Як визначається верхня та нижня границя ітерації при кодуванні?

5. Як визначається верхня та нижня границя ітерації при розкоду-

ванні?

6. Як відбувається розподіл відрізків числової осі між символами при арифметичному кодуванні?

7. Дайте порівняльну характеристику методик кодування Хаффмена, Шеннона-Фано, арифметичних кодів.

Приклад . Стиснення повідомлення методом арифметичного кодування.

1. Записуємо вказаний алфавіт згідно з прикладом табл. 2.12 як символьну величину, знаходимо кількість символів, створюємо масив символів, а також їх імовірності.

2. Виконаємо розподіл числової осі між символами

3. Задаємо вхідне повідомлення (як відповідні індекси вхідного алфавіту). В даному випадку: “CADA!”

4. Знаходимо нижню й верхню границі кожного символа вхідного алфавіту на осі

5. Згідно з вказаним алгоритмом знаходимо кінцеві нижню й верхню границі кожного символа повідомлення