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

Course

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

Более того, в настоящий момент не представляется возможным придумать хоть какой-нибудь алгоритм, инструкции которого нельзя было бы промоделировать в виде команд машины Тьюринга. В связи с этим все математики в настоящее время принимают

Тезис Тьюринга: Всякая вычислимая (согласно определению 9) частичная функция из §¤ в §¤ вычислима на машине Тьюринга.

Тезис Тьюринга нельзя доказать, потому что определение 9 не является математическим определением. Однако им можно пользоваться: например, если есть описание алгоритма для вычисления функции из §¤ в §¤, данное на обычном38 языке, можно, пользуясь этим тезисом, утверждать, что существует программа для машины Тьюринга, реализующая этот алгоритм, не выписывая саму программу. Со временем и мы станем так поступать. А пока продолжим изложение на формальном уровне.

Переходим к рассмотрению частичных функций на натуральных числах со значениями в N. Мы будем рассматривать частичные функции от нескольких аргументов. Количество аргументов функции мы называем ее местностью или арностью. Для каждого натурального числа k k- местная (или k-арная) функция это функция от k аргументов. Ясно, что такое k-местная частичная функция для k > 0; для k = 0 0-мест- ная частичная функция из N в N это просто константа, равная либо некоторому натуральному числу, либо неопределенному значению39.

Пусть k; n 2 N и имеется одна n-местная частичная функция g(x1; : : : ; xn) и n k-местных частичных функций f1(x1; : : : ; xk); : : : ; fn(x1; : : : ; xk).

38Например, русском.

39Можно представлять себе ситуацию следующим образом. Часто встречаются случаи, когда значение функции от нескольких аргументов реально зависит от меньшего числа аргументов. Например, есть функция от двух аргументов f(x; y) = x + y; значение f(x; y) зависит как от x, так и от y. Есть другая функция от двух аргументов: g(x; y) = x + (y ¡ y). Значение g(x; y) зависит только от того, чему равен x. Формально g это 2-местная функция, но ее можно рассматривать и как одноместную функцию g0(x) = x. Мы в нашем курсе считаем, что функции g и g0 разные, хотя бы потому что это функции разной местности, однако нельзя отрицать, что функция g0 в некотором смысле соответствует функции g. Теперь рассмотрим функцию h(x; y) = 2, равную константе 2 при всех значениях x и y. В том же смысле, в каком функции g соответствовала функция g0, функции h соответствуют две 1-местные функции h1(x) = 2 и h2(y) = 2, а также 0-местная функция, равная константе 2. Если мы рассмотрим 2-местную частичную функцию h0(x; y), которая не определена при всех значениях x и y (±h = ?), то ей соответствует 0-местная функция с неопределенным значением.

51

Мы говорим, что k-местная частичная функция h является суперпози-

цией функций g; f1; : : : ; fn, если h(x1; : : : ; xk) = g(f1(x1; : : : ; xk); : : : ; fn(x1;

: : : ; xk)). Для набора натуральных чисел m1; : : : ; mk значение h(m1; : : : ; mk) определено тогда и только тогда, когда во-первых определены чис-

ла l1 = f1(m1; : : : ; mk); : : : ; ln = fn(m1; : : : ; mk), а во-вторых, определено g(l1; : : : ; ln). Заметим, что если g; f1; : : : ; fn всюду определенные функ-

ции, то h также всюду определена.

Пусть теперь k 2 N и есть одна k-местная частичная функция g(x1; : : : ; xk) и одна (k + 2)-местная частичная функция h(z; y; x1; : : : ; xk). Мы говорим, что (k + 1)-местная частичная функция f(t; x1; : : : ; xk) получается из функций g и h по схеме примитивной рекурсии, если для всех t; x1; : : : ; xk 2 N выполнены следующие равенства:

·f(0; x1; : : : ; xk)

f(t + 1; x1; : : : ; xk)

=g(x1; : : : ; xk)

=h(f(t; x1; : : : ; xk); t; x1; : : : ; xk)

Ясно, что эти два равенства однозначно определяют значение функции

fна всех аргументах. Область определения f следует из способа ее за-

дания. Пусть, например, m1; : : : ; mk 2 N. Тогда f(0; m1; : : : ; mk) определено тогда и только тогда, когда определено g(m1; : : : ; mk). Значение f(1; m1; : : : ; mk) определено тогда и только тогда, когда определены

f(0; m1; : : : ; mk) и h(f(0; m1; : : : ; mk); 0; m1; : : : ; mk). Значение f(2; m1; : : : ; mk) определено тогда и только тогда, когда определены f(1; m1; : : : ; mk)

и h(f(1; m1; : : : ; mk); 1; m1; : : : ; mk). И так далее. Получаем, что при фиксированных m1; : : : ; mk множество чисел t, таких что функция f опреде-

лена на наборе t; m1; : : : ; mk, равно либо всему натуральному ряду, либо конечному множеству f1; : : : ; ng для некоторого n > 0. Отметим еще, что если g и h всюду определены, то f также всюду определена.

Мы будем называть базисными (или базовыми) следующие функции:

1.0-местную функцию, равную константе 0;

2.1-местную функцию s(x) = x + 1;

3.для каждого n > 1 и каждого 1 6 k 6 n n-местную функцию

Ink(x1; : : : ; xn) = xk.

Определение 14 Функция f называется примитивно рекурсивной, если существует конечная последовательность функций f1; : : : ; fn, такая

52

что fn = f и для каждого 1 6 i 6 n функция fi либо базисная, либо получается из предыдущих членов последовательности суперпозицией или по схеме примитивной рекурсии.

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

Предложение 1 Следующие функции являются примитивно рекурсивными:

1.0-местная функция, равная константе k для произвольного k 2 N;

2.1-местная функция o(x), равная нулю для всех x;

3.1-местная функция, равная константе k при всех x для произвольного k 2 N;

4.2-местная функция x + y;

5.2-местная функция x ¢ y;

6.1-местная функция x : 1, равная 0 при x = 0 и x ¡ 1 при x > 0;

7.2-местная функция x : y, равная 0 при x < y и x ¡ y при x > y.

Доказательство. (1) Для k 2 N 0-местная функция, равная k, получается при при помощи k суперпозиций из базисных функций s и 0 (k = ss : : : s(0), символ s встречается в записи k раз).

(2) и (3) Ясно, что (2) это частный случай (3). Пусть для k 2 N fk(x) = k одноместная функция, равная константе k. Тогда fk получается по схеме примитивной рекурсии из 0-местной функции k и двухместной функции I21 следующим образом:

·

fk(0)

=

k

fk(t + 1) =

I21(fk(t); t)

(4) Эта функция получается по схеме примитивной рекурсии из од-

номестной функции I1(x) и трехместной функции s(I1

(z; y; x)):

·

1

 

3

 

x + (t + 1) =

s(I31(x + t; t; x))

 

 

x + 0

=

I11(x)

 

53

(5) Эта функция получается по схеме примитивной рекурсии из одноместной функции o(x) и трехместной функции I31(z; y; x) + I33(z; y; x):

·

x

¢ 0

=

o(x)

 

 

 

1

3

(x ¢ t; t; x)

x ¢ (t + 1) =

I3

(x ¢ t; t; x) + I3

(6) Эта функция получается по схеме примитивной рекурсии из 0- местной функции 0 и 2-местной функции I22(z; y):

·

0

:

1

=

0

 

 

 

(t + 1)

:

1 =

I22(x

:

t; t)

 

 

(7) Эта функция получается по схеме примитивной рекурсии из одноместной функции I11(x) и трехместной функции I31(z; y; x) : 1:

·x x

:

:

0= I11(x)

(t + 1) = I31(x : t; t; x) : 1 ¤

Сделаем одно замечание по поводу доказательства. Рассмотрим, например, пункт 5. В этом пункте приведена схема примитивной рекурсии, которая задает двухместную функцию f(x; y) = x ¢ y. Согласно определению примитивной рекурсии, в этой схеме должны участвовать две функции g и h, такие что число аргументов у функции g на единицу меньше, чем у f, а у h, наоборот, на единицу больше. Соответственно,

вдоказательстве g(x) = I11(x) и h(z; y; x) = I31(z; y; x) + I33(z; y; x). Функция g базисная. Функция h получается суперпозицией из двухместной функции сложения, примитивную рекурсивность которой мы доказали

впредыдущем пункте, и двух трехместных базисных функций I31 и I33. Таким образом, все формальности соблюдены. Можно было бы написать просто h(z; y; x) = z + x и это выглядело бы более понятно, однако такая запись формально является некорректной. Дело в том, что если мы хотим получить трехместную функцию при помощи суперпозиции из двухместной функции, то у нас в этой суперпозиции должны участвовать еще две трехместные функции, причем каждая из них должна быть функцией от тех же самых аргументов, что и функция, которую мы хотим получить. А в записи z+x вместе с двухместной функцией сло-

жения участвуют две одноместные функции f1(z) = z и f2(x) = x, причем от разных аргументов, и получается запись, формально не имеющая

54

никакого смысла. Тем не менее, запись z + x выглядит более понятной и лучше отражает смысл функции h, а восстановить по ней формально корректную запись I31(z; y; x) + I33(z; y; x) не составляет труда. В связи с этим мы больше не будем загромождать изложение обилием лишних формальностей и если нам потребуется, например, записать схему примитивной рекурсии из пункта 5, мы вместо строгой с формальной точки зрения записи, приведенной в доказательстве предложения 1, будем пи-

сать просто

·

 

 

 

 

 

x

0

=

0

 

x ¢¢

(t + 1) =

x ¢ t + x;

считая, что восстановить по этой записи правильную запись не составляет труда.

Предложение 2 Пусть f(y; x1; : : : ; xk) примитивно рекурсивная функция. Тогда следующие функции являются примитивно рекурсивными:

1.Sumf (y; x1; : : : ; xk) = Pyi=0 f(i; x1; : : : ; xk);

2.Prodf (y; x1; : : : ; xk) = Qyi=0 f(i; x1; : : : ; xk).

Доказательство. (1) Функция Sumf задается следующей схемой при-

митивной рекурсии:

 

 

·

Sumf (0; x1; : : : ; xk)

=

f(0; x1; : : : ; xk)

Sumf (t + 1; x1; : : : ; xk)

=

Sumf (t; x1; : : : ; xk) + f(s(t); x1; : : : ; xk)

(2) Функция Prodf задается схемой примитивной рекурсии:

· Prodf (t + 1; x1; : : : ; xk)

=

Prodf (t; x1; : : : ; xk) ¢ f(s(t); x1; : : : ; xk) ¤

Prodf (0; x1; : : : ; xk)

=

f(0; x1; : : : ; xk)

Для k 2 N под k-местным предикатом мы понимаем функцию из Nk в двухэлементное множество fистина, ложьg. Мы говорим, что k- местный предикат P (x1; : : : ; xk) истинен на наборе m1; : : : ; mk 2 N, если значение P (m1; : : : ; mk) равно истине. В противном случае мы говорим, что предикат ложен на этом наборе. В качестве примера приведем двухместный предикат P (x; y) =”x 6 y”. Этот предикат истинен на наборе 2; 3 (то есть P (2; 3) истинно) и ложен на наборе 5; 4 (P (5; 4) ложно). Вообще, для m; n 2 N P (m; n) истинно тогда и только тогда, когда m 6 n.

55

Под конъюнкцией предикатов P (x1; : : : ; xk) и Q(x1; : : : ; xk) (обознача-

ется P (x1; : : : ; xk) & Q(x1; : : : ; xk)) мы понимаем предикат, который истинен на наборе x1; : : : ; xk тогда и только тогда, когда на этом набо-

ре истинны сразу оба предиката: P и Q. Под дизъюнкцией предикатов

P (x1; : : : ; xk) и Q(x1; : : : ; xk) (обозначается P (x1; : : : ; xk) _ Q(x1; : : : ; xk)) понимается предикат, который истинен на наборе x1; : : : ; xk тогда и толь-

ко тогда, когда на этом наборе истиннен хотя бы один из этих двух предикатов. Отрицанием предиката P (x1; : : : ; xk) (обозначается :P (x1; : : : ; xk)) называется предикат, который истинен на наборе x1; : : : ; xk тогда и только тогда, когда предикат P ложен на этом наборе. Если P (x1; : : : ; xk) k-местный предикат, то под его характеристической функцией (обозначается ÂP ) понимается всюду определенная функция от k аргументов, такая что

(

ÂP (x1; : : : ; xk) = 1; если P (x1; : : : ; xk) истинно 0; если P (x1; : : : ; xk) ложно;

Определение 15 Предикат P (x1; : : : ; xk) называется примитивно рекурсивным, если его характеристическая функция является примитивно рекурсивной.

Предложение 3 Следующие функции и предикаты являются примитивно рекурсивными:

1. Одноместная функция

(

sg(x) =

1; если x = 0

0; если x > 0;

2. Одноместная функция

(

sg(x) =

0; если x = 0

1; если x > 0;

3.Двухместный предикат ”x 6 y”;

4.Двухместный предикат ”x = y”.

56

Доказательство. (1) sg(x) = 1 : x.

(2)sg(x) = 1 : sg(x).

(3)Для P (x; y) =”x 6 yÂP (x; y) = sg(s(y) : x).

(4)Для P (x; y) =”x = yÂP (x; y) = sg((y : x) + (x : y)). ¤

Предложение 4 Справедливы следующие утверждения:

1.конъюнкция и дизъюнкция примитивно рекурсивных предикатов являются примитивно рекурсивными предикатами;

2.отрицание примитивно рекурсивного предиката есть примитивно рекурсивный предикат;

3.если P (x1; : : : ; xk) k-местный примитивно рекурсивный предикат и f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn) примитивно рекурсивные функции, то n-местный предикат P (f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn)) является примитивно рекурсивным.

Доказательство. (1) ÂP &Q(x1; : : : ; xk) = ÂP (x1; : : : ; xk)¢ÂQ(x1; : : : ; xk)

иÂP _Q(x1; : : : ; xk) = sg(ÂP (x1; : : : ; xk) + ÂQ(x1; : : : ; xk)).

(2)Â:P (x1; : : : ; xk) = sg(ÂP (x1; : : : ; xk)).

(3)Пусть Q(x1; : : : ; xn) = P (f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn)). Тогда

ÂQ(x1; : : : ; xn) = ÂP (f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn)). ¤

Следствие 3 Двухместные предикаты ”x < y” и ”x 6= y” являются примитивно рекурсивными.

Доказательство. ”x =6 y” = :x = y” и ”x < y”=”x 6 y” & ”x =6 y”. ¤

Пусть P (y; x1; : : : ; xk) (k + 1)-местный предикат. Определим функцию от k + 1 аргумента f(y; x1; : : : ; xk) следующим образом:

 

i0;

если i0

y; P (i0; x1; : : : ; xk) истинно и для

f(y; x1; : : : ; xk) =

8

всех i <6i0 P (i; x1; : : : ; xk) ложно

>

если не существует i

 

y, такого что

 

>y + 1;

6

 

>

 

 

 

 

<

 

 

 

 

 

>

P (i; x1; : : : ; xk) истинно:

 

>

 

 

 

 

 

>

 

 

 

 

:

Другими словами, значение f(y; x1; : : : ; xk) равно минимальному числу i 6 y, для которого предикат P (i; x1; : : : ; xk) истинен или числу y + 1, если такого i не существует. Определенную таким образом функцию f мы будем обозначать (¹i 6 y)P (i; x1; : : : ; xk) и говорить, что она получается из предиката P при помощи ограниченной минимизации.

57

Предложение 5 Если P (y; x1; : : : ; xk) примитивно рекурсивный предикат, то функция (¹i 6 y)P (i; x1; : : : ; xk) примитивно рекурсивна.

 

Доказательство. Введем вспомогательную функцию g(j; x1; : : : ; xk) =

¤

j

 (i; x1; : : : ; xk). По предложениям 2 и 4 она примитивно рекурсив-

i=0

:P

6

 

P

y

 

; : : : ; xk).

на. Остается заметить, что (¹i

y)P (i; x1; : : : ; xk) =

 

j=0

g(j; x1

Q

 

 

 

 

 

 

Предложение 6 Следующие функции и предикаты являются примитивно рекурсивными:

1.одноместная функция x!;

2.двухместная функция xy (считаем, что 00 = 1);

3.двухместная функция

 

 

[x=y];

если y > 0

 

 

div(x; y) = (x;

если y = 0;

4. двухместная функция

 

 

 

остаток от деления x на y; если y > 0

rest(x; y) = (x;

если y = 0;

5. двухместная функция

 

 

>

наибольшему k, такому

 

 

 

 

<

 

если y > 0 и x > 1

log(x; y) =

8что y делится на xk;

>

 

если x = 1

 

>y;

 

>

 

 

 

>

 

 

 

:

 

если x = 0 или y = 0;

 

>0;

6.одноместный предикат P (x), истинный тогда и только тогда, когда x простое число;

7.одноместная функция p, такая что для i 2 N p(i) i-ое простое число (p(0) = 2, p(1) = 3, p(2) = 5 и т. д.).

58

Доказательство. (1) Функция x! задается следующей схемой прими-

тивной рекурсии:

·

 

 

 

 

0!

=

1

 

(t + 1)!

=

t! ¢ s(t)

(2)Функция xy задается следующей схемой примитивной рекурсии:

·x0 = 1 xt+1 = xt ¢ x

(3)div(x; y) = (¹i 6 x)(x < i ¢ y) : 1.

(4)rest(x; y) = x : y ¢ div(x; y).

(5)log(x; y) = (¹i 6 y)(rest(y; xi) 6= 0) : 1.

(6)P (x) = ”(¹i 6 x)(rest(x; i + 2) = 0) + 2 = x”.

(7)Функция p(x) задается следующей схемой примитивной рекурсии:

·

p(0)

=

2

p(t + 1)

=

(¹i 6 p(t)! + 1)(”i > p(t)” & P (i));

ибо чему бы ни было равно x, в промежутке [x + 1; x! + 1] обязательно найдется хотя бы одно простое число. ¤

Для дальнейших рассмотрений нам понадобится следующая двухместная функция:

c(x; y) = (x + y)2 + 3x + y :

2

Легко заметить, что число, стоящее в числителе дроби, будет четным для любых натуральных x и y, так что функция c принимает только целые значения.

Предложение 7 Справедливы следующие утверждения:

1.функция c(x; y) примитивно рекурсивна;

2.функция c взаимно однозначно отображает N2 на N;

3.если x1 6 x2 и y1 6 y2, то c(x1; y1) 6 c(x2; y2);

4.для любых x; y 2 N x 6 c(x; y) и y 6 c(x; y).

59

Доказательство. Пункты 1, 3 и 4 очевидны. Докажем пункт 2.

Сначала покажем, что если x1 6= x2 или y1 6= y2, то c(x1; y1) 6= c(x2; y2). Пусть x1 6= x2 или y1 6= y2. Возможны два случая.

1. x1

+ y1 = x2 + y2. Тогда x1 6= x2. Имеем c(x1; y1) ¡ c(x2; y2) =

x1

¡ x2 6= 0.

2.x1 + y1 6= x2 + y2. Без ограничения общности можно считать, что x1 +y1 < x2 +y2. Заметим, что для любых x; y 2 N (x+y)(x+y+1) 6

2c(x; y) < (x + y + 1)(x + y + 2). Имеем 2c(x1; y1) < (x1 + y1 + 1)(x1 + y1 + 2) 6 (x2 + y2)(x2 + y2 + 1) 6 2c(x2; y2).

Осталось доказать, что для любого z 2 N существуют натуральные числа x и y, такие что z = c(x; y). Установим справедливость этого утверждения индукцией по z. Для z = 0 имеем 0 = c(0; 0). Пусть теперь для некоторых x и y z = c(x; y). Тогда если y =6 0, то z + 1 = c(x + 1; y ¡ 1), а если y = 0, то z + 1 = c(0; x + 1). ¤

В связи с пунктом 2 предложения 7 для любого натурального числа z существуют единственные x и y, такие что z = c(x; y). Обозначим x, который однозначно находится по z, через l(z), а y через r(z).

Предложение 8 Одноместные функции l(z) и r(z) примитивно рекурсивны.

Доказательство. Введем вспомогательную двухместную функцию ®(z; y) = (¹i 6 z)(z 6 c(i; y)). Тогда, по пунктам 3 и 4 предложения 7, имеем r(z) = (¹i 6 z)(c(®(z; i); i) = z) и l(z) = (¹i 6 z)(c(i; r(z)) = z). Действительно, при каждом фиксированном y c(0; y) < c(1; y) < : : : и, следовательно, почти для всех i z 6 c(i; y). Значение ®(z; y) равно минимальному такому i, поскольку оно не превосходит z Для этого i неравенство z 6 c(i; y) превратится в равенство в том и только в том случае, если y = r(z). Таким образом, чтобы вычислить r(z), достаточно найти (очевидно, единственный) y, для которого z = c(®(z; y); y). ¤

Настала пора отойти на время от формальных рассмотрений и снова поговорить об основных понятиях нашего курса: о конструктивных пространствах и вычислимых функциях. В определении 4 мы обозначили общее понятие вычислимой функции из одного конструктивного

60

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