Моя простая машина Тьюринга - PullRequest
5 голосов
/ 22 сентября 2010

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

У нас есть бесконечная лента (скажем, массив с именем T с указателем на 0 в начале) и таблица инструкций:

( S , R , W , D , N )

S->STEP (Start at step 1)
R->READ (0 or 1)
W->WRITE (0 or 1)
D->DIRECTION (0=LEFT 1=RIGHT)
N->NEXTSTEP (Non existing step is HALT)

Насколько я понимаю, 3-символьный 2-символ является самой простой машиной. 3 состояния я не понимаю. 2 символа, потому что мы используем 0 и 1 для чтения / записи.

Например:

(1,0,1,1,2)
(1,1,0,1,2)

Начиная с шага 1, если Read равен 0, то {Write 1, Move Right) else {Write 0, Move Right), а затем переходите к шагу 2 - которого не существует, что останавливает программу.

Что означает 3 состояния? Эта машина проходит как машина Тьюринга? Можем ли мы упростить больше?

Ответы [ 3 ]

2 голосов
/ 23 сентября 2010

Я думаю, что путаница может возникнуть из-за того, что вы используете «шаги» вместо «состояний». Вы можете думать о состоянии машины как о значении, которое она имеет в своей памяти (хотя, как отмечалось ранее, некоторые люди также принимают состояние машины, чтобы включить содержимое ленты - однако, я не думаю, что определение уместно на ваш вопрос). Возможно, что это изменение в терминологии может быть причиной вашего замешательства. Позвольте мне объяснить, что я думаю, что вы думаете. :)

Вы дали списки из пяти чисел - например, (1,0,1,1,2). Как вы правильно заявили, это следует интерпретировать (читая слева направо) как «Если машина находится в состоянии 1 И текущий квадрат содержит 0, выведите 1, переместитесь вправо и перейдите в состояние 2». Однако использование вами слова «шаг», по-видимому, предполагает, что после «шага 2» должен следовать «шаг 3» и т. Д., Когда на самом деле машина Тьюринга может перемещаться между состояниями (и, конечно, может быть только конечное число возможных состояний).

Итак, чтобы ответить на ваши вопросы:

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

Редактирует: грамматику, форматирование и удаляет ненужное описание машин Тьюринга.

Ответ на комментарий : Поправьте меня, если я неверно истолковываю ваш комментарий, но я не имел в виду, что машина Тьюринга может находиться в нескольких состояниях одновременно, только то, что число возможных состояний может быть любым конечным числом. Например, для машины с тремя состояниями вы можете пометить возможные состояния A, B и C. (В приведенном вами примере вы пометили два возможных состояния как «1» и «2»). В любой момент времени точно одно из этих значений (состояний) будет в памяти машины. Мы бы сказали: «машина находится в состоянии A» или «машина находится в состоянии B» и т. Д. (Ваша машина запускается в состоянии «1» и завершает работу после того, как она переходит в состояние «2»).

Кроме того, мне больше не понятно, что вы имеете в виду под «более простой». Самая маленькая известная универсальная машина Тьюринга (то есть машина Тьюринга, которая может имитировать другую машину Тьюринга при наличии соответствующей ленты) требует 2 состояния и 5 символов (см. соответствующую статью Википедии ).

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

1 голос
/ 22 сентября 2010

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

К сожалению, ни одно из этих утверждений не может быть правильным, но я решил написать свои мысли в любом случае, так как вопросоставался без ответа в течение 5 часов.Я подозреваю, что если бы вы снова задали этот вопрос на cstheory.stackexchange.com, вы могли бы получить более качественный и более убедительный ответ.

0 голосов
/ 23 сентября 2010

«Состояние» в контексте машин Тьюринга должно быть разъяснено в отношении того, что описывается: (i) текущей инструкцией или (ii) списком символов на ленте вместе с текущей инструкцией, или (iii) список символов на ленте вместе с текущей инструкцией, размещенной слева от сканированного символа или справа от сканированного символа. Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...