Рекурсивная функция (теория вычислимости)

Рекурсивная функция (теория вычислимости)

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

Последние совпадают с классом вычислимых по Тьюрингу функций. Определения этих трёх классов сильно связаны. Они были введены Куртом Гёделем с целью формализации понятия вычислимости.

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

Содержание

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

Определение

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

К числу базовых примитивно рекурсивных функций относятся функции следующих трёх видов:

  • Нулевая функция O — функция без аргументов, всегда возвращающая 0.
  • Функция следования S одного переменного, сопоставляющая любому натуральному числу x непосредственно следующее за ним натуральное число x+1.
  • Функции I_n^m, где 0<m\leqslant n, от n переменных, сопоставляющие любому упорядоченному набору x_1,\dots, x_n натуральных чисел число x_m из этого набора.

Операторы подстановки и примитивной рекурсии определяются следующим образом:

  • Оператор суперпозиции (иногда — оператор подстановки). Пусть f — функция от m переменных, а g_1, \dots, g_m — упорядоченный набор функций от n переменных каждая. Тогда результатом суперпозиции функций g_k в функцию f называется функция h от n переменных, сопоставляющая любому упорядоченному набору x_1, \dots, x_n натуральных чисел число
h(x_1,\ldots,x_n)=f(g_1(x_1,\ldots,x_n),\ldots,g_m(x_1,\ldots,x_n)).
  • Оператор примитивной рекурсии. Пусть f — функция от n переменных, а g — функция от n+2 переменных. Тогда результатом применения оператора примитивной рекурсии к паре функций f и g называется функция h от n+1 переменной вида
h(x_1,\ldots,x_n,0)=f(x_1,\ldots,x_n);
h(x_1,\ldots,x_n,y+1)=g(x_1,\ldots,x_n,y,h(x_1,\ldots, x_n,y)).

В данном определении переменную y можно понимать как счётчик итераций, f — как исходную функцию в начале итерационного процесса, выдающего некую последовательность функций n переменных, начинающуюся с f, и g — как оператор, принимающий на вход n переменных x_1,\ldots,x_n, номер шага итерации \left(y\right), функцию h(x_1,\ldots, x_n,y) на данном шаге итерации, и возвращающий функцию на следующем шаге итерации.

Множество примитивно рекурсивных функций — это минимальное множество, содержащее все базовые функции и замкнутое относительно указанных операторов подстановки и примитивной рекурсии.

Примеры

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

  • Функция Сложения двух натуральных чисел (Sum(a,\;b)=a+b) может быть рассмотрена в качестве примитивно рекурсивной функции двух переменных, получаемой в результате применения оператора примитивной рекурсии к функциям I_1^1 и F\,\!, вторая из которых получается подстановкой основной функции I_3^3 в основную функцию S:
Sum(x,\;0)=I_1^1(x);
Sum(x,\;y+1)=F(x,\;y,\;Sum(x,\;y));
F(x,\;y,\;z)=S(I_3^3(x,\;y,\;z)).
  • Умножение двух натуральных чисел (Mul(a,\;b)=a\times b) может быть рассмотрено в качестве примитивно рекурсивной функции двух переменных, получаемой в результате применения оператора примитивной рекурсии к функциям O и G, вторая из которых получается подстановкой основных функций I_3^1 и I_3^3 в функцию сложения:
Mul(x,\;0)=O(x);
Mul(x,\;y+1)=G(x,\;y,\;Mul(x,y));
G(x,\;y,\;z)=Sum(I_3^1(x,\;y,\;z),I_3^3(x,\;y,\;z)).
  • Симметрическая разность (абсолютная величина разности) двух натуральных чисел (Sub(a,\;b)=|a-b|) может быть рассмотрена в качестве примитивно рекурсивной функции двух переменных, получаемой в результате применения следующих подстановок и примитивных рекурсий:
Sub(x,\;y)=Sum(Sub_1(x,\;y),\; Sub_2(x,\;y));
Sub_2(x,\;y)=Sub_1(I_2^2(x,\;y),\; I_2^1(x,\;y));
\left\{\begin{array}{l}Sub_1(x,\;0)=I_1^1(x)\\
Sub_1(x,\;y+1)=f(x,\;y,\;Sub_1(x,\;y))\end{array}\right.;
f(x,\;y,\;z)=p(I_3^3(x,\;y,\;z));
\left\{\begin{array}{l}p(0)=0\\
p(y+1)=I_2^1(y,\;p(y))\end{array}\right.;

Частично рекурсивная функция

Частично рекурсивная функция определяется аналогично примитивно рекурсивной, только к двум операторам суперпозиции и примитивной рекурсии добавляется ещё третий оператор — минимизации аргумента.

  • Оператор минимизации аргумента. Пусть f — функция от n  натуральных переменных. Тогда результатом применения оператора минимума аргумента к функции f называется функция h от n-1 переменной, задаваемая следующим определением:
h(x_1,\ldots, x_{n-1}) = min (y), при условии f(x_1,\ldots,x_{n-1},\,y)=0
То есть функция h возвращает минимальное значение последнего аргумента функции f, при котором её значение равно 0.

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

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

Общерекурсивная функция

Общерекурсивная функция — частично рекурсивная функция, определённая для всех значений аргументов. Задача определения того, является ли частично рекурсивная функция с данным описанием общерекурсивной или нет, алгоритмически неразрешима.

Свойства

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

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

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

Как было показано Гёделем, частично рекурсивные функции совпадают с множеством вычислимых функций.[источник не указан 314 дней]

История возникновения названий

Термины «частично рекурсивная функция» и «общерекурсивная функция» прижились в силу исторических причин и по сути являются результатом неточного перевода английских терминов partial recursive function и total recursive function, которые по смыслу более правильно переводить как «рекурсивные функции, определенные на части множества возможных аргументов» и «рекурсивные функции, определенные на всём множестве возможных аргументов». Наречие «частично» относится не к прилагательному «рекурсивные», а к области определения функции. Возможно, более правильным названием было бы «частично определённые рекурсивные функции» и просто «везде определённые рекурсивные функции». Но длинные названия не прижились.

См. также

Ссылки

Литература

  • Гильберт Д, Бернайс П. Основания математики, Т. 1. — М.: Наука, 1979.
  • Клини С. К. Введение в метаматематику. — М., 1957.
  • Мальцев А.И. Алгоритмы и рекурсивные функции. М.:Наука, 1986.
  • Петер Р. Рекурсивные функции — ИЛ, 1954.
  • Верещагин Н. К., Шень А.Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции, 2-е изд., исправленное. — М.:МЦНМО, 2002.



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Рекурсивная функция (теория вычислимости)" в других словарях:

  • КОНСТРУКТИВНЫХ МОДЕЛЕЙ ТЕОРИЯ — один из разделов математики, возникший на границе моделей теории, алгебры и теории рекурсивных функций и связанный с изучением вопросов эффективности в моделях и алгебрах. Статья А. И. Мальцева Конструктивные алгебры [1] явилась первой обзорной… …   Математическая энциклопедия

  • Машина Тьюринга — Художественное представление машины Тьюринга Машина Тьюринга (МТ)  абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма …   Википедия

  • Brainfuck — Класс языка: эзотерический Появился в: 1993 Автор(ы): Урбан Мюллер Диалекты: BrainSub, Brainfork, Brainloller, COW, Ook, Pbrain, Smallfuck, Spoon, LOLCODE, Whitespace,DoubleFuck, Feckfeck Испытал влияние …   Википедия

  • Брэйнфак — Brainfuck (англ. brain мозг + эзотерических языков программирования, придуман Урбаном Мюллером (нем. Urban Müller) в 1993 году для забавы. Язык имеет восемь команд, каждая из которых записывается одним символом. Исходный код программы на… …   Википедия

  • Детерминированная машина Тьюринга — Машина Тьюринга (МТ) абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма. Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча… …   Википедия

  • Машина Тьюринга для умножения чисел — Машина Тьюринга (МТ) абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма. Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча… …   Википедия

  • Машина тьюринга — (МТ) абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма. Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча Тьюринга, способна …   Википедия

  • Тьюринга машина — Машина Тьюринга (МТ) абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма. Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча… …   Википедия

  • Машина Поста — (МП) абстрактная вычислительная машина, предложенная Эмилем Леоном Постом (Emil L. Post), которая отличается от машины Тьюринга большей простотой. Обе машины «эквивалентны» и были созданы для уточнения понятия «алгоритм». Содержание 1 Принцип… …   Википедия

  • Нормальный алгорифм — Нормальный алгоритм Маркова один из стандартизованных вариантов представления об алгорифме (алгоритме). Понятие нормального алгоритма введено А. А. Марковым в конце 1940 х годов. Содержание 1 Описание 2 Примеры 2.1 Пример 1 2.2 …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»