Скачать презентацию Эффективное кодирование Эффективные коды v Эффективность кода Скачать презентацию Эффективное кодирование Эффективные коды v Эффективность кода

6. Эффективное кодирование.pptx

  • Количество слайдов: 12

Эффективное кодирование Эффективное кодирование

Эффективные коды v Эффективность кода определяется его избыточностью v Для кодирования символов первичного алфавита Эффективные коды v Эффективность кода определяется его избыточностью v Для кодирования символов первичного алфавита используют двоичные коды переменной длины

Эффективное кодирование v Алфавитное неравномерное кодирование с разделителем знаков v Код Шеннона-Фано v Код Эффективное кодирование v Алфавитное неравномерное кодирование с разделителем знаков v Код Шеннона-Фано v Код Хаффмана v Блочное кодирование

Алфавитное неравномерное кодирование v Однозначность декодирования! v Разделитель – постоянная комбинация двоичных знаков: § Алфавитное неравномерное кодирование v Однозначность декодирования! v Разделитель – постоянная комбинация двоичных знаков: § Признак конца знака: 00 § Признак конца слова: 000 v Правила построения кодов: § код признака конца знака может быть включен в код буквы; § коды букв не должны содержать двух нулей подряд в середине; § код буквы (кроме пробела) всегда должен начинаться с 1; § коды букв могут оканчиваться на 0 или 00 (до признака конца знака).

Алфавитное неравномерное кодирование Буква P*103 Код k пробел о е а и т н Алфавитное неравномерное кодирование Буква P*103 Код k пробел о е а и т н с 174 90 72 62 62 53 53 45 000 1000 1100 10000 10100 11000 11100 3 3 4 4 5 5

Префиксные коды v Префиксные коды – неравномерные коды без разделителя v Удовлетворяют условию Фано: Префиксные коды v Префиксные коды – неравномерные коды без разделителя v Удовлетворяют условию Фано: § Неравномерный код может быть однозначно декодирован, если никакой из кодов не совпадает с началом какоголибо иного более длинного кода

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

Код Шеннона-Фано v Упорядочить исходное множество символов по не возрастанию их частот. 1. список Код Шеннона-Фано v Упорядочить исходное множество символов по не возрастанию их частот. 1. список символов делится на две части так, чтобы суммы частот обеих частей были точно или примерно равны; 2. кодовым комбинациям первой части дописывается 1, второй части – 0; 3. если первая часть содержит только один символ, работа с ней заканчивается, переход к шагу 4, иначе – переход к шагу 1; 4. если вторая часть содержит только один символ, работа с ней заканчивается, переход к шагу 5, иначе – переход к шагу 1; 5. если оставшийся список пуст – код построен, работа заканчивается. Иначе – выполняется шаг 1.

Код Шеннона-Фано Символ p I a 0. 5 0. 3 c 0. 15 d Код Шеннона-Фано Символ p I a 0. 5 0. 3 c 0. 15 d 0. 05 III 1 b II 1 1 0 Код 0 01 1 001 0 000

Код Хаффмана v Упорядочить исходное множество символов по не возрастанию их частот. 1. Объединение Код Хаффмана v Упорядочить исходное множество символов по не возрастанию их частот. 1. Объединение частот: § две последние частоты складываются и исключаются из списка; § оставшийся список пополняется суммой частот и вновь упорядочивается; § предыдущие шаги повторяются пока не получится единица. 2. Построение кодового дерева: § строится двоичное дерево: корнем его является вершина, равная 1, листьями – исходные частоты; § ребра дерева кодируются: 1 и 0. 3. Формирование кода: для получения кодов исходных кодируемых символов продвигаются от корня к нужной вершине и записывают веса проходимых ребер.

Код Хаффмана Символ a b A 0 A 1 A 2 A 3 Код Код Хаффмана Символ a b A 0 A 1 A 2 A 3 Код 0. 5 0. 3 0. 5 1 1 01 c 0. 15 0. 2 001 d 0. 05 000 1 1 0. 5 0 0. 5 1 0 0. 2 0. 3 1 0. 15 0 0. 05

Повышение эффективности кодирования v Блочное кодирование v a (0. 9); b (0. 1) Символ Повышение эффективности кодирования v Блочное кодирование v a (0. 9); b (0. 1) Символ p I aa 0. 81 0. 09 ba 0. 09 bb 0. 01 III 1 ab II 1 1 0 Код 0 01 1 001 0 000