Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6231К.ЛЕОНОВА Е.В.ЛАБА 4-5.doc
Скачиваний:
22
Добавлен:
02.04.2015
Размер:
253.44 Кб
Скачать

Пример декодирования сообщения

Пусть из имеющихся символов передано сообщение а1, а5, а3, а7, а2, а3.

При кодировании, используя табл. 1 получим следующую последовательность: 11010 01100 10000 111101 110110 10110 100010

11010

01100

10000

111101

110110

10110

100010

111

11000

111111

111010

Л

Ю

б

и

м

ы

й

к

о

Т

Получив сообщение подобного вида, необходимо её декодировать, чтобы прочитать сообщение. Считаем, что получатель имеет таблицу кодировки символов, идентичную с отправителем.

Возможный способ декодирования показан в таблице:

Шаг

Комбинация

Кол-во символов

Символ

1

010

4

-

2

0100

2

-

3

11010

1

л

4

000

4

-

5

0000

5

-

6

00001

5

-

7

000010

3

-

8

0000100

2

-

9

01100

1

ю

10

000

4

-

11

0001

4

-

12

00010

4

-

13

10000

1

б

14

101

2

-

15

111101

1

и

16

011

3

-

17

110110

1

м

18

001

7

-

19

0010

4

-

20

00101

2

-

21

10110

1

ы

22

000

4

-

23

0001

4

-

24

00011

2

-

25

100010

1

й

26

111

1

27

001

7

-

28

0011

3

-

29

11000

1

к

30

110

2

-

31

111111

1

о

32

110

2

-

33

111010

1

т

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

Метод Хаффмана

Для двоичного кода алгоритм Хаффмана сводится к следующему:

Шаг 1. Символы выписываются в основной столбец и снова сортируются от самой большой вероятности к самой маленькой. Два последних символа объединяются в один вспомогательный, которому приписывается суммарная вероятность.

Шаг 2. То, что осталось, и полученная суммарная вероятность снова располагаются по убыванию в дополнительном столбце, а две последних вероятности складываются. Повторять пока в последнем столбике должна остаться единица.

Шаг 3. Строится кодовое дерево и составляются кодовые слова.

«Корнем» дерева будет единица. Оттуда направляются две ветви. Ветви с большей вероятностью присваивается символ 1, а с меньшей — символ 0. Это повторяется до тех пор, пока не дойдём до каждого символа.

Символы

Вероятности P(a)

Шаг 1

Шаг 2

Шаг 3

Шаг 4

Шаг 5

Шаг 6

Шаг 7

а1

0,04

0,04

0,04

0,04

0,04

0,04

0,04

0,113

а2

0,044

0,044

0,044

0,044

0,044

0,044

0,109

а3

0,019

0,019

0,019

0,019

0,019

0,065

а4

0,015

0,015

0,015

0,015

0,046

а5

0,005

0,005

0,005

0,031

а6

0,002

0,002

0,026

а7

0,004

0,024

а8

0,02

Таким образом, символам источника соответствуют концевые вершины дерева. Кодовые слова, соответствующие символам, определяются путями из начального узла дерева к концевым. Каждому ответвлению соответствует символ 1 в результатирующем коде, а вправо — символ 0.

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

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

а1 а2 а3 а4 а5 а6 а7 а8