Машина Тьюринга
Машина Тьюринга есть математическая (вообразимая) машина, а не
машина физическая. Она есть такой же математический объект, как функция, производная, интеграл и т.д. А также, как и другие математические понятия, понятие машина Тьюринга отражает объективную реальность, моделирует некие реальные процессы.
Машина Тьюринга состоит из ленты, управляющего устройства и считывающей головки.
Лента разбита на ячейки. Во всякой ячейке в каждый момент времени находится в точности один символ из внешнего алфавита А={а0,а1,…аn-1 }, n 2. Некоторый символ алфавита А называется пустым, любая ячейка, содержащая в данный момент пустой символ, называется пустой ячейкой.
В дальнейшем в качестве внешнего алфавита будем использовать А={0,1}, где в качестве пустого символа будем использовать 0 (нуль). В каждый момент времени лента содержит конечное число ячеек, но в процессе работы машины можно пристраивать новые ячейки в пустом состоянии.
Управляющее устройство в каждый момент времени находит в некотором состоянии qi, принадлежащее множеству Q{q0,q1,…,qr-1}, r 1. Множество Q называется внутренним алфавитом. В дальнейшем начальное состояние будем обозначать символом q1, а заключительное символом q0 .
Считывающая головка перемещается вдоль ленты так, что в каждый момент времени она обозревает ровно одну ячейку ленты. Головка может считывать содержимое обозреваемой ячейки и записывать в нее вместо обозреваемого символа некоторый новый символ из внешнего алфавита.
Работа машины Тьюринга определяется программой. Программа состоит из команд. Каждая команда представляет собой выражение одного из следующего вида:
1) qi aj →qk ae;
2) qi aj →qk ae R;
3) qi aj →qk ae L.
Команда 1 заключается в том, что содержимое aj обозреваемой на ленте ячейки стирается, а на его место дописывается символ ae (который может совпадать с aj ), машина переходит в новое состояние qk (оно может совпадать с предыдущим состоянием qi ).
Команда 2 работает аналогично команде 1, и дополнительно сдвигает считывающую головку в соседнюю справа ячейку.
Команда 3 работает аналогично команде 1, и дополнительно сдвигает считывающую головку в соседнюю слева ячейку.
Если считывающая головка находится в крайней справа (слева) ячейки ленты и происходит ее сдвиг вправо (влево), то к ленте пристраивается новая ячейка в пустом состоянии.
Машинным словом или конфигурацией называется слово вида
где А, qk Q. Символ qk пишется перед символом обозреваемой ячейки. Причем символ qk может быть самым левым, но не может быть самым правым. В дальнейшем будем использовать следующее обозначение: аin обозначает слово аi аi …аi =
Например, конфигурация 13q10212 на ленте выглядит следующим образом: ▼q1
Машина Тьюринга считается заданной, если заданы программа, внешний и внутренний алфавиты, и указано, какие из символов обозначают начальное и заключительное состояние.
Если машина Тьюринга выходит на заключительное состояние, то она называется остановившейся.
Пусть машина Тьюринга начинает работать в некоторый (начальный) момент времени. Слово, записанное в этот момент на ленте, называется начальным. Чтобы машина Тьюринга начала работать, необходимо поместить считывающую головку против какой-либо ячейки на ленте и указать,
в каком состоянии машина Тьюринга находится в данный момент.
Если Р – начальное слово, то машина Тьюринга, начав работу ”на слове” Р либо остановится через определенное число шагов, либо никогда не остановится. В первом случае говорят, что машина Тьюринга применима к слову Р и результатом применения машины к слову Р является слово М, соответствующее заключительной конфигурации.
Во втором случае говорят, что машина не применима к слову Р.
Пример 1 Выяснить, применима ли машина Тьюринга, задаваемая следующей программой
q10→ q20 R, q11→ q11 R, q20→ q30 R, q21→ q11 L, q30→ q00 , q31→ q21 R, к слову
Р= q1 130212.
▼q1
▼q1
q11→ q11 R 13 q10212
▼q2
q10→ q20 R 130 q2012
▼q3
q20→ q30 R 1302 q312
▼q2
q31→ q21 R 13021 q21
▼q1
q21→ q11 L 1302 q112
▼q1
q11→ q11 R 130212 q10
▼q2
q10→ q20 R 130212 0q20
▼q3
q20→ q30 R 130212 02q30
▼q0
q30→ q00 130212 02q00
Следовательно, данная машина Тьюринга применима к слову Р и заключительная конфигурация имеет вид: 13021202q00.
В дальнейшем запись М M , будет означать, что машина Тьюринга (Т) через конечное число циклов перерабатывает машинное слово М в машинное слово М1.
Функция называется вычислимой по Тьюрингу, если существует машина Тьюринга, вычисляющая её.
Во-первых, напомним, что речь идёт о частично-числовых функциях. Во-вторых, договоримся, что значения аргументов функции
f (х1, х2 … хn) на ленте будут записываться следующим образом:
или .
Начинать переработку данного слова будем из стандартного положения, то есть из положения, при котором в состоянии q1 обозревается крайняя правая единица описанного слова. Если функция f (х1, х 2 … хn) определена на данном наборе значений аргументов, то в результате на ленте должно быть записано подряд f (х1, х 2 … хn) единиц, в противном случае, машина должна работать бесконечно. При выполнении всех перечисленных условий, будем говорить, что машина Тьюринга вычисляет данную функцию f.
Пример 2 Построить машину Тьюринга, вычисляющую функцию
О(х) = 0. Для этого надо сконструировать машину Тьюринга (Т), (т.е. составить программу) которая начинает работу со слова q101 (х – любое натуральное число) останавливается, когда на ленте нет единиц
q101 => q 0
Данная программа имеет вид:
q10à q20R
q20 à q0O
q21à q20R
Пример 3 Построить машину Тьюринга, вычисляющую функцию: f(x,y) = x + y. Построим машину Тьюринга (Т), которая, начиная работу со слова q101 01 останавливается когда на ленте х+у единиц q 01 01 =>q 01
q10 à q20R q2 0
q 0 à q OR q 0
q 1à q 1 q 0
q 1 à q 1R q 01
q 0 àq 1 q 1
q 1 à q 1L q 01
q 0 à q 0R q 1
q5 1à q 0 q 01
Пример 4 Построить машину Тьюринга, вычисляющую функцию
f(x) = 2/x. Эта функция не всюду определена. Лишь при х = 1, х = 2, её значениями являются натуральные числа 2 и 1 соответственно. Поэтому можно построить машину Тьюринга, которая начинает работу либо со слова q101, либо со слова q1012останавливается, когда на ленте две единицы, одна единица соответственно. В остальных случаях машина начинает работу со слов q2 (х ≠ 1, х ≠ 2) работает бесконечно. Такая машина задаётся следующей программой:
q 0 à q 0R q
q 0 à q 0
q 1 à q 1R 1 q 1
q 0 à q 1L q ,
q 1 à q 1R q 1
q 1 à q 1
q40 à q50L 1 q51
q51 à q00L q01,