Шаг 1.
Понятие рекурсии.
Понятие вычислимой функции

    На этом шаге мы рассмотрим понятие вычислимой функции.

    Для дальнейшего рассмотрения нам понадобится ряд определений. Пусть имеются два множества X и Y.

    Если некоторым элементам множества X поставлены в соответствие однозначно определенные элементы множества Y, то говорят, что задана частичная функция из X в Y.

    Совокупность тех элементов множества X, у которых есть соответствующие элементы в Y, называется областью определения функции, а совокупность тех элементов Y, которые соответствуют элементам X, называются совокупностью значений функции.

    Если область определения функции из X в Y совпадает с множеством X, то функция называется всюду определенной.

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

    Пусть имеется класс функций типа y(x1, x2, ..., xn), особенностями которых является то, что все аргументы функции x1,..., xn целочисленны, и значение функции y также выражается целым числом. Другими словами, рассматриваются функции, аргументы и значения которых дискретны.

    Функция y(x1, x2, ..., xn) называется эффективно вычислимой, если существует алгоритм, позволяющий вычислить ее значение по известным значениям аргументов.

    Поскольку понятие алгоритма в этом определении берется в интуитивном смысле, то и понятие эффективно вычислимой функции оказывается интуитивным. Тем не менее, при переходе от алгоритмов к вычислимым функциям возникает одно очень существенное обстоятельство. Совокупность процессов, подпадающих под интуитивное понятие алгоритма, весьма обширна и мало обозрима. Напротив, совокупность вычислимых функций для самых разных пониманий процессов, удовлетворяющих перечисленным условиям, оказалась одной и той же и притом легко описываемой в обычных математических терминах. Эта точно описанная совокупность числовых функций, совпадающая с совокупностью всех вычислимых функций при самом широком до сих пор известном понимании алгоритма, носит название совокупности рекурсивных функций.

    Любая алгоритмическая модель и, в том числе, рекурсивные функции, должна предусматривать определение элементарных шагов алгоритма и способов построения из них какой-то последовательности преобразований, обеспечивающих необходимую последовательность обработки данных. В рекурсивной модели такими <элементарными шагами> являются так называемые простейшие числовые функции S1, 0n и Imn, комбинацией которых строятся все более сложные и которые определяются следующим образом:

    Перечисленные простейшие функции всюду определены и интуитивно вычислимы. Над ними определяются операции (в дальнейшем они называются операторами), обладающие тем свойством, что их применение к функциям, вычислимым в интуитивном смысле, порождает новые функции, также заведомо вычислимые в интуитивном смысле. Частичные функции, которые можно получить при помощи этих операторов из простейших функций называются частично рекурсивными. Гипотеза Черча состоит в том, что класс построенных таким образом частично рекурсивных функций совпадает с классом функций, допускающим алгоритмическое вычисление.

    Переходим к рассмотрению операторов, обеспечивающих преобразование простейших функций.

Суперпозиция частичных функций

    Пусть m-местные функции

f1(x1,..., xm), f2 (x1,..., xm),..., fn(x1,..., xm)

подставляются в n-местную функцию g(x1,..., xn). В результате получается n-местная функция:

h(x1,..., xn)=g(f1(x1, ..., xm),..., fn(x1,..., xm))

    Говорят, что функция h получена из функций g, f1, ..., fn суперпозицией (или подстановкой). Символически такая подстановка обозначается следующим образом: Sn+1(g,f1,...,fn), где индекс при S обозначает количество функций, подставляемых в качестве аргументов.

    Если мы умеем вычислять функции g, f1, ..., fn, то функция h также может быть вычислена. Ясно также, что если все функции g, f1, ..., fn всюду определены, то и функция h также всюду определена. Таким образом, если функции g, f1, ..., fn интуитивно вычислимы, то будет интуитивно вычислимой и функция h.


    Пример 1. Найти значение S2(S1,01).

    Для этого значение простейшей функции 01 должно быть подставлено в S1(x)=x+1. Но 01(x)=0, следовательно, h(x) = S2(S1, 01) = S1(01) = 0+1= 1.


    Пример 2. Найти значение S3(I22,I11,01). В этом случае конечная функция будет двуместной (n = 3 - 1 =2), следовательно h(x1,x2) = I22(I11,01) = I22(x1,0) = 0.

    На следующем шаге мы рассмотрим основные свойства примитивно рекурсивных функций.




Содержание Следующий шаг