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

advertisement
Вычислимая функция (эффективно вычислимая
функция) — это такая функция, для которой
существует алгоритм, вычисляющий ее значения
(вычисление функции происходит
последовательно по определенным, заранее
заданным, правилам и инструкциям).
Вычислимая по Тьюрингу функция -
Всякий алгоритм однозначно сопоставляет некоторым начальным
данным
результат.
Значит, с каждым алгоритмом однозначно связана функция,
которую он вычисляет.
Возникает вопрос: для всякой ли функции существует
вычисляющий ее алгоритм?
Используем сформулированный ранее тезис Тьюринга,
утверждающий, что функция вычислима с помощью какого-нибудь
алгоритма тогда и только тогда, когда она вычислима с помощью
машины Тьюринга, и трансформируем данный вопрос в
следующий:
Для всякой ли функции можно указать вычисляющую ее машину
Тьюринга?
Если нет, то для каких функций существует вычисляющий их
алгоритм (машина Тьюринга) и как описать такие, как
говорят, алгоритмически или эффективно вычислимые
функции?
Исследование этих вопросов привело к созданию в 1930-х гг.
теории рекурсивных функций. При этом класс вычислимых
функций (названных здесь рекурсивными) получил такое
описание, которое весьма напомнило процесс построения
аксиоматической теории на базе некоторой системы
аксиом.
1. Сначала были выбраны простейшие функции,
эффективная вычислимость которых была очевидна (своего
рода "аксиомы").
2. Затем сформулированы некоторые правила (названные
операторами), на основе которых можно строить новые
функции из уже имеющихся (своего рода "правила вывода").
Тогда требуемым классом функций будет совокупность
всех функций, получающихся из простейших с помощью
выбранных операторов.
Наша цель будет состоять в том, чтобы доказать, что
построенный таким образом класс функций = совпадет =
с классом функций, вычислимых с помощью машин
Тьюринга.
Идея доказательства этого утверждения в одну
сторону проста:
сначала доказать вычислимость по Тьюрингу
простейших функций, а затем вычислимость по Тьюрингу
функций, получающихся из вычислимых по Тьюрингу
функций с помощью выбранных операторов.
Выберем простейшие функции:
О(х) = 0 - нулевая функция (аннулирование);
S(x) = x + 1 - функция следования (сдвига);
Inm (x1, x2…xn) = xm
где m≤n - функция
выбора аргумента
или
проектирования.
Все простейшие функции всюду определены,
интуитивно вычислимы + могут быть вычислены на
машине Тьюринга.
Определим операции, которые из простейших
строят новые функции. Операция суперпозиции
Пусть даны функция f( y1… ym) от m
аргументов и функции g1(x1…xn), …, gm(x1…xn) от
n аргументов.
Функция F(x1…xn) = f (g1(x1…xn), …, gm(x1…xn))
называется суперпозицией функций f и g1…gm
Операция суперпозиции
Операция примитивной рекурсии
Пусть при n >= 1 даны две какие-либо функции
g (x1…xn)
n аргументов
и
h (x1…xn, xn+1, xn+2) .
n+ 2 аргумент
Определим третью функцию f (x1…xn, xn+1) по
следующей схеме (схеме примитивной рекурсии)
f (x1…xn, 0) = g (x1…xn)
f (x1…xn, yn+1) = h (x1…xn, y, f (x1…xn, y)).
Операция примитивной рекурсии
Эти равенства однозначно определяют функцию f.
Говорят, что функция f получена из функций g и h
с помощью операции примитивной рекурсии по
переменной xn+1.
Операция примитивной рекурсии
При n = 0 схема примитивной рекурсии имеет следующий
вид:
Функции, которые могут быть получены из простейших
функций O, S, Inm с помощью конечного числа
применений операций суперпозиции и примитивной
рекурсии, называются примитивно рекурсивными.
Операция минимизации
Пусть задана f(x, y). Зафиксируем значение х и
выясним, при каком y f(x, y)=0.
Более сложная задача: найти для f(x, y) и
зафиксированного х - наименьшее из тех
значений y, при которых f(x, y)=0. Результат
решения этой задачи зависит от х, т.е.
наименьшее у, при котором есть функция от х.
Принято обозначение
Наименьшее у такое, что
(х) = у[ f(x, y)=0 ]
f(x, y)=0
Операция минимизации
Аналогично определяем функцию многих
переменных (х1…хn) = у[ f(x1,x2…xn, y)=0 ]
Переход от функции f(x1,x2…xn, y) к функции
(х1…хn) называют применением -оператора.
Функции, которые могут быть получены из простейших
функций O, S, Inm с помощью конечного числа
применений операций суперпозиции, примитивной
рекурсии и минимизации , называются частично
рекурсивными.
Общерекурсивные функции — это подмножество частично
рекурсивных функций, определенных для всех значений аргументов.
Легко понять, что множество общерекурсивных функций включает в
себя множество примитивно рекурсивных функций, а частично
рекурсивные функции включают в себя общерекурсивные функции.
Известно, что не всякая общерекурсивная функция является примитивно
рекурсивной. В то же время существуют частично рекурсивные
функции, которые не могут быть продолжены до общерекурсивных.
Заметим, что частично рекурсивные функции иногда называют просто
рекурсивными функциями. Для любой частично рекурсивной функции
можно указать алгоритм вычисления ее значений, т. е. все частично
рекурсивные функции есть вычислимые функции. Обращение этого
высказывания носит название тезиса Чёрча.
Тезис Чёрча. Всякая вычислимая частичная числовая
функция является частично рекурсивной функцией.
По этому принципу класс функций, вычислимых с помощью
алгоритмов в широком интуитивном смысле, совпадает с
классом частично рекурсивных функций.
Тезис Чёрча не может быть строго доказан, но считается
справедливым, поскольку он подтверждается опытом,
накопленным в математике за всю ее историю. Какие бы классы
алгоритмов ни строились, вычисляемые ими числовые функции
оказывались частично рекурсивными.
В теории алгоритмов также известно следующее соглашение.
Тезис Тьюринга. Всякий алгоритм представим в форме
машины Тьюринга.
Согласно этому тезису, всякая вычислимая в интуитивном
смысле функция вычислима с помощью некоторой машины
Тьюринга. Принятие тезиса Тьюринга равносильно принятию
тезиса Чёрча для частично рекурсивных функций.
Download