Рекурсивные функции
Очевидно, что вычислимыми являются все натуральные константы. Как и в формальной арифметике натуральных чисел, определим их с помощью константы 0 и функции следования .
Также вычислимыми являются функции тождества. Через обозначим множество функций, вычисляемых по правилу
.
Мощным средством построения новых функций является их суперпозиция.
Определение. Оператором суперпозиции называется подстановка в функцию от m переменных m функций от одних и тех же n переменных, т.е. , где и .
Функции тождества и оператор суперпозиции задают всевозможные операторы подстановки функции в функцию, а также переименования, перестановки и отождествления переменных.
Оператор примитивной рекурсии определяет n+1-местную функцию f через n-местную функцию g и n+2-местную функцию h.
Определение. Система равенств
называется схемой примитивной рекурсии, а оператор оператором примитивной рекурсии.
Если , то . Например, так определяется хорошо знакомая функция факториал.
Здесь .
Определение. Функция называется примитивно рекурсивной, если она может быть построена из 0, функций и с помощью конечного числа применений операторов суперпозиции и примитивной рекурсии.
Примеры.
1) Функция суммы, определяемая равенством , является примитивно рекурсивной, так как она задаётся схемой примитивной рекурсии
,
т.е. , где , причём функции g и h являются примитивно рекурсивными.
2) Функция арифметического вычитания . (Проверить самостоятельно).
Арифметизированные логические функции также являются примитивно рекурсивными, так, например, . Также с помощью арифметического вычитания можно выразить Ù и Ú (самостоятельно). Из функциональной полноты множества функций следует примитивная рекурсивность всех логических функций.
Определение. Отношение называется примитивно рекурсивным, если его характеристическая функция
примитивно рекурсивна.
Так как существует взаимно однозначное соответствие между отношениями и предикатами, то будет характеристической функцией и для соответствующего отношению R предиката.
Например, предикат делимости нацело числа x на n является примитивно рекурсивным, так как его характеристическая функция , где – функция, вычисляющая остаток от целочисленного деления x на n, примитивно рекурсивна.
Определение.Оператор называется примитивно рекурсивным, если он сохраняет примитивную рекурсию функций.
Например, условный оператор , где
,
является примитивно рекурсивным. Примитивно рекурсивными являются также операторы конечного суммирования и конечного произведения
,
.
Определение. Ограниченный оператор наименьшего числа, называемый ограниченным оператором минимизации (ограниченный m-оператор), определяется равенством
.
Пример. Пусть задан предикат , который принимает значение 1, если число y нацело делится на . Применение ограниченного оператора минимизации к предикату имеет результатом функцию .
Ограниченный оператор минимизации примитивно рекурсивен, он является средством построения обратных функций. Функция является обратной к функции . Например, функция целочисленного деления z на x определяется ограниченным оператором минимизации
.
В результате рассмотрения примеров функций, которые все являлись примитивно рекурсивными, возникает вопрос: существуют ли не примитивно рекурсивные функции. В данном случае ответ положительный, класс примитивно рекурсивных функций не исчерпывает класс всех вычислимых функций.
Функция Аккермана. Построим функцию, которая является вычислимой, но не примитивно рекурсивной.
Определим последовательность функций по правилу . Функции обладают общими свойствами , ,
, .
Продолжим последовательность по этому рекуррентному правилу
( ) (2)
Функции примитивно рекурсивны и растут очень быстро. Так, например, , , , ¼ , , ¼
Зафиксируем и рассмотрим последовательность функций , , ¼ , , ¼ Определим функцию , которая обладает свойствами
(3)
Функция Аккермана определяется как диагональ функции , т.е. = .
Функция Аккермана является вычислимой, так как соотношения (2), (3) позволяют построить программу для её вычисления. Однако данная функция не является примитивно рекурсивной, так как она в силу (3) является двукратно рекурсивной. Поэтому средства построения вычислимых функций нуждаются в расширении. Оператор кратной рекурсии не замыкает класс вычислимых функций, так как для любого n можно построить функцию, которая является -рекурсивной, но не n-рекурсивной. Средством завершающим построение вычислимых функций является m-оператор.
Определение.
Определение. Функция называется частично рекурсивной, если она может быть построена из 0, функций и с помощью конечного числа применений операторов суперпозиции, примитивной рекурсии и m-оператора.
Частично рекурсивная функция может быть определена не для всех значений. Например, функция обратная к функции следования , задаваемая равенством , не определена при .
Определение. Частично рекурсивная функция называется общерекурсивной, если она всюду определена.
Дата добавления: 2016-02-09; просмотров: 1674;