2016-12-06 17 views
1

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

Может ли кто-нибудь сказать мне, почему? Есть ли конкретная причина, о которой я не думал?

ответ

0

Прежде всего позвольте мне вернуться к самому доказательству.

HALT_TM неразрешима

Предположим, что любая машина имеет описание, которое принимает форму строки. Пусть HALT_TM = {<M, w>| M is a TM and M halts on input w} и A_TM = {<M,w>| M is a TM and accepts w}. Здесь я предполагаю, что мы знаем, что A_TM неразрешима (доказательство может быть выполнено путем диагонализации и осознание того, что, поскольку языков больше, чем машин Тьюринга, и поскольку данный ТМ решает только один язык, тогда какой-то язык не решается).

Предположим, что HALT_TM разрешимо, что означает, что мы распоряжаемся дешифратором D для этого языка. Тогда мы сможем построить машину M, которая решает A_TM. На входе <M', w>, M выполняет следующие функции: (! Пока он не останавливается, что мы знаем, потому что D не отвергают)

  • Run D на входе <M',w>
  • Если D отклонить, отклонить, иначе запустить M' на w
  • Если M' принимает, признает, отклоняет, отклоняет.

Там мы видим противоречие с предположением

Универсальные машины Тьюринга

Теперь ядро ​​вашего вопроса: вы на самом деле кормить M любое действительное описание машины M', не обязательно <M> сам. Помните, что ТМ и «программа» на самом деле эквивалентны: см. Это приятно answer для более подробной информации. Цитируя этот же ответ: «Машина Тьюринга является формальным аналогом алгоритма». Одной из мощностей машин Тьюринга является то, что они могут быть закодированы в виде строки, позволяя другим машинам Тьюринга (называемым «Universal Turing Machine») выполнять их. Поскольку данный компьютер является алгоритмом, вы видите, что на самом деле вы подаете программу ТМ «топ-уровень» и ввод по вашему выбору.