Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
98
Добавлен:
09.02.2015
Размер:
68.57 Кб
Скачать

Другие виды рекурсии

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

Приведём два примера последнего типа: совместное определение нескольких функций и использование произвольных меньших значений аргумента.

Совместная рекурсия. Пусть две одноместные функции f и g заданы соотношениями:

f(0) = a,

g(0) = b,

f(n+1) = F(n, f(n), g(n)),

g(n+1) = G(n, f(n), g(n)),

где а и b – некоторые числа, а функции F и G – примитивно рекурсивные функции трёх аргументов. Тогда функции f и g примитивно рекурсивны.

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

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

Пусть функция g одного аргумента примитивно рекурсивна, причём g(х)<х при х > 0; пусть F – примитивно рекурсивная функция двух аргументов; пусть с – произвольная константа. Тогда функция h, определённая соотношениями

h(0) = c,

h(x) = F(x, h(g(x))) при x>0 примитивно рекурсивна.

Но разные связанные с ней функции примитивно рекурсивны. В частности, таковы функции

  • Length(x) = длина последовательности с номером x;

  • Select (i, x) = i-ый член последовательности с номером х;

  • Арреnd (x, y) = номер последовательности, которая получается приписыванием числа у к последовательности с номером x.

Интересную форму этой гипотезе сделали советские ученые А.Н. Колмогоров и В.А. Успенский. Предположим, что нам задан некоторый алгоритм в интуитивном смысле. На практике всегда удается найти способ нумерации его допустимых исходных данных, а также другой способ нумерации даваемых им результатов. Соответствие номеров исходных данных номерам результатов, устанавливаемое нашим алгоритмом (в интуитивном смысле), всегда совпадает с соответствием между значениями аргумента и значениями некоторой рекурсивной функции от одного независимого переменного. Это значит, что выполнение алгоритма в определенном смысле эквивалентно вычислению значения рекурсивной функции. Это значит, кроме того, что невозможность рекурсивной функции означает и невозможность алгоритма (так как для каждого алгоритма должна быть рекурсивная функция, а ее-то в данном случае и нет).

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

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

Массовые проблемы. Неразрешимость проблем

Задачи (проблемы), с которыми нам приходится встречаться на практике, можно подразделить на одиночные и массовые.

Задача «найти сумму чисел 5 и 7» может служить примером одиночных проблем. Можно было бы привести огромное число одиночных проблем, очень похожих на приведенную. Но возможна задача «найти сумму целых неотрицательных чисел х и у». Это проблема массовая, содержащая одиночные проблемы в себе как частные случаи. В каком же смысле такая массовая проблема может быть решена? Ведь конкретные значения х и у не известны и поэтому получить конкретное значение суммы нельзя. Единственный способ решения приведенной массовой проблемы состоит в том, чтобы найти алгоритм получения суммы любых двух целых неотрицательных чисел.

А существуют ли неразрешимые вообще проблемы, которые при любом конечном наборе потенциально осуществимых операций окажутся неразрешимыми?

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

Если дана некоторая библиотека (произвольная; в этом массовость проблемы), для разделов которой составлены каталоги, то проблема составления каталога всех несамоназывающихся и только несамоназывающихся каталогов (см. парадокс каталогов) неразрешима (нельзя построить для ее решения алгоритм), и неразрешима она безнадежно, независимо от набора операций, которыми можно для ее решения пользоваться. Рассмотрим некоторые примеры подобных «абсурдных» массовых проблем.

Соседние файлы в папке Мат. логика все лекции