Выберете лекцию

 

Лекция №1

Лекция №2

Лекция №3

Лекция №4

Лекция №5

Лекция №6

Лекция №7

Лекция №8

Лекция №9

Лекция №10

Лекция №11

Лекция №12

Лекция №13

Лекция №14

Лекция №15

Лекция №16

Литература

  Лекция 9. Элементы теории рекурсивных функций

 Рассмотрим два каких-либо множества X={x1, x2, ...}, Y={y1, у2, …}. Если некоторым элементам множества Х поставлены в соот­ветствие однозначно определенные элементы множества Y, то говорят, -что задана одноместная частичная функция из Х в Y. Совокупность элементов множества X, у кото­рых есть соответствующие элементы в Y, называется областью определенности функции, а совокупность эле­ментов Y, которые соответствуют элементам множества X, называется совокупностью значений функции. Если область определенности совпадает- с множеством X, называемым областью определения функции, то функция называется всюду определенной, или просто функцией.

Если функция f ставит в соответствие элементу xi Î Х элемент yi Î Y, то уi, называется значением функции f в точке xi: Вообще х называется независимой переменной, у - зависимой переменной. Функция называется взаимно-однозначной, или одно-однозначной, если она разным эле­ментам множества Х ставит в соответствие разные эле­менты множества Y, т. е. если из неравенства xi ¹ xj следует неравенство yi ¹ yj. Функции f и g из Х в Y называются равными, если они имеют одну и ту же область определенности и значения их совпадают в каждой точке области определенности.

Частичная функция8 из X1 ´ X2 ´ … ´ Xn, где X1 ´ X2 ´ … ´ Xn декартово произведение множеств X1, X2, …, Xn, в Y называется частичной функцией от n переменных, или n-местной частичной функцией из X1 ´ X2 ´ … ´ Xn в Y.

В дальнейшем будем обозначать множество всех натуральных чисел через N. Частичная функция из N(k) в N называется k-местной числовой частичной функцией. Здесь

N(k)=N ´ N ´´ N

                                      k

обозначает декартову k-ую степень множества N.

Следующие функции называются простейшими10:

 функция следования s(x)=x'=x+1

функция-константа Can(x1,…, xn)=a

 функция тождества Imn(x1,…, xn)=xm (1mn, n=1, 2,…).

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

Оператор подстановки 

Пусть задано п каких-либо m-местных частичных функций f1,… , fn из А в В и пусть задана частичная n-местная функция f из В в С. Введем частичную функцию g из А в С такую, что

g(x1, … , xm)=f(f1(x1, … , xm), … , fn(x1, … , xm))

для любых x1, …,xm из A.

Преобразование, с помощью которого получена функ­ция g из f, f1, f2, …, fn, называется оператором подстановки или суперпозиции, и обозначается символом S(n+1), где (n+1) - число функций.

Оператор подстановки определен для функций f1, … , fn с одинаковым числом переменных. Затруднение, возникаю­щее при необходимости подстановки функций с разным числом переменных, можно преодолеть путем введения с помощью функции тождества фиктивных переменных. Например, функцию двух переменных j(x1, x2) можно представить в виде функции трех переменных, из которых одна является фиктивной:

j(x1, x2)= y(x1, x2, x3)= j(I31(x1, x2, x3), I32(x1, x2, x3)).

Обозначим через Fn множество всех частичных8 n-мест­ных числовых функций. Оператор S(n+1) является всюду определенной (n+1)-местной функцией из Fn ´ Fm ´ … ´ Fm  в Fm. Если обозначить через F множество всех частичных числовых функций от произвольного числа переменных, то оператор S(n+1) можно рассматривать как частичную (n+1)-местную функцию из F(n+1) в F.

 

Оператор примитивной рекурсии

Пусть заданы какие-либо числовые частичные функции: n-местная g и (n+2)-местная h; (n+1)-местная частичная функция f  возникает из функции g и h с помощью оператора примитивной рекурсии (или просто примитивной рекурсии), если для натуральных значений x1, …, xn, y

f(x1, …, xn ,0) = g(x1, …, xn),

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

Оператор примитивной рекурсии обозначают через R:

f = R(g, h).

f(x1, …, xn ,0) = g(x1, …, xn),

f(x1, …, xn, 1) = h(x1, …, xn, 0, g(x1, …, xn, y)),

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

f(x1, …, xn, m+1) = h(x1, …, xn, m, f(x1, …, xn, m)).

Совокупность этих равенств для любых функций g и h однозначно определяет значения функции f. Таким образом, для каждых двух частичных числовых функций g от n переменных и h от (п +2) переменных существует одна и только одна функция f от (n+1) переменной, возникаю­щая примитивной рекурсией (по данной переменной xn+1).

Если для некоторых систем чисел x1, …, xn, y1 зна­чение f неопределенное, то неопределенными будут и зна­чения f (x1, …, xn, у) для всех у > y1. Если функции g и h всюду определенные, то и f =R{g, h) - всюду определенная функция.

Рассмотрим примеры функций, возникающих с помощью опера­тора примитивной рекурсии.

 

Пример 1. Пусть g=0, h = 2x+y, тогда

f(0)=0,

f(1)=0,

f(2)=2,

f(3)=22+2=6

f(4)=23+22+2=12,

f(x+1)=2x+2(x-1)+…+22+2=2,

т.е. функция f(x+1) = x(x+1) возникает примитивной рекурсией из постоянной g=0 и функции h=2x+y.

При задании номера переменной, по которой осущест­вляется рекурсия, функция f однозначно определяется видом функций g и h; переход к рекурсии по другой пере­менной в общем случае приводит к изменению функции f.

 

Пример 2. Если g=0, h=x+2y, то

        f(0)=0,

        f(1)=0,

        f(2)=1,

        f(3)=2+21=4,

        f(4)=3+22+221=11,

        f(5)=4+23+222+231=26,

        f(x+1)=x+2(x-1)+22(x-2)+…+2x-22+2x-11=, x1

- это арифметико-геометрическая прогрессия, сумма которой

 

;

 

поэтому

f(x+1) = 2x+2-x-2.

Эта функция возникает примитивной рекурсией из постоянной g=0 и функции h=y+2x.

 

Пример 3. Пусть g=0, h=x-2y, тогда

f(0)=0,                  f(3)=2-2·1=0,

f(1)=0,                  f(4)=3,

f(2)=1,                  f(5)=4-2·3 -не определено;

 

следовательно, значения функции f(x) для x³5 не определенны.

 

Оператор минимизации

Рассмотрим какую-нибудь n-местную (n ³1) частичную8 числовую функцию f. Допустим, что существует алгоритм для вычисления значений функции f во всей области определенности. Зафиксируем значения xi, …, xn-1 пер­вых (п—1) аргументов f и рассмотрим уравнение

f(x1, ..., xn-1, у)=xп.

Для того чтобы найти целочисленное решение у этого уравнения, будем по имеющемуся алгоритму вычислять значения f(x1, ..., xn-1, у) последовательно для у=0, 1, 2, .... Найденное в процессе такого вычисления наи­меньшее значение а, для которого

f(x1, ..., xn-1, a)=xп,

обозначим через

m y(f(x1, ..., xn-1, y)=xп).

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

1) значение f(x1, ..., xn-1, 0) не определено;

2) значения f(x1, ..., xn-1, у) при у=0, 1, ..., k опре­делены, но отличны от xn, а значение f(x1, ..., xn-1, k+1) не определено;

3) значения f(x1, ..., xn-1, у) определены для всех у=0, 1, 2, ..., но отличны от xn.

В этих случаях значение m y считается неопределенным; m y является частичной функцией от п переменных x1, ..., xn. Эту функцию будем обозначать через Mf. Здесь М — символ оператора минимизации, преобразующего функцию f в Mf.

 

Пример 4. Пусть f(у)=2y, тогда Mf(x)= m y(2y=х). функ­ция Мf(x) определена для значений х, равных 2n, где n=0, 1, 2, ... , в этих случаях Mf(x)=Log2x=n. В частности,

Mf(1)=0,

Mf(2)=1;

значения функции Mf при x=0 и x=3 не определены.

 

Пример 5. Пусть f(x, у)=у—х, тогда Мf(х,z)= m y(у—х=z). Значение этого выражения неопределенное, так как уже при у=0 (x>0) функция f(x, у)=у—х не определена. Но с другой стороны, уравнение у—х=z имеет решение у=z+х.

Пример 5 показывает, что значение функции Мf не является в общем случае решением уравнения f(x1, ..., xn-1, у)=xп. Значение Мf совпадает с минимальным решением уравнения f(x1, ..., xn-1, у)=xп, если функция f(x1, ..., xn-1, у) для данного набора значений x1, ..., xn-1 определена при всех y £Mf(x1, …, xn).

Если функция f одноместная, то функция Мf назы­вается обращением функции f, или обратной функцией; ее обозначают часто через f--1:

f--1(x)= m y(f(y)=x).