- •Часть 1. Кодирование дискретного сигнала 4
- •Часть 2. Измерение дискретного сигнала 23
- •Часть 3. Формы представления чисел 25
- •Часть 4. Правила оформления курсовой работы 29
- •Задание 2. Коды, учитывающие частоту символов
- •Указания по выполнению задания 2
- •Задание 3. Коды Грея
- •Указания к выполнению задания 3
- •1.2. Криптографическое кодирование дискретного сигнала Задание 4. Метод простой подстановки
- •Указания по выполнению задания 4
- •Задание 5. Метод Виженера
- •Указания по выполнению задания 5
- •1.3. Эффективное кодирование дискретного сигнала Задание 6. Метод Шеннона - Фано
- •Указания по выполнению задания 6
- •Задание 7. Метод Хаффмена
- •Указания по выполнению задания 7
- •1.4. Помехозащитное кодирование дискретного сигнала Задание 8. Построение кода для обнаружения ошибок
- •Указания по выполнению задания 8
- •Задание 9. Построение кода для исправления ошибок
- •Указания по выполнению задания 9
- •Часть 2. Измерение дискретного сигнала Задание 10. Анализ эффективности кодирования
- •Указания по выполнению задания 10
- •Часть 3. Формы представления чисел Задание 11. Сложение в обратных кодах
- •Указания по выполнению задания 11
- •Нормализация
- •Размещение в разрядных сетках
- •Часть 4. Правила оформления курсовой работы
- •Курсовая работа по дисциплине «Информационные технологии»
1.3. Эффективное кодирование дискретного сигнала Задание 6. Метод Шеннона - Фано
Выполнить кодирование исходного текста методом Шеннона-Фано. Частоты символов алфавита А, из которых состоит исходный текст, рассчитать по исходному тексту.
Указания по выполнению задания 6
для построения эффективного кода выполним следующие шаги:
определим размер (в символах) исходного текста (переменная 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. Двоичное дерево, изображающее деление списка частот символов
для кодирования исходного текста используем табл. 12. Имеем (для простоты закодируем отдельно фамилию, имя и отчество):
петров 1100 100 1110 11010 10111 00
иван 010 00 011 10110 (15)
васильевич 00 011 11011 010 1010 11111 100 00 010 11110
