Теорема Клина о рекурсии - Kleenes recursion theorem - Wikipedia

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

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

Обозначение

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

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

Теорема Роджерса о неподвижной точке

Учитывая функцию , а фиксированная точка из это индекс такой, что . Роджерс (Роджерс 1967, §11.2) описывает следующий результат как «более простую версию» (второй) теоремы Клини о рекурсии.

Теорема Роджерса о неподвижной точке. Если является тотально вычислимой функцией, у нее есть фиксированная точка.

Доказательство теоремы о неподвижной точке

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

Учитывая ввод , первая попытка вычислить . Если это вычисление возвращает результат , затем вычислить и вернуть его значение, если оно есть.

Таким образом, для всех показателей частичных вычислимых функций, если определено, то . Если не определено, то это функция, которая нигде не определена. Функция может быть построена из частично вычислимой функции описанный выше и s-m-n теорема: для каждого , это индекс программы, которая вычисляет функцию .

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

Это доказательство является конструкцией частичная рекурсивная функция который реализует Y комбинатор.

Функции без фиксированной точки

Функция такой, что для всех называется без фиксированной точки. Теорема о неподвижной точке показывает, что никакая полная вычислимая функция не свободна от неподвижной точки, но есть много невычислимых функций без неподвижной точки. Критерий полноты Арсланова заявляет, что единственный рекурсивно перечислимый Степень Тьюринга который вычисляет функцию без фиксированной точки, 0′, степень проблема остановки (Soare 1987, п. 88).

Вторая теорема о рекурсии Клини

Вторая теорема о рекурсии - это обобщение теоремы Роджерса со вторым входом в функцию. Одна неформальная интерпретация второй теоремы о рекурсии состоит в том, что можно строить самореференциальные программы; см. «Применение к лугам» ниже.

Вторая теорема о рекурсии. Для любой частично рекурсивной функции есть указатель такой, что .

Теорема может быть доказана из теоремы Роджерса, если положить - функция такая, что (конструкция, описанная S-m-n теорема ). Затем можно проверить, что неподвижная точка этого это индекс как требуется. Теорема конструктивна в том смысле, что фиксированная вычислимая функция отображает индекс для Q в индекс п.

Сравнение с теоремой Роджерса

Вторую теорему о рекурсии Клини и теорему Роджерса можно довольно просто доказать друг из друга (Джонс 1997 С. 229–230). Однако прямое доказательство теоремы Клини (Клини 1952, pp. 352–353) не использует универсальную программу, а это означает, что теорема верна для некоторых систем субрекурсивного программирования, которые не имеют универсальной программы.

Применение к лугам

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

Следующий пример в Лисп показывает, как в следствии может быть эффективно получено из функции . Функция s11 в коде есть функция этого имени, созданная S-m-n теорема.

Q можно заменить на любую функцию с двумя аргументами.

(setq Q '(лямбда (Икс у) Икс))(setq s11 '(лямбда (ж Икс) (список лямбда '(у) (список ж Икс ))))(setq п (список лямбда '(Икс у) (список Q (список s11 'Икс 'Икс) )))(setq п (оценка (список s11 п п)))

Результаты следующих выражений должны быть такими же. p (ноль)

(оценка (список п ноль))

Q (p, ноль)

(оценка (список Q п ноль))

Приложение для устранения рекурсии

Предположим, что и - это общие вычислимые функции, которые используются в рекурсивном определении функции :

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

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

Рефлексивное программирование

Рефлексивный, или отражающий, программирование относится к использованию ссылок на самих себя в программах. Джонс (Джонс 1997 ) представляет собой взгляд на вторую теорему рекурсии на основе рефлексивного языка. Показано, что определенный рефлексивный язык не сильнее языка без рефлексии (поскольку интерпретатор рефлексивного языка может быть реализован без использования рефлексии); затем показано, что теорема о рекурсии почти тривиальна на рефлексивном языке.

Первая теорема о рекурсии

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

Каждый оператор перечисления Φ определяет функцию от наборов натуральных чисел до наборов натуральных чисел, заданных формулой

А рекурсивный оператор - это оператор перечисления, который при задании графика частично рекурсивной функции всегда возвращает график частично рекурсивной функции.

Неподвижной точкой оператора перечисления Φ называется множество F такое, что Φ (F) = F. Первая теорема перечисления показывает, что неподвижные точки могут быть эффективно получены, если сам оператор перечисления вычислим.

Первая теорема рекурсии. Имеют место следующие утверждения.
  1. Для любого вычислимого оператора перечисления Φ существует рекурсивно перечислимое множество F такое, что Φ (F) = F и F наименьший набор с этим свойством.
  2. Для любого рекурсивного оператора существует частично вычислимая функция φ такая, что (φ) = φ и φ - наименьшая частично вычислимая функция с этим свойством.

Пример

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

Рассмотрим рекурсивные уравнения для факториал функция ж:

Соответствующий рекурсивный оператор Φ будет иметь информацию, которая сообщает, как перейти к следующему значению ж от предыдущего значения. Однако рекурсивный оператор фактически определяет график ж. Во-первых, Φ будет содержать пару . Это указывает на то, что ж(0) однозначно 1, и, следовательно, пара (0,1) находится в графике ж.

Далее для каждого п и м, Φ будет содержать пару . Это означает, что если ж(п) является м, тогда ж(п + 1) равно (п + 1)м, так что пара (п + 1, (п + 1)м) находится в графике ж. В отличие от базового случая ж(0) = 1, рекурсивный оператор требует некоторой информации о ж(п) до того, как он определит значение ж(п + 1).

Первая теорема о рекурсии (в частности, часть 1) утверждает, что существует множество F такое, что Φ (F) = F. Множество F будет полностью состоять из упорядоченных пар натуральных чисел и будет графиком факториальной функции ж, по желанию.

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

Нет функции грамм удовлетворяющие этим уравнениям, поскольку из них следует грамм(2) = 1, а также следует грамм(2) = 0. Таким образом, неподвижной точки нет. грамм удовлетворяющие этим рекурсивным уравнениям. Можно сделать оператор перечисления, соответствующий этим уравнениям, но он не будет рекурсивным оператором.

Схема доказательства первой теоремы о рекурсии

Доказательство части 1 первой теоремы о рекурсии получается повторением оператора перечисления Φ, начиная с пустого множества. Сначала последовательность Fk построен, для . Позволять F0 быть пустым множеством. Действуя индуктивно, для каждого k, позволять Fk + 1 быть . Ну наконец то, F считается . Остальная часть доказательства состоит из проверки того, что F рекурсивно перечислимо и является наименьшей неподвижной точкой Φ. Последовательность Fk в этом доказательстве соответствует цепи Клини в доказательстве Теорема Клини о неподвижной точке.

Вторая часть первой теоремы о рекурсии следует из первой части. Предположение, что Φ - рекурсивный оператор, используется, чтобы показать, что неподвижная точка Φ является графиком частичной функции. Ключевым моментом является то, что если фиксированная точка F не является графиком функции, то есть некоторые k такой, что Fk не является графиком функции.

Сравнение со второй теоремой о рекурсии

По сравнению со второй теоремой о рекурсии, первая теорема о рекурсии дает более сильный вывод, но только тогда, когда удовлетворяются более узкие гипотезы. Роджерс (Роджерс 1967 ) использует термин слабая теорема рекурсии для первой теоремы о рекурсии и сильная теорема рекурсии для второй теоремы о рекурсии.

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

Второе отличие состоит в том, что первая теорема о рекурсии применима только к системам уравнений, которые можно преобразовать в рекурсивные операторы. Это ограничение аналогично ограничению на непрерывные операторы в Теорема Клини о неподвижной точке из теория порядка. Вторая теорема о рекурсии может быть применена к любой полной рекурсивной функции.

Обобщенная теорема

В контексте его теории нумерации Ершов показал, что теорема Клини верна для любого предполная нумерация (Барендрегт и Тервейн 2019, п. 1151). Гёделевская нумерация - это предполная нумерация на множестве вычислимых функций, поэтому обобщенная теорема дает теорему о рекурсии Клини как частный случай. Видеть (Ершов 1999, §4.14) для обзора на английском языке.

Учитывая предполную нумерацию тогда для любой частично вычислимой функции с двумя параметрами существует полная вычислимая функция с одним параметром таким, что

Смотрите также

Рекомендации

внешняя ссылка