Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1385

.pdf
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
1.08 Mб
Скачать

обладают большой избыточностью, было предложено использовать неравномерные коды, длительность кодовых комбинаций которых была бы согласована с вероятностью выпадения различных букв.

Такое кодирование называется статистическим. Если средняя длина ̅ кодового слова является минимально возможной, то код еще и оптимальный.

3.1. Метод кодирования Шеннона - Фано

Одним из наиболее простых и распространенных способов статистического кодирования является кодирование по методу Шеннона-Фано. Кодирование в соответствии с этим алгоритмом производится так:

-сначала все буквы из алфавита сообщения записывают в порядке убывания их вероятностей;

-затем всю совокупность букв разбивают на две примерно равные по сумме вероятностей группы; одной из них (в группе может быть любое число символов, в том числе – один) присваивают символ “1”, другой - “0”;

-каждую из этих групп снова разбивают (если это возможно) на две части и каждой из частей присваивают

1” и “0” и т.д.

Метод Шеннона-Фано не всегда приводит к однозначному построению кода, так как при разбиении на подмножества можно сделать большей по вероятности как верхнюю, так и нижнюю часть, следовательно, такое кодирование хотя и является эффективным, но не всегда будет оптимальным.

Процедура кодирования по методу Шеннона-Фано иллюстрируется табл. 1.

21

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xБуква

Вероятности p

 

 

 

Кодовая

 

 

Длина кодового inслова

 

p-

последовательност

 

i

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

ь

 

 

 

pini

2

 

i

 

 

 

 

 

 

 

log

 

 

Номер разбиения

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

3

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

0,25

1

 

1

 

 

 

 

 

 

2

0,5

0,5

x2

0,25

1

 

0

 

 

 

 

 

 

2

0,5

0,5

x3

0,15

0

 

1

 

1

 

 

 

3

0,45

0,4

x4

0,15

0

 

1

 

0

 

 

 

3

0,45

0,4

x5

0,05

0

 

0

 

1

 

1

 

4

0,2

0,2

x6

0,05

0

 

0

 

1

 

0

 

4

0,2

0,2

x7

0,05

0

 

0

 

0

 

1

 

4

0,2

0,2

x8

0,05

0

 

0

 

0

 

0

 

4

0,2

0,2

Если величина среднего числа символов на знак оказывается значительно большей, чем энтропия, то это говорит об избыточности кода. Эту избыточность можно устранить, если перейти к кодированию блоками.

Рассмотрим простой пример кодирования двумя знаками z1, z2 с вероятностями их появления в сообщениях 0,1 и 0,9 соответственно. Если один из этих знаков кодировать, например, нулем, а другой единицей, т.е. по одному символу на знак, имеем соответственно

̅ = 0,1·1 + 0,9·1 = 1,0.

H (z) = - 0,1 · log2 0,1 - 0,9 · log2 0,9 = 0,47.

При переходе к кодированию блоками по два знака (табл. 2).

̅ = ̅бл / 2 = ½ (0,81 · 1 + 0,09 · 2 + 0,09 · 3 + 0,01 · 3) =

22

= 0,645.

 

 

 

Таблица 2

 

 

 

 

Блоки

Вероятности

Коды

 

 

 

 

 

 

Z1

Z1

0,81

1

 

Z2

Z1

0,09

01

 

Z1

Z2

0,09

001

 

Z

Z

0,01

000

 

2

2

 

 

Можно проверить, что при кодировании блоками по три символа среднее число символов на знак уменьшается и оказывается равным около 0,53.

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

lim ̅ = ( ) ,

где n - число символов в блоке.

3.2. Метод кодирования Хаффмана

Алгоритм Хаффмана изящно реализует общую идею статистического кодирования с использованием префиксных множеств и работает следующим образом:

1.Выписываем в ряд все символы алфавита в порядке возрастания или убывания вероятности их появления в тексте.

2.Последовательно объединяем два символа с

наименьшими вероятностями появления в новый

23

составной символ, вероятность появления которого полагаем равной сумме вероятностей составляющих его символов. В конце построим дерево, каждый узел которого имеет суммарную вероятность всех узлов, находящихся ниже него.

3. Прослеживаем путь к каждому листу дерева, помечая направление к каждому узлу (например, направо - 1, налево – 0) . Полученная последовательность дает кодовое слово, соответствующее каждому символу.

Этот метод всегда дает оптимальное кодирование в отличие от предыдущего, так как получаемая средняя длина кодового слова является минимальной.

Буквы алфавита сообщения располагают в порядке убывания вероятностей. Две последние буквы объединяют в один составной символ, которому приписывают суммарную вероятность. Далее заново переупорядочивают символы и снова объединяют пару с наименьшими вероятностями. Продолжают эту процедуру до тех пор, пока все значения не будут объединены. Это называется редукцией. Затем строится кодовое дерево из точки, соответствующей вероятности 1 (это корень дерева), причем ребрам с большей вероятностью присваивают 1, а с меньшей – 0. Двигаясь по кодовому дереву от корня к оконечному узлу, можно записать кодовое слово для каждой буквы исходного алфавита.

Пример Расположим буквы алфавита А1 в порядке убывания

их вероятностей и подвергнем сжатию алфавит А1; при этом мы придём к алфавиту А2, который получается из первоначального алфавита А с помощью двукратного сжатия (а из алфавита А1 ─ с помощью простого или

24

однократного сжатия). Ясно, что алфавит А2 будет содержать уже всего n-2 буквы. Продолжая эту процедуру, мы будем приходить к всё более коротким алфавитам; после (n-2)-кратного сжатия мы придём к алфавиту Аn-2, содержащему уже всего две буквы.

Вот, например, как преобразуется с помощью последовательных сжатий рассмотренный выше алфавит,

содержащий 6 букв, вероятности которых равны x1 = 0,4;

x2 = 0,2; x3 = 0,2; x4 = 0,1; x5 = 0,05 и x6 = 0,05.

 

 

 

 

 

 

Таблица 3

Вероятности

 

 

 

 

Исходный

Сжатые алфавиты

 

 

буквы

 

 

алфавит А

А1

А2

А3

А4

 

1

0,4

0,4

0,4

0,4

0,6

2

0,2

0,2

0,2

0,4

0,4

3

0,2

0,2

0,2

0,2

 

4

0,1

0,1

0,2

 

 

5

0,05

0,1

 

 

 

6

0,05

 

 

 

 

Условимся теперь приписывать двум буквам последнего алфавита Аn-2 кодовые обозначения 1 и 0. Далее, если кодовые обозначения уже приписаны всем буквам алфавита Аj, то буквам «предыдущего» алфавита Аj- 1 (где, разумеется, А1-1 = А0 ─ это исходный алфавит А), сохранившимся и в алфавите Аj, мы пишем те же кодовые обозначения, которые они имели в алфавите Аj-1; двум же буквам а’ и а’’ алфавита Аj, «слившимся» в одну букву b

25

алфавита Аj-1, мы припишем обозначения, получившиеся из кодового обозначения буквы b добавлением цифр 1 и 0 в конце (табл. 4).

Таблица 4

Вероятности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

букв

Исходный

 

Сжатые алфавиты

 

 

 

 

ы

алфавит А

 

А1

 

А2

 

А3

 

А4

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0,4

0

 

0,4

0

0,4

0

0,4

0

0,6

1

 

 

 

 

 

 

 

 

 

 

 

 

2

0,2

10

 

0,2

10

0,2

10

0,4

11

0,4

0

 

 

 

 

 

 

 

 

 

 

 

 

3

0,2

111

 

0,2

111

0,2

111

0,2

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

0,1

1101

 

0,1

1101

0,2

110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

0,05

11001

 

0,1

1100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

0,05

11000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Легко видеть, что из самого построения получаемого таким образом кода Хаффмана вытекает, что он удовлетворяет общему условию: никакое кодовое обозначение не является здесь началом другого, более длинного кодового обозначения, т.е. полученный код является префиксным.

Заметим ещё, что кодирование некоторого алфавита по методу Хаффмана (так же, впрочем, как и по методу Шеннона − Фано) не является однозначной процедурой.

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

26

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

1)Номер варианта курсового проекта соответствует номеру студента в групповом журнале.

2)Отчет должен содержать:

-титульный лист;

-содержание;

-задание и исходные данные в соответствии с

номером варианта;

-введение;

-решение практических задач с подробным

расчетом основных характеристик и промежуточными результатами вычислений;

-выводы по проделанной работе;

-список использованных источников.

27

5. Варианты заданий для выполнения курсового проекта

ЗАДАНИЕ 1

Имеем Марковский источник с матрицей переходных вероятностей Р( хi / хj ) (в соответствии с вариантом).

варианта

х(Р

х(Р

х(Р

х(Р

х(Р

х(Р

х(Р

х(Р

х(Р

 

 

)

)

)

)

)

)

)

)

)

 

 

1

2

3

1

2

3

1

2

3

 

 

/ х

/ х

/ х

/ х

/ х

/ х

/ х

/ х

/ х

 

 

1

1

1

2

2

2

3

3

3

 

 

 

 

 

 

 

 

 

 

 

1

 

1/4

3/4

0

0

1/4

3/4

5/8

0

3/8

 

 

 

 

 

 

 

 

 

 

 

2

 

1/4

0

3/4

0

1/2

1/2

1/3

1/3

1/3

 

 

 

 

 

 

 

 

 

 

 

3

 

1/3

0

2/3

1/4

1/2

1/4

0

1/2

1/2

 

 

 

 

 

 

 

 

 

 

 

4

 

1/4

0

3/4

0

2/3

1/3

1/3

1/3

1/3

 

 

 

 

 

 

 

 

 

 

 

5

 

1/3

1/3

1/3

0

1/2

1/2

1/8

0

7/8

 

 

 

 

 

 

 

 

 

 

 

6

 

3/4

1/4

0

0

3/4

1/4

1/4

1/4

1/2

 

 

 

 

 

 

 

 

 

 

 

7

 

1/3

1/2

1/6

0

1/4

1/4

1/2

1/2

0

 

 

 

 

 

 

 

 

 

 

 

8

 

1/3

1/2

1/6

0

3/4

1/4

1/2

1/2

0

 

 

 

 

 

 

 

 

 

 

 

9

 

1/4

3/4

0

0

1/4

3/4

3/4

0

1/4

 

 

 

 

 

 

 

 

 

 

 

10

 

3/4

1/4

0

0

1/2

1/2

3/4

0

1/4

 

 

 

 

 

 

 

 

 

 

 

11

 

1/3

1/3

1/3

0

1/2

1/2

3/4

0

1/4

 

 

 

 

 

 

 

 

 

 

 

12

 

1/3

0

2/3

1/4

1/2

1/4

1/2

0

1/2

 

 

 

 

 

 

 

 

 

 

 

13

 

1/4

3/4

0

0

1/2

1/2

1/3

1/3

1/3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

28

 

 

 

 

 

14

 

1/4

3/4

0

0

1/6

5/6

1/4

1/2

1/4

 

 

 

 

 

 

 

 

 

 

 

15

 

1/4

0

3/4

0

1/2

1/2

1/6

1/3

1/2

 

 

 

 

 

 

 

 

 

 

 

16

 

3/4

1/4

0

0

1/4

3/4

1/8

1/4

1/8

 

 

 

 

 

 

 

 

 

 

 

17

 

1/3

1/2

1/6

0

1/4

3/4

1/4

1/2

1/4

 

 

 

 

 

 

 

 

 

 

 

18

 

1/2

1/3

1/6

1/4

0

3/4

1/4

1/2

1/4

 

 

 

 

 

 

 

 

 

 

 

19

 

1/4

3/4

0

0

1/4

3/4

5/8

0

3/8

 

 

 

 

 

 

 

 

 

 

 

20

 

5/8

0

3/8

1/3

1/2

1/6

1/4

0

3/4

 

 

 

 

 

 

 

 

 

 

 

 

Начальные

значения

вероятности

появления

сигналов:

- для вариантов 1 - 5:

р(х1) = 0,25; р(х2) = 0,15; р(х3) = 0,6;

- для вариантов 6 - 10:

р( х1 ) = 1/3; р( х2 ) = 1/3; р( х3 ) = 1/3; - для вариантов 11 - 15:

р( х1 ) = 0; р( х2 ) = 1; р( х3 ) = 0; - для вариантов 16 - 20:

р( х1 ) = 0,14; р( х2 ) = 0,36; р( х3 ) = 0,5.

29

Требуется:

1.1Построить граф состояний исходной системы

S[n].

1.2Найти энтропию Марковского источника Н1(Х) и избыточность Ки для состояния S[n].

1.3Найти энтропию Марковского источника Н2(Х) для состояния S[n+1].

1.4Построить предельную матрицу вероятностей перехода П.

1.5Найти предельную энтропию Н(Х) и избыточность Ки.

ЗАДАНИЕ 2

В системе связи используется двоичный источник с зависимыми элементами (буквами) x1 и x2, для которых заданы вероятности переходов.

Для разных вариантов

P(x1)=1/(1+N),

P(x2)=1-P(x1),

P(у12)=1/(1+0,1·N),

P(у21)=(N+4)/40,

где N – номер варианта.

30