
- •Математическая логика
- •Лекция 2. Алгебра высказываний
- •X,y,z, . . . Или их отрицаний.
- •Представление произвольной двузначной функции посредством
- •Лекция 5. Теоремы о выводимых формулах
- •Лекция 7. Предикаты и кванторы
- •Определение теории первого порядка
- •Лекция 9. Теорема построения
- •X на терм u, если a не содержит части вида ∃y b, для любой перемен-
- •Лекция 10. Модель теории первого порядка
- •Лекция 11. Теорема о полноте
- •Изомофизм моделей. Категоричные теории
- •Лекция 12. Алгоритмы и машина Тьюринга
- •Машина Тьюринга
- •0 Или 1. Если каретка, расположена над некоторой ячейкой с символом 0
- •Тезис Черча
- •Алгоритмически неразрешимые проблемы
- •Лекция 13. Теорема Геделя о неполноте
Машина Тьюринга
Машина Тьюринга — это воображаемое вычислительное устройство,
имеющее следующие составные части. Оно имеет ленту, разбитую на
ячейки и каретку, расположенную в каждый конкретный момент работы
машины над некоторой ячейкой ленты. Каждая ячейка содержит ровно
один из символов 0 или 1. Лента представляется конечной, но дополняе-
мой в любой момент ячейками слева и справа для записи новых символов
0 Или 1. Если каретка, расположена над некоторой ячейкой с символом 0
(с символом 1), то будем говорить, что каретка обозревает символ 0 (обо-
зревает символ 1).
Машины Тьюринга имеет программу. Это конечная последователь-
ность строк из 5 компонент.
Пример программы.
(0, 0, L, 0, 1)
(0, 1, R, 0, 1)
(1, 0, L, 0, 1)
(2, 0, L, 0, 1)
Строка программы имеет вид (i a x y z).
Первая компонента в строке i — номер инструкции. Поэтому преды-
дущая программа имеет инструкции с номерами 0, 1 и 2.
Вторая компонента равна 0 или 1. Выполняя инструкцию с номером i,
машина смотрит обозреваемый кареткой символ. Если он равен 0, то ис-
полняется строка с началом i 0; если обозреваемый символ равен 1, то
исполняется строка с началом i 1. Если строки с началом i нет, то маши-
на останавливается. Это единственное условие остановки машины Тью-
ринга. Символы x, y, z в исполняемой строка описывают выполняемые
действия.
• Записать в обозреваемую ячейку x. При этом x = 0 или x = 1.
Поэтому содержимое обозреваемой ячейки останется прежним или
сменится на противоположное, например, 0 заменится на 1.
• Компонента y равна R или L. При y = R нужно сдвинуть каретку на
одну ячейку вправо, при y = L—влево.
• Перейти к инструкции с номером z. Возможно, что инструкции с но-
мером z нет, тогда остановка машины.
Тем самым выполнение инструкции q0 первый такт работы машины Тью-
ринга, затем второй такт — выполнение другой инструкции и так далее.
В начале работы на ленте имеется исходный набор из символов 0,1 —
входные данные, а после остановки на ленте выходные данные.
Пример. Пусть дана машина Тьюринга со следующей программой
0 0 1 R 0.
Пусть входные данные следующие — на ленте во всех ячейках располо-
жен символ 0.
Выполним вначале инструкцию с номером 0. Так как обозреваемый ка-
реткой символ равен 0, нужно выполнить следующее.
1. Заменить этот символ на 1.
60
2. Сдвинуть каретку вправо.
3. Применить инструкцию с номером 0.
Итак, возникла одна единица, каретка снова обозревает 0 и заново вы-
полняются действия 1)–3). Поэтому машина Тьюринга работает беско-
нечно, заполняя ленту символами 1.
Опишем вычисление значений n-арной функции машиной Тьюринга.
Рассмотрим произвольное натуральное число x = 0, 1, 2, . . .. И зобразим
его на ленте как группу из x + 1 единиц. Данную группу из x + 1 единиц
обозначаем знаком _x_. Например, группа из 3 единиц 111 изображает
число 2, а группа 1 изображает число 0. Для изображения последова-
тельности x1, x2, . . .xn используем последовательность символов ленты,
равную _x1_, _x2_, . . . _xn_, где группы единиц разделены символом 0.
Обычно мы рассматривали всюду определенные n-арные функции.
Определим теперь частичную n-арную функциюf(x1, x2, . . . , xn), опреде-
ленную на множестве натуральных чисел {0, 1, 2, . . . }. Это правило, ко-
торое сопоставляет некоторым наборам (a1, a2, . . . , an) натуральных чи-
сел однозначно определенное натуральное число f(a1, a2, . . . , an)— зна-
чение функции f при данном наборе аргументов. Множество всех набо-
ров (a1, a2, . . . , an), для которых определено значение функции, называ-
ется областью определения функции и обозначается через Dom(f).Мно-
жество всех значений функции f называется областью значений функции
и обозначается через Ran(f).
Мыбудем говорить, что машина ТьюрингаM с программой q0, q1 . . . qn,
вычисляет частичную n-арную функцию f, если выполняется следующие
условия.
1) Если (a1, a2, . . . , an) находится в области определения функции f, то
M начиная с инструкции q0 и обозревая самый левый символ строки
(a1, a2, . . . , an) ( остальная часть ленты пуста), на некотором шаге оста-
навливается, обозревая самый левый символ строки f(a1, a2, . . . , an) (
часть ленты справа от строки пуста).
2) Если (a1, a2, . . . , an) не находится в области определения функции f,
тоM никогда не останавливается.
Пример. Указать машину Тьюринга, вычисляющую сумму натураль-
ных чисел x + y.
Рассмотрим машину M со следующей программой ( рядом с каждой
инструкцией – комментарий).
61
0 1 1 R 0 прохождение через x
0 0 1 R 1 заполнение промежутка
1 1 1 R 1 прохождение через y
1 0 0 L 2 конец y
2 1 0 L 3 стирание 1
3 1 0 L 4 стирание другой 1
4 1 1 L 4 движение назад
4 0 0 R 5 остановка