Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Garbage / Информатика / 3.3.4 - Рекурсивные функции

.pdf
Скачиваний:
42
Добавлен:
21.05.2015
Размер:
114.59 Кб
Скачать

Рекурсивные функции

Всякий алгоритм однозначно ставит в соответствие исходным данным (в случае, если он определен на них) результат. Поэтому с каждым алгоритмом однозначно связана функция, которую он вычисляет. Верно ли обратное: для всякой ли функции существует вычисляющий ее алгоритм? Исследование проблемы остановки для машин Тьюринга показывает, что нет: для предиката Р (Т, а), истинного, если и только если машина Тьюринга Т останавливается при исходных данных а, алгоритма его вычисления не существует. Возникает вопрос: для каких функций алгоритмы существуют? Как описать такие алгоритмические, эффективно вычислимые функции?

Исследование этих вопросов привело к созданию в 30-х годах нашего века теории рекурсивных функций. В этой теории, как и вообще в теории алгоритмов, принят конструктивный, финитный подход, основной чертой которого является то, что все множество исследуемых объектов (в данном случае функций) строится из конечного числа исходных объектов - базиса - с помощью простых операций, эффективная выполнимость которых достаточно очевидна.

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

Рекурсивные функции являются частичными функциями, т.е. функциями, не обязательно всюду определенными. Чтобы подчеркнуть это обстоятельство, часто в качестве синонима используют термин “частично рекурсивные функции”. Рекурсивные функции, определенные при любых значениях аргументов,

называют общерекурсивными функциями.

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

функций: O(x) = 0, S(x) = x + 1, I nm (x1 ,..., xn) = xm (1 m n) ; фиксируется также

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

Оператор подстановки сопоставляет функции f от n переменных и функциям g1,…,gn от m переменных функцию h от m переменных такую, что для любых натуральных чисел x1,…,xm

h

 

x

 

x

m) f

1

x

 

x

m),..., g

n

x

 

x

 

 

(

1

,...,

 

(g (

1

,...,

 

(

1

,...,

 

m))

Оператор примитивной рекурсии сопоставляет двум функциям f от n переменных и g от n+2 переменных такую функцию h от n+1 переменных, что для любых натуральных чисел x1 ,..., xn , y

h (x1 ,..., xn , 0 ) f (x1 ,..., xn)) ,

h (x1 ,..., xn , y+1 ) g (x1 ,..., xn , y , h (x1 ,..., xn , y ))

Оператор минимизации сопоставляет функции f от n+1 переменных функцию h от n переменных такую, что для любых натуральных чисел x1 ,..., xn , y

h (x1 ,..., xn) = y

тогда и только тогда, когда f (x1 ,..., xn , 0 ),..., f (x1 ,..., xn , y1 ) определены и отличны от 0, а f (x1 ,..., xn , y ) определена и равна 0; если же y с указанными свойствами не существует то значение h (x1 ,..., xn) считается неопределенным.

Если функция h получена из функции f с помощью оператора минимизации, то обычно пишут:

h (x1 ,..., xn) µ y ( f (x1 ,..., xn , y ) = 0)

Рекурсивные функции уже в силу характера своего определения оказываются вычислимыми. В известном смысле верно и обратное: имеются серьезные основания считать, что математическое по своему характеру понятие рекурсивности является точным эквивалентом несколько расплывчатого представления о вычислимости. В 1936 г. А. Черчем был сформулирован тезис: класс функций, вычислимых с помощью алгоритмов в широком интуитивном смысле, совпадает с классом частично рекурсивных функций.