Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТИ_2006_ВСЕ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.19 Mб
Скачать

4.5. Блочное кодирование

Пусть имеются две буквы алфавита A и B. Как возможно закодировать данные буквы? Наверное только по одному символу.

A

0.9

0

B

0.1

1

Средняя длина будет равна 1 биту бит/буква

А энтропия равна . То есть, избыточность составляет 53%. Как же быть? Попробуем закодировать двухбуквенные сочетания. В этом случае уже можно воспользоваться эффективным кодированием.

AA

0.81

0

------

------

0

AB

0.09

0

------

10

BA

0.09

1

1

0

110

BB

0.01

1

111

Тогда средняя длина на блок из двух букв будет . А на одну букву =0.645 бит/буква. Избыточность в этом случае будет уже составлять примерно 17%. Если мы возьмем сочетания из трех букв, то получим еще лучший результат и т.д. Увеличивая длину блоков можно как угодно близко приблизиться к оптимальному значению

Блочное кодирование удобно применять и для устранения избыточности при кодировании десятичных цифр. При передаче десятичных цифр двоичным кодом максимально загруженными бывают только те символы вторичного алфавита, которые передают значения, являющиеся целочисленными степенями двойки. Это 4, 8, 16, … В других случаях тремя разрядами можно передать и 5 и 8. Так для передачи цифры 5 необходимо . Однако эту цифру необходимо округлить до ближайшего целого числа 3. Избыточность от округления будет составлять

Избыточность от не равновероятного появления символов и избыточность от округления можно устранить за счет кодирования блоками.

Цифры Число разрядов На 1 цифру

0 – 9 4 4

00 – 99 7 3,5

000 – 999 10 3,3

4.6. Код Хаффмана

Второй код, являющийся не менее эффективным, чем код Шеннона-Фано, является код Хаффмана. Он также учитывает статистические свойства сигналов, при которых вероятности появления букв p1, р2, …рк не равные между собой, поэтому H < log n.

Код Хаффмана строится следующим образом: буквы располагают в порядке убывания их вероятностей. Складывают вероятности двух последних букв, и ряд переписывают снова с учетом новой вероятности (суммы). Далее повторяют операцию, пока не получится 1. Нижнюю букву всегда кодируют нулем, а верхнюю – единицей.

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

Код Хаффмана, также как и Шеннона-Фано является префиксным, то есть в таком коде ни одна комбинация не совпадает с началом более длинной комбинации, а это позволяет обеспечить однозначное декодирование без введения разделительных символов.

Среднее кол-во разрядов:

Энтропия будет равна

Как мы видим, величина среднего кол-ва разрядов получилась достаточно близкой к энтропии, следовательно, код можно считать эффективным. При этом для сравнения можно вычислить величину K для равномерного кода: