Машина Тьюринга, которая решает {0 ^ 2 ^ n; n> 0} это не общепринятый - PullRequest
0 голосов
/ 14 мая 2018

Нас просят создать машину Тьюринга, которая принимает {0^(2^n); n>0}, то есть , а не общепринятую, опубликованную Майклом Сипсером.

Sane Turing Machine

Вместо этого нас просят создать его для алгоритма следующим образом:

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

Это будет продолжаться таким образом, вычеркивая столько нулей в каждом проходе, сколько было вычеркнуто во всех предыдущих объединенных проходах (1, 1, 2, 4, 8, 16 и т. Д.) до тех пор, пока не останется ни одного нуля и не будет вычеркнуто ни одного (принять) или не останется ни одного нуля, но осталось несколько зачеркнутых (отклонить).

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

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

1 Ответ

0 голосов
/ 15 мая 2018

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

  • В начале прохода лента имеет определенный диапазон x s, представляющий то, что было пересечено.out, за которым следует диапазон еще не пересеченных 0 s.

  • Найдите крайний левый x.Измените его на y.Найдите самый левый 0.Вычеркните это с z.Повторяйте, пока есть x с.

  • Перейдите к началу ленты и измените каждый y и z на x.

Докажите, что после такого прохода число x s удвоится, и внедрите машину.

...