Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
основы информационных технологий.doc
Скачиваний:
347
Добавлен:
15.02.2016
Размер:
13.76 Mб
Скачать

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

Для применения кода на практике желательно, чтобы кодовые слова были как можно короче. Однако чем слова короче, тем их запас меньше. В этом легко убедиться, посмотрев на изображение словарного универсума на рис.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) привытекает

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

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

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

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

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