Примеры машины Тьюринга - Turing machine examples

Ниже приведены примеры, дополняющие статью. Машина Тьюринга.

Самый первый пример Тьюринга

Следующая таблица - самый первый пример Тьюринга (Алан Тьюринг 1937):

«1. Можно сконструировать машину для вычисления последовательности 0 1 0 1 0 1 ...» (0 <пусто> 1 <пусто> 0 ...) (Неразрешимый п. 119)
КонфигурацияПоведение
м-конфигурация
(государственный)
Лента символЛенточные операцииОкончательная м-конфигурация
(государственный)
бпустойP0, Rc
cпустойре
епустойP1, Rж
жпустойрб

Что касается действий машины на самом деле, Тьюринг (1936) (Неразрешимый п. 121) утверждает следующее:

"Эта [примерная] таблица (и все последующие таблицы того же типа) должны пониматься как означающие, что для конфигурации, описанной в первых двух столбцах, операции в третьем столбце выполняются последовательно, а затем машина переходит в m-конфигурация в последнем столбце ". (Неразрешимо, стр.121)

Он делает это очень ясно, когда сокращает приведенную выше таблицу до одной инструкции под названием «b» (Неразрешимый п. 120), но его инструкция состоит из 3 строк. Инструкция «b» имеет три различных варианта символа {Нет, 0, 1}. За каждой возможностью следует последовательность действий, пока мы не дойдем до крайнего правого столбца, где окончательная m-конфигурация - «b»:

Текущая м-конфигурация (инструкция)Лента символОперации на лентеОкончательная м-конфигурация (инструкция)
бНиктоP0б
б0R, R, P1б
б1R, R, P0б

По наблюдениям ряда комментаторов, включая самого Тьюринга (1937) (например, Пост (1936), Пост (1947), Клини (1952), Ван (1954)), инструкции Тьюринга не атомарны - дальнейшие упрощения модели могут производиться без снижения его вычислительной мощности; увидеть больше на Машина Пост-Тьюринга.

Как сказано в статье Машина Тьюринга Тьюринг предложил еще больше атомизировать его таблицу, разрешив только одну печать / стирание с последующим одним движением ленты L / R / N. Он дает нам этот пример преобразования первого маленького стола (Неразрешимый, п. 127):

Текущая m-конфигурация (состояние Тьюринга)Лента символПечать-операцияЛента-движениеОкончательная m-конфигурация (состояние Тьюринга)
q1пустойP0рq2
q2пустойP пусто, т.е. Eрq3
q3пустойP1рq4
q4пустойP пусто, т.е. Eрq1

Утверждение Тьюринга по-прежнему подразумевает пять атомарных операций. По заданной инструкции (m-конфигурация) машина:

  1. наблюдает за лентой-символом под головой
  2. на основе наблюдаемого символа переходит к соответствующей последовательности инструкций для использования
  3. печатает символ Sj или стирает, или ничего не делает
  4. перемещает ленту влево, вправо или вообще не перемещает
  5. переходит к последней m-конфигурации для этого символа

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

(qя) Тестовая лента-символ под заголовком: если символ S0 перейти к qя.01, если символ S1 перейти к qя.11, если символ S2 перейти к qя.21 и др.
(qя.01) выведите символ Sj0 или стереть или ничего не делать, затем перейти к qя.02
(qя.02) переместите ленту влево или вправо, а затем перейдите к qm0
(qя.11) выведите символ Sj1 или стереть или ничего не делать, затем перейти к qя.12
(qя.12) переместите ленту влево или вправо, а затем перейдите к qm1
(qя.21) выведите символ Sj2 или стереть или ничего не делать, затем перейти к qя.22
(qя.22) переместите ленту влево или вправо, а затем перейдите к qm2
(и т. д. - все символы должны быть учтены)

Так называемые «канонические» конечные автоматы провести символьные тесты «параллельно»; увидеть больше на микропрограммирование.

В следующем примере того, что делает машина, мы отметим некоторые особенности моделей Тьюринга:

«Условие написания цифр только на чередующихся квадратах очень полезно: я всегда буду им пользоваться». (Неразрешимо, стр.121)

Таким образом, при печати он пропускает все остальные квадраты. Напечатанные квадраты называются F-квадратами; пустые квадраты между ними могут использоваться в качестве «маркеров» и называются «E-квадратами», как в слове «подлежащие стиранию». F-квадраты, в свою очередь, являются его «квадратами фигуры» и содержат только символы 1 или 0 - символы, которые он назвал «цифрами» (как в «двоичных числах»).

В этом примере лента начинается с «пустой», а затем на ней печатаются «цифры». Для краткости здесь показаны только ТАБЛИЧНЫЕ состояния:

ПоследовательностьИдентификатор инструкцииГолова
..................
11..................
22.....0............
33......0...........
44.....1.0..........
51......1.0.........
62.....0.1.0........
73......0.1.0.......
84.....1.0.1.0......
91......1.0.1.0.....
102.....0.1.0.1.0....
113......0.1.0.1.0...
124.....1.0.1.0.1.0..
131......1.0.1.0.1.0.
142.....0.1.0.1.0.1.0

Тот же «прогон» со всеми промежуточными лентами и движениями показан здесь:

Машина Тьюринга Первая машина Тьюринга. JPG

При внимательном рассмотрении таблицы обнаруживаются определенные проблемы с собственным примером Тьюринга - не все символы учтены.

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

Подпрограмма копирования

Это очень важная подпрограмма, используемая в подпрограмме "умножение".

Пример машины Тьюринга обрабатывает строку из нулей и единиц, где 0 представлен пустым символом. Его задача - удвоить любую встреченную на ленте серию единиц, записав между ними 0. Например, когда головка читает «111», она записывает 0, а затем «111». На выходе будет «1110111».

Для выполнения своей задачи этой машине Тьюринга потребуется всего 5 состояний работы, которые называются {s1, с2, с3, с4, с5}. Каждое состояние выполняет 4 действия:

  1. Прочтите символ под головой
  2. Запишите выходной символ, определяемый состоянием
  3. Переместите ленту влево или вправо в зависимости от штата.
  4. Переключитесь в следующее состояние, определяемое текущим состоянием
Начальная m-конфигурация (текущая инструкция)Лента символОперация печатиДвижение лентыОкончательная m-конфигурация (следующая инструкция)
s10NNЧАС
s11Eрs2
s20Eрs3
s21P1рs2
s30P1Ls4
s31P1рs3
s40ELs5
s41P1Ls4
s50P1рs1
s51P1Ls5
ЧАС---

«Прогон» машинных последовательностей через 16 машинных конфигураций (также известных как состояния Тьюринга):

ПоследовательностьИдентификатор инструкцииГолова
1s100001100000
2s200000100000
3s200000010000
4s300000001000
5s400001010000
6s500010100000
7s500101000000
8s100010110000
9s200001001000
10s300000100100
11s300000010010
12s400001100100
13s400011001000
14s500110010000
15s100011011000
16ЧАС00011011000

Поведение этой машины можно описать как цикл: он начинается через s1, заменяет первую 1 на 0, затем использует s2 переместиться вправо, пропуская 1 с и первый встреченный 0. s3 затем пропускает следующую последовательность единиц (изначально их нет) и заменяет первый найденный 0 на 1. s4 перемещается назад влево, пропуская 1 с, пока не найдет 0 и не переключится на s5. s5 затем перемещается влево, пропуская 1 с, пока не найдет 0, который изначально был записан s1.

Он заменяет 0 на 1, перемещает на одну позицию вправо и вводит s1 снова для еще одного круга петли.

Это продолжается до s1 находит 0 (это 0 в середине двух строк из единиц), когда машина останавливается.

Альтернативное описание

В другом описании проблема заключается в том, как отслеживать количество единиц. Мы не можем использовать одно состояние для каждого возможного числа (состояние для каждого из 0,1,2,3,4,5,6 и т. Д.), Потому что тогда нам понадобятся бесконечные состояния для представления всех натуральных чисел, а конечный автомат конечный - нам придется как-то отследить это с помощью ленты.

Основной способ его работы - копирование каждой «1» на другую сторону, перемещение вперед и назад - он достаточно умен, чтобы запомнить, на какой части пути он находится. Более подробно, он переносит каждую «1» на другую сторону, распознавая разделяющий «0» в середине и распознавая «0» на другой стороне, чтобы знать, что он достиг конца. Он возвращается с использованием того же метода, обнаруживая средний «0», а затем «0» на исходной стороне. Этот «0» на исходной стороне - ключ к разгадке того, как он отслеживает количество единиц.

Хитрость в том, что перед переносом «1» он помечает эту цифру как «взятая», заменяя ее на «0». Когда он возвращается, он заполняет этот «0» обратно на «1», затем переходит к следующему, отметив его «0» и повторив цикл, перенося эту «1» и так далее. При каждом движении вперед и назад маркер «0» перемещается на один шаг ближе к центру.. Вот как он отслеживает, сколько «1» он принял.

Когда он возвращается, маркер «0» выглядит как конец набора «1» для него - любые «1», которые уже были пройдены, невидимы для него (на другой стороне маркера «0» ), и поэтому он как будто работает над (N-1) числом "1" s - аналогично доказательству математическая индукция.

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

Пример копии машины Тьюринга.JPG

3 состояния Занятый Бобер

Следующая таблица инструкций Тьюринга была взята из Peterson (1988), стр. 198, рис. 7.15. Петерсон двигает головой; в следующей модели движется лента.

Лента символТекущее состояние АТекущее состояние BТекущее состояние C
Написать символПереместить лентуСледующее состояниеНаписать символПереместить лентуСледующее состояниеНаписать символПереместить лентуСледующее состояние
01рB1LА1LB
11LC1рB1NHALT

Рисунок «состояния» занятого бобра с 3 состояниями показывает внутренние последовательности событий, необходимые для фактического выполнения «состояния». Как отмечалось выше, Тьюринг (1937) совершенно ясно дает понять, что это правильная интерпретация кортежей из пяти, описывающих инструкцию (Неразрешимый, п. 119). Подробнее об атомизации 5-кортежей Тьюринга см. Машина Пост-Тьюринга:

Диаграмма состояний 3 состояния занято бобра.JPG

В следующей таблице показан «сжатый» прогон - только состояния Тьюринга:

ПоследовательностьИдентификатор инструкцииГолова
1б00000000000000
2B00000001000000
3А00000110000000
4C00001100000000
5B00011100000000
6А00111100000000
7B00011111000000
8B00001111100000
9B00000111110000
10B00000011111000
11B00000001111100
12А00000111111000
13C00001111110000
14ЧАС00001111110000

Полный "пробег" занятого бобра с 3 состояниями. Полученные в результате состояния Тьюринга (то, что Тьюринг назвал «m-конфигурациями» - «конфигурациями машины») выделены серым цветом в столбце A, а также под инструкциями машины (столбцы AF-AU)):

Машина Тьюринга, пример 3, состояние занятого бобра.JPG

Рекомендации

Для полных ссылок см. Машина Тьюринга.

  • Иварс Петерсон, 1988 г., Математический турист: краткое изложение современной математики, W.H. Freeman and Company, Нью-Йорк, ISBN  0-7167-2064-7 (пбк.). Машины Тьюринга описаны на стр. 194 и далее, пример занятого бобра - на рис. 7.15 на стр. 198.
  • Мартин Дэвис редактор, 1965, Неразрешимое: основные статьи о неразрешимых предложениях, неразрешимых задачах и вычислимых функциях, Raven Press, New York, без ISBN, без номера карты в каталоге.
  • Алан Тьюринг, 1937 год, О вычислимых числах в приложении к Entscheidungsproblem, pp. 116ff, с кратким комментарием Дэвиса на странице 115.
  • Алан Тьюринг, 1937 год, О вычислимых числах в приложении к Entscheidungsproblem. Исправление, п. 152-154.