Мне пришло в голову этот вопрос о проблеме остановки, и я не смог найти хорошего ответа в Интернете, задаваясь вопросом, может ли кто-нибудь помочь.
Возможно ли, что проблема остановки разрешима для любого ТМ на любом входе, если он не сам ТМ? В принципе:
Halts(TM, I)
IF TM == I:
Undecidable, return a random result/throw an exception, whatever
ELSE:
Solve the problem
Halts'(X)
IF Halts(X, X):
Loop infinitely
ELSE:
Print 'done'
Это, по-видимому, разрешает противоречие. Когда мы называем парадоксальные Остановки (Halts), мы не можем ожидать последовательного поведения, но все другие вызовы Остановок (и Остановок) являются законными и разрешимыми.
Я понимаю, что это очень не интуитивно понятно. Если какой-то паттерн в битах может раскрыть поведение всех возможных программ, почему он вдруг развалится, когда ТМ и вход совпадут? Но можем ли мы математически исключить это как возможность?
И эта уменьшенная проблема остановки не будет неинтересной вообще. Даже если бы существовала какая-то значимая программа, которая взяла собственный код в качестве входных данных, ее можно было бы просто переписать, чтобы она работала на слегка отличном вводе. Конечно, это предположение делает еще менее понятным, почему может существовать остановочное решение с этим одним предупреждением, но опять же, можем ли мы действительно математически исключить эту возможность?
Спасибо за любую помощь.