Ниже показано, как бинарные коды фиксированной длины и беспрефиксные коды могут быть представлены в виде двоичных деревьев, где каждый лист соответствует кодовому слову, левое ребро обозначает бит $``0’’$, а правое — бит $``1’’$.

 

Бинарные коды фиксированной длины

Код фиксированной длины над алфавитом из $n$ символов с длиной кодового слова $L = \lceil \log_2 n \rceil$ соответствует полному двоичному дереву глубины $L$. Каждый лист располагается ровно на уровне $L$.

 

Пример

Пусть $\Sigma = \lbrace A, B, C, D \rbrace$, тогда $L = 2$.

Дерево может выглядеть так:

image

Пути:

СимволПутьКодовое слово
Aвлево $\rightarrow$ влево00
Bвлево $\rightarrow$ вправо01
Cвправо $\rightarrow$ влево10
Dвправо $\rightarrow$ вправо11

Поскольку все листья находятся на одной глубине, декодирование тривиально: достаточно читать по 2 бита за раз.

 

Бинарные коды переменной длины

Любой код переменной длины можно представить в виде корректного двоичного дерева, в котором:

  • Каждый лист соответствует кодовому слову одного символа.
  • Так как код беспрефиксный, ни одна внутренняя вершина не является листом — то есть при достижении листа декодирование завершается.

 

Пример

Рассмотрим алфавит $\Sigma = \lbrace A, B, C, D \rbrace$ с весами, дающими следующие коды Хаффмана:

СимволКодовое слово
A0
B10
C110
D111

Глубины листьев:

image

СимволГлубина
A1
B2
C3
D3

Last updated 09 мая 2025, 23:43 +0500 . history