Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Н. О. 0 Теорія інформації рекомендовано Міністе...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.27 Mб
Скачать

Розв'язання

  1. Метод Шеннона-Фано

Побудуємо таблицю кодів для дискретної випадкової величини (д. в. в.) X за алгоритмом Шеннона-Фано (табл. 1)

Таблиця 1

Значення

xi

Імовірність

P(xi)

Код Code(xi)

Довжина

коду li

pili

5

0,3

00

2

0,6

6

0,25

01

2

0,5

1

0,2

10

2

0,4

7

0,15

110

3

0,45

2

0,1

111

3

0,3

lipi= 2,25

Середня довжина отриманого коду (біт/сим).

  1. Метод Хаффмена:

Скориставшись заданими ймовірностями д. в. в. X, побудуємо кодове дерево (рис. 1) і відповідну таблицю кодів (табл. 2) за алгоритмом Хаффмена:

Рисунок 1

Таблиця 2

Значення

xi

Імовірність

P(xi)

Код

Code(xi)

Довжина

коду li

pili

5

0,3

00

2

0,6

6

0,25

01

2

0,5

1

0,2

11

2

0,4

7

0,15

100

3

0,45

2

0,1

101

3

0,3

lipi=2,25

Середня довжина отриманого коду (біт/сим).

  1. Арифметичний метод

Побудуємо таблицю інтервалів і кодів для даної д. в. в. X (табл. 3):

Таблиця 3

Значе-

ння xi

Імовір-

ність pi

Інтервал

Число

інтервалу

Код

Довжи-на коду li

lipi

1

0,2

[0,8; 1)

7/8[0,8;1)

111

3

0,6

2

0,1

[0,7; 0,8)

3/4[0,7;0,8)

11

2

0,2

5

0,3

[0,4; 0,7)

1/2[0,4;0,7)

1

1

0,3

6

0,25

[0,15; 0,4)

1/4[0,15;0,4)

01

2

0,5

7

0,15

[0; 0,15)

1/8[0;0,15)

001

3

0,45

lipi=2,05

Обчислимо середню довжину арифметичного коду

(біт/сим).

Приклад 2 Закодувати за арифметичним алгоритмом повідомлення BAABCB, отримане від дискретної випадкової величини X, заданої таким розподілом ймовірностей: P(X=A)=1/3; P(X=B)=7/15; P(X=C)=1/5.

Розв'язання

Побудуємо таблицю символів і відповідних їм інтервалів:

Символ

Імовірність

Інтервал

A

1/3

[2/3; 1)

B

7/15

[1/5; 2/3)

C

1/5

[0; 1/5)

Ця таблиця зберігається разом із кодом стисненого повідомлення і призначена для кодування й декодування за арифметичним алгоритмом.

Процес кодування повідомлення BAABCB зручно подати у вигляді такої таблиці:

Повідомлення

Інтервал

Ширина інтервалу

1

B

A

A

B

C

B

Повідомлення BAABCB однозначно визначає інтервал . Знайдемо дійсне число, що належить цьому інтервалу і є часткою від ділення цілого додатного числа на мінімальний степінь 2.

Таке число .

Двійкове подання чисельника буде арифметичним кодом повідомлення. Розрядність коду визначається степенем 2.

Отже, знайдемо двійковий 9-розрядний код числа 321: 32110=1010000012. Таким чином, арифметичний код заданого повідомлення

Code(BAABCB)=101000001.

Довжина коду L(X)=9 бітів.

Приклад 3 Декодувати повідомлення довжиною 5 символів за арифметичним алгоритмом. Код повідомлення 010001011.

Таблиця символів і відповідних їм інтервалів така:

Символ

Імовірність

Інтервал

C

1/4

[3/4; 1)

B

1/2

[1/4; 3/4)

A

1/4

[0; 1/4)