| ||||||
---|---|---|---|---|---|---|
|
| |||||
|
Лекция 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).
| |||||
|