Основы передачи дискретных сообщений |
Лабораторная работа "Коды Хаффмана" |
ОГЛАВЛЕНИЕ Программа для выполнения лабораторной работы (файл LABOR.exe) ЦЕЛЬ
РАБОТЫ Изучение принципа эффективного кодирования источника дискретных сообщений.
Таблица 1 Вероятности появления сообщений алфавита
Вариант для построения кода определяется по последней цифре пароля. При N>7 номер варианта равен N-7. Если N=0, то вариант 3. К числу основных информационных характеристик источника сообщений относятся: количество информации в отдельных сообщениях, энтропия и производительность источника сообщений. Количество
информации. Единицей измерения количества информации является
бит. Чем меньше вероятность появления того или иного сообщения,
тем большее количество информации извлекается при его получении и наоборот.
Если источник может выдавать одно из двух независимых сообщений Количество
информации, которое приходится на одно сообщение
Среднее
количество информации в сообщениях поступающих от источника,
называется энтропией Н(А). Она определяется путем усреднения
значений
где
Энтропия
– это мера неопределенности в поведении источника сообщений
(ИС). Она равна нулю, если с вероятностью равной единице источником выдается
всегда одно и то же сообщение (в этом случае неопределенность в поведении
ИС отсутствует). Энтропия максимальна, если сообщения выдаваемые источником
появляются независимо и с одинаковой вероятностью. В этом случае она равна
Среднее количество информации, выдаваемое источником в единицу времени, называют производительностью источника и определяют по формуле:
где Т – среднее время, отводимое на передачу одного сообщения. Выражение для средней длительности сообщения имеет вид
здесь
Сформулируем
задачу статистического кодирования, которую часто приходится решать
в технике документальной электросвязи. Каждое сообщение Пример
1. Пусть Таблица 2
Код 1 не является
однозначно декодируемым кодом, так как комбинация Код 2 декодируется однозначно, поскольку все кодовые комбинации этого кода имеют равные длины и различны. Код 3 также однозначно декодируемый, поскольку никакая его кодовая комбинация не является началом (префиксом) другой кодового слова. Код, обладающий тем свойством, что никакая более короткая комбинация не является началом другой более длинной комбинации кода, называют префиксным. Префиксные коды всегда однозначно декодируемы. Кодовое дерево для множества кодовых слов. Рисунок 1. Пример двоичного кодового дерева Наглядное графическое изображение множества кодовых комбинаций можно получить, установив соответствие между сообщениями и концевыми узлами двоичного дерева. Пример двоичного кодового дерева изображен на рисунке 1. Две ветви, идущие от корня дерева к узлам первого порядка, соответствуют выбору между “0” и “1” в качестве первого двоичного символа кодовой комбинации: левая ветвь соответствует “0”, а правая – “1”. Две ветви, идущие из узлов первого порядка, соответствуют второму символу кодовых комбинаций, левая означает “0”, а правая – “1” и т. д. Ясно, что последовательность символов каждой кодовой комбинации определяет необходимые правила продвижения от корня дерева до концевого узла, соответствующего рассматриваемому сообщению. Формально кодовые комбинации могут быть приписаны также промежуточным узлам. Например, промежуточному узлу второго порядка на рисунке 1 можно приписать комбинацию 11, которая соответствует первым двум символам кодовых комбинаций, соответствующих концевым узлам, порождаемых этим узлом. Однако кодовые комбинации, соответствующие промежуточным узлам, не могут быть использованы для представления сообщений, так как в этом случае нарушается требование префиксности кода. Требование, чтобы только концевые узлы сопоставлялись сообщениям, и обеспечивает условие при котором ни одна из кодовых комбинаций не совпадает с началом (префиксом) более длинной кодовой комбинации. Любой код, кодовые комбинации которого соответствуют различным концевым вершинам некоторого двоичного дерева, является префиксным, т. е. однозначно декодируемым. На рисунке 2 изображены кодовые деревья, соответствующие кодам 2 и 3 (см. таблицу 2). Рисунок 2 Кодовые деревья для кодов 2 (а) и 3 (б) Вернемся к рассмотренному
ранее примеру 1. Пусть вероятность появления сообщения для кода 3, составляет
Рассмотрим
еще один код – код 4, который сообщению Известно,
что нельзя закодировать сообщение двоичным кодом таким образом, чтобы
средняя длина кодовых комбинаций В
[1] показано, что существует способ кодирования, при котором где
Метод
Хаффмена. Одним из часто используемых методов эффективного кодирования
является так называемый метод Хаффмена. Пусть сообщения входного алфавита
Тогда алгоритм кодирования Хаффмена состоит в следующем: 1.
Сообщения располагаются в столбец в порядке убывания вероятности их появления. Так как в процессе кодирования сообщениям сопоставляются только концевые узлы, полученный код (код Хаффмена) является префиксным и следовательно всегда однозначно декодируемым. В данной работе рекомендуется обозначать “1” ветвь идущую от узла в сторону сообщения с большей вероятностью появления. Построение кода Хаффмена для восьми сообщений, появляющихся с вероятностями 0,2; 0,2; 0,15; 0,13; 0,12; 0,1; 0,07; 0,03, иллюстрируется рисунками 3 и 4. Рисунок 3 Рисунок 4 Кодовое дерево Из таблицы 4 видно,
что полученный код является неравномерным, причем сообщению с максимальной
вероятностью появления соответствует минимальная длительность кодовой
комбинации (2 Таблица 4
Пусть переданная последовательность
сообщений 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0… (2) Рассмотрим влияние одиночной ошибки во втором разряде принятой кодовой последовательности на результат декодирования. При этом получим 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0… (3) Полученная последовательность расшифровывается следующим образом 0
0 11 1 1 1 0 1 0 1 0 0 1 0… Из (4) видно, что искажение даже одного двоичного элемента (0 ® 1) может привести к появлению ошибок в нескольких сообщениях (треку ошибок). Это является существенным недостатком рассмотренного метода кодирования. Среднее
число двоичных символов
Эффективность неравномерных кодов оценивается следующими параметрами:
где
–
коэффициентом относительной эффективности, который показывает степень
близости средней длины кодовой комбинации к теоретически возможному пределу
Настоящая лабораторная работа выполняется на ЭВМ. Используемая программа эмулирует работу системы связи, использующей равномерное и неравномерное кодирование. Программным путем эмулируются такие устройства как: –
блок ввода сообщения; Функциональная схема моделируемой системы связи представлена на рисунке 5. Рисунок 5 При помощи данной программы возможно наблюдение таких процессов, как кодирование исходной последовательности сообщений (см. таблицу 1) кодером Хаффмена и блоком равномерного кодирования, внесение ошибки в закодированную последовательность сообщений, наблюдение трека ошибок и др. Программа производит контроль правильности выполнения студентами домашнего задания. Для выбора необходимого блока надо щелкнуть по его символьному обозначению левой клавишей мыши. Назначение эмулируемых блоков Блок ввода сообщений Этот блок обеспечивает ввод исходной последовательности сообщений. Вводимая последовательность может состоять из сообщений алфавита таблицы 1 или из букв русского алфавита (набираемых на клавиатуре). После окончания ввода сообщения следует нажать клавишу “Enter” или щелкнуть курсором мыши по клавише “OK”. Блок равномерного кодирования В этом блоке Вы можете наблюдать исходную последовательность сообщений, закодированную равномерным кодом. Кодер Хаффмена В этом блоке Вы можете наблюдать Вашу исходную последовательность сообщений, закодированную с использованием неравномерного префиксного кода Хаффмена. Блок определения длины кодовой комбинации. В этом блоке производится отображение длины Вашего закодированного сообщения и средней длины кодовой комбинации для случаев равномерного кодирования и кодирования кодом Хаффмена. Блок ввода ошибки Этот блок позволяет вносить одиночную или групповую ошибку в поток данных, что имитирует ошибки в реальных дискретных каналах и демонстрирует эффект трека ошибок. Для внесения ошибки необходимо щелкнуть на нужных ярлычках, которые отображают номер искажаемого двоичного символа и произвести инверсию. Декодер Хаффмена Этот блок производит декодирование закодированного сообщения, при этом отображается восстановленное сообщение на выходе декодера. Блок определения ошибочных сообщений В этом блоке происходит сравнение последовательности двоичных элементов, переданных в линию связи, с принятой последовательностью. Ошибочные элементы отображаются красным цветом. Блок отображения В этом блоке происходит отображение принятого сообщения, а также выводятся характеристики качества передачи: количество ошибочно принятых двоичных элементов и сообщений. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ
В
окне “Контроль домашних расчетов” ввести номер варианта домашнего задания,
двоичные последовательности для каждого сообщения источника, значения
2.2 В раскрывающемся списке верхней строки выбрать “алфавит из домашнего задания”. 2.3 Составить три последовательности по 16 сообщений исходного алфавита (см. таблицу 1), полученные:
Например:
для последовательности 2.5 В блоке определения длины кодовой комбинации посмотреть для каждой последовательности сообщений среднюю длину кодовой комбинации на сообщение алфавита при равномерном и эффективном кодировании;
3.1
Составить и ввести произвольную комбинацию из 16 сообщений. Отчет по лабораторной работе следует оформлять в редакторе Microsoft Word 97 и высылать по адресу admin@dist.neic.nsk.su . Убедительная просьба при оформлении не использовать макросы и проверять на наличие вирусов. |