Под числовыми функциями мы понимаем функции f:Nn®N, где N=w – множество всех натуральных чисел x³0, Nn={(x1,…,xn):x1ÎN,…,xnÎN} – его декартова степень. Эти функции называются n-местными. Функцией N0®N, зависящей от 0 переменных, называется произвольная константа cÎN. Частичной (числовой) n-местной функцией называется функция f: D®N, определенная на некотором подмножестве DÍNn декартовой степени. Обозначим D через Dom(f) и будем называть её областью определения частичной функции f. Для частичной n-местной функции f будем применять обозначения f:Nn®N.
Простейшие функции
Функции s:N®N, 0:N0®N и Inm: Nn®N, принимающие значения s(x) = x + 1, константа0 и Inm(x1,…,xn) = xm, для всех x, x1,…,xn Î N и n ³ m ³ 1, называются простейшими. Операции над функциями будут называться операторами.
Выделим операторы, с помощью которых будут строиться вычислимые функции. Применяя эти операторы к простейшим функциям, мы получим частично рекурсивные функции.
Композиция частичных функций
Частичные функции f:A®B можно определить как функции, заданные на некоторых подмножествах Dom(f)ÍA и принимающие значения в B. Если Dom(f) = A, то f называется определенной всюду. В некоторых случаях частичные функции удобно рассматривать как определенные всюду. С этой целью к каждому множеству добавляется бесконечно удаленная (или отмеченная) точка *. Произвольная частичная функция f:A®B расширяется до функции :AÈ{*}®BÈ{*} по формулам (x) = f(x) для x Î Dom(f) и по формулам (x)=* для всех остальных x, включая *. С другой стороны, каждая функция :AÈ{*}®BÈ{*} определяет частичную функцию g:A®B, принимающую значения g(x) = (x) для x Î -1(B). Ясно, что область Dom(g) = -1(B) состоит из точек, не отображающихся в бесконечно удаленную. Соответствие, сопоставляющее частичным функциям f функции является взаимно однозначным. Рассматривая частичные функций f как их расширения , легко определить композицию частичных функций f:A®B и g:B®C. Если f и g определены всюду, то композиция совпадает с обычной. В общем случае область определения композиции g×f состоит из точек xÎA, таких, что g(f(x)) ¹ *.
Пусть f1,…,fn:Nm®N – частичные функции. Определим частичную функцию (f1,…,fn):Nm®Nn, полагая
(f1,…,fn)(x)=(f1(x),…,fn(x))
для всех xÎDom(f1)Ç… ÇDom(fn) ÍNm.
Пусть f1,…,fn:Nm®N и g:Nn®N – частичные функции. Оператор композиции (или суперпозиции) Sn+1 сопоставляет им частичную функцию:
Sn+1(g, f1,…,fn)=g°(f1,…,fn).
Областью определения частичной функции g°(f1,…,fn) является подмножество точек x = (x1,…,xm)ÎDom(f1)Ç…ÇDom(fn), для которых (f1(x),…,fn(x))ÎDom(g).
Пример 1
Рассмотрим частичные функции g:N2®N, f1:N®N, f2:N®N, принимающие значения g(x1,x2) = x1 – x2, f1(x) = x/2, f2(x) = x/3. Функция f1 определена для четных x; f2
для чисел, кратных 3; g(x1,x2) – для пар чисел x1³x2. Следовательно, Dom(g) = {(x1,x2):x1³x2}, Dom(f1) = {2x:xÎN} = 2N, Dom(f2) =3N. Оператор S3 сопоставляет этим частичным функциям композицию g°(f1,f2):N®N. Область Dom(g°(f1,f2)) состоит из z Î 6N, удовлетворяющих неравенству z/2 ³ z/3. Поскольку это неравенство выполнено для всех z, то область равна 6N. Если поменять местами f1 и f2, то область определения композиции изменится. Она будет состоять из z Î 6N, удовлетворяющих z/3 ³ z/2. Следовательно, Dom(S3(g, f2, f1)) = {0}.
Оператор примитивной рекурсии
Пусть заданы частичные функции g:Nn®N и h:Nn+2®N. Оператором примитивной рекурсии называется оператор, сопоставляющий паре (g,h) такую частичную функцию f:Nn+1®N, что для всех x1,…,xn,у Î N имеют место равенства:
f(x1,…,xn,0) = g(x1,…,xn);
f(x1,…,xn,y+1) = h(x1,…,xn,y, f(x1,…,xn,y)).
Поскольку область определения и значения дополняются отмеченной точкой, то равенство частичных функций означает, что для каждого значения аргумента либо левая, либо правая части равенства определены и равны между собой, либо обе его части не определены. Значение оператора примитивной рекурсии обозначается: f = R(g,h). Если g и h определены всюду, то f = R(g,h) определена всюду.
Если n = 0, то для любых числа g Î N и частичной функции h:N2®N частичная функция f = R(g,h) определяется с помощью равенств:
f(0) = g, f(y + 1) = h(y,f(y)).
Функция f называется примитивно рекурсивной, если ее можно получить из простейших функций s, 0 и Inm с помощью операторов композиции и примитивной рекурсии (таким образом, примитивно рекурсивная функция всюду определена.)
Пример 2
Функция o: N ® N, принимающая постоянные значения o(x)=0, будет примитивно рекурсивной в силу
o(0) = 0;
o(y+1)= I22(y, o(y)).
Функция оn:Nn®N, все значения которой равны нулю, примитивно рекурсивна, ибо она является композицией о°In1 простейших функций In1:Nn®N и о:N®N. Рассмотрим при k ³ 1 функцию ck:Nn®N, все значения которой равны k. Функция ck равна композиции функций оn:Nn®N и k функций N®N®…®N, каждая из которых равна s, ck = sk°on. Стало быть, ck примитивно рекурсивна.
Пример 3
Функция f:N2®N, заданная как f(x,y) = x + y, удовлетворяет соотношениям:
f(x,0) = x;
f(x,y + 1)= (x + y) +1 =f(x,y) + 1 =s(f(x,y)).
Положим: g(x) = I11(x) = x, h(x,y,z) = s(z). Так как f(x,0) = g(x) и f(x,y + 1) = h(x,y,f(x,y)), то f = R(g,h) = R(I11,s ° I33). Значит, f – примитивно рекурсивна.
Предложение 1 Для любых примитивно рекурсивных функций f(x1, …, xn) и g(x1, …, xn) их сумма примитивно рекурсивна.
Доказательство. Вытекает из равенства
f(x1, …, xn)+g(x1, …, xn)= S(+,f,g) (x1, …, xn).
Пример 4
Функция f:N2®N, заданная как f(x,y) = x×y, удовлетворяет соотношениям:
f(x,0) = 0;
f(x,y + 1)= x ( y + 1) =f(x,y) + x.
Положим: g(x) = o(x), h(x,y,z) = x+z . Так как f(x,0) = o(x) и f(x,y + 1) = h(x,y,f(x,y)), то f = R(g,h) = R(o, S(+, I31,, I33). Значит, f – примитивно рекурсивна.
Предложение 2 Для любых примитивно рекурсивных функций f(x1, …, xn) и g(x1, …, xn) их произведение примитивно рекурсивно.
Пример 5
Рассмотрим функцию: f(x,y) = xy. Поскольку f(x,0) = 1, и f(x,y + 1) = x×f(x,y) = g(x,y,f(x,y)), где g(x,y,z) = x×z – примитивно рекурсивная функция (как композиция операции умножения и функции (I31, I33):N3®N2), то f(x,y) примитивно рекурсивна.
Пример 6
Пусть d(x) = max(0,x – 1). Имеют место равенства d(0) = 0 и d(y + 1) = y = g(y,d(y)), где g(y,z) = I21(y,z) =y. Следовательно, d(x) – примитивно рекурсивна.
Пример 7
Пусть r(x,y) = max(0,x – y). Верны соотношения r(x,0) = x иr(x,y + 1) = d(r(x,y)) = g(x,y,r(x,y)), где g(x,y,z) = d(z) – функция из примера 5. Значит, r(x,y) – примитивно рекурсивна.
Пример 6 показывает, что функция f(x,y) =ôx-yô= r(x,y) + r(y,x) примитивно рекурсивна, как композиция функций x1 + x2 и пары функций (r(x,y),r(y,x)):N2®N2 (примитивная рекурсивность функции r(y,x) получается из разложимости r(y,x) = S3(r, I22, I21)).
Оператор минимизации
Пусть g:Nn+1®N – частичная функция. Будем говорить, что частичная функция f:Nn®N получается из неё с помощью оператора минимизации, и писать:
f(x1,…,xn) = my[g(x1,…,xn,y) = 0],
если выполнено следующее условие: f(x1,…,xn) определено и равно yÎN тогда и только тогда, когда значение g(x1,…,xn,0),…,g(x1,…,xn,y -1) определены и не равны 0, а g(x1,…,xn,y) = 0.
Частичная функция f:Nn®N называется частично рекурсивной, если она может быть получена из простейших функций 0, s, Inm за конечное число применений операторов композиции, примитивной рекурсии и минимизации.
Пример 8
Рассмотрим примитивно рекурсивную функцию: g(x,y) = x – Sg(y), где Sg(y) = 0, при y = 0, и Sg(y) = 1, для y > 0. Тогда значения:
f(x)=my[ôx-Sg(y)ô= 0]
не определены при x > 1. Наименьшее среди y Î N, удовлетворяющих 0 – Sg(y) = 0, будет равно 0, а наименьшее среди y, при которых 1 – Sg(y) =0, равно 1. Следовательно, f(0) = 0, f(1) = 1, и f(x) не определены при x > 1. Функция ôx – Sg(y)ô примитивно рекурсивная, значит, f(x) – частично рекурсивная.
Пусть А – подмножество натуральных чисел. Частичной характеристической функцией множества А называется частичная функция CA:N®N, равная 0 в точках множества А и не определенная вне А. Множество А называется частично рекурсивным, если его частичная характеристическая функция частично рекурсивна. Множество А называется примитивно рекурсивным, если функция N®N, равная 0 на А и равная 1 вне А, является примитивно рекурсивной.
Теорема. Пусть f:N®N – примитивно рекурсивная функция, A Í N – примитивно рекурсивное множество. Тогда частичная функция fA:N®N, определенная как fA(x) = f(x) для x Î A и неопределенная при x Ï A, является частично рекурсивной.
Доказательство. Легко видеть, что fA(x) = f(x) + CA(x). Поэтому fA частично рекурсивна, как сумма частично рекурсивных функций.
Понятие частично рекурсивной функции является одним из главных в теории алгоритмов. Частично рекурсивная функция вычислима с помощью процедуры, отвечающей нашему представлению об алгоритме. С другой стороны, все известные до сих пор уточнения определения алгоритма не привели к классу вычислимых функций, который был бы шире класса частично рекурсивных. Поэтому общепринятой является следующая гипотеза:
Тезис Чёрча. Класс алгоритмически (или машинно) вычислимых частичных числовых функций совпадает с классом всех частично рекурсивных функций.