Путаница проблемы
-
29-09-2020 - |
Вопрос
Показать, что следующая проблема состоит в решаемости. Две программы со своими входами и знаниями, которые именно один из них останавливается, определите, какие останавливаются.
позволяет P быть программой, которая определяет одну из программ, будет остановлена.
P(Program x,Program y){
if(x will be halted)
then return 1;
else
then return 2;
}
.
С тех пор, как мы знаем, что именно один из них будет остановлен, если 1, затем программа X будет остановлена. Готерибоевая программа y будет остановлена.
Затем мы строим новую программу вызова D
D(X,Y){
if(P(X,Y) == 2)
D will halt;
else
while(1)//D will not halt;
}
.
Давайте быть аритурной программой.
Так что, если у нас есть d (d, s)
Если буду остановить, то d не останов
Если d не остановлю, то буду остановить
это нарушает противоречие в том числе, как проблема захоронения.
Но вопрос заявил, что это разрешимо.
Решение
Чтобы начать с важной стороны Примечание. Какие входы для $ x $ и $ y $ что они остановятся? Вам необходимо указать конкретный вход для машин, чтобы получить четко определенный вопрос (например, вопрос может быть «дан
Я вижу, что смущено тебя там. Проблема действительно разрешима: в $ p $ emulate как $ x $ и $ y $ И ответьте, кто бы ни остановил сначала.
Проблема в вашем решении состоит в том, что вход в $ p $ должен быть $ x, y $ Где точно один из них останавливает, а другой нет.
Итак, правильный вход в $ d $ должен быть правильным входом в $ p $ . Теперь обратите внимание, вы называете $ d (d, s) $ . Чтобы убедиться, что $ d $ вернет правильный выход, мы должны иметь правильные входы: только один из $ d $ < / span> или $ s $ останавливает! Но ... если $ S $ останавливается, затем ваш $ d $ также останавливает и это не является правильным входом в $ p $ , и, следовательно, и не правильный ввод в $ D $ . Таким образом, вы не можете полагаться на вывод из $ D (D, S) $ , так как он не может быть правильным