TEZ-2012 / 2-й семестр / ПЗ2 / Практическое занятие№4
.doc
Практическое занятие №4
Методы эффективного| кодирования
-
Источник сообщений выдает символы из ансамбля сообщений А, Б, В, Г, Д, Е, Ж. З, имеющего объем . Записать кодовые комбинации примитивного кода, соответствующие символам данного источника. Построить кодовое дерево и показать корень, узлы, вершины.
.
Буква |
Код |
|
А |
000 |
|
Б |
001 |
|
В |
010 |
|
Г |
011 |
|
Д |
100 |
|
Е |
101 |
|
Ж |
110 |
|
З |
111 |
-
Дискретный источник выдает символы из ансамбля с объемом . Какое минимальное число разрядов должны иметь кодовые комбинации равномерного двоичного кода, предназначенного для кодирования символов данного ансамбля? Записать кодовые комбинации.
,
Округляем до большего целого
Символ |
||||||||||
Код |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
3. Дискретный источник выдает символы «а», «б», «н» с вероятностями появления , , . Закодировать сообщение «банан» кодом Хаффмена.
Символ |
Вероятность |
|
|
а |
2/5 |
|
0 |
н |
2/5 |
1 |
11 |
б |
1/5 |
0 |
10 |
10011011.
4. Закодировать сообщение «аббревиатура» кодом Хаффмена. Рассчитать избыточность кода.
Символ |
Вероятность |
|
|
|
|
|
а |
3/12 |
0 |
|
|
0 |
00 |
б |
2/12 |
1 |
|
|
01 |
|
р |
2/12 |
0 |
|
0 |
1 |
100 |
е |
1/12 |
1 |
|
101 |
||
в |
1/12 |
0 |
0 |
1 |
1100 |
|
и |
1/12 |
1 |
1101 |
|||
т |
1/12 |
0 |
1 |
1110 |
||
у |
1/12 |
1 |
1111 |
00 01 01 100 101 1100 1101 00 1110 1111 100 00.
Без кодирования экономным кодом
5. Закодировать сообщение «аббревиатура» кодом Шеннона_Фана. Рассчитать избыточность кода. Сравнить с предыдущим кодом
Символ |
Вероятность |
|
|
|
|
|
а |
3/12 |
0 |
0 |
|
|
|
б |
2/12 |
0 |
1 |
|
|
|
р |
2/12 |
1 |
0 |
0 |
|
|
е |
1/12 |
1 |
0 |
1 |
|
|
в |
1/12 |
1 |
1 |
0 |
0 |
|
и |
1/12 |
1 |
1 |
0 |
1 |
|
т |
1/12 |
1 |
1 |
1 |
0 |
|
у |
1/12 |
1 |
1 |
1 |
1 |
|
00 01 01 100 101 1100 1101 00 1110 1111 100 00.
Без кодирования экономным кодом
6. Дискретный источник выдает символы «а», «б», «о» с вероятностями появления , , . Каждому из символов выделены интервалы
Символ |
б |
а |
о |
Интервал |
0 – 0,5 |
0,5 – 0,8 |
0,8 – 1 |
Закодировать сообщение «баобаб» арифметическим кодом. Показать результат кодирования в виде интервала.
Алгоритм кодирования для последовательности произвольной длины может выглядеть примерно следующим образом:
1. Определить вероятность каждого из символов алфавита в сообщении и назначить каждому из них интервал, пропорциональный его вероятности.
2. Составить таблицу соответствия между символом и интервалом.
3. Установить начало интервала .
4. Установить конец интервала .
5. Выполнять до тех пор пока есть еще входные символы
6. Получить входной символ.
7. Выбрать из таблицы соответствия начало и конец интервала для символа.
8. Сузить исходный интеpвал до нового
Конец цикла
9.. Рассчитать конечное значение для передачи
.
1) .
.
2) б
Н2=0+0(1-0)=0;
К2=0+0,5(1-0)=0.
3) а
Н3=0+0,5(0,5-0)=0,25;
К3=0+0,8(0,5-0)=0,4.
4) о
Н4=0,25+0,8(0,4-0,25)=0,37;
К4=0,25+1(0,4-0,25)=0,4.
5) б
Н5=0,37+0(0,4-0,37)=0,37;
К5=0,37+0,5(0,4-0,37)=0,385.
6) а
Н6=0,37+0,5(0,385-0,37)=0,3775;
К4=0,37+0,8(0,385-0,37)=0,3820.
7) б
Н7=0,3775+0(0,3820-0,3775)=0,3775;
К7=0,3775+0,5(0,3820-0,3775)=0,3798.
Х=0,3787.
Начало интервала 0,3775, конец интервала 0,3798;
7. Дискретный источник выдает символы «а», «б», «о». Кодер кодирует сообщение арифметическим кодом. Каждому из символов выделены интервалы
Символ |
б |
а |
о |
Интервал |
0 – 0,5 |
0,5 – 0,8 |
0,8 – 1 |
Декодировать Х=0,3787.
Алгоритм декодирования выглядит следующим образом:
-
Получить декодируемое число
-
Выполнять до тех пор пока декодируемое число не равно «0».
-
Найти символ, для которого начало интервала , а конец интервала .
-
Выдать символ.
-
Определить следующее число
.
6. Конец цикла
1) Х1=0,3787
Попадает в интервал буквы «б».
Исключаем влияние буквы «б»
2) Х2=0,7574
Попадает в интервал буквы «а»
Исключаем влияние буквы «а»
3) Х3=0,858
Попадает в интервал буквы «о»
Исключаем влияние буквы «о»
4) Х4=0,29
Попадает в интервал буквы «б»
Исключаем влияние буквы «б»
5) Х5=0,58
Попадает в интервал буквы «а»
Исключаем влияние буквы «а»
6) Х6=0,2667
Попадает в интервал буквы «б»
Исключаем влияние буквы «б»
.
7) Х7=0,5334
Попадает в интервал буквы «а»
Исключаем влияние буквы «а»
.
8) Х8=0,1113
Попадает в интервал буквы «а»
Исключаем влияние буквы «а»
.
8. Дискретный источник выдает символы «а», «б», «о». Кодер кодирует сообщение арифметическим кодом. Каждому из символов выделены интервалы
Символ |
б |
а |
о |
Интервал |
0 – 0,5 |
0,5 – 0,8 |
0,8 – 1 |
Декодировать Х=0,3775.
Алгоритм декодирования выглядит следующим образом:
-
Получить декодируемое число
-
Выполнять до тех пор пока декодируемое число не равно «0».
-
Найти символ, для которого начало интервала , а конец интервала .
-
Выдать символ.
-
Определить следующее число
.
6. Конец цикла
1) Х1=0,3775
Попадает в интервал буквы «б».
Исключаем влияние буквы «б»
2) Х2=0,755
Попадает в интервал буквы «а»
Исключаем влияние буквы «а»
3) Х3=0,85
Попадает в интервал буквы «о»
Исключаем влияние буквы «о»
4) Х4=0,25
Попадает в интервал буквы «б»
Исключаем влияние буквы «б»
5) Х5=0,5
Попадает в интервал буквы «а»
Исключаем влияние буквы «а»
.
6) Х6=0.
Попадает в интервал буквы «б»
Исключаем влияние буквы «б»
.