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

4.3. Оптимальное кодирование

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

Пример 1.

Пусть имеется случайная величина X(x1,x2,x3,x4,x5,x6,x7,x8), имеющая восемь состояний с распределением вероятностей

Для кодирования алфавита из восьми букв без учета вероятностей равномерным двоичным кодом нам понадобятся три символа:

Это 000, 001, 010, 011, 100, 101, 110, 111

Чтобы ответить, хорош этот код или нет, необходимо сравнить его с оптимальным значением, то есть определить энтропию

Определив избыточность L по формуле L=1-H/H0=12,75/3=0,084, видим, что возможно сокращение длины кода на 8,4%.

Возникает вопрос: возможно ли составить код, в котором на одну букву будет, в среднем приходится меньше элементарных символов.

Такие коды существуют. Это коды ШеннонаФано и Хаффмана.

Принцип построения оптимальных кодов:

  1. Каждый элементарный символ должен переносить максимальное количество информации, для этого необходимо, чтобы элементарные символы (0 и 1) в закодированном тексте встречались в среднем одинаково часто. Энтропия в этом случае будет максимальной.

  2. Необходимо буквам первичного алфавита, имеющим большую вероятность, присваивать более короткие кодовые слова вторичного алфавита.

4.4. Код Шеннона – Фано

Пример 2. Закодируем буквы алфавита из примера 1 в коде ШеннонаФано.

Все буквы записываются в порядке убывания их вероятностей, затем делятся на равновероятные группы, которые обозначаются 0 и 1, затем вновь делятся на равновероятные группы и т.д. (см.табл.4.1)

Таблица 4.1.

X

P

Коды

x1

1/4

0

0

-------

-------

00

x2

1/4

1

-------

-------

01

x3,

1/8

0

0

-------

100

x4

1/8

1

-------

101

x5

1/16

1

0

0

1100

x6

1/16

1

1

1101

x7

1/16

1

0

1110

x8

1/16

1

1111

Средняя длина полученного кода будет равна

Итак, мы получили оптимальный код. Длина этого кода совпала с энтропией. Данный код оказался удачным, так как величины вероятностей точно делились на равновероятные группы.

Пример 3.

Возьмем 32 две буквы русского алфавита. Частоты этих букв известны. В алфавит включен и пробел, частота которого составляет 0,145. Метод кодирования представлен в таблице 4.2.

Таблица 4.2.

Буква

Рi

1

2

3

4

Код

ب 

0.145

0

0

-

000

о

0.095

1

-

001

е

0.074

0

0

0

0100

а

0.064

1

1

0101

и

0.064

1

0

0110

н

0.056

1

0111

т

0.056

0

0

0

1000

с

0.047

1

1

0

1010

...

. . .

ф

0.03

1

Средняя длина данного кода будет равна, бит/букву;

Энтропия H=4.42 бит/буква. Эффективность полученного кода можно определить как отношение энтропии к средней длине кода. Она равна 0,994. При значении равном единице код является оптимальным. Если бы мы кодировали кодом равномерной длины , то эффективность была бы значительно ниже.