
Машина Тьюринга
Английский математик А. Тьюринг в 1937 г. опубликовал работу, в которой уточнял понятие алгоритма, прибегая к воображаемой вычислительной машине, известной теперь под названием машины Тьюринга. Идея А. Тьюринга возникла еще до появления электронных вычислительных машин и потому, по-видимому, совершенно не зависит от них.
Тьюринг решил, что особого внимания заслуживает поведение исполнителя алгоритма, поэтому его нужно особенно точно и ясно описать. Из первой главы мы помним, что исполнитель должен действовать совершенно механически, не вкладывая в свою работу никакой инициативы.
Основная идея Тьюринга заключалась в том, что алгоритмические процессы – это процессы, которые может совершать подходящее устройство «машина». На этих машинах оказалось возможным осуществить или имитировать все алгоритмические процессы, которые когда-либо описывались математиками.
Перед тем, как определить понятие машины Тьюринга введем некоторые определения.
Назовем абстрактным алфавитом (или просто алфавитом) конечное непустое множество символов, называемых буквами алфавита.
Словами (или строками) в некотором алфавите А будем называть конечные последовательности букв этого алфавита. Длина слова определяется количеством букв в нем. Слово нулевой длины назовем пустым. И будем обозначать символом «_». Для обозначения алфавита используются буквы А, В, С,…
Под машинами Тьюринга и Поста понимается некая гипотетическая (условная) машина, состоящая из следующих частей:
информационной ленты, представляющей собой бесконечную (неограниченную) память машины. Лента разделена на ячейки, в которые можно записать один символ. Конечная совокупность символов алфавита, с которой работает машина, называется внутренним алфавитом;
«головки чтения-записи» – специального устройства, способного «считывать» символ из ячейки. Головка передвигается вдоль ленты вправо и влево таким образом, что в каждый момент времени способна «видеть» только одну ячейку;
управляющего устройства, которое в каждый момент времени находится в некотором состоянии, количество состояний, в котором может находиться устройство, конечно. Состояние устройства управления называют внутренним состоянием машины. Одно из внутренних состояний называется заключительным состоянием. Переход машины в это состояние сигнализирует о конце работы машины. Совокупность состояний устройства управления называется внешним алфавитом.
Схематически машина может быть представлена так:
|
|
|
|
|
|
|
|
q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j |
|
|
|
|
|
|
|
|
|
|
Цель работы МТ – в зависимости от слова, записанного на ленте (входное слово), переписать его так, чтобы на ленте было другое слово – результат.
Описание машины Тьюринга
Пусть заданы внешний А={a1, a2, …, an} и внутренний (алфавит состояний) P={P0, P1, …, Pm} алфавиты МТ.
Предполагаем, что лента МТ бесконечна в обе стороны и разбита на клетки. Запись символа в ячейку МТ приводит к замене её содержимого (запись пустого символа ячейку очищает). При чтении символа содержимое ячейки не изменяется. Головка чтения-записи может сдвигаться на одну ячейку вправо, одну ячейку влево или оставаться неподвижной.
Основной частью машины является логический блок. Логический блок имеет два входных канала: по одному из них на каждом такте работы МТ поступает знак ai из обозреваемой ячейки (на которую настроена головка чтения-записи), по другому – знак Pk того состояния, которое приписывается логическому блоку на данный такт. По выходному каналу логический блок посылает в текущую ячейку соответствующий знак aj, являющийся однозначной функцией от сигналов (ai, Pk), поданных на вход блока.
Совокупность, образованная последовательностью состояний ячеек ленты и состоянием логического блока, называется конфигурацией ил полным состоянием МТ.
Работает логический блок следующим образом.
Заставляет головку прочитать букву, которая стоит на ленте под нею.
В зависимости от прочитанной буквы и того состояния, в котором находится он сам,
а) заставляет головку записать на ленте в той клетке, которая находится под головкой, некоторую букву;
б) заставляет головку сдвинуться на одну ячейку вправо, влево или остаться на месте;
в) изменяет свое собственное состояние.
Если в результате действий, указанных в п. 2, буква, расположенная под головкой, положение головки и состояние логического блока машины окажутся теми же, которые были непосредственно перед выполнением этих действий, машина останавливается. В остальных случаях логический блок возвращается к выполнению п. 1.
Введем еще обозначения d0, d+, d- соответственно для обозначения стояния ленты на месте, движения ленты вправо, и движения ленты влево. Теперь можно описать поведение машины при выполнении логическим блоком п. 2 так: если головка читает букву аi и блок находится в состоянии рj, то поведение машины определяет запись axPydz, означающую: «записать на ленте вместо аi букву ах, совершить перемещение ленты dz, логическому блоку перейти в состояние Py».
Таким образом, алгоритм МТ разбит на последовательные шаги.
Результатом работы МТ могут служить 3 ситуации:
машина выполнила несколько шагов и остановилась, слово при этом не изменяется;
машина выполнила несколько шагов, слово при этом изменяется;
машина никогда не остановится, приводя к бесконечному изменению состояний.
В случаях 1 и 2 мы будем считать, что МТ получила результат. В случае 3 будем считать, что результата нет.
Результат работы зависит от слова, на которую действует МТ. Все возможные слова можно разделить на два множества: множество слов, для которых данная программа применима и множество слов, для которых данная программа не применима.
Остановка МТ осуществляется при одновременно выполнении трех условий:
внутреннее состояние управляющего устройства не изменяется;
управляющее устройство остается на месте;
буква в противолежащей ячейке не изменяется.
Программа МТ
Очевидно, различные машины Тьюринга отличаются друг от друга тем, как они реагируют на сочетания (ai, Pk) для разных i и k.
Совокупность команд, которые должна выполнить МТ для решения конкретной задачи, называется программой МТ.
Назовем начальной конфигурацией состояние МТ, при котором на ленту занесена начальная информация, в поле зрения установлена начальная ячейка (головка смотрит на первый символ записанного на ленте слова), логическое устройство находится в состоянии Р0.
Будем считать МТ заданной, если заданы её внутренний и внешний алфавиты, программа, начальная конфигурация и указано заключительное состояние.
Наиболее компактно можно представить все случаи сочетаний ai, Pk и все виды реакций машины на них, если составить так называемую функциональную таблицу с двумя входами, в клетках которой стоят тройки символов вида aiPkdj.
ai рj |
P0 |
P1 |
… |
Pj |
… |
Pm |
a1 |
|
|
|
|
|
|
a2 |
|
|
|
|
|
|
… |
|
|
|
|
|
|
ai |
|
|
|
alPkds |
|
|
… |
|
|
|
|
|
|
an |
|
|
|
|
|
|
В каждый момент времени МТ находится в состоянии, которое описывается двумя буквами (внутреннего и внешнего алфавита). Буква внешнего алфавита определяется в ячейке, которая расположена напротив головки чтения-записи. Букву внутреннего алфавита определяет состояние управляющего устройства. В зависимости от этих двух фактов МТ способна произвести какие-либо действия, определяемые командой МТ. Команда МТ расположена в клетке, которая определяется значением символов внутреннего и внешнего алфавита.
Тезис Тьюринга
Любой конечный алгоритм может быть реализован с помощью конечной программы МТ. Следовательно, если не существует программы МТ для какой-либо задачи, то не существует и конечного алгоритма решения этой задачи.
Соответствие, устанавливаемое машиной Тьюринга между теми исходными данными, к которым она применима, и результатами ее работы, представляет собой некоторую функцию (в математическом смысле).
Если для функции f(x) имеется машина, реализующая ее, то говорят, что f(x) вычислима по Тьюрингу. Функцию, для вычисления которой существует алгоритм, называют вычислимой. Тьюринг высказал предположение, что любая вычислимая функция вычислима по Тьюрингу. Другими словами: для любой вычислимой функции можно построить машину Тьюринга, реализующую ее.