КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Коды Хаффмана
Один из первых алгоритмов эффективного кодирования информации был предложен Д. А. Хаффманом в 1952 году. Идея алгоритма состоит в следующем: зная вероятности символов в сообщении, можно описать процедуру построения кодов переменной длины, состоящих из целого количества битов. Символам с большей вероятностью ставятся в соответствие более короткие коды. Коды Хаффмана обладают свойством префиксности, что позволяет однозначно их декодировать. В отличие от кодов Шеннона – Фано, которые в настоящее время практически не применяются, коды Хаффмана находят широкое применение при кодирование сообщений [1-3, 5, 7]. Классический алгоритм Хаффмана на входе получает таблицу частот встречаемости символов в сообщении. Далее на основании этой таблицы строится дерево кодирования Хаффмана Рассмотрим алгоритм построения кодов Хаффмана на следующем примере: пусть имеется источник с алфавитом X, включающий шесть сообщений x 1… x 6. У каждого сообщения имеется своя вероятность появления, приведенная в таблице 5. Таблица 5 Вероятность появления сообщений источника информации
1. Выбираем два сообщения с наименьшими вероятностями и заменяем их одним с вероятностью равной сумме вероятности данных сообщения (выбранные сообщения выделяем темным цветом), таблица 6: Таблица 6 Формирование промежуточных алфавитов
2. В результате проведенных операций мы получили 4 промежуточных алфавита (X 1 – X 4). Результат перепишем в следующем виде, таблица 7: Таблица 7 Промежуточные алфавиты
3. Далее проведем процедуру кодирования, таблица 8. Кодирование выполняется в обратном порядке от алфавита X 4 к исходному алфавиту X. Двум знакам последнего алфавита X 4 присваиваем коды 0 (сообщение с вероятностью 0,6) и 1 (сообщение с вероятностью 0,4). Условимся в дальнейшем, что верхний знак будет кодироваться символом 0, а нижний – 1. Сообщение с вероятностью 0,6 алфавита X 4 было получено как сумма вероятностей 2-ух сообщений алфавита X 3 с вероятностями 0,3 и 0,3. В данном случае эти сообщения кодируются уже двухразрядным кодом. Старшим разрядам обоих сообщений присваивается 0, так как нулем было закодировано сообщение с вероятностью 0,6 алфавита X 4. Младшему разряду верхнего сообщения в таблице присваивается 0, а нижнему – 1 (было определено выше). Сообщение с вероятностью 0,4 алфавита X 3 будет кодироваться также как и сообщение с этой же вероятностью в алфавите X 4. По аналогии кодируются остальные сообщения алфавитов, в результате получаем закодированный исходный алфавит кодом Хаффмана, в котором сообщения, имеющие большую вероятность, кодируются кодом меньшей длины, а с меньшей вероятностью кодами большей длины. Таблица 8 Процедура кодирования
Пример 7. Закодируем русский алфавит с помощью описанного выше алгоритма Хаффмана, используя таблицу 1. Решение: Результат кодирования приведен в таблице 9. Таблица 9 Результат кодирования букв русского алфавита кодом Хаффмана
Пример 8. Пусть по каналу связи получено сообщение (слово на русском языке) закодированное кодом Хаффмана: 10001101001111011010110. Необходимо декодировать данную последовательность, используя таблицу 9. Решение: Процесс декодирования основывается также на свойстве префиксности кода и выполняется слева на право, таблица 10. Таблица 10 Процесс декодирования сообщения
Можно повысить эффективность кодирования, если строить код не для символа, как в рассмотренных выше примерах, а для блоков из n символов. В этом случае частота блока рассчитывается как произведение частот символов, которые входят в блок.
Дата добавления: 2015-07-02; Просмотров: 1769; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |