25. Примитивно рекурсивные функции
Примитивно рекурсивными называют функции, которые можно получить с помощью операций подстановки и рекурсии из следующих базисных функций: константы 0, операции прибавления единицы s : x x+1 и семейства функций проекции: это семейство для каждого k содержит k штук k -местных функций .
Функции проекции позволяют выполнять " неоднородные" подстановки: скажем, можно получить функцию из функций f и h, комбинируя их с функциями проекции: сначала получаем функцию (подстановка в g ), затем (подстановка в h ), затем полученные две функции вместе с функцией подставляем в f.
Подставляя константу 0 в функцию прибавления единицы, получаем константу (функцию нуля аргументов) 1. Затем можно получить константы 2, 3 и т.д.
Примеры примитивно рекурсивных функций
Как и с другими вычислительными моделями, важно накопить некоторый программистский опыт.
Сложение. Функция получается с помощью рекурсии:
sum(x,0)=x;
sum(x,y+1)=sum(x,y)+1.
Надо, конечно, представить правую часть второго равенства как результат подстановки. Формально говоря, h(x,y,z) в определении рекурсии надо положить равным s(z), где s функция прибавления единицы.
Умножение. Функция получается с помощью рекурсии (с использованием сложения):
prod(x,0)=0;
prod(x,y+1)=prod(x,y)+x.
Аналогичным образом можно перейти от умножения к возведению в степень.
Усеченное вычитание. Мы говорим об " усеченном вычитании" при и при , поскольку мы имеем дело только с натуральными (целыми неотрицательными) числами. Одноместная функция усеченного вычитания единицы определяется рекурсивно:
(Рекурсия здесь формальна, так как предыдущее значение не используется.) После этого усеченное вычитание для произвольных аргументов можно определить так:
26 Частично рекурсивная функция
Частично рекурсивная функция определяется аналогично примитивно рекурсивной, только к двум операторам суперпозиции и примитивной рекурсии добавляется ещё третий оператор — минимизации аргумента.
Оператор минимизации аргумента. Пусть — функция от n натуральных переменных. Тогда результатом применения оператора минимума аргумента к функции называется функция от переменной, задаваемая следующим определением:
, при условии
То есть функция возвращает минимальное значение последнего аргумента функции , при котором её значение равно 0.
В терминах императивного программирования — примитивно рекурсивные функции соответствуют программным блокам, в которых используется только арифметические операции, а также условный оператор и оператор арифметического цикла (оператор цикла, в котором число итераций известно на момент начала цикла). Если же программист начинает использовать оператор цикла while, в котором число итераций заранее неизвестно и, в принципе, может быть бесконечным, то он переходит в класс частично рекурсивных функций.
Частично рекурсивные функции для некоторых значений аргумента могут быть не определены, так как оператор минимизации аргумента не всегда корректно определён, так как функция может быть не равной нулю ни при каких значениях аргументов. С точки зрения императивного программирования, результатом частично рекурсивной функции может быть не только число, но и исключение или уход в бесконечный цикл, соответствующие неопределённому значению.
Тезис Чёрча –Класс алгоритмически(машинно) вычислимых частичных функций совподает с классом всех частично рекурсивных функций.
27. Маши́на Тью́ринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятияалгоритма.
Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча — Тьюринга, способна имитировать все другие исполнители (с помощью задания правил перехода), каким-либо образом реализующие процесс пошагового вычисления, в котором каждый шаг вычисления достаточно элементарен.