Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Эффективное кодирование Алгоритм Хаффмена





Алгоритм Хаффмена предполагает построение «кодового дерева».

1. Располагаем символы сообщения в порядке убывания вероятностей.

2. Объединяем два наименее вероятных сообщения в одно с суммарной вероятностью появления (т.е. складываем вероятности объединяемых сообщений).

3. Вновь располагаем сообщения в порядке убывания вероятностей и т.д., пока не получим сумму вероятностей, равную единице. Очевидно, количество подобных итераций равна n - 1, где n - количество символов в алфавите источника.

«Кодовое дерево» для нашего примера представлено на рис. 2.

Алгоритм кодирования новым двоичным кодом следующий:

-идём от корней кодового дерева к вершине (справа – налево),

-если в узле мы идём вверх, то в кодовую комбинацию записывается единица, если вниз — ноль. В результате получим после первого от корня узла: дибит D0 кодируется одной двоичной единицей 0, а объединение дибитов D1, D2 и D3 кодируется 1. После второго разветвления дибит D1 кодируется 10, а объединение дибитов D2 и D3 - 11. Окончательный результат дает третий узел. D2 кодируется как 111, а D3 - 110.

Таким образом имеем D0 => "0"; D1 => "10"; D2 => "111"; D3 => "110".

 

 

Рис. Кодовое дерево алгоритма Хаффмена

 

В результате кодирования получен неравномерный код. Наиболее вероятный дибит D0 кодируется кодом минимальной длины, а наименее вероятные дибиты D2 и D3 - имеют коды максимальной длины. Поэтому средняя длина комбинации кода Хаффмена равна

0.46×1 + 0.22×2 + 0.20×3 + 0.12×3 = 1.86 бит

и приближается к энтропии исходного кода Н2 = 1.827 дв. ед./дибит, что уменьшает длину и время передачи всего сообщения. Исходное сообщение содержало 100 дв. ед.

После кодирования передаваемое сообщение

 

10.0.0.0.111.0.0.0.110.10.10.110.0.0.111.10.111.0.111.0.111.

111.111.0.0.10.0.0.111.110.10.0.0.0.111.0.0.0.110.10.10.110.

0.0.111.10.0.10.10.110

 

содержит всего 23×1 + 11×2 + 10×3 + 6×3 = 93 дв. ед., на 7 дв. ед. меньше исходного.

Код Хаффмана обладает префиксными свойствами, т.е. никакая короткая кодовая комбинация не должна являться началом более длинной комбинации. При этом не нужно использовать дополнительные разделительные символы. Однако возникают и проблемы. Если произойдет ошибка при передаче информации, то нарушается разбиение кодовых комбинаций и возникает несколько ошибок при декодировании.

Так, например, пусть десятый и двадцатый символы передаваемой последовательности приняты неверно (эти символы подчеркнуты)

10.0.0.0.111.0. 1. 0.110.10.10.1 0 0.0.0.111.10.111.0.111.0.111.

111.111.0.0.10.0.0.111.110.10.0.0.0.111.0.0.0.110.10.10.110.

0.0.111.10.0.10.10.110.

После декодирования кода Хаффмена получим последовательность дибитов

01.00.00.00.10.00.0 1. 11. 0 1.01.01. 00. 00.00.10.01.10.00.10.00.10. 10.10.00.00.01.00.00.10.11.01.00.00.00.10.00.00.00.11.01.01.11.00.00.10.01.00.01.01.11.

Сравнение с переданной последовательностью

01.00.00.00.10.00.00.00.11.01.01.11.00.00.10.01.10.00.10.00.10.10.10.00.00.01.00.00.10.11.01.00.00.00.10.00.00.00.11.01.01.11.00.00.10.01.00.01.01.11.

показывает, что даже одиночные ошибки приводят к появлению пакетов ошибок при декодировании эффективного кода, которые выделены жирным шрифтом и подчеркнуты. Декодированная последовательность букв будет иметь вид

И В Г Х И В М И Х А И Л И В А Н О В И Ч вместо переданной

И В А Н О В М И Х А И Л И В А Н О В И Ч,

т.е. три буквы приняты неверно.

Для исключения ошибок следует применить специальные методы защиты – помехоустойчивое кодирование, которое позволяет обнаруживать и даже исправлять ошибки, вызванные действием помех в системе связи или обработки информации.

 

Date: 2015-12-13; view: 462; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию