- •Глава 1
- •Свойства алгоритмов
- •Примитивно–рекурсивные функции
- •Оператор минимизации
- •Ограниченный оператор минимизации
- •Частично–рекурсивные функции и тезис Черча
- •Контрольные вопросы к разделу
- •Упражнения к разделу
- •Задача 1
- •Варианты заданий
- •Задача 2
- •Варианты заданий
- •Тесты для самоконтроля к разделу
Частично–рекурсивные функции и тезис Черча
В силу узости класса примитивно–рекурсивных функций для определения алго- ритма необходимо выйти из этого класса. Мы рассмотрели оператор, применение которого выводит из класса примитивно–рекурсивных функций, — это оператор ми- нимизации. Будем использовать этот оператор как дополнительное конструктивное средство при определении нового класса функций.
Определение 2.6. Частично–рекурсивной называется функция, построенная из
простейших с помощью конечного числа операторов суперпозиции, примитивной ре- курсии и минимизации.
Определение 2.7. Всюду определенная частично–рекурсивная функция назы-
вается общерекурсивной или просто рекурсивной функцией.
В силу теоремы (2.10) примером рекурсивной, но не примитивно–рекурсивной функции является диагональная функция Аккермана A(x).
Частично–рекурсивные функции используются для определения понятия алго- ритма, которое вводится с помощью тезиса Черча.
Тезис Черча: всякий алгоритм может быть реализован частично–рекурсивной
функцией.
Понятие частично–рекурсивной функции — одно из главных в теории алгоритмов. Тезис Черча — это не теорема, а утверждение, которое связывает понятие алгорит- ма и строгое математическое понятие частично–рекурсивной функции. Тезис Черча является достаточным для того, чтобы придать необходимую точность формулиров- кам алгоритмических проблем и сделать принципиально возможным доказательство их неразрешимости. Утверждение о несуществовании частично–рекурсивной функ- ции эквивалентно факту несуществованию алгоритма решения соответствующей за- дачи.
В силу тезиса Черча вопрос о вычислимости функции или, что то же самое, о существовании алгоритма ее вычисления, равносилен вопросу о ее частичной ре- курсивности. Понятие частично–рекурсивной функции — строгое математическое, поэтому обычные математические методы и приемы позволяют непосредственно до- казать, что решающая задачу функция не может быть рекурсивной и тем самым доказать неразрешимость проблемы.
Точное описание класса частично–рекурсивных функций вместе с тезисом Чер- ча дает одно из возможных решений задачи о формальном определении алгоритма. Вместе с тем, это решение не вполне прямое, так как понятие вычислимой функ- ции является вторичным по отношению к понятию алгоритма: значение функции в каждой точке, соответствующей исходным данным алгоритма — это результат ра- боты алгоритма на этих данных. Спрашивается, нельзя ли уточнить само понятие алгоритма и уже затем при его помощи определить точно класс вычислимых функ- ций? Это было сделано Постом и Тьюрингом. Основная мысль, заложенная в такой формализации алгоритма, заключается в том, что алгоритмические процессы — это процессы, которые может совершать некоторая подходяще устроенная машина. В соответствии с этой мыслью в следующей главе мы рассмотрим описание в точ- ных математических терминах довольно узких классов машин, но на этих машинах оказывается возможным осуществить все алгоритмы. Алгоритмы, осуществимые на этих формально определенных машинах, можно рассматривать как математические точно определенные алгоритмы. В главе 3 мы покажем, что класс функций, вычис- лимых на этих машинах, в точности совпадает с классом всех частично–рекурсивных функций. Тем самым мы получим еще одно фундаментальное подтверждение тезиса
Черча.
Заметим, что хотя рассмотренный класс частично–рекурсивных функций содер- жит только функции, определенные на множестве натуральных чисел, это не снижа- ет общности представления об алгоритме как о частично–рекурсивной функции. Как мы рассмотрим в дальнейшем, существуют способы нумерации объектов, не являю- щихся по сути своей числами. В качестве простейшего примера приведем пока при- мер нумерации n–ок натуральных чисел ⟨a1, a2, . . . , an⟩. Для простоты рассмотрим сначала случай n = 2. В двумерном пространстве расположим пары натуральных чиел в виде следующей бесконечной матрицы:
< 0, 0 > < 0, 1 > → < 0, 2 > < 0, 3 > → < 0, 4 > . . .
↓ ↗ ↙ ↗ ↙
< 1, 0 > < 1, 1 > < 1, 2 > < 1, 3 > < 1, 4 > . . .
↙ ↗ ↙
< 2, 0 > < 2, 1 > < 2, 2 > < 2, 3 > < 2, 4 > . . .
↓ ↗ ↙
< 3, 0 > < 3, 1 > < 3, 2 > < 3, 3 > < 3, 4 > . . .
↙
< 4, 0 > < 4, 1 > < 4, 2 > < 4, 3 > < 4, 4 > . . .
↓
. . . . . . . . . . . . . . . . . .
Аналогично можно ввести нумерацию в n–мерном пространстве, нумеруя корте- жи ⟨a1, a2, . . . , an⟩.
Другой метод нумерации — метод цифр в некоторой системе счисления — основан на представлении объектов (не обязательно числовых ) в виде натурального числа в некоторой системе счисления с конечным основанием. Метод нумерации методом цифр мы рассмотрим в главе 3.
