Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
krit.doc
Скачиваний:
10
Добавлен:
02.05.2019
Размер:
437.76 Кб
Скачать

1.3. Эффективное кодирование дискретного сигнала Задание 6. Метод Шеннона - Фано

Выполнить кодирование исходного текста методом Шеннона-Фано. Частоты символов алфавита А, из которых состоит исходный текст, рассчитать по исходному тексту.

Указания по выполнению задания 6

  1. для построения эффективного кода выполним следующие шаги:

  • определим размер (в символах) исходного текста (переменная L) – он равен 20,

  • определим частоты fi появления каждого символа в исходном тексте по формуле:

fi = mi/L, (14)

где mi – число появлений i-го символа в исходном тексте из табл. 2. Имеем графу 3 табл.11,

Таблица 11

Символ

алфавита А

Число

появлений mi

Частота символа fi

1

2

3

а

2

0,1

в

4

0,2

е

2

0,1

и

3

0,15

л

1

0,05

н

1

0,05

о

1

0,05

п

1

0,05

р

1

0,05

с

1

0,05

т

1

0,05

ч

1

0,05

ь

1

0,05

  • упорядочим список символов алфавита А по не возрастанию частот. Получим графы 1 и 2 табл. 12,

  • выполним последовательное деление списка символов в соответствии с алгоритмом Шеннона-Фано (графа 3 табл.12) и назначим символы 0 или 1 элементам списка символов – кодируем элементы. Процесс деления списка символов представлен также в виде двоичного дерева рис. 1, вершины которого равны суммарным частотам отрезков списка,

  • «соберем» символы 0 и 1 слева направо в графе 3 для каждого символа алфавита А. Получим графу 4 табл.12.

Таблица 12

Символ

алфавита А

Частота

символа fi

Этапы деления списка символов

Результирующие коды

1

2

3

4

I

II

III

IV

V

в

0,2

0

0

-

00

и

0,15

1

0

-

010

а

0,1

1

-

011

е

0,1

1

0

0

-

100

л

0,05

1

0

-

1010

н

0,05

1

0

10110

о

0,05

1

10111

п

0,05

1

0

0

-

1100

р

0,05

1

0

11010

с

0,05

1

11011

т

0,05

1

0

-

1110

ч

0,05

1

0

11110

ь

0,05

1

11111

1

0 ,55 0,45

I

0 ,3 0,25 0,25 0,2 (в)

II

0 ,15 0,15 0,15 0,1(е) 0,1 (а) 0,15 (и)

Ш

0 ,1 0,05(т) 0,1 0,05(п) 0,1 0,05(л)

IV

0 ,05(ь) 0,05(ч) 0,05(с) 0,05(р) 0,05(о) 0,05(н) V

Этапы деления списка

символов из табл. 12

Рис. 1. Двоичное дерево, изображающее деление списка частот символов

  1. для кодирования исходного текста используем табл. 12. Имеем (для простоты закодируем отдельно фамилию, имя и отчество):

петров 1100 100 1110 11010 10111 00

иван 010 00 011 10110 (15)

васильевич 00 011 11011 010 1010 11111 100 00 010 11110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]