Необходимые и достаточные условия существования префиксного кода с заданными длинами кодовых слов. Неравенство Крафта

Для применения кода на практике желательно, чтобы кодовые слова были как можно короче. Однако чем слова короче, тем их запас меньше. В этом легко убедиться, посмотрев на изображение словарного универсума на рис.6.3. Если попытаться построитьпрефиксный код с очень короткими длинами кодовых слов, то можно потерпеть неудачу - кода с такими длинами слов может не быть. Например, нетрудно убедиться, что не существует префиксного кода с длинами слов 1, 1, 2. При необходимости построитьпрефиксный код с большим числом кодовых слов заданной длины проверка существования такого кода может быть достаточно сложной. К счастью, найдены необходимые и достаточные условия на длины кодовых слов для существования префиксного и любого однозначно декодируемого кода. Эти условия известны как теорема Крафта - Макмиллана. Необходимые и достаточные условия сформулируем в виде двух теорем.

Теорема (необходимые условия). Пусть - префиксный двоичный код с длинами кодовых слов . Тогда выполняется неравенство Крафта

( 6.3)

Доказательство. Рассмотрим, сколько слов длины может быть в префиксном коде. Максимальное число таких слов равно . В этом случае все кодовых слова имеют длину .

Для каждого кодового слова длины имеется слов длины , для которых данное слово является префиксом и по этой причине не является кодовым. Это следует из структуры словарного дерева (см. рис. 6.3). Множества и слов длины , для которых кодовые слова и являются префиксами, не пересекаются, так как в противном случае более короткое из этих слов было бы префиксом более длинного. Значит, если в префиксном коде имеется слов длины слов длины слов длины 1, то число слов длины удовлетворяет неравенству

( 6.4)

Это неравенство верно для любого , в том числе и для , равного максимальной длине кодовых слов. После деления на обеих частей неравенства (6.4) его можно преобразовать к виду

( 6.5)

Слагаемое вида , представляющее в неравенстве (6.5) кодовых слов длины , можно записать в виде суммы

С учетом такого представления неравенство (6.5) можно переписать следующим образом:

где - общее число слов префиксного кода. Теорема доказана.

Выполнение неравенства Крафта доказано для префиксного кода. Однако в 1956 году Макмиллан доказал более общую теорему, согласно которой неравенство Крафта выполняется и для любого однозначно декодируемого кода. Доказательство теоремы изложено в [29], [31].

Можно также доказать, что если префиксный код полный, то в нестрогом неравенстве (6.3) будет выполняться равенство.

Теорема (достаточные условия). Если положительные целые числа удовлетворяют неравенству Крафта

то существует префиксный код с длинами кодовых слов

Доказательство. Если среди чисел имеется ровно чисел, равных , то неравенство Крафта можно записать в виде

где - максимальное из данных чисел. Из справедливости этого неравенства следует, что верны неравенства (6.5) для всех , а следовательно, и неравенство (6.4).

Для построения нужного префиксного кода должна быть возможность подходящим образом выбрать слов длины 1, слов длины 2, вообще слов длины или, иными словами, вершин кодового дерева на первом, - на втором, - на -м ярусе.

Из неравенства (6.4) при получаем , т. е. требуемое число не превосходит общего числа вершин первого яруса. Значит, на этом ярусе можно выбрать какие-то вершин в качестве концевых ( равно 0, 1 или 2). Если это сделано, то из общего числа вершин второго яруса (их ) для построения кода можно использовать лишь . Однако и этого числа вершин хватит, так как из неравенства (6.4) при вытекает

Аналогично, при имеем неравенство:

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

Докажем, что если для длин кодовых слов выполняется равен - равенство ,то код является полным. Предположим противное, то есть, что код не полный. Тогда к нему можно добавить, по крайней мере, одно кодовое слово (длины ) и получить новый префиксный код, для которого, с одной стороны, , а с другой стороны, в силу теоремы Крафта, Полученное противоречие доказывает утверждение.

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

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

Наши рекомендации