Алгоритм машины тьюринга. История Алана Тьюринга, перед которым извинилась английская королева. С опозданием в полвека. Двумерные машины Тьюринга

тренажер для изучения универсального исполнителя

Что это такое?

Тренажёр «Машина Тьюринга» — это учебная модель универсального исполнителя (абстрактной вычислительной машины), предложенного в 1936 году А. Тьюрингом для уточнения понятия алгоритма. Согласно тезису Тьюринга, любой алгоритм может быть записан в виде программы для машины Тьюринга. Доказано, что машина Тьюринга по своим возможностям эквивалентна машине Поста и нормальным алгорифмам Маркова .

Машина Тьюринга состоит из каретки (считывающей и записывающей головки) и бесконечной ленты, разбитой на ячейки. Каждая ячейка ленты может содержать символ из некоторого алфавита A={a 0 ,a 1 ,…,a N } . Любой алфавит содержит символ «пробел», который обозначается как a 0 или Λ. При вводе команд пробел заменяется знаком подчеркивания « _ ».

Машина Тьюринга — это автомат, который управляется таблицей. Строки в таблице соответствуют символам выбранного алфавита A , а столбцы — состояниям автомата Q={q 0 ,q 1 ,…,q M } . В начале работы машина Тьюринга находится в состоянии q 1 . Состояние q 0 — это конечное состояние: попав в него, автомат заканчивает работу.

В каждой клетке таблицы, соответствующей некоторому символу a i и некоторому состоянию q j , находится команда, состоящая из трех частей:

  1. символ из алфавита A ;
  2. направление перемещения: > (вправо),
  3. новое состояние автомата

Новости

  1. Фалина И.Н. Тема «Машина Тьюринга» в школьном курсе информатики (inf.1september.ru).
  2. Майер Р.В. Машины Поста и Тьюринга (komp-model.narod.ru).
  3. Пильщиков В.Н., Абрамов В.Г., Вылиток А.А., Горячая И.В. Машина Тьюринга и алгоритмы Маркова. Решение задач , М.: МГУ, 2006.
  4. Бекман И.Н. Компьютерные науки. Лекция 7. Алгоритмы (profbeckman.narod.ru)
  5. Соловьев А. Дискретная математика без формул (lib.rus.ec)
  6. Ершов С.С. Элементы теории алгоритмов , Челябинск, Издательский центр ЮУрГУ, 2009.
  7. Варпаховский Ф.Л. Элементы теории алгоритмов , М: Просвещение, 1970.
  8. Верещагин Н.К., Шень А. Вычислимые функции , М: МЦНМО, 1999.

Что с этим делать?

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

Лента перемещается влево и вправо с помощью кнопок, расположенных слева и справа от нее. Двойным щелчком по ячейке ленты (или щелчком правой кнопкой мыши) можно изменить ее содержимое.

С помощью меню Лента можно запомнить состояние ленты во внутреннем буфере и восстановить ленту из буфера.

В поле Алфавит задаются символы выбранного алфавита. Пробел добавляется к введенным символам автоматически.

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

При вводе команды в ячейку таблицы сначала нужно ввести новый символ, затем направление перехода и номер состояния. Если символ пропущен, по умолчанию он не изменяется. Если пропущен номер состояния, по умолчанию состояние автомата не изменяется.

Справа в поле Комментарий можно вводить в произвольной форме комментарии к решению. Чаще всего там объясняют, что означает каждое состояние машины Тьюринга.

Программа может выполняться непрерывно (F9) или по шагам (F8). Команда, которая сейчас будет выполняться, подсвечивается зеленым фоном. Скорость выполнения регулируется с помощью меню Скорость .

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

Если вы заметили ошибку или у вас есть предложения, замечания, жалобы, просьбы и заявления, пишите .

Технические требования

Программа работает под управлением операционных систем линейки Windows на любых современных компьютерах.

Лицензия

Программа является бесплатной для некоммерческого использования. Исходные тексты программы не распространяются.

Программа поставляется «as is », то есть, автор не несет никакой ответственности за всевозможные последствия ее использования, включая моральные и материальные потери, вывод оборудования из строя, физические и душевные травмы.

При размещении программы на других веб-сайтах ссылка на первоисточник обязательна.

  1. 1) публикация материалов в любой форме, в том числе размещение материалов на других Web-сайтах;
  2. 2) распространение неполных или измененных материалов;
  3. 3) включение материалов в сборники на любых носителях информации;
  4. 4) получение коммерческой выгоды от продажи или другого использования материалов.

Скачивание материалов означает, что вы приняли условия этого лицензионного соглашения.

Скачать

После распаковки архива программа находится в работоспособном состоянии и не требует никаких дополнительных установок.

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

1.1 Свойства машины Тьюринга как алгоритма. 5

2. Сложность алгоритмов. 7

2.1 Сложность проблем.. 9

3. Машина Тьюринга и алгоритмически неразрешимые проблемы.. 12

Заключение. 16

Список литературы.. 18

Введение

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

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

В 1947 г. Алан Тьюринг расширил определение, описав "универсальную машину Тьюринга". Позже для решения определенных классов задач была введена ее разновидность, которая позволяла выполнять не одну задачу, а несколько.

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

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

Статья Тьюринга как раз и давала ответ на эту проблему - вторая проблема Гильберта оказалась неразрешимой. Но значение статьи Тьюринга выходило далеко за рамки той задачи, по поводу которой она была написана.

Приведем характеристику этой работы, принадлежащую Джону Хопкрофту: "Работая над проблемой Гильберта, Тьюрингу пришлось дать четкое определение самого понятия метода. Отталкиваясь от интуитивного представления о методе как о некоем алгоритме, т.е. процедуре, которая может быть выполнена механически, без творческого вмешательства, он показал, как эту идею можно воплотить в виде подробной модели вычислительного процесса. Полученная модель вычислений, в которой каждый алгоритм разбивался на последовательность простых, элементарных шагов, и была логической конструкцией, названной впоследствии машиной Тьюринга".

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

Формально машина Тьюринга может быть описана следующим образом. Пусть заданы:

конечное множество состояний – Q, в которых может находиться машина Тьюринга;

конечное множество символов ленты – Г;

функция δ (функция переходов или программа), которая задается отображением пары из декартова произведения Q x Г (машина находится в состоянии qi и обозревает символ gi) в тройку декартова произведения Q х Г х {L,R} (машина переходит в состояние qi, заменяет символ gi на символ gj и передвигается влево или вправо на один символ ленты) – Q x Г-->Q х Г х {L,R}

один символ из Г-->е (пустой);

подмножество Σ є Г - -> определяется как подмножество входных символов ленты, причем е є (Г - Σ);

одно из состояний – q0 є Q является начальным состоянием машины.

Решаемая проблема задается путем записи конечного количества символов из множества Σ є Г – Si є Σ на ленту:

eS1S2S3S4... ... ... Sne

после чего машина переводится в начальное состояние и головка устанавливается у самого левого непустого символа (q0,­w) –, после чего в соответствии с указанной функцией переходов (qi,Si) - ->(qj,Sk, L или R) машина начинает заменять обозреваемые символы, передвигать головку вправо или влево и переходить в другие состояния, предписанные функций переходов.

Остановка машины происходит в том случае, если для пары (qi,Si) функция перехода не определена.

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

1.1 Свойства машины Тьюринга как алгоритма

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

Дискретность. Машина Тьюринга может перейти к (к + 1) - му шагу только после выполнения каждого шага, т.к именно каждый шаг определяет, каким будет (к + 1) - й шаг.

Понятность. На каждом шаге в ячейку пишется символ из алфавита, автомат делает одно движение (Л, П, Н), и машина Тьюринга переходит в одно из описанных состояний.

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

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

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

2. Сложность алгоритмов

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

Обычно вычислительная сложность алгоритма выражается с помощью нотации "О большого", т. е описывается порядком величины вычислительной сложности. Это просто член разложения функции сложности, быстрее всего растущий с ростом n, все члены низшего порядка игнорируются. Например, если временная сложность данного алгоритма равна 4n2+7n+12, то вычислительная сложность порядка n2, записываемая как О(n2).

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

Эта нотация позволяет увидеть, как объем входных данных влияет на требования к времени и объему памяти. Например, если Т= О(n), то удвоение входных данных удвоит и время выполнения алгоритма. Если Т=О(2n), то добавление одного бита к входным данным удвоит время выполнения алгоритма.

Обычно алгоритмы классифицируются в соответствии с их временной или пространственной сложностью. Алгоритм называют постоянным, если его сложность не зависит от n: 0(1). Алгоритм является линейным, если его временная сложность О(n). Алгоритмы могут быть квадратичными, кубическими и т.д. Все эти алгоритмы - полиномиальны, их сложность - О(m), где m - константа. Алгоритмы с полиномиальной временной сложностью называются алгоритмами с полиномиальным временем

Алгоритмы, сложность которых равна О(tf(n)), где t - константа, большая, чем 1, a f(n) - некоторая полиномиальная функция от n, называются экспоненциальными. Подмножество экспоненциальных алгоритмов, сложность которых равна О(сf(n)), где где с - константа, a f(n) возрастает быстрее, чем постоянная, но медленнее, чем линейная функция, называется суперполиномиальным.

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

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

Что такое машина Тьюринга

Для того, чтобы представить простейшую машину Тьюринга, взглянем на её художественную реализацию:

Это бесконечная лента, не имеющая ни начала, ни конца, поделённая на ячейки. Для работы с ней мы используем некое управляющее устройство (автомат), для визуализации выбрана каретка. В каждый момент времени она имеет состояние qj и считывает содержимое ячейки ai. О том, что происходит в остальной части ленты, каретка не знает, соответственно оперировать она может только текущими данными. Всего возможно три типа действий, зависящий от этой композиции:

  • выполнить сдвиг на соседнюю ячейку;
  • записать в текущую новое содержимое;
  • изменить состояния.

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

Множества A = {a0, a1, ..., ai} и Q = {q0, q1, ..., qj} являются конечными, a0 – символ пустой ячейки, q1 – начальное состояние, q0 – пассивное состояния, условие выхода машины из цикла.

Создадим таблицу для реализации алгоритма Тьюринга:

Символами _Л, _П, _Н обозначим направление движения автомата – соответственно сдвиг «влево», «вправо» или неподвижное положение.

Пусть наша лента выглядит так:

Начальное положение – крайняя правая ячейка, остановка – в пустой клетке. Догадались как она будет выглядеть после завершения алгоритма?

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

Зачем это программисту

Машина Тьюринга позволяет размять мозги и взглянуть на решение задачи иначе. В конечном счёте, с той же целью следует познакомиться с:

  • нормальным алгоритмом Маркова;
  • лямбда-вычислениями;
  • языком программирования Brainfuck.

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

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

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

Тест по Тьюрингу

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

Такой тест на долгие годы предопределил развитие ИИ – программы вроде Элизы или PARRY строились именно на копировании человеческого поведения машиной. Уже позднее, когда стало понятно, что путь тупиковый, вектор развития был сдвинут в сторону изучения механизмов интеллекта. Однако до сих пор тема «способна ли мыслить машина» лежит в основе многих тестов, романов и кинофильмов.

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

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

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

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

Энциклопедичный YouTube

    1 / 5

    ✪ 09 - Введение в алгоритмы. Машина Тьюринга

    ✪ Машина Тьюринга - Александр Шень

    ✪ Лекция 20: Машина Тьюринга

    ✪ Машина Тьюринга. Пример работы

    ✪ 16 - Вычислимость. Машины Тьюринга. Мотивировка и примеры

    Субтитры

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

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

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

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

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

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

Конкретная машина Тьюринга задаётся перечислением элементов множества букв алфавита A, множества состояний Q и набором правил, по которым работает машина. Они имеют вид: q i a j →q i1 a j1 d k (если головка находится в состоянии q i , а в обозреваемой ячейке записана буква a j , то головка переходит в состояние q i1 , в ячейку вместо a j записывается a j1 , головка делает движение d k , которое имеет три варианта: на ячейку влево (L), на ячейку вправо (R), остаться на месте (N)). Для каждой возможной конфигурации имеется ровно одно правило (для недетерминированной машины Тьюринга может быть большее количество правил). Правил нет только для заключительного состояния, попав в которое, машина останавливается. Кроме того, необходимо указать конечное и начальное состояния, начальную конфигурацию на ленте и расположение головки машины.

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

Приведём пример МТ для умножения чисел в унарной системе счисления . Запись правила «q i a j →q i1 a j1 R/L/N» следует понимать так: q i - состояние при котором выполняется это правило, a j - данные в ячейке, в которой находится головка, q i1 - состояние в которое нужно перейти, a j1 - что нужно записать в ячейку, R/L/N - команда на перемещение.

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

q 0 q 1 q 2 q 3 q 4 q 5 q 6 q 7 q 8
1 q 0 1→q 0 1R q 1 1→q 2 aR q 2 1→q 2 1L q 3 1 → q 4 aR q 4 1→q 4 1R q 7 1→q 2 aR
× q 0 ×→q 1 ×R q 2 ×→q 3 ×L q 4 ×→q 4 ×R q 6 ×→q 7 ×R q 8 ×→q 9 ×N
= q 2 =→q 2 =L q 4 =→q 4 =R q 7 =→q 8 =L
a q 2 a→q 2 aL q 3 a→q 3 aL q 4 a→q 4 aR q 6 a→q 6 1R q 7 a→q 7 aR q 8 a→q 8 1L
* q 0 *→q 0 *R q 3 *→q 6 *R q 4 *→q 5 1R
q 5 →q 2 *L

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Муравей Лэнгтона

См. также

  • JFLAP кроссплатформенная программа симулятор автоматов, машины Тьюринга, грамматик, рисует граф автомата

Ребята, мы вкладываем душу в сайт. Cпасибо за то,
что открываете эту красоту. Спасибо за вдохновение и мурашки.
Присоединяйтесь к нам в Facebook и ВКонтакте

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

Мы в сайт отдаем должное заслугам Алана Тьюринга и считаем, что каждый должен знать историю человека, без которого современный мир мог быть совсем иным.

Ранние годы

Алан Мэтисон Тьюринг появился на свет в одной из лондонских клиник 23 июня 1912 года. Он стал вторым сыном в семье Юлиуса и Этель Тьюрингов, происходивших из древних дворянских родов. Отец Алана был государственным чиновником, и по долгу службы они с женой большую часть времени проводили в Индии. Чтобы дать возможность мальчику учиться в Англии, они оставили его и старшего сына Джона на попечение отставного полковника и его супруги.

С первых лет жизни было понятно, что Алан чрезвычайно одаренный ребенок. К 6 годам он самостоятельно научился читать и просил у своих опекунов давать ему научные книги, а к 11 ставил химические опыты, пытаясь, к примеру, извлечь из морских водорослей йод. Однажды, когда Алан проводил время со своими родителями, он добыл дикий мед к чаю: мальчик отследил траекторию полета нескольких пчел, нашел точку пересечения, в котором и обнаружилось их гнездо .

В 14 лет Алан поступил в престижную школу, где учились мальчики из аристократических семей. Однако успехи у него были весьма сомнительные: большинство гуманитарных дисциплин ему было неинтересно, и если заглянуть в классный журнал , то можно увидеть, что почти по всем предметам он был последним учеником в классе. Кроме математики - здесь Алан практически всегда числился под цифрой один.

Занимался он и спортом. Так, будущий великий математик увлекался водной греблей и бегом. Кстати, бег оставался с ним на протяжении всей жизни: он преодолевал марафонские дистанции и собирался принимать участие в Олимпиаде 1948 года, однако травма ноги этому помешала. Его результаты были весьма хороши: время, за которое он преодолел 42 км 195 м, всего на 11 минут уступало тому, что показал победитель Олимпийских игр.

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

Кристофер Морком.

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

Но планам не суждено было сбыться: Кристофер Морком внезапно умер от туберкулеза. Для Алана это стало сильным ударом, он погрузился в длительную депрессию, однако нашел в себе силы поступить в Кембридж. Алан был убежден, что обязан был поступить, чтобы непременно совершить все те открытия, которые, по его словам, должен был сделать Кристофер. Уже учась в колледже, он попросил у миссис Морком фотографию сына, которую затем поставил на свой рабочий стол. «Теперь она стоит на моем столе, побуждая меня усиленно трудиться», - написал Алан матери своего умершего друга.

Именно смерть Моркома побудила Тьюринга к размышлениям о природе человеческого разума и «внедрении» его во что-то бестелесное, а значит, бессмертное. Напоминает компьютер, не правда ли?

Научная карьера и Вторая мировая война

Реконструированная «Бомба».

Через 2 года после окончания Кембриджа, в 1936 году, Тьюринг публикует свою самую знаменитую работу «О вычислимых числах, с приложением к проблеме разрешимости», в которой была изложена концепция «машины Тьюринга» - прообраза компьютера. Говоря простыми словами, он создал абстрактную вычислительную машину, которая может решить любые задачи, доступные «искусственному интеллекту», - нужно только задать определенную программу. Если выразиться максимально просто: то, что сегодня мы можем использовать одну и ту же микросхему, скажем, в смартфоне и холодильнике, - это тоже заслуга Тьюринга.

Чтобы представить себе силу разума Алана Тьюринга, стоит подумать о том, что практически весь принцип работы современных компьютеров, в том числе и самых мощных, он целиком и полностью выстроил в своей голове.

В том же 1936 году профессор Принстонского университета (США) Джон фон Нейман , чьи работы Алан изучал, еще будучи студентом, и чье имя неразрывно связано с созданием ЭВМ, пригласил молодого ученого на стажировку. Кстати, несмотря на то что именно фон Неймана традиционно принято считать отцом современных электронно-вычислительных машин, он сам признавал, что фундаментальная их концепция принадлежит именно Алану Тьюрингу.

В Принстоне Тьюринг проработал 2 года и получил степень доктора философии, однако, когда ему предложили самостоятельную должность, отказался и вернулся в Англию, в свою альма-матер. Шел 1938 год. Через год, 1 сентября 1939-го, началась Вторая мировая война.

Памятник Алану Тьюрингу в Блетчли-парке.

«Я не хочу сказать, что мы выиграли войну благодаря Тьюрингу, но беру на себя смелость сказать, что без него мы могли бы ее и проиграть».

И. Гуд, коллега Алана Тьюринга

Через 3 дня после начала войны Алан Тьюринг пришел на работу в Блетчли-парк - секретное подразделение английской разведки. Стараниями группы ученых, которыми руководил Тьюринг, через полгода был взломан код «Энигмы» - шифровальной машины, которую немецкое командование использовало для передачи секретных сообщений.

В 1941 году Алан сделал предложение коллеге по Блетчли-парку Джоан Кларк, но спустя короткое время признался ей в своей гомосексуальности, и молодые люди отменили свадьбу.

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

В 1942 году Тьюринг снова отправился в США, где, помимо прочего, работал над шифром для передачи сообщений между Рузвельтом и Черчиллем. В 1943 году он вернулся в Блетчли-парк, но выяснил, что в его отсутствие отдел возглавил другой человек. Тьюринг остался консультантом, однако все его мысли теперь занимала постройка машины, которая была бы способна заменить человека, - или, говоря современным языком, компьютера.

В 1945 году в США появилась на свет незаконченная на тот момент работа фон Неймана, в которой приводилось описание устройства вычислительной машины с хранимой в памяти программой. Чуть позже Алан Тьюринг публикует аналогичный, но гораздо более подробный труд - к слову, в материале фон Неймана были использованы идеи самого Тьюринга. Несмотря на то что постройка «компьютера» технически была вполне возможна, ее так и не осуществили из-за проволочек, связанных с секретностью Блетчли-парка.

Последние годы

Дом, где прошли последние годы Алана Тьюринга.

В 1950 году Тьюринг опубликовал одно из самых важных в истории компьютеров исследований - «Вычислительные машины и разум», где говорил об искусственном интеллекте. Именно там он предложил эксперимент, в ходе которого человек должен был общаться с «умной машиной» и живым человеком, а потом определить, кто есть кто. Кстати, на основе этого эксперимента и было создано то, что сегодня известно каждому пользователю интернета: Captcha - тот самый «защитник», который просит подтвердить, что вы не робот.

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

Более того, именно Тьюринга можно считать и создателем компьютерной музыки. В 1951 году созданная им машина была способна генерировать 3 мелодии, в числе которых и знаменитая «В настроении» Гленна Миллера. Однако об этом было напрочь забыто вплоть до 2016 года, когда была воссоздана запись 65-летней давности.Алану был предоставлен выбор между тюремным заключением и гормональной терапией - по сути, химической кастрацией. Он выбрал второе.

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

Памятник Алану Тьюрингу в Манчестере.

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

Эндрю Ходжес, автор биографической книги о Тьюринге, по которой был снят фильм Игра в имитацию» с Бенедиктом Камбербэтчем, пришел к выводу, что Алан разыграл сцену из диснеевской «Белоснежки» - своего любимого мультфильма. Кстати, есть теория, что логотип Apple появился именно благодаря яблоку, ставшему причиной смерти Тьюринга.

Впрочем, существует мнение, что это было не самоубийство. Еще с юных лет Тьюринг играл в придуманную им самим игру под названием «Необитаемый остров», целью которой была «добыча» химических элементов из разных продуктов. Тьюринг был весьма беспечен в обращении с химическими веществами, поэтому многие, в том числе и его мать Сара, считали и считают, что смерть стала случайностью. По словам матери, ученый относился к закончившейся год назад терапии с долей юмора и вообще был в хорошем настроении. Есть и еще одна версия: Тьюринг специально имитировал случайную смерть, чтобы не расстраивать мать.

Так или иначе, жизнь одного из величайших ученых XX века оборвалась, когда ему не было и 42 лет. В 2009 году премьер-министр Великобритании принес публичные извинения за преследования Алана Тьюринга, а в 2013 году королева Елизавета II даровала ему посмертное помилование.

Статьи по теме: