Одно из нескольких эквивалентных определений вычислимой функции.
В математической логике и информатике общая рекурсивная функция , частично рекурсивная функция или μ-рекурсивная функция — это частичная функция преобразования натуральных чисел в натуральные числа, которая «вычислима» как в интуитивном, так и в формальном смысле . Если функция тотальная, ее также называют тотальной рекурсивной функцией (иногда сокращают до рекурсивной функции ). [1] В теории вычислимости показано, что µ-рекурсивные функции — это именно те функции, которые могут быть вычислены с помощью машин Тьюринга [2] [4] (это одна из теорем, подтверждающих тезис Чёрча – Тьюринга ). Мю-рекурсивные функции тесно связаны с примитивно-рекурсивными функциями , и их индуктивное определение (ниже) основано на определении примитивно-рекурсивных функций. Однако не каждая тотально рекурсивная функция является примитивно-рекурсивной функцией — наиболее известным примером является функция Аккермана .
Другими эквивалентными классами функций являются функции лямбда-исчисления и функции, которые могут быть вычислены с помощью алгоритмов Маркова .
Подмножество всех тотально рекурсивных функций со значениями в {0,1} известно в теории сложности вычислений как класс сложности R .
Определение
Мю -рекурсивные функции (или общерекурсивные функции ) — это частичные функции, которые принимают конечные кортежи натуральных чисел и возвращают одно натуральное число. Это наименьший класс частичных функций, который включает исходные функции и замкнут относительно композиции, примитивной рекурсии и оператора минимизации µ .
Наименьшим классом функций, включающим исходные функции и замкнутыми относительно композиции и примитивной рекурсии (т.е. без минимизации), является класс примитивно-рекурсивных функций . Хотя все примитивно-рекурсивные функции являются тотальными, этого нельзя сказать о частично-рекурсивных функциях; например, минимизация функции-преемника не определена. Примитивно-рекурсивные функции являются подмножеством тотально рекурсивных функций, которые являются подмножеством частично-рекурсивных функций. Например, можно доказать, что функция Аккермана является полностью рекурсивной и непримитивной.
Примитивные или «базовые» функции:
- Постоянные функции Cк
н: Для каждого натурального числа n и каждого k![{\displaystyle C_{n}^{k}(x_{1},\ldots,x_{k})\ {\stackrel {\mathrm {def} {=}}\ n}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Альтернативные определения вместо этого используют нулевую функцию как примитивную функцию, которая всегда возвращает ноль, и строят константные функции из нулевой функции, функции-преемника и оператора композиции.
- Функция-преемник S:
![{\displaystyle S(x)\ {\stackrel {\mathrm {def} {=}}\ x+1\,}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Функция проекции (также называемая функцией идентичности ): для всех натуральных чисел, таких что :
![{\displaystyle P_{i}^{k}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle я,к}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle 1\leq я\leq k}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle P_{i}^{k}(x_{1},\ldots,x_{k})\ {\stackrel {\mathrm {def} {=}}\ x_{i}\,.}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Операторы ( область определения функции, определенной оператором, представляет собой набор значений аргументов, так что каждое применение функции, которое должно быть выполнено во время вычисления, дает четко определенный результат):
- Оператор композиции (также называемый оператором подстановки ): для заданной m-арной функции и m k-арных функций :
![{\displaystyle \circ \,}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h(x_{1},\ldots,x_{m})\,}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle g_{1}(x_{1},\ldots,x_{k}),\ldots,g_{m}(x_{1},\ldots,x_{k})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h\circ (g_{1},\ldots,g_{m})\ {\stackrel {\mathrm {def} {=}}\ f,\quad {\text{where}}\quad f (x_{1},\ldots ,x_{k})=h(g_{1}(x_{1},\ldots ,x_{k}),\ldots ,g_{m}(x_{1},\ ldots ,x_{k})).}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Это означает, что определено только тогда, когда и все определены.
![{\ displaystyle f (x_ {1}, \ ldots, x_ {k})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle g_{1}(x_{1},\ldots,x_{k}),\ldots,g_{m}(x_{1},\ldots,x_{k}),}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h(g_{1}(x_{1},\ldots,x_{k}),\ldots,g_{m}(x_{1},\ldots,x_{k}))}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Примитивный оператор рекурсии ρ : Учитывая k -арную функцию и k +2-арную функцию :
![{\displaystyle g(x_{1},\ldots,x_{k})\,}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h(y,z,x_{1},\ldots,x_{k})\,}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle {\begin{aligned}\rho (g,h)&\ {\stackrel {\mathrm {def} }{=}}\ f\quad {\text{где k+1 -арная функция }} f{\text{ определяется как}}\\f(0,x_{1},\ldots ,x_{k})&=g(x_{1},\ldots ,x_{k})\\f( S(y),x_{1},\ldots ,x_{k})&=h(y,f(y,x_{1},\ldots ,x_{k}),x_{1},\ldots , x_{k})\,.\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Это означает, что определено только тогда, когда и определены для всех
![{\displaystyle f(y,x_{1},\ldots,x_{k})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle g(x_{1},\ldots,x_{k})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h(z,f(z,x_{1},\ldots,x_{k}),x_{1},\ldots,x_{k})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle z<y.}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Оператор минимизации µ : Учитывая ( k +1)-арную функцию , k -арная функция определяется следующим образом:
![{\displaystyle f(y,x_{1},\ldots,x_{k})\,}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \mu (е)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle {\begin{aligned}\mu (f)(x_{1},\ldots ,x_{k})=z{\stackrel {\mathrm {def} {\iff }}\ f(i, x_{1},\ldots ,x_{k})&>0\quad {\text{for}}\quad i=0,\ldots ,z-1\quad {\text{and}}\\f( z,x_{1},\ldots ,x_{k})&=0\quad \end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Интуитивно понятно, что минимизация ищет — начиная поиск с 0 и продолжая вверх — наименьший аргумент, который заставляет функцию возвращать ноль; если такого аргумента нет или если встречается аргумент, для которого f не определен, то поиск никогда не завершается и для аргумента не определен![{\displaystyle \mu (е)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle (x_{1},\ldots,x_{k}).}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
В то время как в некоторых учебниках используется µ-оператор, как он определен здесь, [5] [6], другие, такие как [7] [8], требуют, чтобы µ-оператор применялся только к полным функциям f . Хотя это и ограничивает µ-оператор по сравнению с определением, данным здесь, класс µ-рекурсивных функций остается тем же, что следует из теоремы Клини о нормальной форме (см. ниже). [5] [6] Единственная разница состоит в том, что становится неразрешимым, определяет ли конкретное определение функции µ-рекурсивную функцию, так же как неразрешимо, является ли вычислимая (т. е. µ-рекурсивная) функция полной. [7]
Оператор сильного равенства можно использовать для сравнения частичных µ-рекурсивных функций. Это определено для всех частичных функций f и g , так что![{\displaystyle \simeq}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle f(x_{1},\ldots,x_{k})\simeq g(x_{1},\ldots,x_{l})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
выполняется тогда и только тогда, когда для любого выбора аргументов либо обе функции определены и их значения равны, либо обе функции не определены.
Примеры
Примеры, не связанные с оператором минимизации, можно найти в разделе Примитивно-рекурсивная функция#Examples .
Следующие примеры предназначены только для демонстрации использования оператора минимизации; их можно определить и без него, хотя и более сложным способом, поскольку все они примитивно рекурсивны.
- Целочисленный квадратный корень из x можно определить как наименьшее значение z такое, что . Используя оператор минимизации, общее рекурсивное определение имеет вид , где Not , Gt и Mul — логическое отрицание , «больше» и умножение [9] соответственно. Фактически, это
![{\displaystyle (z+1)^{2}>x}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \operatorname {Isqrt} =\mu (\operatorname {Not} \circ \operatorname {Gt} \circ (\operatorname {Mul} \circ (S\circ P_{1}^{2},S\circ P_{1}^{2}),P_{2}^{2}))}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
0 тогда и только тогда, когда выполняется. Следовательно , это наименьшее z такое, что оно имеет место. Юнктор отрицания Not необходим, поскольку Gt кодирует истину посредством![{\displaystyle S(z)*S(z)>x}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \operatorname {Isqrt} (x)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
1 , а µ ищет0 .
Следующие примеры определяют общерекурсивные функции, которые не являются примитивно-рекурсивными; следовательно, они не могут избежать использования оператора минимизации.
Полная рекурсивная функция
Общерекурсивная функция называется тотальной рекурсивной функцией , если она определена для каждого входного сигнала или, что то же самое, если она может быть вычислена с помощью тотальной машины Тьюринга . Невозможно вычислимо определить, является ли данная общерекурсивная функция полной - см. Проблема остановки .
Эквивалентность с другими моделями вычислимости
В эквивалентности моделей вычислимости проводится параллель между машинами Тьюринга , которые не завершаются для определенных входных данных, и неопределенным результатом для этих входных данных в соответствующей частично рекурсивной функции. Оператор неограниченного поиска не определяется правилами примитивной рекурсии, поскольку они не предоставляют механизма «бесконечных циклов» (неопределенных значений).
Теорема о нормальной форме
Теорема Клини о нормальной форме гласит, что для каждого k существуют примитивно-рекурсивные функции и такие, что для любой µ-рекурсивной функции с k свободными переменными существует e такое, что![{\displaystyle U(y)\!}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle T(y,e,x_{1},\ldots,x_{k})\!}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle f(x_{1},\ldots,x_{k})\!}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
.
Число e называется индексом или числом Гёделя для функции f . [10] : 52–53 Следствием этого результата является то, что любая µ-рекурсивная функция может быть определена с использованием единственного экземпляра µ-оператора, примененного к (тотальной) примитивно-рекурсивной функции.
Мински отмечает, что приведенное выше определение по сути является μ-рекурсивным эквивалентом универсальной машины Тьюринга :![{\displaystyle U}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Построить U — значит записать определение общерекурсивной функции U(n, x), которая правильно интерпретирует число n и вычисляет соответствующую функцию от x. непосредственное построение U потребовало бы, по существу, того же количества усилий и, по существу, тех же идей , которые мы вложили в построение универсальной машины Тьюринга
Символизм
В литературе используется множество различных символов. Преимущество использования символизма заключается в том, что получение функции путем «вложения» операторов один в другой легче записать в компактной форме. Далее строка параметров x 1 , ..., x n сокращается как x :
- Постоянная функция : Клини использует «Cп
q( x ) = q " и Булос-Берджесс-Джеффри (2002) (BBJ) используют аббревиатуру " const n ( x ) = n ":
- например С7
13( р, с, т, ты, v, ш, x ) = 13 - например const 13 ( r, s, t, u, v, w, x) = 13
- Функция преемника : Клини использует x' и S для обозначения «преемника». Поскольку «преемник» считается примитивным, в большинстве текстов апостроф используется следующим образом:
- S(a) = a +1 = def a', где 1 = def 0', 2 = def 0 ' ' и т. д.
- Функция тождества : Клини (1952) использует «Uн
я«чтобы указать функцию тождества для переменных x i ; BBJ использует идентификатор функции тождестван
япо переменным от x 1 до x n :
- тын
я( х ) = идентификаторн
я( Икс ) знак равно Икс я - например, У7
3= идентификатор7
3( р, с, т, ты, v, ш, Икс) = т
- Оператор композиции (замены) : Клини использует жирный шрифт S.м
н(не путать с буквой S, обозначающей «преемник» ! ). Верхний индекс «m» относится к m -й функции «f m », тогда как нижний индекс «n» относится к n- й переменной «x n »:
- Если нам дано h( x ) = g( f 1 ( x ), ... , f m ( x ) )
- час ( Икс ) = Sнм
_(г, ж 1 , ... , ж м )
- Аналогичным образом, но без подстрочных и надстрочных индексов, BBJ пишет:
- h( x' )= Cn[g, f 1 ,..., f m ]( x )
- Примитивная рекурсия : Клини использует символ « R n (базовый шаг, шаг индукции)», где n указывает количество переменных, BBJ использует «Pr (базовый шаг, шаг индукции) ( x )». Данный:
- базовый шаг: h(0, x )= f( x ), и
- шаг индукции: h(y+1, x ) = g(y, h(y, x ), x )
- Пример: определение примитивной рекурсии a + b:
- базовый шаг: f( 0, a ) = a = U1
1(а) - шаг индукции: f(b',a) = (f(b,a))' = g(b, f(b,a),a) = g(b,c,a) = c' = S(U3
2( б, в, а ))
- Р 2 { У1
1(а), S [ (U3
2( б, в, а ) ] } - Пр{ У1
1(а), S[ (U3
2( б, в, а ) ] }
Пример : Клини приводит пример того, как выполнить рекурсивный вывод f(b, a) = b + a (обратите внимание на обращение переменных a и b). Он начинает с 3 начальных функций
- S(а) = а'
- ты1
1(а) = а - ты3
2( б, с, а ) = с - g(b, c, a) = S(U3
2( б, с, а )) = с' - базовый шаг: h( 0, a ) = U1
1(а)
- шаг индукции: h( b', a ) = g( b, h( b, a ), a )
Он приезжает:
- а+b = R2 [ U1
1, С3
1(С, У3
2) ]
Примеры
Смотрите также
Рекомендации
- ^ «Рекурсивные функции». Стэнфордская энциклопедия философии . Лаборатория метафизических исследований Стэнфордского университета. 2021.
- ^ Стэнфордская энциклопедия философии , Рекурсивные функции входа, раздел 1.7: «[Класс µ-рекурсивных функций] совпадает с классом функций, вычислимых по Тьюрингу, введенными Аланом Тьюрингом, а также с классом λ -определяемые функции, введенные Алонсо Чёрчем » .
- ^ Клини, Стивен С. (1936). «λ-определимость и рекурсивность». Математический журнал Дьюка . 2 (2): 340–352. дои : 10.1215/s0012-7094-36-00227-2.
- ^ Тьюринг, Алан Мэтисон (декабрь 1937 г.). «Вычислимость и λ-определимость». Журнал символической логики . 2 (4): 153–163. дои : 10.2307/2268280. JSTOR 2268280. S2CID 2317046.Схема доказательства на стр.153: [3]
![{\displaystyle \lambda {\mbox{-определяемый}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- ^ Аб Эндертон, HB, Математическое введение в логику, Academic Press, 1972
- ^ Аб Булос, Г.С., Берджесс, Дж.П., Джеффри, Р.К., Вычислимость и логика, Cambridge University Press, 2007 г.
- ^ Аб Джонс, Н.Д., Вычислимость и сложность: с точки зрения программирования, MIT Press, Кембридж, Массачусетс, Лондон, Англия, 1997.
- ^ Кфури, А.Дж., Р.Н. Молл и М.А. Арбиб, Программный подход к вычислимости, 2-е изд., Springer-Verlag, Берлин, Гейдельберг, Нью-Йорк, 1982 г.
- ^ определено в Примитивная рекурсивная функция#Соединители , Примитивная рекурсивная функция#Предикат равенства и Примитивная рекурсивная функция#Умножение
- ^ Стивен Коул Клини (январь 1943 г.). «Рекурсивные предикаты и кванторы» (PDF) . Труды Американского математического общества . 53 (1): 41–73. дои : 10.1090/S0002-9947-1943-0007371-8 .
- Клини, Стивен (1991) [1952]. Введение в метаматематику . Уолтерс-Нордхофф и Северная Голландия. ISBN 0-7204-2103-9.
- Соаре, Р. (1999) [1987]. Рекурсивно перечислимые множества и степени: исследование вычислимых функций и вычислимо порожденных множеств. Спрингер-Верлаг. ISBN 9783540152996.
- Мински, Марвин Л. (1972) [1967]. Вычисления: конечные и бесконечные машины . Прентис-Холл. стр. 210–5. ISBN 9780131654495.
- На страницах 210-215 Мински показывает, как создать μ-оператор, используя модель регистровой машины , тем самым демонстрируя его эквивалентность общерекурсивным функциям.
Внешние ссылки
- Статья в Стэнфордской энциклопедии философии
- Компилятор для преобразования рекурсивной функции в эквивалентную машину Тьюринга.