Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Course

.pdf
Скачиваний:
10
Добавлен:
28.03.2015
Размер:
1.03 Mб
Скачать

где для 1 6 i 6 3

¯i(y; x) = Stepi(y; log(2; x); log(3; x); log(5; x)):

Ясно, что функция ® примитивно рекурсивна. Легко видеть, что ес-

ли x = 2x1 ¢ 3x2 ¢ 5x3 , то ®(y; x; t) = 2Com1(y;x1;x2;x3;t) ¢ 3Com2(y;x1;x2;x3;t) ¢

5Com3(y;x1;x2;x3;t). Окончательно получаем, что для 1 6 i 6 3

Comi(y; x1; x2; x3; t) = log(p(i ¡ 1); ®(y; 2x1 3x2 5x3 ; t) ¤

Теорема 9 Каждая функция, вычислимая на машине Тьюринга, частично рекурсивна.

Доказательство. Пусть f(x1; : : : ; xk) частичная k-местная функция, вычислимая на машине Тьюринга при помощи программы с кодом n. Тогда для каждых x1; : : : ; xk 2 N машина Тьюринга, стартуя из состояния, описываемого конфигурацией hw(x1; : : : ; xk); q1; 1i, и работая по программе с кодом n никогда не закончит работу, если f(x1; : : : ; xk) не определено, а если f(x1; : : : ; xk) определено, то она закончит работу и число единиц на ленте в момент окончания будет равно f(x1; : : : ; xk). Введем (k + 2)-местную функцию ', полагая для всех y; x1; : : : ; xk; t значение '(y; x1; : : : ; xk; t) равным:

1.0, если машина, работая по программе с кодом y из состояния, за-

даваемого конфигурацией hw(x1; : : : ; xk); q1; 1i, за t шагов работы не достигла состояния q0, то есть не остановилась;

2.s + 1, если машина, работая по программе с кодом y из состояния,

задаваемого конфигурацией hw(x1; : : : ; xk); q1; 1i, достигла конечного состояния q0 не более чем за t шагов работы и число единиц на ленте в момент остановки машины равно s.

Покажем, что функция ' примитивно рекурсивна. Пусть для 1 6 i 6 k + 1

 

 

 

1

 

 

 

 

 

 

 

Xj

 

 

 

 

 

 

®i(x1; : : : ; xk) = i +

xj;

 

 

 

 

 

=1

 

 

 

 

для 1 6 i 6 k

>

 

 

 

 

 

 

 

0; (s < ® (x ; : : : ; xk))

 

(s

 

®i+1(x1; : : : ; xk))

¯i(s; x1; : : : ; xk) =

81; s = ®i(ix11; : : : ; xk)

_

 

>

 

 

>

 

 

 

 

 

 

 

:

 

; : : : ; xk) < s < ®i+1(x1; : : : ; xk);

 

<2; ®i(x1

81

 

k

 

 

 

Xi

 

 

¯(s; x1; : : : ; xk) =

¯i(s; x1

; : : : ; xk);

 

=1

 

 

®k+1

(x1;:::;xk)

 

 

 

Ys

 

 

°(x1; : : : ; xk) =

p(s)¯(s;x1

;:::;xk):

 

=0

 

 

Все ®i-ые примитивно рекурсивные функции. Отсюда все ¯i-ые примитивно рекурсивны. Значит, примитивно рекурсивными являются функции ¯ и °. Легко видеть, что для произвольных x1; : : : ; xk 2 N значение °(x1; : : : ; xk) это код слова w(x1; : : : ; xk). Пусть

±(x) = i=0 ³log(p(i); x) :

1´:

x

 

X

 

Тогда функция ± примитивно рекурсивна и если x код слова w, то ±(x) равно числу единиц в слове w. Теперь для функции ' имеем

 

 

'(y; x1; : : : ; xk; t) =

 

=

0;

Com2

(y; °(x1

; : : : ; xk); 1; 1; t) 6= 0

 

(±(Com1(y; °(x1; : : : ; xk); 1; 1; t)) + 1; Com2

(y; °(x1

; : : : ; xk); 1; 1; t) = 0:

Таким

образом, ' действительно примитивно

рекурсивна. Пусть

¿(y; x1; : : : ; xk) = ¹t(sg('(y; x1; : : : ; xk; t)) = 0) и Ã(y; x1; : : : ; xk) =

'(y; x1; : : : ; xk; ¿(y; x1; : : : ; xk)) : 1. Функции ¿ и Ã частично рекурсивны. Остается заметить, что f(x1; : : : ; xk) = Ã(n; x1; : : : ; xk). ¤

Таким образом, числовая функция частично рекурсивна тогда и только тогда, когда она вычислима на машине Тьюринга. Этот результат можно было предсказать, принимая во внимание тезисы Тьюринга и Черча. Действительно, для каждой частично рекурсивной функции существует алгоритм вычисления и, значит, по тезису Тьюринга для каждой частично рекурсивной функции должна существовать программа, преобразующая запись набора аргументов в запись значения функции на этих аргументах (которая должна работать бесконечно, если значение функции не определено). Обратно, если функция вычислима на машине Тьюринга, то есть некоторая программа преобразует запись значений аргументов в запись значения функции, то для этой функции существует

82

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

Настала пора окончательно разобраться с общим понятием вычислимой функции. Напомним, что вычислимая функция это функция из конструктивного пространства K1 в конструктивное пространство K2, для которой существует алгоритм, позволяющий по описанию значения аргумента получит описание значения функции. В настоящий момент у нас есть формальные определения для двух случаев: K1 = K2 = §¤ (вычислимость на машине Тьюринга) и K1 = Nk, K2 = N (частично рекурсивные функции). Мы уже говорили о том, что общий случай можно свести к первому. Покажем, как общий случай сводится ко второму.

Пусть S произвольное непустое не более чем счетное множество48.

Определение 19 Нумерацией множества S называется произвольное сюрьективное отображение N на S49.

Если º : N ! S нумерация, то для произвольного s 2 S найдется хотя бы одно n 2 N, для которого º(n) = s. Мы будем называть каждое такое n º-номером элемента s (или просто номером, если ясно, о какой нумерации идет речь).

Определение 20 Нумерации º и ¹ множества S называются эквивалентными, если существуют рекурсивные 1-местные функции50 f и g, такие что для любого n 2 N ¹(n) = º(f(n)) и º(n) = ¹(g(n)).

Если нумерации º и ¹ эквивалентны, то мы пишем º ´ ¹. Легко показать, что отношение ´ является отношением эквивалентности на

48То есть множество конечной или счетной мощности. Понятие мощности множества вводится в курсе математической логики. В настоящий момент можно принять следующее определение: множество S имеет не более чем счетную мощность, если существует отображение из N в S, область значений которого равна S, либо S = ?.

49То есть такое отображение, область значений которого равна S.

50Напомним, что функция называется рекурсивной, если она частично рекурсивна и всюду определена.

83

множество нумераций любого не более чем счетного множества S. Принимая тезис Черча, можно сказать, что нумерации эквивалентны, если существует алгоритм, вычисляющий по º-номеру любого объекта его ¹- номер и наоборот. С точки зрения теории алгоритмов эквивалентные нумерации ”совпадают”, то есть наиболее важные свойства у них одинаковы51.

Определение 21 Нумерация º называется разрешимой, если функция

(

´º(x; y) =

1;

º(x) = º(y)

0;

º(x) 6= º(y)

рекурсивна.

Имея в виду тезис Черча, можно интерпретировать это определение следующим образом: нумерация разрешима, если существует алгоритм, который по двум номерам позволяет определить, являются они номерами одного и того же объекта или нет.

Определение 22 Нумерация º называется разнозначной, если для любых x =6 y из N º(x) =6 º(y).

Всякая разнозначная нумерация разрешима, так как если º разнозначна, то ´º(x; y) = sg((x : y)+(y : x)) примитивно рекурсивная функция. В некотором смысле разнозначность это ”идеал” для всякой нумерации, поскольку разнозначная нумерация º : N ! S является взаимнооднозначным соответствием между N и S и позволяет отождествлять элементы множества S и их номера.

Предложение 9 Для всякой разрешимой нумерации бесконечного множества существует эквивалентная ей разнозначная нумерация.

Доказательство. Пусть º : N ! S разрешимая нумерация и множество S бесконечно. Определим рекурсивную функцию f:

· f(t + 1) =

f(t) + ¹y(

it=0 ´º(f(i); f(t) + y) = 0)

f(0)

=

0

P

 

 

 

51Точно так же в геометрии две фигуры считаются равными, если переводятся друг в друга преобразованием движения. Аналогично в алгебре две структуры ”совпадают”, если они изоморфны.

84

Так как f определяется через рекурсивную функцию ´º при помощи минимизации и примитивной рекурсии, то она частично рекурсивна. Из бесконечности S следует, что f всюду определена.

Полагаем º0(n) = º(f(n)) для любого n 2 N. Из определения f видно, что º0 разнозначная нумерация множества S. Пусть теперь g(x) = ¹y(sg(´º(f(y); x)) = 0). Ясно, что g всюду определена и что º(n) = º0(g(n)). Так как º0 = º ± f и º = º0 ± g, то º0 ´ º.

На неформальном уровне º0 устроена следующим образом. Пусть X = fmin(s) : s 2 S; min(s) минимальный номер элемента sg. Пусть x0 < x1 < : : : перечисление всех элементов множества X в порядке возрастания. Тогда для любого i f(i) = xi и º0(i) = º(xi). ¤

Рассмотрим несколько примеров нумераций.

1.S = N и нумерация º1 : N ! S задается следующим образом: º1(n) = n для любого n 2 N. Это разнозначная нумерация.

2.Пусть f произвольная перестановка натурального ряда, S = N и

нумерация º2 : N ! S такова, что º2(n) = f(n) для любого n 2 N. Это другой пример разнозначной нумерации.

3.S = N и нумерация º3 : N ! S задается следующим образом: º3(n) = l(n) для любого n 2 N. Эта нумерация не разнозначна, однако является разрешимой.

4.S = N2 и нумерация º4 : N ! S задается следующим образом: º4(n) = hl(n); r(n)i для любого n 2 N. Эта нумерация тоже разнозначна.

5.Пусть S множество программ для машин Тьюринга, написанных

для алфавита § = f0; 1g и для n 2 N º5(n) программа с кодом n. По тезису Черча нумерация º5 разрешима. Алгоритм вычисления

функции ´º5 следующий: для данных x и y надо выписать программы с номерами x и y (что, очевидно, можно сделать при помощи алгоритма), а затем сравнить эти программы и решить, чему рав-

но ´º5 (x; y). При желании можно дать формальное доказательство рекурсивности функции ´º5 52.

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

85

6.Пусть S множество k местных частично рекурсивных функций

и для n 2 N º6(n) k-местная функция, вычислимая на машине Тьюринга при помощи программы с кодом n. По теореме 9 º6 это нумерация множества S. Нумерация º6 уже не будет разрешимой. Хотя по номерам программ мы и можем выписать сами программы, однако нет алгоритма, который позволял бы определить, вычисляют две разные программы одну и ту же функцию или нет. Позже мы приведем формальное доказательство того, что функция ´º6 (x; y) не рекурсивна.

7.Пусть § = fa1; : : : ; akg конечный алфавит и S = §¤. Сопоставим каждому n 2 N слово º7(n) 2 §¤, равное ai1 : : : ais , следующим образом: s = l(n) и для 1 6 j 6 s ij = rest(log(p(j); r(n)+1); k)+1. Тогда

º7 будет нумерацией S. Действительно, каждое слово ai1 : : : ais имеет º7-номер, равный c(s; p(1)i1¡1 ¢ : : : ¢ p(s)is¡1 ¡ 1). Эта нумерация не будет разнозначной, однако будет разрешимой. Действительно, нумерация построена так, что по номеру слова легко выписать само слово: алгоритм для этой процедуры очевиден. Тогда функция

´º7 (x; y) вычислима при помощи следующего алгоритма: надо для данных x и y выписать слова º7(x) и º7(y), сравнить их и в зависи-

мости от результата сравнения решить, чему равно ´º7 (x; y). Формальное доказательство в данном случае тоже является достаточно коротким. Действительно, предикат P (x; y) = (l(x) = l(y)) & ((¹i 6

l(x))(rest(log(p(i + 1); r(x) + 1); k) 6= rest(log(p(i + 1); r(y) + 1); k)) > l(x)) примитивно рекурсивен и ´º7 (x; y) = ÂP (x; y).

Сделаем еще несколько замечаний относительно этих примеров. Можно показать, что нумерации º1 и º3 эквивалентны. Действительно, º3(x) =

º1(l(x)) и º1(x) = º3(c(x; 0)) для любого x 2 N. Нумерации º1 и º2 эквивалентны не всегда, а лишь тогда, когда функция f, участвующая в опре-

делении º2, рекурсивна. Про эквивалентность нумераций º1 и º4 говорить бессмысленно, поскольку эти нумерации нумеруют разные множества.

Пусть теперь K конструктивное пространство. Легко показать, что K не более чем счетно (элементам K соответствуют их описания, то есть слова некоторого конечного алфавита, а множество слов конечного алфавита счетно).

86

Определение 23 Нумерация º : N ! K называется геделевской53, если существует алгоритм, который позволяет по записи любого натурального числа получить описание объекта, номером которого это число является.

Определение 23 носит более формальный характер, чем может показаться на первый взгляд. Под алгоритмом в этом определении можно понимать программу для машины Тьюринга, преобразующую слово 1n в описание объекта º(n), являющееся словом некоторого конечного алфавита §K. Однако это определение нельзя считать полностью формальным, поскольку понятия конструктивного пространства и описания элемента этого пространства у нас все же довольно расплывчаты. Тем не менее, для каждого конкретного примера конструктивного пространства можно дать формальное определение геделевской нумерации этого пространства, опираясь на определение 2354.

В приведенных выше примерах нумерации º1, º3, º4, º5 и º7 геделевские. Нумерация º2 может являться геделевской в случае, если f рекурсивная функция, однако в общем случае она не является таковой. Нумерация º6 не геделевская, так как нумеруемое множество вообще не является конструктивным пространством.

Предложение 10 Пусть K конструктивное пространство (не равное ?). Тогда

1.существует геделевская нумерация пространства K;

2.всякая геделевская нумерация K разрешима;

3.любые две геделевские нумерации K эквивалентны;

4.всякая нумерация пространства K, эквивалентная геделевской, сама является геделевской.

53Термин ”геделевская нумерация” возник в связи с работами Курта Геделя, который, введя подобную нумерацию для множества формул языка арифметики первого порядка, доказал свою знаменитую теорему о неполноте арифметики.

54Отметим еще, что в литературе термин ”геделевская нумерация” иногда понимают более широко, причисляя к геделевским частичные нумерации с рекурсивной областью определения. Такова, например, классическая геделевская нумерация формул и термов, используемая при доказательстве теоремы Геделя о неполноте. Легко показать, что этот общий случай всегда сводится к нашему частному через перечисление области определения частичной нумерации. В нашем курсе мы не будем останавливаться на этом вопросе и вводить соответствующие понятия.

87

Доказательство. Конструктивное пространство это множество всех конструктивных объектов одинакового вида. Конструктивный объект это объект, который может быть полностью описан при помощи конечной последовательности символов. Как мы уже отмечали в начале этой части курса, мы принимаем следующий тезис: для каждого конструктивного пространства K существует конечный алфавит §K и описаниями элементов K являются слова этого алфавита. Примем еще два тезиса:

1.Существует алгоритм, который позволяет по слову алфавита §K определить, является это слово описанием некоторого элемента K или нет.

2.Существует алгоритм, который по двум словам алфавита §K, являющихся описаниями элементов K, позволяет определить, являются они описаниями одного и того же объекта или нет.

Оба этих тезиса достаточно естественны. Раз описание конструктивного объекта содержит всю информацию об этом объекте (см. определение 2), то имея слово алфавита §K, мы можем понять, содержит ли оно в себе информацию об объекте или просто является бессмысленным набором символов (как ранее в примере с K = Q мы признали, что слова ¡3=7 и ¡9=21 являются описаниями рациональных чисел, а слово == ¡ =11 нет). Точно так же если есть два описания, то по ним можно получить всю информацию об объектах, которые они описывают; а обладая полной информацией о двух объектах, мы можем решить, совпадают они или нет. Ни один из этих тезисов нельзя доказать, поскольку такие понятия, как ”конструктивный объект” и ”описание конструктивного объекта” у нас довольно расплывчаты и для них нет четких определений. Можно рассматривать эти тезисы не как утверждения, истинность которых надо доказывать, а как уточнения определений 2 и 3.

Итак, признаем, что эти тезисы справедливы. Имеется много алгоритмов, позволяющих перечислять все слова алфавита §K. Можно взять, например, такой алгоритм: сначала перечислим пустое слово, потом все слова длины 1, потом все слова длины 2 и так далее. Воспользуемся одним из этих алгоритмов и запишем §¤K в виде последовательности слов w0; w1; w2; : : :, такой что существует алгоритм, позволяющий по каждому i 2 N вычислить слово wi. Пусть X = fi : слово wi является описанием некоторого элемента пространства Kg. По первому тезису существует

88

алгоритм, позволяющий вычислять числовую функцию

(

1; i 2 X ÂX (i) = 0; i 62X:

По тезису Черча функция ÂX рекурсивна.

Так как K 6= ?, то X непусто. Зафиксируем i0 2 X. Теперь пусть f(x) = x ¢ ÂX (x) + i0 ¢ sg(ÂX (x)). Функция f получается при помощи суперпозиций из рекурсивных функций и, следовательно, рекурсивна. Ясно, что ½f = X.

Теперь введем нумерацию º : N ! K. Для i 2 N полагаем º(i) равным объекту, описанием которого является слово wf(i). Нумерация º является геделевской. Действительно, алгоритм, вычисляющий по числу i описание объекта º(i) таков: надо вычислить j = f(i), по j вычислить слово wj и взять это слово в качестве искомого описания.

Мы доказали первый пункт предложения. Докажем третий. Пусть ¹1, ¹2 две геделевских нумерации пространства K. Для i = 1; 2 существует алгоритм, позволяющий по каждому n получать описание объекта с ¹i-номером n. Другими словами, существуют вычислимые функции

v1; v2 : N ! §¤K, такие что для i = 1; 2 vi(n) описание объекта ¹i(n). Опишем алгоритм вычисления функции h1 : N ! N. Этот алгоритм та-

ков: при данном x 2 N последовательно выписываем слова v2(0); v2(1); : : :

и для каждого y смотрим, является ли слово v2(y) описанием того же самого объекта, что и слово v1(x). Согласно второму тезису мы можем это сделать при помощи алгоритма. Рано или поздно найдется такой y, что слова v1(x) и v2(y) описывают один и тот же объект. Как только нам встретился такой y, останавливаем процедуру перечисления слов v2(0); v2(1); : : : и полагаем h1(x) равным этому y. Функция h2 определяется аналогично h1, с заменой v2 на v1 и наоборот. Легко видеть, что ¹2 = ¹1 ± h2 и ¹1 = ¹2 ± h1. Так как у нас имеются алгоритмы для вычисления функций h1 и h2, то по тезису Черча эти функции рекурсивны и, следовательно, ¹1 ´ ¹2.

Докажем второй пункт. Пусть ¹ геделевская нумерация и v вычислимая функция из N в §¤K, такая что для любого n 2 N v(n) описание объекта ¹(n). Тогда для ´¹(x; y) существует следующий алгоритм вычисления: надо взять x и y, выписать слова v(x) и v(y), а затем положить ´¹(x; y) равным единице, если эти слова описывают один и тот же объект, и нулю в противном случае. Так как алгоритм для вычисления

89

´¹ описан, то по тезису Черча функция ´¹ рекурсивна и нумерация ¹ разрешима.

Осталось доказать четвертый пункт. Пусть ¹1 : N ! K геделевская нумерация и ¹2 ´ ¹1. Тогда существует рекурсивная функция h, такая что ¹2 = ¹1 ±h. По любому ¹2 -номеру i можно вычислить описание объекта ¹2(i) следующим образом: сначала вычисляем j = h(i), а затем по j вычисляем описание объекта ¹1(j). Так как ¹1 геделевская нумерация, то мы можем это сделать. Описанная процедура является алгоритмом и, значит, нумерация ¹2 геделевская. ¤

Итак, для каждого конструктивного пространства существует геделевская нумерация, единственная с точностью до эквивалентности.

Определение 24 Конструктивное пространство K1 изоморфно конструктивному пространству K2, если существует взаимно-однозначное отображение пространства K1 на пространство K2, являющееся вычислимой функцией.

Предложение 11 Для конструктивных пространств справедливы следующие утверждения:

1.Если K1 изоморфно K2, то K2 изоморфно K1;

2.Если K1 изоморфно K10 и K2 изоморфно K20 , то существует взаимнооднозначное соответствие между множеством вычислимых функций из K1 в K2 и множеством вычислимых функций из K10 в K20 .

Доказательство. (1) Пусть f : K1 ! K2 изоморфизм, то есть вычислимая функция, взаимно-однозначно отображающая K1 на K2. Так как f взаимно-однозначно, то определено обратное отображение f¡1 : K2 ! K1, которое тоже является взаимно-однозначным. Покажем, что функция f¡1 вычислима.

Пусть º геделевская нумерация K1. Требуется задать алгоритм, который позволяет по слову w 2 §¤K2 , являющемуся описанием объекта k 2 K2, получить описание объекта f¡1(k). Этот алгоритм следующий. Для произвольного i 2 N мы можем получить слово vi 2 §¤K1 , являющееся описанием объекта º(i). Далее, пользуясь вычислимостью функции f, мы по vi можем получить слово wi 2 §¤K2 , являющееся описанием объекта f(º(i)). Начнем последовательно выписывать слова w0; w1; : : : и для

90

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]