Примитивно-рекурсивные функции

Пусть заданы функции:

g(x1, ... , xn) и h(x1, . . . , xn, xn + 1, xn + 2).

Функция f(x1, ... , xn+1) получается из функций g и h с помощью операции примитивной рекурсии, если справедливы соотношения:

f(x1, . . . , xn, 0) = g(x1, . . . , xn); (1)

f(x1, . . . , xn, y+1) = h(x1, . . . , xn, y, f(x1, . . . , xn, y)). (2)

Соотношения (1) и (2) называются схемой примитивной рекурсии. Соотношение (1) задает граничное условие, а соотношение (2) рекурсивно выражает значения функции f через другое значение этой функции.

Переменные x1, . . . , xn в схеме примитивной рекурсии представляют собой параметры. При этом допускается отсутствие параметров. В последнем случае функция g не имеет существенных переменных и является константой. Переменные xn+1 и xn+2 называются соответственно переменной рекурсии и переменной для рекурсивного вызова.

Предположим, что функции g и h являются вычислимыми. В этом случае функция f также является вычислимой.

Действительно, для нахождения значения f(x1, . . . , xn+1) можно воспользоваться следующей процедурой:

1. Вычислить значение f(x1, . . . , xn, 0), используя алгоритм вычисления функции g и соотношение (1) схемы примитивной рекурсии.

2. Используя соотношение (2) и алгоритм вычисления функции h, можно последовательно вычислить значения

f(x1, . . . , xn, 1), . . . , f(x1, . . . , xn, xn+1).

ОПРЕДЕЛЕНИЕ

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

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

Упражнение. Показать, что если f(x1, x2) является примитивно-рекурсивной функцией, если она выражается через примитивно-рекурсивные функции g и h с помощью соотношений

f(0, x) = g(x); (1)

f(y+1, x) = h(x, y, f(y, x)). (2)

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

Рассмотрим примеры примитивно-рекурсивных функций.

1. Сумма f(x, у) = x + у задается следующей схемой примитивной рекурсии:

f(x, 0) = Примитивно-рекурсивные функции - student2.ru (x);

f(x, у+1) = S(f(x, у)).

То есть f(x ,у) получается из элементарных функций g(x1)= Примитивно-рекурсивные функции - student2.ru (x1) и h(x1, x2, x3) =S( Примитивно-рекурсивные функции - student2.ru ( x1, x2, x3)) с помощью операции примитивной рекурсии и поэтому является примитивно-рекурсивной.

2. Произведение p(x, у) = x ´ у задается схемами:

p(x, 0) = O(x);

p(x, у+1) = x+ p(x, у).

Здесь p выражается через функции O(x) и f( Примитивно-рекурсивные функции - student2.ru (x1, x2, x3), Примитивно-рекурсивные функции - student2.ru ( x1, x2, x3)), где f - это примитивно-рекурсивная функция из предыдущего примера.

3. Экспонента e(x) = 2x может быть задана соотношениями:

e(0) = S(0);

e(x+1) = 2×e(x).

Функции S(0(y)) и 2y - примитивно-рекурсивные. Поэтому функция e(x) также является примитивно-рекурсивной.

4. Функции sg(x) и Примитивно-рекурсивные функции - student2.ru (x), определяемые как:

sg(x) = Примитивно-рекурсивные функции - student2.ru и Примитивно-рекурсивные функции - student2.ru (x) = Примитивно-рекурсивные функции - student2.ru , задаются следующими схемами:

sg(0) = 0; Примитивно-рекурсивные функции - student2.ru (x) = 1;

sg(x+1) = 1. Примитивно-рекурсивные функции - student2.ru (x+1) = 0.

5. Функция уменьшения на единицу d(x) = x - 1 определяется как:

d(0) = 0;

d(x+1) = x.

6. Функция усеченного вычитания m(x, у) = x - у:

m (x, 0) = x;

m (x, у+1) = d(m(x, у)).

Функции из примеров 5 и 6 являются аналогами арифметического вычитания для множества целых неотрицательных чисел. Такие функции по определению равны нулю, если вычитаемое больше уменьшаемого.

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

Например, рассмотрим функцию mod(x,y), принимающую значение, равное остатку от деления числа x на число y.

Для определенности положим, что при делении на нуль остаток всегда равен 0.

Определим mod(x, y) схемой:

mod(0, y) = 0; (1)

mod(x+1, y) = (mod(x, y)+1)× sg(y - (mod (x, y)+1)). (2)

Здесь рекурсия ведется по первой переменной.

В соотношении (2) реализовано очевидное свойство остатка от деления значения x+1 на y, которое можно выразить следующим соотношением:

mod(x+1, y) либо равен mod(x, y)+1, если mod(x, y) < y, либо равен 0, в случае, когда mod(x, y) = y.

Аналогичными соотношениями можно выразить функцию для целочисленного деления div(x, y).

Для определенности будем считать, что div(x, 0) = x, поскольку функция целочисленного деления не является всюду определенной.

div(0, y) = 0;

div(x+1, y) = div(x, y)+ Примитивно-рекурсивные функции - student2.ru (y-(mod(x, y)+1)).

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

Например, для функцииmod(x, y) необходимо образовать вспомогательную функциюg(x, y)= mod( Примитивно-рекурсивные функции - student2.ru (x, y), Примитивно-рекурсивные функции - student2.ru (x, y)). Такая функция может быть выражена с помощью схемы примитивной рекурсии.

Поэтому mod также является примитивно-рекурсивной функцией, поскольку получается из примитивно-рекурсивной функции g обратной перестановкой переменных.

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

ТЕОРЕМА 8.1

Функция f(x1, . . . , xn+1), задаваемая выражением

f(x1, . . . , xn+1) = Примитивно-рекурсивные функции - student2.ru g(x1, . . . , xn,i) - примитивно-рекурсивная функция, если g(x1, . . . , xn, xn+1) является примитивно-рекурсивной.

Доказательство

Очевидно, что функция f может быть задана следующей схемой примитивной рекурсии:

f(x1, ... , xn, 0) = g(x1, . . . , xn, 0);

f(x1, ... , xn, y+1) = f(x1, . . . , xn, y) + g(x1, . . . , xn, y + 1).

Наши рекомендации