TuringMachine2015a

advertisement
Машина Тьюринга1
Машина Тьюринга — математическое понятие, а не реальная вычислительная машина.
MT является математической моделью вычислительного устройства. MT была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.
Устройство машины Тьюринга
...
a0
a0
a1
ai
a2
a0
a1
a0
a0
...
↑
qk
a0 — «пустая» буква (записывается в «пустую» ячейку).
1. MT состоит из бесконечной в обе стороны ленты. Лента разбита на ячейки (клетки).
В каждую клетку записан ровно один символ. «Пустую» клетку заполняет специальный
символ («пустая буква»). Лента представляет собой внешнюю память MT .
2. Внешний алфавит. Символы внешнего алфавита записываются в ячейки ленты.
Внешний алфавит — конечное множество символов. Один символ имеет специальное
назначение — записывается в «пустую» ячейку («пустая буква»).
Пример. A = {0, 1}. Используем алфавит состоящий из двух символов — 0 и 1. Здесь
0 — «пустая» буква, 1 — «непустая» буква. Состояние ленты в этом случае может быть,
например, таким:
...
0
0
1
1
1
0
1
0
0
...
Пример. В качестве внешнего алфавита A выберем алфавит, содержащий все цифры
десятичной системы счисления. Кроме того, необходим и пустой символ. Пусть пустым
символом будет «_». Итак, A = {_, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Состояние ленты в этом случае
может быть, например, таким:
...
_
_
2
5
_
5
_
0
_
...
В общем случае алфавит MT имеет вид A = {a0 , a1 , a2 , . . . , an }, где n > 1. Здесь
a0 , a1 , a2 , . . . , an — буквы, a0 — «пустая» буква.
Нам будут интересны случаи, когда на ленте записано конечное количество непустых
букв.
Слово — это записанная на ленте последовательность букв от самой левой «непустой»
буквы до самой правой «непустой» буквы.
Пример. A = {0, 1}, «0» — пустая буква (символ записываемый в «пустую» ячейку).
...
0
0
1
1
|
1
{z
0
1
0
0
...
}
слово
Здесь словом является последовательность букв 11101.
Пример. A = {_, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, «_» — пустая буква.
...
_
_
2
|
5
_
{z
5
_
0
_
...
}
слово
Здесь словом является последовательность букв 25_50.
3. Автомат. На рисунке изображен прямоугольником, с указанием того состояния, в
котором автомат находится: qk .
1
Учеб. пособие / Сост. А.С. Тихомиров; НовГУ им. Ярослава Мудрого. — Великий Новгород, 2015.
1
Автомат может находиться в одном из конечного числа состояний Q = {q0 , q1 , . . . , qm }
(вообще говоря m 6= n).
Выделяют два состояния:
q1 — начальное состояние. Находясь в этом состоянии, MT начинает работать.
q0 — заключительное состояние (состояние остановки). Попав в заключительное состояние MT прекращает свою работу (выключается).
4. Управляющая головка. На рисунке изображена вертикальной стрелкой
↑.
В любой момент времени управляющая головка MT работает с одной ячейкой ленты,
воспринимая только один символ, записанный в ячейку, и имея возможность записать
вместо него другой символ.
5. Программа MT (функциональная схема). Программа MT состоит из команд MT .
Команды машины Тьюринга
Работа MT происходит путем выполнения дискретной цепочки шагов (тактов).
В начале каждого шага управляющая головка MT обозревает только одну ячейку
ленты. А сама машина (автомат) находиться в одном из своих состояний.
...
a0
ai
a1
a0
...
↑
qk
Действие MT на шаге полностью определяется обозреваемым символом на ленте (на
рис. ai ) и внутренним состоянием автомата (на рис. qk ).
Предположим, что qk 6= q0 (т. е. MT работает), тогда MT выполняет следующие 3
операции:
1. В обозреваемую ячейку записывается символ aj . При этом символ в ячейке не обязательно изменится, т. е. возможно, что aj = ai .
...
a0
aj
a1
a0
...
↑
qk
2. Автомат переходит в новое внутреннее состояние qℓ (состояние не обязательно изменится, т. е. возможно, что qℓ = qk ).
...
a0
aj
a1
a0
...
↑
qℓ
3. Управляющая головка MT может сдвинуться или на одну ячейку вправо или на
одну ячейку влево или остаться на месте.
Обозначим эти перемещения: П — вправо, Л — влево, Н — на месте.
Пусть наша MT перемещается на одну ячейку вправо:
...
a0
aj
a1
a0
...
↑
qℓ
Перемещения управляющей головки также обозначают латинскими буквами: П → R,
Л → L, Н → S.
2
В результате выполнения всех трех операций управляющая головка нашей MT перемещается вправо, меняется состояние автомата и перезаписывается символ на ленте.
В общем случае работа MT на шаге определяется следующей командой: ai qk → aj qℓ C,
где C ∈ {П , Л , Н }.
На рисунках рассмотренного примера выполнялась команда ai qk → aj qℓ П .
Программа машины Тьюринга
Совокупность всех команд MT называется программой MT (или функциональной
схемой).
Работа MT полностью определяется её программой.
Запись программы машины Тьюринга в виде таблицы
Пусть Q = {q0 , q1 , . . . , qm } и A = {a0 , a1 , a2 , . . . , an }. Пусть в программе нашей MT есть
команда a0 q1 → a1 q2 П .
Программу MT удобно записать в виде таблицы следующего вида:
A\Q
q1
a0
a1 q2 П
a1
..
.
q2
...
qm
an
Таблица содержит n+1 строку и m столбцов. Значит в таблице (n+1)m ячеек. Поэтому
максимально возможное число команд программы равно (n + 1)m.
Начало работы машины Тьюринга
1. Первоначально (до начала работы MT ) на ленте записано конечное количество
непустых букв (т. е. до начала работы на ленте написано входное слово).
Первоначально записанное на ленте слово называется входным словом. Входная информация записывается на ленте до начала работы MT .
...
a0
a0
a1
a2
a1
a0
...
↑
q1
2. Автомат находится в состоянии q1 .
3. Необходимо условиться, какая ячейка обозревается в начальный момент. Часто используется следующее правило: MT начинает свою работу с самой правой непустой ячейки. Тоже часто используют такое правило: MT начинает свою работу с самой левой непустой ячейки.
Завершение работы машины Тьюринга
Попав в заключительное состояние q0 MT прекращает свою работу (выключается).
Основные машинные коды
Используем машину Тьюринга для вычисления функций, аргументы и значения которых принадлежат расширенному натуральному ряду N = {0, 1, 2, . . .} (множество, содержащее натуральные числа и нуль).
3
Мы часто будем рассматривать машины, у которых входной алфавит A состоит из
двух символов «0» и «1», т. е. A = {0, 1}. Работа машины Тьюринга зависит от характера
исходной записи на ленте. Далее часто будут употребляться специальные виды этих записей, называемые основными машинными кодами (см. [2, с. 129]). Основные машинные
коды предназначены для задания чисел и наборов чисел из расширенного натурального
ряда.
Определение. Для машин Тьюринга используются основные машинные коды. Код
числа n ∈ {0, 1, 2, . . .} состоит из n + 1 единицы и имеет следующий вид:
. . . 000 |11 .{z
. . 11} 000 . . .
n+1
Здесь для простоты не нарисованы границы ячеек ленты. Кодом нуля является запись
на ленте, имеющая ровно одну единицу:
. . . 0001000 . . .
Код числа 1 состоит из двух единиц:
. . . 00011000 . . .
Составим таблицу кодов:
Число
0
1
2
3
..
.
Код
n
11
. . 11}
| .{z
1
11
111
1111
..
.
n+1
При кодировании нескольких чисел коды самих чисел отделяются друг от друга одним
нулем. Например код трех чисел k, m, n ∈ {0, 1, 2, . . .} имеет следующий вид:
. . . 000 |11 .{z
. . 11} 0 |11 .{z
. . 11} 0 |11 .{z
. . 11} 000 . . .
m+1
k+1
n+1
Пример. Код трех чисел 2, 3, 4 таков:
. . . 000 |{z}
111 0 |{z}
1111 0 11111
| {z } 000 . . .
3
4
5
Пример. Вычислить функцию f+1 (x) = x+1 в кодах. Пусть машина Тьюринга начинает
работу с самой правой непустой ячейки ленты.
Решение. Рассмотрим MT , у которой внешний алфавит A состоит из двух символов
«0» и «1», т. е. A = {0, 1}. Для решения этой задачи машина Тьюринга должна добавить
«единичку» к коду числа, записанного на ленте. При этом, по условию, машина Тьюринга
начинает работу с самой правой непустой ячейки ленты (с самой правой ячейки с «1»).
Применим MT к коду числа 2. Код числа 2 — 111.
...
0
1
1
1
0
0
...
↑
q1
4
Задачу можно решить за два шага. На первом шаге нужно передвинуть управляющую
головку на одну ячейку вправо. После этого управляющая головка окажется над пустой
ячейкой ленты (в которую записан «0» — «пустая буква» алфавита A). На втором шаге
нужно заменить этот «0» на «1», и выключить машину Тьюринга.
Командой для первого шага будет 1q1 → 1q1 П . После ее выполнения получим:
...
0
1
1
1
0
0
...
↑
q1
Теперь нужно заменить «0» на «1», и выключить машину Тьюринга. Командой для
второго шага будет 0q1 → 1q0 Н . После ее выполнения получим:
...
0
1
1
1
1
0
...
↑
q0
Задача решена. Придуманная программа MT состоит из двух команд:
1q1 → 1q1 П ,
0q1 → 1q0 Н .
Эту программу MT можно записать в виде таблицы:
A\Q
q1
0
1q0 Н
1
1q1 П
Описание работы машины Тьюринга
Описывать работу MT мы будем указывая ее состояние в начале каждого шага.
K-ая конфигурация — описание состояния MT в начале k-го шага, т. е. изображение
ленты (записанная информация), указание того, какая ячейка обозревается в текущий
момент, указание того, в каком состоянии находиться автомат.
Рассмотрим предыдущий пример MT , вычисляющий функцию f+1 (x) = x + 1 в кодах.
Снова применим MT к коду числа 2. Код числа 2 — 111.
1-ая конфигурация (начальная конфигурация):
...
0
1
1
1
0
0
...
0
0
...
↑
q1
2-ая конфигурация:
...
0
1
1
1
↑
q1
3-я конфигурация (заключительная конфигурация):
...
0
1
1
1
1
0
...
↑
q0
5
Применимость машины Тьюринга
Первоначально (до начала работы MT ) на ленте записано конечное количество непустых букв, т. е. входное слово. Обозначим его C0 .
При применении MT к входному слову C0 возможны два случая:
1. После конечного числа шагов MT останавливается (переходит в состояние q0 ). То
слово, которое получилось после остановки, называется выходным словом C∗ . В таком случае говорят, что MT применима к входному слову C0 и перерабатывает его
в выходное слово C∗ .
2. MT никогда не останавливается (никогда не попадает в состояние q0 ). В этом случае
говорят, что MT неприменима к входному слову C0 .
Вычислимые функции
Неформальное определение. Функция f называется интуитивно вычислимой, если существует алгоритм позволяющий вычислить ее значения.
Строгое определение. Функция f называется вычислимой по Тьюрингу, если существует MT вычисляющая эту функцию.
Используем машину Тьюринга для вычисления функций, аргументы и значения которых принадлежат расширенному натуральному ряду N = {0, 1, 2, . . .} (множество, содержащее натуральные числа и нуль).
Пример.
f (x) = x + 1, x ∈ N,
f (x) ≡ 1, x ∈ N,
f (x, y) = x + y, x, y ∈ N,
f (x, y, z) = x + y + z, x, y, z ∈ N,
f (x) = x − 2, x ∈ {2, 3, . . .},
f (x) = 2 − x, x ∈ {0, 1, 2}.
Пример. Вычислить функцию f+1 (x) = x + 1 в десятичной системе счисления. Начальное положение управляющей головки — крайняя правая непустая ячейка (правая цифра
числа).
Решение. В качестве внешнего алфавита A естественно выбрать алфавит, содержащий все цифры десятичной системы счисления. Кроме того, необходим и пустой символ.
Пусть пустым символом будет «_». Итак, A = {_, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Состояний у машины будет два: q0 (это, как обычно, состояние остановки) и q1 (рабочее состояние). Итак,
Q = {q0 , q1 }. Функциональная схема (программа) машины такова:
Q\A
_
q1
1q0 Н
0
1q0 Н
1
2q0 Н
2
3q0 Н
3
4q0 Н
4
5q0 Н
5
6q0 Н
6
7q0 Н
7
8q0 Н
8
9q0 Н
9
0q1 Л
Начальной информацией на ленте является любое неотрицательное целое число в десятичной системе счисления. Число записывается на ленту в несколько ячеек (одна цифра
записывается в одну ячейку).
Если последняя цифра числа отлична от цифры 9, то, чтобы решить поставленную
задачу, машина должна заменить последнюю цифру числа цифрой на единицу большей
и выключится (перейти в состояние q0 ).
Например для числа 120 нужно сделать следующее:
6
...
_
_
1
2
0
_
...
_
...
↑
q1
...
_
_
1
2
1
↑
q0
Для числа 121 нужно сделать следующее:
...
_
_
1
2
1
_
...
_
...
↑
q1
...
_
_
1
2
2
↑
q0
Для числа 128 нужно сделать следующее:
...
_
_
1
2
8
_
...
_
...
↑
q1
...
_
_
1
2
9
↑
q0
Если же последней цифрой числа является 9, то эту цифру надо заменить на «0»,
и продолжить добавление единицы, но уже к расположенному левее (более старшему)
разряду числа. Состоянием машины остается q1 , управляющая головка сдвигается влево
и работа машины продолжается.
Для числа 129 нужно сделать следующее:
...
_
_
1
2
9
_
...
0
_
...
0
_
...
↑
q1
...
_
_
1
2
↑
q1
...
_
_
1
3
↑
q0
В процессе работы, сдвигаясь влево, управлявшая головка машины может выйти на
пустую клетку. Так происходит при добавлении единицы к числу, состоящему из одних
девяток. В этом случае, вместо пустой буквы «_», машина записывает «1» и завершает
работу (переходя в состояние q0 ).
Для числа 99 нужно сделать следующее:
7
...
_
_
_
9
9
_
...
0
_
...
0
0
_
...
0
0
_
...
↑
q1
...
_
_
_
9
↑
q1
...
_
_
_
↑
q1
...
_
_
1
↑
q0
Составленную программу необходимо протестировать. Можно выделить следующие
три класса чисел.
1. Числа не кончающиеся на 9 (например, 835).
2. Числа, кончающиеся на 9, но состоящие не из одних 9 (например, 8399).
3. Числа из одних 9 (например, 9999).
Результаты тестирования:
• Верно. Программа готова.
• Неверно. Возвращаемся к составлению программы и исправляем ошибки.
Основная гипотеза теории алгоритмов (в форме Тьюринга).
Тезис Тьюринга
Тезис Тьюринга — всякий алгоритм может быть реализован соответствующей MT .
(Здесь имеются ввиду алгоритмы преобразования слов.)
Этот тезис является формальным определением алгоритма. Теперь можно доказывать существование или несуществование алгоритмов, описывая соответствующие машины Тьюринга, или доказывая невозможность их построения.
Доказать тезис Тьюринга нельзя так как он связывает неформальное понятие алгоритма (выражение «всякий алгоритм» в формулировке тезиса) и формальное понятие
MT . Его можно только обосновать, представляя различные известные алгоритмы в виде
машин Тьюринга.
В принципе тезис Тьюринга можно опровергнуть (если придумать алгоритм, который
нельзя реализовать с помощью машины Тьюринга). Таких алгоритмов до сих пор не придумали, и это служит аргументом в пользу справедливости тезиса Тьюринга.
Кроме MT были предложены и другие способы формализации понятия алгоритма
(другие определения понятия алгоритма), и все эти способы оказались эквивалентными.
Все, что реализуемо в одной из этих алгоритмических схем, можно сделать и в других.
Теоремы об эквивалентности доказываются строго, так как в них речь идет уже о тождестве формальных схем. Эта эквивалентность служит дополнительным обоснованием
тезиса Тьюринга.
8
Список литературы
1. Лихтарников Л.М., Сукачева Т.Г. Математическая логика. СПб.: Издательство «Лань».
2008. 288 с.
2. Яблонский С.В. Введение в дискретную математику. М.: Высш. шк. 2001. 384 с.
9
Download