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

Поделись знанием:
Перейти к: навигация, поиск

Маши́на Тью́ринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.

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





Устройство машины Тьюринга

В состав машины Тьюринга входит неограниченная в обе стороны лента (возможны машины Тьюринга, которые имеют несколько бесконечных лент), разделённая на ячейки, и управляющее устройство (также называется головкой записи-чтения (ГЗЧ)), способное находиться в одном из множества состояний. Число возможных состояний управляющего устройства конечно и точно задано.

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

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

Машина Тьюринга называется детерминированной, если каждой комбинации состояния и ленточного символа в таблице соответствует не более одного правила. Если существует пара «ленточный символ — состояние», для которой существует 2 и более команд, такая машина Тьюринга называется недетерминированной.

Описание машины Тьюринга

Конкретная машина Тьюринга задаётся перечислением элементов множества букв алфавита A, множества состояний Q и набором правил, по которым работает машина. Они имеют вид: qiaj→qi1aj1dk (если головка находится в состоянии qi, а в обозреваемой ячейке записана буква aj, то головка переходит в состояние qi1, в ячейку вместо aj записывается aj1, головка делает движение dk, которое имеет три варианта: на ячейку влево (L), на ячейку вправо (R), остаться на месте (N)). Для каждой возможной конфигурации <qi, aj> имеется ровно одно правило (для недетерминированной машины Тьюринга может быть большее количество правил). Правил нет только для заключительного состояния, попав в которое, машина останавливается. Кроме того, необходимо указать конечное и начальное состояния, начальную конфигурацию на ленте и расположение головки машины.

Пример машины Тьюринга

Приведём пример МТ для умножения чисел в унарной системе счисления. Запись правила «qiaj→qi1aj1R/L/N» следует понимать так: qi — состояние при котором выполняется это правило, aj — данные в ячейке, в которой находится головка, qi1 — состояние в которое нужно перейти, aj1 — что нужно записать в ячейку, R/L/N — команда на перемещение.

Машина работает по следующему набору правил:

q0 q1 q2 q3 q4 q5 q6 q7 q8
1 q01→q01R q11→q2aR q21→q21L q31 → q4aR q41→q41R q71→q2aR
× q0×→q1×R q2×→q3×L q4×→q4×R q6×→q7×R q8×→q9×N
= q2=→q2=L q4=→q4=R q7=→q8=L
a q2a→q2aL q3a→q3aL q4a→q4aR q6a→q61R q7a→q7aR q8a→q81L
* q0*→q0*R q3*→q6*R q4*→q51R
q5 →q2*L

Описание состояний:

Начало
q0 начальное состояние. Ищем «x» справа. При нахождении переходим в состояние q1
q1 заменяем «1» на «а» и переходим в состояние q2
Переносим все «1» из первого числа в результат
q2 ищем «х» слева. При нахождении переходим в состояние q3
q3 ищем «1» слева, заменяем её на «а» и переходим в состояние q4.

В случае если «1» закончились, находим «*» и переходим в состояние q6

q4 переходим в конец (ищем «*» справа), заменяем «*» на «1» и переходим в состояние q5
q5 добавляем «*» в конец и переходим в состояние q2
Обрабатываем каждый разряд второго числа
q6 ищем «х» справа и переходим в состояние q7. Пока ищем заменяем «а» на «1»
q7 ищем «1» или «=» справа

при нахождении «1» заменяем его на «а» и переходим в состояние q2

при нахождении «=» переходим в состояние q8

Конец
q8 ищем «х» слева. При нахождении переходим в состояние q9. Пока ищем заменяем «а» на «1»
q9 терминальное состояние (остановка алгоритма)

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

Начало. Находимся в состоянии q0, ввели в машину данные: *111x11=*, головка машины располагается на первом символе *.

1-й шаг. Смотрим по таблице правил что будет делать машина, находясь в состоянии q0 и над символом «*». Это правило из 1-го столбца 5-й строки — q0*→q0*R. Это значит, что мы переходим в состояние q0 (то есть не меняем его), символ станет «*» (то есть не изменится) и смещаемся по введённому нами тексту «*111x11=*» вправо на одну позицию (R), то есть на 1-й символ 1. В свою очередь, состояние q01 (1-й столбец 1-я строка) обрабатывается правилом q01→q01R. То есть снова происходит просто переход вправо на 1 позицию. Так происходит, пока мы не станем на символ «х». И так далее: берём состояние (индекс при q), берём символ, на котором стоим (подчёркнутый символ), соединяем их и смотрим обработку полученной комбинации по таблице правил.

Простыми словами, алгоритм умножения следующий: помечаем 1-ю единицу 2-го множителя, заменяя её на букву «а», и переносим весь 1-й множитель за знак равенства. Перенос производится путём поочерёдной замены единиц 1-го множителя на «а» и дописывания такого же количества единиц в конце строки (слева от крайнего правого «*»). Затем меняем все «а» до знака умножения «х» обратно на единицы. И цикл повторяется. Действительно, ведь A умножить на В можно представить как А+А+А В раз. Помечаем теперь 2-ю единицу 2-го множителя буквой «а» и снова переносим единицы. Когда до знака «=» не окажется единиц — значит умножение завершено.

Полнота по Тьюрингу

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

Элементарность действий заключается в том, что действие меняет лишь небольшой кусочек данных в памяти (в случае машины Тьюринга — лишь одну ячейку), и число возможных действий конечно. Несмотря на простоту машины Тьюринга, на ней можно вычислить всё, что можно вычислить на любой другой машине, осуществляющей вычисления с помощью последовательности элементарных действий. Это свойство называется полнотой.

Один из естественных способов доказательства того, что алгоритмы вычисления, которые можно реализовать на одной машине, можно реализовать и на другой, — это имитация первой машины на второй.

Имитация заключается в следующем. На вход второй машине подаётся описание программы (правил работы) первой машины <math>D</math> и входные данные <math>X</math>, которые должны были поступить на вход первой машины. Нужно описать такую программу (правила работы второй машины), чтобы в результате вычислений на выходе оказалось то же самое, что вернула бы первая машина, если бы получила на вход данные <math>X</math>.

Как было сказано, на машине Тьюринга можно имитировать (с помощью задания правил перехода) все другие исполнители, каким-либо образом реализующие процесс пошагового вычисления, в котором каждый шаг вычисления достаточно элементарен.

На машине Тьюринга можно имитировать машину Поста, нормальные алгоритмы Маркова и любую программу для обычных компьютеров, преобразующую входные данные в выходные по какому-либо алгоритму. В свою очередь, на различных абстрактных исполнителях можно имитировать Машину Тьюринга. Исполнители, для которых это возможно, называются полными по Тьюрингу (Turing complete).

Есть программы для обычных компьютеров, имитирующие работу машины Тьюринга. Но следует отметить, что данная имитация неполная, так как в машине Тьюринга присутствует абстрактная бесконечная лента. Бесконечную ленту с данными невозможно в полной мере имитировать на компьютере с конечной памятью (суммарная память компьютера — оперативная память, жёсткие диски, различные внешние носители данных, регистры и кэш процессора и др. — может быть очень большой, но, тем не менее, всегда конечна).

Варианты машины Тьюринга

Модель машины Тьюринга допускает расширения. Можно рассматривать машины Тьюринга с произвольным числом лент и многомерными лентами с различными ограничениями. Однако все эти машины являются полными по Тьюрингу и моделируются обычной машиной Тьюринга.

Машина Тьюринга, работающая на полубесконечной ленте

В качестве примера такого сведения рассмотрим следующую теорему: Для любой машины Тьюринга существует эквивалентная машина Тьюринга, работающая на полубесконечной ленте (то есть на ленте, бесконечной в одну сторону).

Рассмотрим доказательство, приведённое Ю. Г. Карповым в книге «Теория автоматов». Доказательство этой теоремы конструктивное, то есть мы дадим алгоритм, по которому для любой машины Тьюринга может быть построена эквивалентная машина Тьюринга с объявленным свойством. Во-первых, произвольно занумеруем ячейки рабочей ленты МТ, то есть определим новое расположение информации на ленте:

Затем перенумеруем ячейки, причём будем считать, что символ «*» не содержится в словаре МТ:

Наконец, изменим машину Тьюринга, удвоив число её состояний, и изменим сдвиг головки считывания-записи так, чтобы в одной группе состояний работа машины была бы эквивалентна её работе в заштрихованной зоне, а в другой группе состояний машина работала бы так, как исходная машина работает в незаштрихованной зоне. Если при работе МТ встретится символ ‘*’, значит головка считывания-записи достигла границы зоны:

Начальное состояние новой машины Тьюринга устанавливается в одной или другой зоне в зависимости от того, в какой части исходной ленты располагалась головка считывания-записи в исходной конфигурации. Очевидно, что слева от ограничивающих маркеров «*» лента в эквивалентной машине Тьюринга не используется.

Двумерные машины Тьюринга

См. также

Другие абстрактные исполнители и формальные системы вычислений

Напишите отзыв о статье "Машина Тьюринга"

Ссылки

  • [lib.custis.ru/index.php/Машина_Тьюринга Определения и примеры машин Тьюринга]
  • [aturingmachine.com/index.php Пример аппаратной реализации машины Тьюринга]
  • [kleron.ucoz.ru/load/programmirovanie/raznoe/programmy_dlja_mashiny_tjuringa/27-1-0-124 Программы для машины Тьюринга. Сложение. Умножение чисел и др.].

Литература

  • Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Глава 8. Введение в теорию машин Тьюринга // Введение в теорию автоматов, языков и вычислений = Introduction to Automata Theory, Languages, and Computation. — М.: «Вильямс», 2002. — С. 528. — ISBN 0-201-44124-1.
  • Карпов Ю. Г. Теория автоматов. — ISBN 5-318-00537-3


Отрывок, характеризующий Машина Тьюринга

Со всех сторон виднелись мокрые, с грустными лицами офицеры, чего то как будто искавшие, и солдаты, тащившие из деревни двери, лавки и заборы.
– Вот не можем, князь, избавиться от этого народа, – сказал штаб офицер, указывая на этих людей. – Распускают командиры. А вот здесь, – он указал на раскинутую палатку маркитанта, – собьются и сидят. Нынче утром всех выгнал: посмотрите, опять полна. Надо подъехать, князь, пугнуть их. Одна минута.
– Заедемте, и я возьму у него сыру и булку, – сказал князь Андрей, который не успел еще поесть.
– Что ж вы не сказали, князь? Я бы предложил своего хлеба соли.
Они сошли с лошадей и вошли под палатку маркитанта. Несколько человек офицеров с раскрасневшимися и истомленными лицами сидели за столами, пили и ели.
– Ну, что ж это, господа, – сказал штаб офицер тоном упрека, как человек, уже несколько раз повторявший одно и то же. – Ведь нельзя же отлучаться так. Князь приказал, чтобы никого не было. Ну, вот вы, г. штабс капитан, – обратился он к маленькому, грязному, худому артиллерийскому офицеру, который без сапог (он отдал их сушить маркитанту), в одних чулках, встал перед вошедшими, улыбаясь не совсем естественно.
– Ну, как вам, капитан Тушин, не стыдно? – продолжал штаб офицер, – вам бы, кажется, как артиллеристу надо пример показывать, а вы без сапог. Забьют тревогу, а вы без сапог очень хороши будете. (Штаб офицер улыбнулся.) Извольте отправляться к своим местам, господа, все, все, – прибавил он начальнически.
Князь Андрей невольно улыбнулся, взглянув на штабс капитана Тушина. Молча и улыбаясь, Тушин, переступая с босой ноги на ногу, вопросительно глядел большими, умными и добрыми глазами то на князя Андрея, то на штаб офицера.
– Солдаты говорят: разумшись ловчее, – сказал капитан Тушин, улыбаясь и робея, видимо, желая из своего неловкого положения перейти в шутливый тон.
Но еще он не договорил, как почувствовал, что шутка его не принята и не вышла. Он смутился.
– Извольте отправляться, – сказал штаб офицер, стараясь удержать серьезность.
Князь Андрей еще раз взглянул на фигурку артиллериста. В ней было что то особенное, совершенно не военное, несколько комическое, но чрезвычайно привлекательное.
Штаб офицер и князь Андрей сели на лошадей и поехали дальше.
Выехав за деревню, беспрестанно обгоняя и встречая идущих солдат, офицеров разных команд, они увидали налево краснеющие свежею, вновь вскопанною глиною строящиеся укрепления. Несколько баталионов солдат в одних рубахах, несмотря на холодный ветер, как белые муравьи, копошились на этих укреплениях; из за вала невидимо кем беспрестанно выкидывались лопаты красной глины. Они подъехали к укреплению, осмотрели его и поехали дальше. За самым укреплением наткнулись они на несколько десятков солдат, беспрестанно переменяющихся, сбегающих с укрепления. Они должны были зажать нос и тронуть лошадей рысью, чтобы выехать из этой отравленной атмосферы.
– Voila l'agrement des camps, monsieur le prince, [Вот удовольствие лагеря, князь,] – сказал дежурный штаб офицер.
Они выехали на противоположную гору. С этой горы уже видны были французы. Князь Андрей остановился и начал рассматривать.
– Вот тут наша батарея стоит, – сказал штаб офицер, указывая на самый высокий пункт, – того самого чудака, что без сапог сидел; оттуда всё видно: поедемте, князь.
– Покорно благодарю, я теперь один проеду, – сказал князь Андрей, желая избавиться от штаб офицера, – не беспокойтесь, пожалуйста.
Штаб офицер отстал, и князь Андрей поехал один.
Чем далее подвигался он вперед, ближе к неприятелю, тем порядочнее и веселее становился вид войск. Самый сильный беспорядок и уныние были в том обозе перед Цнаймом, который объезжал утром князь Андрей и который был в десяти верстах от французов. В Грунте тоже чувствовалась некоторая тревога и страх чего то. Но чем ближе подъезжал князь Андрей к цепи французов, тем самоувереннее становился вид наших войск. Выстроенные в ряд, стояли в шинелях солдаты, и фельдфебель и ротный рассчитывали людей, тыкая пальцем в грудь крайнему по отделению солдату и приказывая ему поднимать руку; рассыпанные по всему пространству, солдаты тащили дрова и хворост и строили балаганчики, весело смеясь и переговариваясь; у костров сидели одетые и голые, суша рубахи, подвертки или починивая сапоги и шинели, толпились около котлов и кашеваров. В одной роте обед был готов, и солдаты с жадными лицами смотрели на дымившиеся котлы и ждали пробы, которую в деревянной чашке подносил каптенармус офицеру, сидевшему на бревне против своего балагана. В другой, более счастливой роте, так как не у всех была водка, солдаты, толпясь, стояли около рябого широкоплечего фельдфебеля, который, нагибая бочонок, лил в подставляемые поочередно крышки манерок. Солдаты с набожными лицами подносили ко рту манерки, опрокидывали их и, полоща рот и утираясь рукавами шинелей, с повеселевшими лицами отходили от фельдфебеля. Все лица были такие спокойные, как будто всё происходило не в виду неприятеля, перед делом, где должна была остаться на месте, по крайней мере, половина отряда, а как будто где нибудь на родине в ожидании спокойной стоянки. Проехав егерский полк, в рядах киевских гренадеров, молодцоватых людей, занятых теми же мирными делами, князь Андрей недалеко от высокого, отличавшегося от других балагана полкового командира, наехал на фронт взвода гренадер, перед которыми лежал обнаженный человек. Двое солдат держали его, а двое взмахивали гибкие прутья и мерно ударяли по обнаженной спине. Наказываемый неестественно кричал. Толстый майор ходил перед фронтом и, не переставая и не обращая внимания на крик, говорил:
– Солдату позорно красть, солдат должен быть честен, благороден и храбр; а коли у своего брата украл, так в нем чести нет; это мерзавец. Еще, еще!
И всё слышались гибкие удары и отчаянный, но притворный крик.
– Еще, еще, – приговаривал майор.
Молодой офицер, с выражением недоумения и страдания в лице, отошел от наказываемого, оглядываясь вопросительно на проезжавшего адъютанта.
Князь Андрей, выехав в переднюю линию, поехал по фронту. Цепь наша и неприятельская стояли на левом и на правом фланге далеко друг от друга, но в средине, в том месте, где утром проезжали парламентеры, цепи сошлись так близко, что могли видеть лица друг друга и переговариваться между собой. Кроме солдат, занимавших цепь в этом месте, с той и с другой стороны стояло много любопытных, которые, посмеиваясь, разглядывали странных и чуждых для них неприятелей.
С раннего утра, несмотря на запрещение подходить к цепи, начальники не могли отбиться от любопытных. Солдаты, стоявшие в цепи, как люди, показывающие что нибудь редкое, уж не смотрели на французов, а делали свои наблюдения над приходящими и, скучая, дожидались смены. Князь Андрей остановился рассматривать французов.
– Глянь ка, глянь, – говорил один солдат товарищу, указывая на русского мушкатера солдата, который с офицером подошел к цепи и что то часто и горячо говорил с французским гренадером. – Вишь, лопочет как ловко! Аж хранцуз то за ним не поспевает. Ну ка ты, Сидоров!
– Погоди, послушай. Ишь, ловко! – отвечал Сидоров, считавшийся мастером говорить по французски.
Солдат, на которого указывали смеявшиеся, был Долохов. Князь Андрей узнал его и прислушался к его разговору. Долохов, вместе с своим ротным, пришел в цепь с левого фланга, на котором стоял их полк.
– Ну, еще, еще! – подстрекал ротный командир, нагибаясь вперед и стараясь не проронить ни одного непонятного для него слова. – Пожалуйста, почаще. Что он?
Долохов не отвечал ротному; он был вовлечен в горячий спор с французским гренадером. Они говорили, как и должно было быть, о кампании. Француз доказывал, смешивая австрийцев с русскими, что русские сдались и бежали от самого Ульма; Долохов доказывал, что русские не сдавались, а били французов.
– Здесь велят прогнать вас и прогоним, – говорил Долохов.
– Только старайтесь, чтобы вас не забрали со всеми вашими казаками, – сказал гренадер француз.
Зрители и слушатели французы засмеялись.
– Вас заставят плясать, как при Суворове вы плясали (on vous fera danser [вас заставят плясать]), – сказал Долохов.
– Qu'est ce qu'il chante? [Что он там поет?] – сказал один француз.
– De l'histoire ancienne, [Древняя история,] – сказал другой, догадавшись, что дело шло о прежних войнах. – L'Empereur va lui faire voir a votre Souvara, comme aux autres… [Император покажет вашему Сувара, как и другим…]
– Бонапарте… – начал было Долохов, но француз перебил его.
– Нет Бонапарте. Есть император! Sacre nom… [Чорт возьми…] – сердито крикнул он.
– Чорт его дери вашего императора!
И Долохов по русски, грубо, по солдатски обругался и, вскинув ружье, отошел прочь.
– Пойдемте, Иван Лукич, – сказал он ротному.
– Вот так по хранцузски, – заговорили солдаты в цепи. – Ну ка ты, Сидоров!
Сидоров подмигнул и, обращаясь к французам, начал часто, часто лепетать непонятные слова:
– Кари, мала, тафа, сафи, мутер, каска, – лопотал он, стараясь придавать выразительные интонации своему голосу.
– Го, го, го! ха ха, ха, ха! Ух! Ух! – раздался между солдатами грохот такого здорового и веселого хохота, невольно через цепь сообщившегося и французам, что после этого нужно было, казалось, разрядить ружья, взорвать заряды и разойтись поскорее всем по домам.
Но ружья остались заряжены, бойницы в домах и укреплениях так же грозно смотрели вперед и так же, как прежде, остались друг против друга обращенные, снятые с передков пушки.


Объехав всю линию войск от правого до левого фланга, князь Андрей поднялся на ту батарею, с которой, по словам штаб офицера, всё поле было видно. Здесь он слез с лошади и остановился у крайнего из четырех снятых с передков орудий. Впереди орудий ходил часовой артиллерист, вытянувшийся было перед офицером, но по сделанному ему знаку возобновивший свое равномерное, скучливое хождение. Сзади орудий стояли передки, еще сзади коновязь и костры артиллеристов. Налево, недалеко от крайнего орудия, был новый плетеный шалашик, из которого слышались оживленные офицерские голоса.
Действительно, с батареи открывался вид почти всего расположения русских войск и большей части неприятеля. Прямо против батареи, на горизонте противоположного бугра, виднелась деревня Шенграбен; левее и правее можно было различить в трех местах, среди дыма их костров, массы французских войск, которых, очевидно, большая часть находилась в самой деревне и за горою. Левее деревни, в дыму, казалось что то похожее на батарею, но простым глазом нельзя было рассмотреть хорошенько. Правый фланг наш располагался на довольно крутом возвышении, которое господствовало над позицией французов. По нем расположена была наша пехота, и на самом краю видны были драгуны. В центре, где и находилась та батарея Тушина, с которой рассматривал позицию князь Андрей, был самый отлогий и прямой спуск и подъем к ручью, отделявшему нас от Шенграбена. Налево войска наши примыкали к лесу, где дымились костры нашей, рубившей дрова, пехоты. Линия французов была шире нашей, и ясно было, что французы легко могли обойти нас с обеих сторон. Сзади нашей позиции был крутой и глубокий овраг, по которому трудно было отступать артиллерии и коннице. Князь Андрей, облокотясь на пушку и достав бумажник, начертил для себя план расположения войск. В двух местах он карандашом поставил заметки, намереваясь сообщить их Багратиону. Он предполагал, во первых, сосредоточить всю артиллерию в центре и, во вторых, кавалерию перевести назад, на ту сторону оврага. Князь Андрей, постоянно находясь при главнокомандующем, следя за движениями масс и общими распоряжениями и постоянно занимаясь историческими описаниями сражений, и в этом предстоящем деле невольно соображал будущий ход военных действий только в общих чертах. Ему представлялись лишь следующего рода крупные случайности: «Ежели неприятель поведет атаку на правый фланг, – говорил он сам себе, – Киевский гренадерский и Подольский егерский должны будут удерживать свою позицию до тех пор, пока резервы центра не подойдут к ним. В этом случае драгуны могут ударить во фланг и опрокинуть их. В случае же атаки на центр, мы выставляем на этом возвышении центральную батарею и под ее прикрытием стягиваем левый фланг и отступаем до оврага эшелонами», рассуждал он сам с собою…
Всё время, что он был на батарее у орудия, он, как это часто бывает, не переставая, слышал звуки голосов офицеров, говоривших в балагане, но не понимал ни одного слова из того, что они говорили. Вдруг звук голосов из балагана поразил его таким задушевным тоном, что он невольно стал прислушиваться.