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

в)

Доказать, что функция
является рекурсивной.
Указание:
![]()
Доказать, что если функция
примитивно рекурсивна, то функция
– тоже. Используя это утверждение и
результат задачи
1 в), доказать примитивную рекурсивность функции

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