- •Глава 4 алгоритмы и машины тьюринга
- •4.1. О понятии алгоритма. Тезис Чёрча
- •4.2. Машина Тьюринга
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.3. Рекурсивные функции
- •О s I
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Разрешимые и перечислимые множества
- •Универсальные функции
- •Задачи для самостоятельного решения
- •4.5. Алгоритмически неразрешимые задачи
- •4.6. О сложности алгоритмов
- •Содержание
Примеры решения задач
Доказать, что следующие функции примитивно рекурсивны: а)
б)
в)
(функция “сигнум”).
Решение. а)
Имеем:
о![]()
Это схема примитивной рекурсии. Так как
функция
примитивно рекурсивна, то функция
тоже.
б) Схема примитивной
рекурсии для функции
выглядит так:
s(o![]()
Так как функция
примитивно рекурсивна, то
тоже.
в) Имеем:
![]()
Следовательно, функция
примитивно рекурсивна.
2.
Доказать, что функция
рекурсивна.
Доказательство.
Пусть
Так как функция
получается из примитивно рекурсивных
функций с помощью оператора минимизации,
то функция
рекурсивна. Ясно, что
Известно, что функция
примитивно рекурсивна (см. предыдущую
задачу). Следовательно, функция
рекурсивна. Это влечёт рекурсивность
функции
а она совпадает с функцией![]()
Выяснить, что из себя представляет функция М
где
– функция “сигнум” (см. предыдущую
задачу).
Решение. Пусть
Тогда
Поэтому![]()
а остальные значения функции
не определены.
Задачи для самостоятельного решения
1.
Доказать, что следующие функции примитивно
рекурсивны: а)
б)
в)![]()
Указания:а)![]()
![]()
б)
![]()
в)
![]()
2.Доказать, что функция

является рекурсивной.
Указание:![]()
3. Доказать,
что если функция
примитивно рекурсивна, то функция
– тоже. Используя это утверждение и
результат задачи 1 в), доказать примитивную
рекурсивность функции
![]()
Указания:![]()
![]()
![]()
4.4. Вычислимые и перечислимые функции и множества
В предыдущем
разделе были определены понятия
рекурсивной функции и функции, вычислимой
на машине Тьюринга, и изложены соображения
в пользу того, что эти классы совпадают.
Будем называть такие функции вычислимыми.
Рассмотрим более внимательно эти функции
и множества натуральных чисел, связанные
с ними. Изложение результатов будем
вести неформально, чтобы облегчить
читателю восприятие материала. Аргументы
вычислимой функции
– натуральные числа, значение функции
– также натуральное число.
Существование
невычислимых функций уже отмечалось
ранее, оно следует из соображений
мощностей: вычислимых функций, так же,
как и машин Тьюринга, счётное число, а
всех функций на множестве натуральных
чисел
штук. Интересный пример невычислимой
функции придуман в 1962 г. Т.Радо.
Пример.
Предположим, что среди некоторых машин
Тьюринга проводится “соревнование по
трудолюбию”. Участником соревнования
является машина Тьюринга с
состояниями
(причём последнее состояние используется
только для остановки), которая, будучи
запущена на пустой ленте, останавливается
за конечное число шагов. Результат
соревнования – количество единиц на
ленте после остановки машины. Обозначим
это число через
Докажем, что
– невычислимая функция.
Пусть
– произвольная вычислимая функция.
Введём функцию
Так как функция
вычислима, то
также вычислима. Пусть
– машина Тьюринга, которая вычисляет
функцию
и
– количество состояний машины
Пусть
– машина Тьюринга, которая пишет
единиц на пустой ленте (для этого нужно
состояния), а затем работает как
Тогда
– участник соревнования с
состояниями, поэтому
Отсюда следует, что
и
Значит, при
мы имеем
и
Итак, при больших
(чётных и нечётных) имеет место неравенство
Значит, функция
растёт быстрее любой всюду определённой
вычислимой функции, поэтому не является
вычислимой.
Функция
растёт очень быстро. Известно, что![]()
![]()
![]()
![]()
![]()
![]()
![]()
(см. Эндертон Г.Б.,
Элементы теории рекурсии, Справочная
книга по математической логике, М.,
“Наука”, 1982, ч. 3, с. 14-15).
