Префиксные коды

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

Рассмотрим примеры кодирования. Понятно, что кодирование информации допускается тогда, когда возможно последующее однозначное декодирование

 

Символ Код1 Код2 Код3 Код4
x1
x2
x3
x4

Видно, что код 1 не дает однозначного декодирования. Код 2, хотя и выражен более тонким образом, обладает тем же недостатком, так как при передаче последовательности x1x1, она будет закодирована в 00, что совпадает с кодовым словом для x3. Коды 1 и 2 не являются, таким образом, различимыми. Код 3 также не позволяет производить однозначное декодирование. Однозначно декодируемыми являются только коды обладающие свойством префикса.

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

Коды 1,2,3 не обладают свойством префикса, а код 4 обладает.

Например, код 0111100 декодируется в последовательность символов x1x4x2x1.

Для построения префиксных кодов используется двоичное дерево.

Разобьем дерево на уровни и тогда каждому коду можно присвоить определённый вес.

- вес j-кода j=1,М, где М- число допустимых кодов, k - уровень дерева. Дерево может иметь и более двух ветвей D>2.

Тогда вес j - кода будет равен , где D - основание системы счисления.