Рассмотрим разбиение, полученное объединением верхнего и нижнего ра з биений, получим набор отрезков.
Если отрезок одного декодирования целиком содержится в некотором отрезке другого (как a
j
6
и a
j
8
на на-
шей схеме), его на з ы вают отрезком первого рода, иначе, то е сть если он является началом отрез ка при одном
декодировании и концом при другом (как пересечение отрезков a
i
4
и a
j
5
на рисунке) — отрезком второго рода.
Лемма 2.1 (О неприводимом слове). В неприводимом слове все отрезки второго рода различны.
Предположим противное: пусть нашлось два одинаковых отрезка второго рода. Имеются четыре воз-
можности их расположения:
а)
б)
в)
г)
Рис. 7. Возможные расположения верхних и нижних слов
Разберем случай а), а для остальных случаев рассуждения аналогичны. Совпадающие отрезки второго рода
выделены штриховкой. Удалим из слова все символы от начала первого отрезка до начала второго, и «склеим»
оставшиеся слова. Полученное таким образом сло во также будет допускать неоднозначное декодирование, а это
противоречит предположению о том, что исходное слово было неприводимым.
2.1.3. Проверка однозначности декодирования
Мы хотим получить алгоритм проверки однозначности декодирования. Именно, эта процедура будет выгля-
деть примерно так: проверяем однозначность декодиро вания кодов, полученных из слов алфавита A длины не
более N , где N зависит только от схемы кодирования, и если это так, то заключаем, что и вся схема однозначна.
Рассмотрим следующую схему кодирования: исходный алфавит A = {a
1
, . . . , a
r
}, конечный алфавит B, со-
стоящий из q символов, причем каждому символу a
i
∈ A ставится в соответст вие слово B
i
∈ B
∗
длины l
i
.
Обозначим l := l
1
+ . . . + l
r
.
Ясно, что нужно проверять только неприводимые слова. Сейчас мы покажем, что длина неприводимого
слова ограничена константой. Её-то и возьмём в качестве числа N .
Зафиксируе м некоторое слово и его код, и мы хотим выяснить, может ли этот код быть неприводимым
словом. Вначале убедимся, что оно допускает по крайней мере два декодирования. Потом выпишем оба деко-
дирования, как на рис. 6.
Под кодовым словом (или просто сло вом) будем понимать код симв ола. Посчитаем максимальное число
кодовых слов одного декодиров ания, которые одновременно попадают внутрь некоторого слов а другого деко-
дирования (см. рис. 8)
Рис. 8. Слов´а внутри другого сл´ова
. Обозначим эту величину через w.
Утверждение 2.2. Максимальная длина самого короткого слова в алфавите A, порождающего (при ука-
занной выше схеме кодирования) неприводимое слово над алфавитом B, не превосходит величины
N =
(1 + l − r)(w + 1)
2
. (3)
Рассмотрим первое длинное (не содержащееся ни в каком другом) слово. Все остальные длинные слова
начинаются с о трезков второго рода. Обозначим число длинных сло в через R, а число отрезков второго рода —
через k. Получим R = 1+k. Общее число слов, лежащих внутри других, не превосходит Rw, а число не лежащих
внутри (то есть длинных) — в точности равно R. Значит, всего не более Rw + R = R(w + 1) = (1 + k)(w + 1) слов.
Осталось оценить k. Заметим, что любой отрезок второго рода является началом некоторого длинног о слова.
Сколько может быть «начал»? Слово B
i
длины l
i
имеет l
i
−1 начало. Если рассматриваемое декодируемое слово
неприводимо, все отрезки второго рода должны быть различны, значит,
k 6
r
X
i=1
(l
i
− 1) = l − r, (4)
откуда получаем N 6 (1 + l − r)(w + 1). Здесь N = N
1
+ N
2
— число слов в обоих декодированиях. Осталось
заметить, что
min(N
1
, N
2
) 6
N
1
+ N
2
2
=
N
2
, (5)
и мы приходим к требуемой оценке.
19