ПРОБЛЕМЫ ПЕРЕДАЧИ ИНФОРМАЦИИ
Том 55
2019
Вып. 3
УДК 621.391.15 : 519.72
© 2019 г.
С.С. Марченков
ОБ АЛФАВИТНОМ КОДИРОВАНИИ СВЕРХСЛОВ1
Рассматривается алфавитное кодирование сверхслов. Устанавливаются кри-
терии однозначности кодирования для случаев конечного и бесконечного кодов.
Доказывается, что в случае бесконечного кода проблема распознавания неод-
нозначности кода является m-полной в классе10 аналитической иерархии
Клини.
Ключевые слова: алфавитное кодирование, сверхслово, аналитическая иерархия
Клини.
DOI: 10.1134/S0555292319030069
В теории кодирования хорошо известен результат Ал.А. Маркова [1-3] - кри-
терий однозначности алфавитного кодирования. Этот результат можно обобщать
на сверхслова в двух направлениях: находить критерии однозначности алфавитно-
го кодирования для кодирования сверхслов конечным кодом либо для кодирования
сверхслов бесконечным кодом. Эти два направления существенно отличаются по
сложности получаемых результатов. Если для конечного кода сложность критерия
близка к сложности критерия из [1-3], то для бесконечного кода возникают пробле-
мы, связанные как с заданием кода, так и с описанием однозначных кодов.
В данной статье мы сначала получаем критерий однозначности кода для кодиро-
вания сверхслов конечным кодом (теорема 1) и переносим его на случай бесконеч-
ных кодов (теорема 2). Затем рассматриваем сложность проблемы распознавания
однозначности бесконечного кода. В теореме 3 в терминах аналитической иерархии
Клини устанавливается “верхняя оценка” сложности этой проблемы, а в теореме 4
с использованием функциональных уравнений - такая же “нижняя оценка”.
Введем необходимые понятия. Пусть A - конечный алфавит. Через A обозначим
множество всех (конечных) слов в алфавите A, включая пустое слово Λ, а через A -
множество всех сверхслов в алфавите A (упорядоченных счетно-бесконечных по-
следовательностей, составленных из букв алфавита A). Если a ∈ A, то пусть |a|
обозначает длину слова a.
Если A = {a1, . . . , ak} и B - алфавит, то алфавитным кодированием (из A в B)
называется отображение
ϕ: A → B \ {Λ}.
Отображение ϕ продолжается на множество A: если ai1 . . .ai
∈ A, то
ϕ(ai1 . . . ai
) = ϕ(ai1)...ϕ(ai).
Считается также, что ϕ(Λ) = Λ.
1 Работа выполнена при частичной финансовой поддержке Российского фонда фундаментальных
исследований (номер проекта 19-01-00200).
83
Обычно в кодировании ϕ рассматривают только множество
C(ϕ) =(a1), . . . , ϕ(ak)},
которое, собственно, и называют кодом. В дальнейшем код C(ϕ) будем записывать
в виде C = {C1, . . ., Ck}. Код C называется однозначным, если различным после-
довательностям (i1, . . . , im) из {1, 2, . . . , k} \ {Λ} соответствуют различные слова
Ci1 . . . Cim .
Далее будем рассматривать кодирование и декодирование сверхслов. Это означа-
ет, в частности, что последовательности (i1, i2, . . .) берутся из множества {1, . . . , k},
а соответствующие им сверхслова Ci1Ci2 . . . принадлежат множеству B. Понятие
однозначности кода естественным образом переносится на сверхслова.
С кодом C = {C1, . . . , Ck} свяжем множество S =0, β1, . . . , β}, состоящее из
пустого слова Λ (считаем, что β0 = Λ) и всех непустых слов β1, . . . , β, которые
одновременно являются собственными (отличными от кодовых слов) префиксами
и суффиксами подходящих кодовых слов. Определим ориентированный граф GC
с+ 1 вершинами, которые помечены словами множества S. Для упрощения изло-
жения вершины графа GC будем отождествлять с соответствующими словами из S.
Для произвольных двух вершин βi, βj (допускается i = j) дуга от вершины βi к вер-
шине βj существует в графе GC только в том случае, когда найдутся такие кодовые
слова Cp, Cq1 , . . . , Cqs , что
Cp = βiCq1 . . . Cqs βj.
При этом если i = 0 и j = 0, то возможно s = 0; если только один из индексов i, j
равен 0, то должно быть s 1; если же i = j, то должно быть s 2. Считаем,
что в случае существования дуги из вершины βi в вершину βj на ней выписана
соответствующая последовательность кодовых слов Cq1 . . . Cqs. Обычным образом
вводится понятие ориентированного пути в графе GC. Длиной пути считаем число
входящих в него дуг.
Доказательство теоремы 1 проводится в духе доказательства соответствующего
результата при кодировании конечных слов [1-3].
Теорема 1. Алфавитный код C = {C1,C2,...,Ck} является однозначным то-
гда и только тогда, когда в графе GC отсутствуют ориентированные пути длины
+ 1, выходящие из вершины Λ.
Доказательство. Предположим сначала, что в графе GC имеется ориенти-
рованный путь Γ длины+1, выходящий из вершины Λ. Тогда среди вершин, входя-
щих в путь Γ, по крайне мере одна вершина встречается дважды. Пусть βi - первая
(от вершины Λ) вершина пути Γ, которая входит в путь Γ не один раз. Рассмот-
рим подпуть Γ пути Γ, который начинается в вершине Λ и оканчивается вторым
вхождением вершины βi в путь Γ. Образуем из Γ бесконечный путь Δ, повторяя
после вершины βi бесконечное число раз цикл из вершины βi в вершину βi. Пусть
сверхслово W получается последовательным выписыванием всех слов, стоящих в
вершинах и дугах пути Δ. Утверждается, что сверхслово W допускает по крайней
мере два декодирования.
В самом деле, предположим, что указанное сверхслово W имеет вид
β0C(1)1 . . .C(1)sβj1 C(2)1 . . . C(2)sβj2 . . . βjr C(r+1)1 . . .C(r+1)s
βjr+1 . . . ,
1
2
r+1
где в сверхслове W обозначены все вхождения слов βjm из множества S и кодовых
слов Cqp) (выписанных на дугах пути Δ). Тогда согласно определению графа GC
одно декодирование сверхслова W имеет вид
C(1)1 . . .C(1)sβj1 , C(2)1, . . ., C(2)s, βj2C(3)1...C(3)s
βj3 , . . .,
1
2
3
84
а другое -
C(1)1, . . ., C(1)s, βj1C(2)1...C(2)sβj2 , C(3)1, . . . , C(3), . . .s
1
2
3
Обратно, предположим, что существует сверхслово W, которое допускает два
различных декодирования:
W =Ci1Ci2...Cin ...=Cj1Cj2 ...Cjn ...
Если для двух различных последовательностей i1, i2, . . . , in и j1, j2, . . . , jm выполня-
ется равенство
Ci1 Ci2 . . . Cin = Cj1 Cj2 . . .Cjm ,
(1)
то код C не является однозначным уже для слов конечной длины. Тогда, как известно
[1-3], в графе GC существует ориентированный цикл, проходящий через вершину Λ.
Очевидно, что в этом случае в графе GC будут существовать и ориентированные
пути сколь угодно большой длины, выходящие из вершины Λ.
Далее предполагаем, что равенство (1) не выполняется ни для каких различ-
ных последовательностей i1, i2, . . . , in и j1, j2, . . . , jm. Это означает, в частности, что
при любом n конец слова Ci1Ci2 . . . Cin в сверхслове W лежит внутри некоторого
слова Cjm . То же самое справедливо и для слов Cj1 Cj2 . . . Cjm .
Рассмотрим слова Ci1 и Cj1 . При |Ci1 | = |Cj1 | получаем i1 = j1, и сверхслово
можно “сократить” на слово Ci1 . Поэтому при |Ci1 | > |Cj1 | слово Ci1 представимо
в виде Ci1 = Cj1 . . . Cjm β1, где m 1 и β1 - собственный префикс слова Cjm+1,
который, очевидно, является также собственным суффиксом слова Ci1 . В случае
|Ci1 | < |Cj1 | справедливо симметричное представление Cj1 = Ci1 . . . Cin β1, где β1 -
собственный префикс слова Cin+1 и собственный суффикс слова Cj1.
Таким образом, в графе GC вершина Λ будет соединена дугой с вершиной β1,
при этом на дуге выписано слово Cj1 . . . Cjm либо слово Ci1 . . . Cjn , составленные из
кодовых слов кода C.
Далее продолжаем по индукции. Пусть в сверхслове W уже найдено подслово βp
(оно может совпадать с ранее найденным словом βq), которое является как собствен-
ным префиксом кодового слова из C, так и собственным суффиксом (вообще говоря,
другого) кодового слова из C. И пусть слово βp либо является собственным префик-
сом слова Cin+1 (входящего в начало Ci1 . . . Cin Cin+1 сверхслова W) и собственным
суффиксом слова Cjm (входящего в начало Cj1 . . . Cjm сверхслова W), либо наоборот
- собственным суффиксом слова Cin (входящего в начало Ci1 . . . Cin сверхслова W)
и собственным префиксом слова Cjm+1 (входящего в начало Cj1 . . . CjmCjm+1 сверх-
слова W ). Наконец, предположим, что в графе GC имеется ориентированный путь,
ведущий из вершины Λ в вершину βp.
Последующий этап доказательства использует только тот факт, что слово Cjm
заканчивается внутри слова Cin+1, имея с данным словом непустое пересечение βp
(первый случай), или слово Cin заканчивается внутри слова Cjm+1 , пересекаясь
с этим словом по слову βp (второй случай). Поэтому, как и в базисе индукции, рас-
сматриваем либо расположение сверхслова Cjm+1 . . . по отношению к слову Cin+1 ,
либо расположение сверхслова Cin+1 . . . по отношению к слову Cjm+1 . Соответству-
ющие рассуждения полностью аналогичны рассуждениям из базиса индукции, и мы
их опускаем.
Очевидно, что на основе доказанной теоремы легко определить алгоритм про-
верки однозначности алфавитного кодирования сверхслов. Отметим еще, что в фор-
мулировке теоремы 1 можно с равным успехом говорить об отсутствии в графе GC
ориентированных циклов, “достижимых” из вершины Λ: граф GC имеет+1 вершин,
85
и потому существование в графе GC ориентированного пути длины+1 равносильно
существованию в нем достижимого из вершины Λ ориентированного цикла.
Всюду далее мы будем рассматривать алфавитные коды C = {C1, C2, . . .}, со-
стоящие из бесконечного числа кодовых слов. Так же, как для конечного случая,
определяем множество S и ориентированный граф GC. Однако теперь как множе-
ство S, так и граф GC могут быть бесконечными. Вместе с тем кодировать кодом C
мы будем только сверхслова.
Теорема 2 представляет собой несложное обобщение теоремы 1, и потому ее до-
казательство мы не приводим.
Теорема 2. Алфавитное кодирование C = {C1,C2,...} является однозначным
тогда и только тогда, когда в графе GC отсутствуют ориентированные пути
бесконечной длины, выходящие из вершины Λ.
В оставшейся части статьи мы хотим оценить сложность распознавания одно-
значности кодирования. Для этого нам придется некоторым стандартным образом
задавать бесконечные множества {C1, C2, . . .} кодовых слов. Примем следующее со-
глашение: множество {C1, C2, . . .} задается одноместной функцией f с областью
определения B (напомним, что кодовые слова C1, C2, . . . рассматриваются в алфа-
вите B) и областью значений {0, 1}. При этом для любого слова C ∈ B равенство
f (C) = 1 выполняется тогда и только тогда, когда C ∈ C. Таким образом, f пред-
ставляет собой характеристическую функцию кода C.
Пусть N = {0, 1, . . .}, и пусть PN обозначает множество всех (всюду определен-
ных) функций на N. Функции из PN будем называть функциями счетнозначной
логики. Для любого n 1 и любого множества Q ⊆ PN обозначаем через Q(n)
множество всех n-местных функций из Q.
Обозначим через U(f) отношение “код, определяемый функцией f, не является
однозначным”. Чтобы оценить сложность отношения U(f), воспользуемся классом
10 аналитической иерархии Клини (см., например, [4]). Напомним, что класс10
(индекс 1 означает, что квантификация проводится по функциональным перемен-
ным, а индекс 0 - по числовым) состоит из всех отношений, которые представимы
в виде
(1g1) . . . (1gm)(0y1) . . . (0yn)R(f1, . . . , fk, g1, . . . , gm, x1, . . . , x, y1, . . . , yn),
где f1, . . . , fk, g1, . . . , gm - переменные для функций из PN, x1, . . . , x, y1, . . . , yn - чис-
ловые переменные, принимающие значения из N, а R - рекурсивное отношение (от
функциональных и числовых переменных).
Теорема 3. Отношение U(f) принадлежит классу ∃10 аналитической ие-
рархии Клини.
Доказательство. Используем критерий однозначности кода, установленный
в теореме 2. Отношение U(f) представим в форме
(1g)(0y)R(f, g, y).
Содержательно функция g(y) будет определять бесконечную ветвь в дереве GC , где
кодирование C задается функцией f. Более подробно: по каждому числу y 0
функция g будет выдавать номер (в некоторой стандартной вычислимой нумера-
ции ν множества всех упорядоченных наборов слов в алфавите B) (y + 1)-го набора
из бесконечной последовательности
(β0, C(1)i
,...,C(1)i
t1), (βt1,C(2)j
,...,C(2)j
t2), (βt2,C(3)k
,...,C(3)kt3), ...,
(2)
1
p
1
q
1
r
86
где β0, βt1 , βt2 , . . . - слова из множества S, построенного для кодирования C, β0 = Λ,
C(d) - кодовые слова, и каждое из слов
β0C(1)i
...C(1)i
βt1 , βt1 C(2)j
...C(2)j
βt2 , βt2 C(3)k
...C(3)kβt3 , . . .
(3)
1
p
1
q
1
r
также является кодовым словом. В соответствии с данным описанием для каждого y
отношение R “находит” набор слов с номером g(y), затем “проверяет”, что выбран-
ный набор имеет вид, указанный в последовательности (2). Для этого отношение R
“выполняет” следующие действия.
Прежде всего, проверяет, что все слова набора с номером g(y), отличные от перво-
го и последного слова, являются кодовыми словами. Это действие легко выполнить,
обращаясь к функции f (напомним, что f является характеристической функцией
рассматриваемого кода). Далее при y = 0 отношение R находит наборы с номерами
g(y - 1), g(y + 1) и убеждается, что последнее слово набора ν(g(y - 1)) совпадает
с первым словом набора ν(g(y)), а последнее слово данного набора - с первым словом
набора ν(g(y + 1)) (если y = 0, то первое слово набора ν(g(y)) должно быть пустым,
а последнее - совпадать с первым словом набора ν(g(1))). При этом дополнительно
проверяется, что в случае совпадения с пустым словом ровно одного из крайних
слов набора ν(g(y)) этот набор содержит не менее трех слов, а в случае совпадения
с пустым словом обоих крайних слов набора ν(g(y)) - не менее четырех. Затем отно-
шение R “склеивает” все слова набора ν(g(y)) и проверяет, что полученное слово (ко-
торое присутствует в последовательности (3)) является кодовым словом (при этом
вновь используется функция f). Заметим, что выполняемые действия гарантиру-
ют, что все непустые слова последовательности βt1 , βt2 , . . . являются одновременно
собственными префиксами и собственными суффиксами кодовых слов кода C.
Нетрудно теперь понять, что если для данной функции f (принимающей только
значения 0 и 1) найдется такая фукция g, что при любом y выполняется опре-
деленное выше отношение R(f, g, y), то функция f представляет собой характери-
стическую функцию кода, не являющегося однозначным. Понятно также, что при
несуществовании функции g с указанными свойствами соответствующий код будет
однозначным.
Теорему 3 можно рассматривать как “оценку сверху” сложности отношения U(f).
Чтобы показать, что отношение U(f) имеет такую же “оценку снизу”, нам придется
ввести некоторую формализацию процесса “вычисления” произвольного отношения
вида
(1g)(0y)R(f, g, y).
По ряду соображений технического характера нам будет удобно воспользоваться
формализмом функциональных уравнений счетнозначной логики [5,6].
Определим язык LN функциональных уравнений. Предполагаем, что каждая
функция из PN имеет индивидуальное обозначение. Для обозначения n-местных
функций из PN используем символы
ν
, которые называем функциональными кон-
стантами. Наряду с функциональными константами рассматриваем функциональ-
ные переменные. Для обозначения n-местных функциональных переменных исполь-
зуем символы ϕ(n)i. Областью значений функциональной переменной ϕ(n)i служит
множество P(n)N. В случае, когда это не приводит к недоразумению, верхние ин-
дексы у функциональных констант и функциональных переменных будем опускать.
Помимо функциональных переменных используем обычные предметные (числовые)
переменные x1, x2, . . . с областью значений N.
87
Язык LN функциональных уравнений состоит из предметных переменных xi
(i = 1, 2, . . . ), функциональных переменных ϕ(n)i (i, n = 1, 2, . . . ), функциональных
констант
ν
, знака равенства = , левой и правой скобок и запятой.
Пусть Q ⊆ PN. Определим понятие терма над Q. Всякая предметная переменная
есть терм над Q. Если t1, . . . , tn - термы над Q,
ν
- функциональная константа,
служащая обозначением функции из Q, а ϕ(n)i - функциональная переменная, то
выражения
f(n)ν(t1, . . . , tn), ϕ(n)i(t1, . . . , tn)
суть термы над Q. Равенством над Q называем любое выражение вида t1 = t2, где
t1, t2 - термы над Q. Равенства над Q называем также функциональными уравне-
ниями над Q.
Пусть t1 = t2 - функциональное уравнение над Q, и пусть ϕ(n1)i,...,ϕ(nm)
-
1
im
все функциональные переменные, входящие в уравнение t1 = t2. Решением урав-
нения t1 = t2 называем систему функций {
ν1
,...,
νm
} из PN, которая после
замены каждой функциональной переменной ϕ(ns) соответствующей функциональ-i
s
ной константой
νs превращает уравнение t1 = t2 в тождество (относительно всех
входящих в уравнение предметных переменных).
Пусть Ξ - конечная система уравнений над Q. Решением системы уравнений Ξ
называем систему функций из PN, которая является решением каждого уравнения,
входящего в Ξ. Будем говорить, что система уравнений Ξ выполнима, если систе-
ма Ξ имеет решение. Проблема выполнимости для систем функциональных урав-
нений состоит в том, чтобы по произвольной системе функциональных уравнений
определить, является ли данная система выполнимой.
В [7] установлено, что проблема выполнимости для систем функциональных
уравнений, содержащих только функциональные константы 0, x + 1, принадлежит
классу10 аналитической иерархии Клини. Более того, эта проблема является
m-полной в данном классе. Чтобы использовать указанную проблему в теореме 4,
нам потребуется определить так называемое дерево решений системы функциональ-
ных уравнений над множеством функциональных констант {0, x + 1}. Для произ-
вольного множества функциональных констант это сделано в работе [6]. Мы воспро-
изведем из нее основные этапы построения дерева решений применительно к мно-
жеству констант {0, x + 1}.
Итак, пусть Ξ - система функциональных уравнений, содержащая только функ-
циональные константы 0, x + 1. По системе Ξ будем строить бесконечное дерево Γ
(дерево решений системы уравнений Ξ), вершины которого также могут иметь бес-
конечную степень. В каждой вершине дерева Γ, за исключением корня, будут опре-
деляться в конечном числе точек значения всех функций, составляющих предпо-
лагаемое решение системы Ξ. В некоторых вершинах дерева Γ процесс дальнейше-
го построения дерева (из данной вершины) будет обрываться. Основное свойство
дерева Γ состоит в том, что существует взаимно-однозначное соответствие между
бесконечными ветвями дерева Γ и решениями системы уравнений Ξ.
Пусть x1, . . . , xn - все предметные переменные системы Ξ, ϕ1, . . . , ϕm - все ее
функциональные переменные, а ϕ1, . . . , ϕk - все вхождения функциональных пере-
менных в систему Ξ (некоторые функциональные переменные могут входить в си-
стему Ξ несколько раз). Зафиксируем эффективные нумерации множеств Nn и Nk
(можно, например, перечислять элементы множества Nn группами с одинаковым
значением суммы координат в группе и лексикографическим порядком в каждой
группе). Наборы с номером i будем обозначать через x(n)i и x(k)i соответственно.
Будем также предполагать, что x(n)0 - нулевой набор.
88
Дерево Γ определяется по ярусам (вершины, расположенные на одном и том же
расстоянии от корня дерева). При этом на ярусе с номером ( 1) будут рассмат-
риваться набор x(n)ℓ-1 (для предметных переменных x1, . . . , xn) и наборы x(k)0, x(k)1, . . .
(для вхождений ϕ1, . . . , ϕk функциональных переменных). На-м ярусе выполняется
попытка определить в конечном числе точек возможное решение (g1, . . . , gm) систе-
мы Ξ, отвечающее значениям x(n)ℓ-1 предметных переменных системы Ξ и “значениям”
x(k)0, x(k)1, . . . функциональных переменных из последовательности ϕ1, . . . , ϕk.
Подробно опишем первый шаг в построении дерева Γ - определение вершин пер-
вого яруса. Придадим всем предметным переменным системы Ξ значения из набо-
ра x(n)0 (т.е. значения 0). В вершинах v0, v1, . . . первого яруса присвоим вхождени-
ям ϕ1, . . . , ϕk значения, соответственно, из наборов x(k)0, x(k)1, . . . При этом каждый
терм системы Ξ, не начинающийся символом функциональной константы, получит
некоторое числовое значение. Если терму t уже присвоено значение a и в систе-
му Ξ входит терм t + 1, то присвоим этому терму значение a + 1 (функциональной
константе 0, естественно, присваивается значение 0). Таким образом, всем термам
системы Ξ будут присвоены значения из N.
Указанное присваивание значений термам системы Ξ может оказаться проти-
воречивым. Так, для одной и той же переменной ϕj за счет использования раз-
личных вхождений в последовательность ϕ1, . . . , ϕk одному и тому же терму вида
ϕj(a1, . . ., ap) могут быть присвоены различные значения. Кроме того, могут ока-
заться различными и значения термов, образующих равенство системы Ξ. В этих
случаях построение дерева Γ обрываем и соответствующую вершину из дерева Γ
удаляем.
Предположим, что описанное выше “означивание” термов системы Ξ в вершине vi
к противоречию не приводит. Тогда, очевидно, в вершине vi для значений предмет-
ных переменных из набора x(n)0 мы имеем корректное определение (в конечном числе
точек) функций g1, . . ., gm, образующих возможное решение системы уравнений Ξ.
Продолжая далее по индукции, предположим, что уже определены ярусов де-
рева Γ. Выберем в ярусе некоторую вершину vi. Предполагаем, что в вершине vi
функции g1, . . . , gm (из возможного решения системы уравнений Ξ) получили кор-
ректные определения в конечном числе точек, отвечающих наборам x(n)0, . . . , x(n)ℓ-1
для предметных переменных системы Ξ и некоторым наборам x(k)i,...,x(k) дляi
1
вхождений функциональных переменных в систему Ξ. Во всех вершинах v0, v1, . . .
яруса (+1) дерева Γ для предметных переменных системы Ξ будет рассматриваться
набор x(n) и соответственно наборы x(k)0, x(k)1, . . . для вхождений функциональных
переменных.
Определение функций g1, . . . , gm в вершине vi мало отличается от аналогичного
определения на первом шаге. После присваивания значений из набора x(n) предмет-
ным переменным и значений из набора x(k)i вхождениям ϕ1, . . . , ϕk функциональных
переменных проверяем корректность такого присваивания. Единственное дополни-
тельное требование - новые значения, полученные здесь для функций g1, . . . , gm,
необходимо проверить на совместимость со значениями этих функций, полученны-
ми на пути в вершину vi.
Перейдем к основному свойству дерева Γ. Предположим, что в дереве Γ имеется
бесконечная ветвь Δ. Проходя по всем вершинам ветви Δ, мы получим определение
функций g1, . . ., gm, которые, как нетрудно видеть, образуют решение системы Ξ.
Заметим, что функции g1, . . . , gm на ветви Δ определяются, вообще говоря, не пол-
ностью, а лишь на некоторых подмножествах декартовых степеней множества N.
Это те минимальные (по включению) подмножества, которые необходимы для вы-
89
полнения всех уравнений системы Ξ. Вместе с тем значения функций g1, . . . , gm
вне данных подмножеств никак не сказываются на выполнимости уравнений систе-
мы Ξ (эти значения не “имплицируются” системой уравнений Ξ). Поэтому решение
g1, . . . , gm можно доопределить до всюду определенного решения системы уравне-
ний Ξ. Таким образом, любая бесконечная ветвь дерева Γ определяет решение си-
стемы уравнений Ξ, состоящее, вообще говоря, из частичных функций.
Обратно, предположим, что всюду определенные функции g1, . . . , gm образуют
решение системы уравнений Ξ. Тогда, анализируя процедуру построения дерева Γ,
нетрудно убедиться, что в дереве Γ существует бесконечная ветвь. Так, если подста-
вить в систему уравнений Ξ вместо функциональных переменных ϕ1, . . . , ϕm функ-
ции g1, . . . , gm, а вместо всех предметных переменных - значение 0, то в некоторой
вершине vi первого яруса дерева Γ рассматриваемый набор x(k)i будет являться на-
бором “истинных” значений всех термов системы Ξ, которые начинаются функцио-
нальными переменными. Такое же положение возникнет на втором ярусе дерева Γ,
когда будут рассматриваться вершина vj , соединенная ребром с вершиной vi, и на-
боры x(n)1 для предметных переменных системы Ξ и x(k)j для вхождений ее функци-
ональных переменных. В результате в дереве Γ будет выделена бесконечная ветвь,
которая соответствует решению g1, . . . , gm.
Отметим, что дерево Γ определяется по системе уравнений Ξ эффективно. Это
значит, что имеется алгоритм (он описан выше), который по координате произволь-
ной вершины v (координата задается системой наборов x(n)ℓ-1, x(k)i,...,x(k)) опреде-i
1
ляет, принадлежит ли вершина v дереву Γ, а если принадлежит, то каковы значения
функций g1, . . ., gm в этой вершине.
Теорема 4. Отношение U(f) является m-полным в классе ∃10 аналитиче-
ской иерархии Клини.
Доказательство. В теореме 3 установлена принадлежность отношения U(f)
классу10. Поэтому для доказательства теоремы достаточно показать, что любое
множество из класса10 m-сводится к множеству U(f). То, что всякое множество
из класса10 можно представить в виде множества решений подходящей системы
функциональных уравнений над множеством функциональных констант {0, x + 1},
установлено с использованием формализма Эрбрана - Гёделя в работе [7] и с исполь-
зованием формализма Клини в работе [5]. Следовательно, остается показать, как
по произвольной системе функциональных уравнений Ξ над множеством {0, x + 1}
эффективно определить характеристическую функцию f кода C, чтобы система Ξ
имела решение тогда и только тогда, когда код C не является однозначным.
Воспользуемся построенным выше деревом Γ решений системы Ξ. Итак, пред-
полагаем, что каждой вершине v яруса дерева Γ приписан набор c(v), который
состоит из набора x(n)ℓ-1 значений переменных x1, . . . , xn, а также всех наборов, зада-
ющих части графиков функций g1, . . . , gm и определенных на пути от корня дерева Γ
к вершине v. Набор из графика функции gi, отвечающий аргументам a1, . . . , at, за-
писываем в виде (a1, . . . , at, gi(a1, . . . , at)). Порядок наборов в c(v) следующий: сна-
чала набор x(n)ℓ-1, затем в порядке возрастания индекса i наборы из графика функции
gi(y1, . . ., yt), при этом для фиксированного i наборы из графика функции gi упо-
рядочены в соответствии с нумерацией множества N(t).
В дальнейшем набор из c(v) будем записывать в виде слова в алфавите {0, 1, 2,
3, 4}, а именно: каждое число из N представляется в стандартной двоичной записи;
двоичные записи чисел из x(n)ℓ-1 отделяются символом 2, то же самое для двоичных
записей аргументов и значений функций в графиках функций gi; символ 3 отделяет
“блок” x(n)ℓ-1 от графика функции g1, а также от графиков соседних функций gi;
символ 4 стоит после графика функции gm.
90
По дереву Γ (с пометками в вершинах) определим код C(Γ). Прежде всего, для
любой вершины v первого яруса внесем в код C(Γ) слово c(v). Далее, для любой
(конечной или бесконечной) ветви v1, v2, . . . дерева Γ внесем в код C(Γ) слова
c(v1)c(v2), c(v3)c(v4), . . . , c(v2j-1)c(v2j ), . . . ,
которые будем называть нечетными парами (если ветвь содержит нечетное число
вершин, то заканчиваем последней нечетной парой c(v2j-1)c(v2j)). Аналогично, вно-
сим в код C(Γ) слова
c(v2)c(v3), c(v4)c(v5), . . . , c(v2j )c(v2j+1), . . . ,
которые называем четными парами (если ветвь содержит четное число вершин, то,
как и выше, заканчиваем последней четной парой c(v2j )c(v2j+1)).
Очевидно, что для любой бесконечной ветви v1, v2, . . . сверхслово
c(v1)c(v2)c(v3)c(v4) . . . c(v2j-1)c(v2j ) . . .
допускает два декодирования: одно - последовательными нечетными парами, а дру-
гое - словом c(v1) и последующими четными парами.
Докажем теперь, что если имеется сверхслово W, которое допускает (в коде C(Γ))
два различных декодирования, то в дереве Γ существует бесконечная ветвь.
Вообще говоря, указанные декодирования могут давать один и тот же результат
на некотором непустом начале сверхслова W . Мы хотим исключить этот вариант
из рассмотрения (на дальнейшем построении бесконечной ветви в дереве Γ данное
преобразование не скажется). Поэтому будем предполагать, что два упомянутых
декодирования различаются уже по первым кодовым словам.
Заметим теперь, что сверхслово W не может начинаться словом вида c(v)c(v),
где v - вершина первого яруса дерева Γ. В самом деле, поскольку нечетные и четные
пары из C(Γ) имеют вид c(vt)c(vt+1), где vt, vt+1 - различные вершины дерева Γ,
два различных декодирования сверхслова W должны начинаться одним и тем же
кодовым словом c(v). Однако эту возможность мы исключили.
Далее замечаем, что началом сверхслова не может являться слово c(vt), где t 2.
Действительно, если t 2, то в случае нечетного t любая из расшифровок долж-
на начинаться с одной и той же нечетной пары c(vt)c(vt+1), что мы исключили.
Аналогичные рассуждения применимы в случае четного t.
Итак, сверхслово W начинается словом c(v1), за которым следует слово c(v2),
причем v1, v2 - вершины первого и второго ярусов дерева Γ. Следовательно, в одном
из декодирований первым кодовым словом должна быть нечетная пара c(v1)c(v2).
В силу сделанного выше предположения относительно сверхслова W второе деко-
дирование не может начинаться с этой нечетной пары. Значит, остается одна воз-
можность: второе декодирование начинается с кодового слова c(v1). Тогда вторым
кодовым словом в этом декодировании должна быть, конечно, четная пара вида
c(v2)c(v3). Понятно, что вторым кодовым словом в первом декодировании будет
нечетная пара вида c(v3)c(v4), третьим кодовым словом во втором декодировании -
слово вида c(v4)c(v5) и т.д.
Автор выражает признательность рецензенту, указавшему на пробел в доказа-
тельстве.
СПИСОК ЛИТЕРАТУРЫ
1. Марков Ал.А. Об алфавитном кодировании // ДАН СССР. 1960. Т. 132. № 3. С. 521-523.
2. Марков Ал.А. Нерекуррентное кодирование // Проблемы кибернетики. Вып. 8. М.: Физ-
матгиз, 1962. С. 169-186.
91
3. Марков А.А. Введение в теорию кодирования. М.: Наука, 1982.
4. Роджерс Х. Теория рекурсивных функций и эффективная вычислимость. М.: Мир, 1972.
5. Марченков С.С. Определимость в языке функциональных уравнений счетнозначной ло-
гики // Дискрет. матем. 2013. Т. 25. № 4. С. 13-23.
6. Марченков С.С. О сложности решения систем функциональных уравнений счетнознач-
ной логики // Дискретный анализ и исслед. опер. 2015. Т. 22. № 2. С. 49-62.
7. Марченков С.С., Калинина И.С. Оператор FE-замыкания в счетнозначной логике //
Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. киберн. 2013. № 3. С. 42-47.
Марченков Сергей Серафимович
Поступила в редакцию
Московский государственный университет им. М.В.Ломоносова,
09.01.2019
факультет вычислительной математики и кибернетики
После доработки
ssmarchen@yandex.ru
29.04.2019
Принята к публикации
14.05.2019
92