Машина Тьюринга

Доказательство алгоритмической неразрешимости определённых задач стало возможным после уточнения понятия алгоритма. В первой половине 20 века было предложено несколько таких уточнений, впоследствии оказавшихся эквивалентными. Все они исходят из того, что алгоритм можно рассматривать как отображение из множества описаний задач во множество результатов. Если элементы этих множеств закодировать целыми неотрицательными числами, то алгоритмический процесс представляет собой вычисление некоторой функции, аргументы и значение которой являются целыми неотрицательными числами. Функция называется вычислимой, если её значения могут быть вычислены с помощью алгоритма. Тогда существование невычислимых функций влечёт существование алгоритмически неразрешимых задач.

В 30 – е годы английским математиком Тьюрингом в качестве модели алгоритма было предложено гипотетическое вычислительное устройство, которое в определённой мере оказалось прототипом современных ЭВМ. Теперь его называют машиной Тьюринга (МТ).

МТ имеем конечное множество внутренних состояний Q = {q0, q1 ,..., qm}, где q1 считается начальным, а q0 – конечным состояниями, а также внешнюю память в виде ленты, состоящей из конечного числа ячеек, в которых записаны символы из внешнего алфавита A = {a0, a1,..., an}, причём символ a0 считается пустым и обычно обозначается как 0. В процессе работы МТ к существующим ячейкам могут пристраиваться новые пустые ячейки, так что лента является потенциально неограниченной в обе стороны.

В каждый из дискретных моментов времени МТ находится в одном из своих внутренних состояний и обозревает одну из ячеек ленты, воспринимая записанный в ней символ. В зависимости от внутреннего состояния и воспринимаемого символа в следующий момент МТ переходит в новое внутреннее состояние (возможно, то же самое), записывает новый символ в обозреваемую ячейку (возможно, тот же самый) и начинает обозревать соседнюю ячейку слева, либо ту же самую ячейку, либо соседнюю ячейку справа. Таким образом, функционирование МТ задаётся тремя функциями:

G: Q A ® Q

F: Q A ® A

D: Q A ® {L, C, R}.

Попав в заключительное состояние q0, МТ прекращает работу.

Функции G, F, и D задаются набором команд или программой для МТ. Команды имеют вид qi aj ® qk al sp, где qk = G(qi aj), ai = F(qi aj), sp = D(qi, aj).

В каждый момент времени состояние МТ полностью определяется внутренним состоянием qi, содержимым ячеек ленты ai1, ai2 ,..., ait и номером k обозреваемой ячейки, что в совокупности называется конфигурацией и может быть записано как ai1 ai2 ,..., aik-1

qi aik aik+1... ait.

Конфигураций, получающиеся из данной приписыванием слева или справа произвольного числа пустых ячеек, считаются эквивалентными. В процессе работы МТ происходит последовательная смена конфигураций. Начальная конфигурация должна быть задана. Тогда все последующие конфигурации определяются программой. Если условиться считать, что в начальный момент машина находится в состоянии q1 и обозревает самую левую ячейку ленты, то начальная конфигурация полностью задаётся начальным словом – набором записанных в ячейках ленты символов.

Начав работу с некоторого начального слова, МТ либо остановится через конечное число шагов, либо никогда не остановится. В первом случае говорят, что МТ применима к слову Р, а во втором, - что не применима.

Перейдём к рассмотрению примеров. Будем использовать внешний алфавит из двух символов A = {0, 1}. Если Р – некоторое слово, то для слова P P...P (m раз) будем для краткости использовать обозначение [P]m. Так, например, слово 1100011000111 запишется как [12 03]2 13.

Пусть МТ с тремя внутренними состояниями q0, q1 и q2 задаётся программой:

q1 0 ® q1 0R

q1 1 ® q2 0R

q2 1 ® q1 0R

q2 0 ® q0 1C.

Пусть начальное слово P = 13 01. Тогда при работе МТ последовательно возникают конфигурации: q1 13 01, q2 12 01, q1 101, q2 01, q0 12.

МТ остановилась, перейдя в заключительное состояние q0, т.е. МТ применима к данному слову.

Пусть теперь начальное слово p = 14. Тогда последовательными конфигурациями будут:

q1 14, q2 13, q1 12, q2 1, q1 0, q1 0, q1 0,….

МТ никогда не остановится, т.е. МТ не применима к данному слову.

Пусть теперь требуется построить МТ, прибавляющую к данному неотрицательному целому числу единицу, т.е. МТ должна переводить конфигурацию q1 1n в q0 1n+1. Вот такая МТ:

q1 1 q1 1 R

q1 0 q2 1 L

q2 1 q2 1 L

q2 0 q0 0 R.

Пусть теперь требуется решить задачу удвоения числа, т.е. q1 1n ® q0 12n. Эта задача может быть решена с помощью такой МТ:

q1 1 ® q2 0R

q2 1 ® q3 1 L

q3 0 ® q4 0 L

q4 1 ® q4 1 L

q4 0 ® q5 1R

q5 1 ® q5 1R

q5 0 ® q1 1R

q2 0 ® q6 1 L

q6 1 ® q6 1 L

q6 0 ® q0 1C.

Идея алгоритма состоит в том, что в заданном слове 1n вводится маркерный 0, который в ходе работы алгоритма передвигается слева направо. При каждом его передвижении слева к слову приписывается 1. МТ завершает работу, когда маркерный 0 достигает правого конца исходного слова.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: