29-10-2014_11-40-41 / Методические указания к практическому занятию ___3 (ОТС)
.pdfМетодические указания к практическому занятию №3 по дисциплине «Общая теория связи»
Методы эффективного кодирования источников дискретных сообщений
Красноярск
Золотухин, В.В.
Методические указания к практическому занятию №3 «Методы эффективного кодирования источников дискретных сообщений» по дисциплине «Общая теория связи» / В.В. Золотухин. – Красноярск, 2013. – 8 с.
В данных методических указаниях к практическим занятиям по дисциплине «Общая теория связи» студентам предстоит изучить и закрепить такие методы эффективного (статистического) кодирования информации, как методы Шеннона-Фано и Хаффмана.
Предназначено для студентов, обучающихся по направлению 210700.62.
© В.В. Золотухин
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №3
Методы эффективного кодирования источников дискретных сообщений
Задача 3.1: Определите минимально необходимую пропускную способность канала связи, если алфавит источника дискретных сообщений состоит из 6 символов со следующими вероятностями их появления (табл. 3.1):
Таблица 3.1
|
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
p(a1) |
0,26 |
0,39 |
0,62 |
0,55 |
0,42 |
0,3 |
0,46 |
0,49 |
0,67 |
0,72 |
|
p(a2) |
0,49 |
0,21 |
0,2 |
0,14 |
0,21 |
0,32 |
0,35 |
0,28 |
0,05 |
0,16 |
|
p(a3) |
0,02 |
0,18 |
0,01 |
0,09 |
0,2 |
0,16 |
0,01 |
0,06 |
0,1 |
0,02 |
|
p(a4) |
0,13 |
0,12 |
0,03 |
0,14 |
0,04 |
0,1 |
0,03 |
0,08 |
0,13 |
0,04 |
|
p(a5) |
0,09 |
0,06 |
0,04 |
0,05 |
0,06 |
0,01 |
0,12 |
0,07 |
0,04 |
0,03 |
|
p(a6) |
0,01 |
0,04 |
0,1 |
0,03 |
0,07 |
0,11 |
0,03 |
0,02 |
0,01 |
0,03 |
|
n, |
2 |
9 |
2 |
9 |
1 |
2 |
6 |
4 |
8 |
3 |
|
симв./c |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
Определите избыточность источника. Рассчитайте, во сколько раз можно повысить пропускную способность при оптимальном статистическом кодировании методом Шеннона-Фано. Скорость передачи сообщений можно считать равной n симв./c.
Решение:
Решение задачи осуществляется в несколько этапов. На первом этапе следует найти энтропию дискретного источника для неравновероятных символов по формуле:
K
H(A) p(ai )log2 p(ai) .
i 1
Затем следует определить избыточность дискретного источника, предварительно рассчитав при этом максимальное значение энтропии при равновероятных символах алфавита по формуле:
Hmax (A) log2 N .
На следующем этапе необходимо построить эффективный код в соответствии с методом Шеннона-Фано. Рассмотрим пример эффективного кодирования источника дискретных сообщений методом Шеннона-Фано с алфавитом из 6 символов. Алгоритм кодирования источника состоит из следующих трех этапов: сортировки, разделения и кодирования.
Более полно алгоритм кодирования можно описать следующими этапами:
1.Расположить все символы алфавита в порядке убывания вероятностей.
2.Разделить весь алфавит на две группы таким образом, чтобы суммарные вероятности появления символов в каждой из групп были примерно равны. Первой или верхней группе в качестве первого символа кодовой комбинации присвоить 0, второй или нижней – 1.
3.Продолжаем процесс разделения: теперь каждую из групп вновь делим на две подгруппы с примерно одинаковыми вероятностями. Теперь уже в качестве вторых символов кодовых комбинаций для верхних подгрупп выбираем 0, а для нижних – 1.
4.Весь процесс повторяется до тех пор, пока в каждой из подгрупп не останется по одному символу.
Для примера рассмотрим процесс получения кодовых комбинаций для источника с алфавитом из 6 символов:
В случае равномерного кодирования символов данного алфавита потребуется 3 бита на символ – l = 3 бита.
Для кода Шеннона-Фано на один символ в среднем приходится следующее количество битов:
K
lli P(ai) 1 0,5 2 0,2 3 0,1 4 0,1 5 0,05 5 0,05 2,1бит.
i1
При этом энтропия источника равна:
6
H(A) P(ai) log2 P(ai) 2,061бит.
i 1
Таким образом, избыточность при использовании кодирования Шеннона-Фано составит всего лишь:
R(A) l H(A) 2,1 2,061 0,039 бит.
После этого можно определить длину каждой кодовой комбинации и рассчитать пропускную способность:
N
Cэфф v pli i ,
i 1
где v – скорость передачи символов;
pi – вероятность появления i-го символа;
li – длина кодовой комбинации, используемой для кодирования i-го символа.
Соответственно, далее можно рассчитать, во сколько раз можно повысить пропускную способность канала связи при оптимальном статистическом кодировании.
Задача 3.2: Постройте эффективный код для алфавита из задачи 3.1 (табл. 3.1) в соответствии с методом Хаффмана. Определите, во сколько раз повысится пропускная способность канала связи по сравнению с равномерным кодированием, а также в сравнении с кодом, полученным методом Шеннона-Фано.
Решение:
Во многом принцип работы алгоритма Хаффмана напоминает алгоритм Шеннона-Фано, но при этом является более сложным, что является его расплатой за оптимальность. Основные этапы работы алгоритма Хаффмана:
1.Расположить все символы алфавита в порядке убывания вероятностей.
2.Два наименее вероятных символа объединяются в один новый символ с суммарной вероятностью. При этом возникает новый алфавит, который также подлежит процедуре упорядочивания.
3.Процесс объединения продолжается до тех пор, пока в новом алфавите не останется всего два символа.
4.Теперь начинается процедура кодирования: двигаясь в обратном направлении, верхнему из объединенных символов в качестве очередного бита кодовой комбинации добавляется 1, нижнему - 0. Процесс создания кодовых комбинаций продолжается до тех пор, пока не дойдет до исходного алфавита.
Таким образом, новым этапом в алгоритме Хаффмана является процедура движения в обратном направлении.
Рассмотрим кодирование методом Хаффмана на примере:
|
|
В данном случае средняя |
длина |
кодовой |
комбинации |
составит |
|
|
2,1бит. Следует заметить, что |
данное |
значение |
полностью |
совпало с |
l |
результатом кодирования методом Шеннона-Фано. Однако, уже математически доказано, что в общем случае код Хаффмана позволяет получить более высокие результаты по сравнению с кодом Шеннона-Фано.
Задача 3.3: Алфавит источника дискретных сообщений состоит из трех символов со следующими вероятностями появления – p(a1), p(a2) и p(a3) (табл. 3.2). Определите величину избыточности, которая получается при кодировании одиночных символов источника дискретных сообщений методом Шеннона-Фано и при кодировании пар символов. Сравните результаты, полученные при кодировании методом Шеннона-Фано и методом Хаффмана.
Таблица 3.2
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
p(a1) |
0,6 |
0,7 |
0,8 |
0,5 |
0,6 |
0,9 |
0,8 |
0,4 |
0,4 |
0,5 |
p(a2) |
0,3 |
0,2 |
0,1 |
0,2 |
0,2 |
0,05 |
0,15 |
0,4 |
0,3 |
0,4 |
p(a3) |
0,1 |
0,1 |
0,1 |
0,3 |
0,2 |
0,05 |
0,05 |
0,2 |
0,3 |
0,1 |
Решение:
В ряде случаев по методу Шеннона-Фано выгодно кодировать не отдельные символы источника, а блоки из нескольких символов. Рассмотрим пример блокового кодирования.
Например, алфавит источника содержит только два символа А и В, с вероятностями появления Р(А)=0,7 и Р(В)=0,3. Энтропия алфавита такого источника составляет:
H(A) 0,7 log2 0,7 0,3 log2 0,3 0,88 бит.
При обычном равномерном кодировании такой алфавит кодируется простейшим кодом вида:
Символ |
Вероятность |
Кодовое слово |
A |
0.7 |
1 |
|
|
|
B |
0.3 |
0 |
|
|
|
Избыточность при этом составляет R(A)=0,12 бит/символ.
Применим метод Шеннона-Фано к кодированию всех возможных двухсимвольных комбинаций на выходе источника.
В этом случае средняя длина кодового слова составляет: l =1,81 бит. На один символ алфавита источника приходится в среднем 1,81/2=0,905 бит/символ. Избыточность составляет R(A) = 0,905 – 0,88 = 0,025 бит/символ.
Если применить этот метод к кодированию трехсимвольных блоков источника, среднее число двоичных символов, приходящихся на один символ источника, будет еще ближе к энтропии алфавита источника.