Вычислимые функции. Частично рекурсивные и общерекурсивные функции
Для алгоритмических проблем типичным является то обстоятельство, что требуется найти алгоритм для решения задачи, в условия которой входят значения некоторой конечной системы целочисленных параметров x1,x2,…,xn, а искомым результатом также является целое числоy. Следовательно, стоит вопрос о существовании алгоритма для вычисления значений числовой функцииy, зависящей от целочисленных значений аргументовx1,x2,…,xn.
Определение 1. Функция называется эффективно вычислимой, если существует алгоритм, позволяющий вычислить ее значения.
Переход от алгоритма к эффективно вычислимой функции дает определенные преимущества. Дело в том, что все требования, которые предъявляются к алгоритмам, выполняются и для совокупности всех вычислимых функций, которая получила название совокупности рекурсивных функций.
Класс вычислимых функций можно построить следующим образом. Для начала выбираются простейшие функции:
(x) =x+ 1 (оператор сдвига),
O(x) = 0 (оператор аннулирования),
Inm(x1,x2,…,xn) =xm(оператор проектирования).
Ясно, что все три простейшие функции всюду определены и интуитивно вычислимы.
Далее вводятся операции над функциями.
Суперпозиция функций. Пусть определены функцииf1(x1,x2,…,xn),f2(x1,x2,…,xn), …,fm(x1,x2,…,xn) и функция(x1,x2,…,xm). Говорят, что функция(x1,x2,…,xn) получена суперпозицией функцийfi(x1,x2,…,xn), если справедливо равенство
(x1,x2,…,xт) =( f1(x1,x2,…,xn),f2(x1,x2,…,xn), …,fm(x1,x2,…,xn)).
Если каким-либо образом можно вычислить функции fiдля определенных значенийaiпеременныхxi, то, очевидно можно вычислить и функцию.
Схема примитивной рекурсии. Пусть имеются две функции(x2,x3,…,xn) и(x1,x2,… ,xn,xn+1) (n> 1). Рассмотрим новую функцию, которая удовлетворяет следующим равенствам:
f(0,x2,x3,…,xn) =(x2,x3,…,xn),
f(y+ 1,x2,x3,…,xn) =(y,f(y,x2,x3,…,xn),x2,x3,…,xn).
Отметим, что функция зависит отn– 1 аргументов,– отn+ 1, аf– отn.
Функции, определенные с помощью таких равенств называются функциями, полученными по схеме рекурсии.
В качестве примера рассмотрим функцию f(y, x):
f(0,x) =x,
f(y + 1,x) =f(y, x) + 1.
Здесь функция (x) =x, а(y,f(y, x),x) =y+ 1. Рассмотрим, как можно вычислить значение функцииf(y, x) приy= 5, x= 2. Так какf(0, x) =(2) = 2, то из второго равенства последовательно имеем (начиная сy= 0):
f(1, 2) =(0, 2, 2) = 2 + 1 = 3,
f(2, 2) =(1, 3, 2) = 3 + 1 = 4,
f(3, 2) =(2, 4, 2) = 4 + 1 = 5,
f(4, 2) =(3, 5, 2) = 5 + 1 = 6,
f(5, 2) =(4, 6, 2) = 6 + 1 = 7 – искомое значение функции.
Операция минимизации(-оператор). Пусть задана некоторая функцияf(x,y). Зафиксируем значениеxи выясним, при каком значенииyf(x,y) = 0. Так как результат зависит отx, то наименьшее значениеy, при которомf(x,y) = 0, есть функция отx. Принято обозначение
(x) =y[f(x,y) = 0].
(читается: «наименьшее yтакое, чтоf(x,y) = 0»)
Аналогично можно определить функцию для многих переменных:
( x1,x2,…,xn) =y[f(x1,x2,…,xn,y) = 0].
Переход от функции fк функцииназываетсяприменением -оператора.
Функция может быть вычислена следующим образом:
Вычислим f(x1,x2,…,xn, 0). Если это значениеf= 0, то полагаем( x1,x2,…,xn) = 0 и завершаем вычисление. Иначе переходим к следующему шагу.
Вычислим f(x1,x2,…,xn, 1). Если это значениеf(x1,x2,…,xn, 1) = 0, то полагаем( x1,x2,…,xn) = 1 и завершаем вычисление. Иначе переходим к следующему шагу. И т.д.
Если окажется, что для всех достижимых (т.е. принадлижащих области определения) значений уфункцияf(x1,x2,…,xn,у)0, то функцию( x1,x2,…,xn) считают неопределенной.
Определение 2. Функцияf(x1,x2,…,xn) называетсячастично рекурсивной, если она может быть получена за конечное число шагов из простейших функций при помощи операций суперпозиции, схем примитивной рекурсии и-оператора.
Определение 3. Функцияf(x1,x2,…,xn) называетсяобщерекурсивной, если она частично рекурсивна и всюду определена.
Примерами общерекурсивных функций являются: f(x,y) =x+y,f(x,y) =xy,f(x,y) =x+n.
Тезис А. Чёрча. Каждая интуитивно вычислимая функция является частично рекурсивной.
Этот тезис нельзя доказать, так как он связывает нестрогое понятие интуитивно вычислимой функции со строгим математическим понятием частично рекурсивной функции. Но этот тезис можно опровергнуть, если построить пример функции интуитивно вычислимой, но не являющейся частично рекурсивной.
