Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety Kodirovanie.docx
Скачиваний:
3
Добавлен:
16.09.2019
Размер:
76.24 Кб
Скачать

2 Вопрос

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

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

Код Хаффмана

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

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

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

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

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

  Энтропия

Код Шеннона-Фано

Все буквы записываются в порядке убывания их вероятностей, затем делятся на равновероятные группы, которые обозначаются 0 и 1, затем вновь делятся на равновероятные группы и т.д

Средняя длина кода определяется по формуле

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

Пусть имеются две буквы алфавита 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. Избыточность от округления будет составлять 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]