A08DPPMAT_UPS2006D00
.pdfJ 1, ρ n 2, q эти числа сравнивается с неизменяемым нулем в реги-
стре Rρ n 2.
Поэтому в общем случае проверяется равенство g x1, . . . , xn, k 0, и
вэтот момент в регистре Rρ n 1 находится число k.
4)Если при проверке командой J 1, ρ n 2, q равенства
g x1, . . . , xn, k 0 получили «да», то из регистра Rρ n 1 командой Iq T ρ n 1, 1 пересылаем найденное число k в R1 и останавливаемся.
Если проверка равенства g x1, . . . , xn, k 0 дает «нет», то наращиваем командой S ρ n 1 число k в регистре Rρ n 1 на единицу и переходим к следующей проверке g x1, . . . , xn, k 1 0. В итоге получим искомое число k, или МНР работает бесконечно. Тогда f x1, . . . , xn не существует.
Теорема доказана.
Как следствие трех полученных выше теорем имеем.
ТЕОРЕМА 7.4. Всякая частично рекурсивная функция вычислима на некоторой МНР.
Учитывая тезис Черча о совпадении класса вычислимых функций с классом частично рекурсивных функций, получаем утверждение.
ТЕОРЕМА 7.5. Функция f является вычислимой функцией тогда и только тогда, когда функция f вычислима на некоторой МНР.
Подробное изложение теории алгоритмов на основе понятия машины с неограниченными регистрами можно найти в [13]. Мы будем использовать МНР для нумерации программ и вычислимых функций, а также для построения универсальной функции.
61
Упражнения к лекции 7
В следующих задачах используется общий вид программ (7.2), (7.4) и (7.5) для реализации на МНР операторов суперпозиции, примитивной рекурсии и минимизации.
ЗАДАЧА 1. Выразить функцию умножения f x, y x y с помощью оператора примитивной рекурсии через нулевую функцию g и функцию h. Используя общий вид программы (7.4), составить программу для МНР, вычисляющую функцию f x, y .
ЗАДАЧА 2. Рассмотрим функцию f x x! 1 2 . . . x. При этом 0! 1. Составить программу для вычисления функции f x .
Указание. Имеем
0! 1
f x 1 x 1 ! x 1 x! x 1 f x h x, f x
для функции h x, y x 1 y. Поэтому функция f x получена с помощью оператора примитивной рекурсии из нульарной функции g, совпадающей с числом 1, и бинарной функции h x, y x 1 y.
Используя общий вид программы (7.4), составить программу для МНР, вычисляющую функцию f x .
ЗАДАЧА 3. Составить программу для МНР, вычисляющую функцию f x, y xy . При этом 00 1.
ЗАДАЧА 4. Составить программу для МНР, вычисляющую функцию
1, если x 0,
0, если x 0.
ЗАДАЧА 5. Составить программу для МНР, вычисляющую функцию f x 2x.
ЗАДАЧА 6. Составить программу для МНР, вычисляющую функцию f x, y, z x y z.
ЗАДАЧА 7. Составить программу для МНР, вычисляющую функцию f x, y xy 3.
62
ЗАДАЧА 8. Составить программу для МНР, вычисляющую функцию f x x2.
ЗАДАЧА 9. Составить программу для МНР, вычисляющую функцию
y, если x y,
0, если x y.
ЗАДАЧА 10. Составить программу для МНР, вычисляющую функцию f x, y x y .
63
Лекция 8. Нумерации
Теория нумераций — раздел теории алгоритмов, в котором изучаются свойства классов объектов, занумерованных с помощью натуральных чисел. Присвоив номера объектам (машинам Тьюринга, МНР, частично рекурсивным функциям и т.д. ), мы можем во многих случаях получить глубокие результаты об этих объектах. Идея использования нумерации объектов для получения различных утверждений об этих объектах принадлежит К. Геделю.
В данной лекции мы осуществим нумерацию программ МНР и нумерацию множества вычислимых функций. С помощью этих нумераций в лекции 9 будут построены универсальные функции.
Пусть A — произвольное непустое конечное или счетное множество.
ОПРЕДЕЛЕНИЕ 8.1. Нумерацией множества A называется произвольное сюръективное отображение ν множества натуральных чисел N во множество A.
При этом пара A, ν называется нумерованным множеством. Вместо слов «сюръективное отображение» можно говорить «отображение на». Если отображение ν инъективно (и поэтому биективно), то нумерация ν называется однозначной нумерацией. Пусть
ν : N A |
(8.1) |
нумерация множества A. Если ν n a, то натуральное число n называется номером элемента a при нумерации ν. Элемент a A может иметь несколько номеров, поскольку отображение ν не обязательно инъективно. Обозначим элемент a с номером n через an. Тогда элементы нумерованного множества A можно представить в виде последовательности
a0, a1, a2, . . . (8.2)
В общем случае в этой последовательности возможны повторения, т.е. равенства ai aj при i j. Особый интерес представляют однозначные нумерации, где таких повторений нет.
Пусть дана однозначная нумерация ν : N A. Множество A является счетным множеством. В теории алгоритмом на отображение ν будем накладывать дополнительные ограничения.
64
ОПРЕДЕЛЕНИЕ 8.2 . Пусть A — множество, состоящее из конструктивных объектов. Множество A называется эффективно счетным множеством, если существует однозначная нумерация ν : N A такая,что выполнены следующее два условия.
1 Существует алгоритм A1, вычисляющий по элементу a A его номер ν a N.
2 Существует алгоритм A2, устанавливающий по номеру n N элемент a A с данным номером.
Нумерация ν называется в этом случае геделевской нумерацией. Условия 1) и 2) можем выразить в следующем виде.
Функции ν : N A и ν 1 : A N вычислимы.
Используя вместо самих объектов их номера при некоторой нумерации, мы сводим рассуждений об этих объектах к рассуждениям о натуральных числах. Пусть A — произвольный алгоритм, перерабатывающий объекты из множества X в объекты множества Y . Пусть ν1 и ν2— геделевские нумерации множеств X и Y , изображенные на следующем рисунке.
XA Y
ν1 |
ν2 |
N f N
Рассмотрим данный набор правил A как процедуру вычисления некоторой функции f : N N. Пусть на входе алгоритма A имеется объект P X, который перерабатывается в объект Q Y . Заменим объекты P и Q на их номера n и m при нумерациях ν1 и ν2. Сопоставляя числу n число m, получаем функцию f : N N. Из того, что A алгоритм нетрудно получить вычислимость функции f . Действительно, взяв число n, некоторыми инструкциями найдем объект P с данным номером. Затем алгоритмом A найдем Q A P и вычислим номер m объекта Q. При этом f n m. Получили алгоритм для вычисления функции f .
Рассмотрим примеры геделевских нумерацией и эффективно счетных множеств.
ТЕОРЕМА 8.1 . Множество N N является эффективно счетным.
Доказательство. Рассмотрим отображение π : N N N, заданное следующим правилом:
65
π m, n 2m 2n 1 1 для всех m, n N. |
(8.3) |
Проверим биективность отображения π, и укажем алгоритмы вычис-
ления функций π и π 1. |
|
|
|
|
а) Инъективность. Пусть π m1, n1 |
π m2, n2 . Тогда |
|
|
|
|
2m1 2n1 1 2m2 2n2 1 . |
|
|
|
Из однозначности канонического разложения получаем m1 |
m2. Со- |
|||
кратив на 2m1 |
2m2 , имеем 2n1 1 |
2n2 1 и n1 |
n2. Получили |
|
m1, n1 m2, n2 , что и нужно. |
|
|
|
б) Сюръективность. По элементу a A найдем пару m, n с условием
π m, n a. Обозначим искомые числа m и n в виде |
|
||||||
|
m |
π1 a |
и |
n π2 a . |
(8.4) |
||
Тогда |
π 1 a π1 a , π2 a . |
|
|
|
|||
|
|
|
(8.5) |
||||
Равенство π m, n |
a означает 2m 2n 1 1 |
|
a, т.е. |
|
|||
2m 2n 1 |
a 1, |
где a 1 1, 2, . . . . |
(8.6) |
||||
Получили, что m |
π1 a , где |
|
|
|
|
|
|
π1 a — число двоек в каноническом разложении числа a 1. |
(8.7) |
||||||
Тогда a 1 2π1 a a1, где a1 |
a 1 2π1 a — нечетно. Имеем 2n 1 |
a1, |
|||||
откуда |
|
|
|
|
|
|
|
|
n π2 |
a |
a 1 2π1 a |
1 |
. |
(8.8) |
|
|
|
2 |
|
||||
|
|
|
|
|
|
|
Итак, мы проверили биективность π и одновременно указали способ для вычисления π 1 a . В формулах (8.3), (8.7) и (8.8) указаны способы для вычисления функций π, π1, π2. Из этих формул следует вычислимость данных функций. При этом мы ссылаемся на тезис Черча и не производим непосредственную проверку рекурсивности функций π, π1, π2. Поскольку функции π и π 1 вычислимы, то множество N N является эффективно счетным.
Теорема доказана.
В дальнейшем будет использоваться множество натуральных чисел
без нуля. Введем обозначение этого множества: |
|
N 1, 2, 3, . . . . |
(8.9) |
66
ТЕОРЕМА 8.2. Множество N N N является эффективно счетным.
Доказательство. Рассмотрим отображение ζ : N N N N, |
|||||||
которое выразим через отображение π следующим равенством |
|||||||
ζ m, n, q |
π π m |
1, n |
1 , |
q |
1 . |
(8.10) |
|
Проверим биективность отображения ζ. |
|
|
|
|
|||
а) Инъективность. Пусть ζ x |
ζ y |
для x |
|
m1, n1, q1 и |
|||
y m2, n2, q2 . Покажем, что x |
y. Из ζ x |
|
ζ y и инъективности π по |
||||
(8.10) имеем π m1 1, n1 |
1 |
π m2 |
1, n2 |
1 и q1 |
1 |
q2 1. Отсюда |
q1 |
q2. Снова применяем инъективность π. Получаем m1 1, n1 |
1 |
|||||||
m2 |
1, n2 |
1 , т.е. m1 |
m2 |
и n1 |
n2. |
|
|
|
|
б) Сюръективность. Пусть x N. Проверим правило |
|
||||||||
|
ζ 1 x |
π1 π1 x 1, π2 π1 x 1, |
π2 x 1 , |
(8.11) |
|||||
т.е. равенство |
|
|
|
|
|
|
|
||
|
ζ π1 π1 x 1, |
π2 |
π1 x 1, |
π2 x 1 x. |
(8.12) |
||||
|
|
m |
|
|
n |
|
q |
|
|
Применим определение ζ из (8.10) к равенству (8.12), где помечены
числа m и n. Вычислим числа m 1, n |
1, и применим равенство |
||
π π1 a , π2 a |
a из (8.5). Получим π m |
1, n 1 |
π1 x в (8.12). |
Поэтому вместо (8.12) нужно проверить равенство |
|
||
|
π π1 x , π2 x |
x. |
(8.13) |
Оно верно по (8.5).
Из выражений (8.10) и (8.11) для функций ζ и ζ 1 следует их вычислимость. Поэтому множество N N N является эффективно счетным.
Теорема доказана.
ТЕОРЕМА 8.3 . Множество A, состоящее из всевозможных конечных последовательностей натуральных чисел, является эффективно счетным.
Доказательство. Имеем
A a1, a2, . . . , ak ai N, k N . |
(8.14) |
67
Зададим отображение τ : A N по следующему правилу: если
aa1, a2, . . . , ak A, то
τ a 2a1 2a1 a2 1 2a1 a2 a3 2 2a1 a2 ak k 1 |
1, (8.15) |
где a1 a1 a2 1 a1 a2 a3 2 a1 a2 ak k |
1 . Данная |
запись означает, что число τ a записано в двоичной системе счисления
в порядке возрастания степеней числа 2. Например, a |
20 22 23 |
1 20 0 21 1 22 1 23 — это двоичное число a 1011 2. |
|
Проверим биективность отображения τ . |
|
а) Инъективность. Пусть a, b A и τ a τ b , где a |
a1, a2, . . . , ak , |
b b1, b2, . . . , al . Покажем, что a b. Имеем τ a 1 |
τ b 1, т.е. |
2a1 2a1 a2 1 2a1 a2 a3 2 2a1 b2 ak k 1
2b1 2b1 b2 1 2b1 b2 b3 2 2b1 b2 bl l 1 . (8.16)
Проверим вначале, что a1 b1. Допустим a1 b1. Тогда левая часть в (8.16) делится на 2b1 1, а правая часть не делится, противоречие. Разделим (8.16) на 2a1 2b1 , и затем аналогично получим a2 b2 и т.д. Имеем
ab, что и нужно.
б) Сюръективность. Для любого n N найдем a |
a1, a1, . . . , ak A |
||||
с условием τ a n. Для этого запишем n 1 |
2b1 2b2 2bk , где |
||||
b1 b2 bk. С учетом (8.15) равенство τ a |
n запишем в виде |
||||
b1 |
a1, b2 |
a1 a2 1, b3 |
a1 a2 a3 2, . . . . |
||
Отсюда найдем искомые числа a1, a2, a3, . . . правилом |
|||||
a1 b1, |
a2 b2 |
a1 1 b2 b1 |
1, a3 |
b3 |
b2 1, . . . . (8.17) |
Итак, τ сюръективно и поэтому биективно. Вычислимость функций τ и τ 1 следует из равенств (8.15) и (8.17).
Теорема доказана.
ТЕОРЕМА 8.4 . Множество всех команд МНР является эффективно счетным.
Доказательство. Обозначим через K множество всех команд МНР. Элементы из K, т.е команды МНР, имеют один из следующих четырех видов: Z n , S n , T m, n , J m, n, q , где m, n N .
68
Разобьем множество K на подмножества K1, K2, K3, K4 следующим способом:
K1 |
Z n n N , |
K2 |
S n n N , |
K3 |
T m, n m, n N , |
K4 |
J m, n, q m, n N . |
Зададим отображение β : K N правилом
β Z n |
4 n |
1 , |
β S n |
4 n |
1 1, |
β T m, n |
4π m 1, n 1 2, |
|
β J m, n, q |
4ζ m, n, q 3. |
Проверим биективность отображения β.
а) Инъективность. Пусть a, b K и a b. Проверим, что β a β b . Если a Ki и b Kj , где i j, то числа β a и β b имеют разные остатки при делении на 4. Поэтому β a β b . Пусть a, b содержатся в одном и том же множестве Ki. Допустим i 1, т.е. a Z n1 , b Z n2 . Так как a b, то n1 n2. Поэтому, β a β b . Аналогично рассматриваются случаи i 2, 3, 4. Итак, β инъективно.
б) Сюръективность. Пусть l N. Найдем a K с условием β a l. Если l имеет остаток 0 при делении на 4, то l 4q, где q 0. Тогда
для искомого прообраза a имеем a Z q 1 , где q 1 1. Аналогично находим a, если l имеет остаток 1,2 или 3 при делении на 4. Итак, β сюръективно. С учетом а) отображение β биективно.
Вычислимость функций β и β 1 следует из полученных выше правил для их вычисления.
Теорема доказана.
ТЕОРЕМА 8.5. Множество P, состоящее из всевозможных программ МНР, является эффективно счетным.
Доказательство. Зададим отображение γ : P N. Пусть P |
P. |
Программа P имеет вид |
|
I1, I2, . . . , Is, где s N . |
(8.18) |
69
Образ γ P N элемента P P вычисляем по правилу
γ P τ β I1 , β I2 , . . . , β Is , |
(8.19) |
где функции τ и β введены в теоремах 8.3 и 8.4. По этому правилу вначале для последовательности команд I1, . . . , Is, используя функцию β, вычисляем строку чисел β I1 , . . . , β Is . Затем по этой строке, используя функцию τ , находим номер программы γ P . При этом все перечисленные действия образуют некоторый алгоритм, т.е. функция γ вычислима. Проверим биективность отображения γ.
а) Инъективность. Пусть γ P1 γ P2 . Покажем, что P1 P2. Равенство программ понимаем как равенство последовательностей
команд этих программ. Имеем P1 |
I1, . . . , Ir , P2 |
J1, . . . , Js и |
γ P1 γ P2 . По (8.19) получаем |
|
|
τ β I1 , β I2 , . . . , β Ir |
τ β J1 , β J2 , . . . , β Js . |
|
Из инъективности τ имеем |
|
|
β I1 , β I2 , . . . , β Ir |
β J1 , β J2 , . . . , β Js . |
Из инъективности β получаем P1 P2, что нужно.
а) Сюръективность. Пусть l N. Найдем P P с условием γ P l. Вначале используем сюръективность τ и по числу l N находим строку
a1, . . . , ak с условием τ a1, . . . , ak l. Затем, используя сюръективность β, для каждой компоненты ar N находим команду МНР Ir с усло-
вием β Ir ar. В итоге получим искомую программу I1, I2, . . . , Ik. Итак, γ сюръективно и поэтому биективно. При этом функции γ и γ 1 вычислимы.
Теорема доказана.
Биекция γ, задаваемая правилом (8.19), существенным образом используется в дальнейших рассуждениях. Программу P с номером
nγ P будем обозначать через Pn.
ОПРЕДЕЛЕНИЕ 8.3. Номер n γ P называется кодовым (геделевым) номером программы P .
Для множества P, состоящего из всех МНР программ, имеем перечисление
P P0, P1, P2, . . . . |
(8.20) |
70