Возникает вопрос: каковы возможные длины кодовых слов однозначно декодируемого, в частности, префиксного кода? Понятно, например, что не существует двоичного префиксного кода с длинами кодовых слов 1, 1,2. Несколько труднее ответить на такой вопрос: существует ли префиксный двоичный код, содержащий 100 слов с длинами от 1 до 100? Оказывается, существует. Кодовое дерево для требуемого кода, содержащее 100 «этажей», изображено на рис. 9 (пунктиром отмечены пропущенные этажи).
Вопросы такого рода можно было бы продолжить, отвечая на них в каждом конкретном случае. Но на самом деле можно установить общие условия (необходимые и достаточные) для существования префиксного и вообще произвольного однозначно декодируемого кода.
код, дерево которого схематически изображено на рис. 10.
Пусть nh — число кодовых слов длины k (nk совпадает с числом концевых вершин k-ro этажа). Конечно, справедливо неравенство
так как 2к — максимально возможное число вершин h.j k-u этаже двоичного дерева. Однако в случае префиксного кода для пк можно получить гораздо более точную оценку, чем (1). В самом деле, если пи п2, ... ♦ nh_t — число концевых вершин 1; 2; ... ; k—1 этажей дерева, то число всех вершин k-ro этажа кодового дерева равно
и потому
Деля обе части последнего неравенства на 2fc, получаем:
или иначе
Неравенство (3) верно для любого(L — максимальная длина кодовых слов), в частности
Если /х, h, .... fa — длины кодовых слов alf а2, ... , aN, то неравенство (4) запишется в таком виде:
Это и есть то условие, которому обязаны удовлетворять длины кодовых слов двоичного префиксного кода.
Оказывается, что неравенство (5), называемое в теории кодирования неравенством Крафта, является также достаточным условием того, чтобы существовал префиксный код
Рассуждаем так. Если среди чисел /2, ... , IN имеется ровно п, чисел, равных то неравенство (5) можно переписать в виде (4), где L — максимальное из данных чисел. Из справедливости(4) подавно следует, что верны неравенства (3) для всеха, следовательно, и неравенство (2).
Обратимся к рис. 11, на котором изображено дерево «высоты» L, имеющее наибольшее число вершин и ветвей (ребер). Все концевые вершины (их 2£) такого дерева находятся на последнем L-ом этаже, а из каждой вершины промежуточного этажа исходят ровно две ветви.
Для построения нужного префиксного кода мы должны подходящим образом выбрать я. ГЛПй плины 1, Пг слов длины 2, вообще nh слов длины kили, иными словами, щ концевых вершин на первом, щ — на втором, ... , «а — на А-ом этаже.
Из неравенства (2) при k= \ получаем «i<2, т. е. требуй мое число не превосходит общего числа вершин первого этажа. Значит, на этом этаже можно выбрать какие-то я* вершин в качестве концевых (/ii равно О, I или 2). Если это сделано, то из общего числа вершин второго этажа (их 2®=4) для построения кода можно использовать лишь 4—2лг (почему?). Однако нам хватит и этого числа вер- шин, так как из неравенства (2) при k=2 вытекает
Аналогично, при k=3 имеем неравенство:
Правая часть его вновь совпадает с допустимым для построения префиксного кода числом вершин третьего этажа, если на первых двух этажах уже выбраны пх и п2 концевых вершин. Значит, снова можно выбрать па концевых вершин на третьем этаже. Продолжая этот процесс вплоть до k=L, мы и получим требуемый код.
Если кодовый алфавит содержит d символов, то подобным же образом доказывается, что необходимым и достаточным условием для существования префиксного кода с длинами слов /f, /s, ... , In является выполнение неравенства
Оказывается, неравенству (6) обязаны удовлетворять и длины кодовых слов произвольного однозначно декодируемого кода. Поэтому, если существует однозначно декодируемый код с длинами слов U, U................... lN, то существует и префиксный код с теми же длинами слов. Префиксными же кодами пользоваться удобнее по причине, указанной в дополнении 11 к § 4.
0 коммент.:
Отправить комментарий