Возможно ли, что проблема остановки разрешима для всего ввода, кроме кода машины?

9

Мне пришло в голову этот вопрос о проблеме остановки, и я не смог найти хорошего ответа в Интернете, задаваясь вопросом, может ли кто-нибудь помочь.

Возможно ли, что проблема остановки разрешима для любого ТМ на любом входе, если он не сам ТМ? В принципе:

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), мы не можем ожидать последовательного поведения, но все другие вызовы Остановок (и Остановок) являются законными и разрешимыми.

Я понимаю, что это очень не интуитивно понятно. Если какой-то паттерн в битах может раскрыть поведение всех возможных программ, почему он вдруг развалится, когда ТМ и вход совпадут? Но можем ли мы математически исключить это как возможность?

И эта уменьшенная проблема остановки не будет неинтересной вообще. Даже если бы существовала какая-то значимая программа, которая взяла собственный код в качестве входных данных, ее можно было бы просто переписать, чтобы она работала на слегка отличном вводе. Конечно, это предположение делает еще менее понятным, почему может существовать остановочное решение с этим одним предупреждением, но опять же, можем ли мы действительно математически исключить эту возможность?

Спасибо за любую помощь.

CS101
источник
7
На разрешимость не влияют конечные изменения.
существует бесконечное число эквивалентных ТМ, и нет (решаемого) способа обнаружения эквивалентных ТМ (т. е. он по сути такой же, как и сама проблема остановки). однако есть некоторые сложные «лазейки»; попробуйте Computer Science Chat для дальнейшего анализа проблемы остановки, связанной с автоматическим доказательством и т. д. ... возможно, попытайтесь превратить это в ответ ...
vzn
Подправил мой вопрос, чтобы быть немного яснее, извините, если я кого-то ввел в заблуждение.
CS101
Ответ - нет, как в этом ответе cstheory.stackexchange.com/questions/2853/…
Мохаммад Алагган

Ответы:

4

Но мы можем легко обойти ваше ограничение. Предположим, что программа G инвертирует биты ввода и вызывает ваш H результата, затем определите !H со всеми обращенными битами (т. Е. 0 для 1 с, 1 с для 0 с). Тогда мы можем назвать свой H с G(!H) , и мы вернулись к исходной задаче.

Джек Эйдли
источник
Спасибо. Прочитав ответ @David Richerby, я начал думать, что это ответ. Если мы сможем построить функционально эквивалентный Q 'для всех программ Q, то мы сможем еще раз решить вопрос об остановке для всех задач, а не только для тех, которые находятся вне диагонали. Я вижу, это то, что вы говорите.
CS101
12

Напомним стандартное доказательство неразрешимости проблемы остановки. Предположим , что некоторая машина  решает проблему и останавливая пусть Q является машина , что на входе  М использует  H , чтобы определить , если M ( М ) останавливается , и, если да, то Q  петель; в противном случае Q  останавливается. Теперь, Q ( Q ) останавливается , если, и только если это не остановить.HQMHM(M)QQQ(Q)

Возможно ли, что проблема остановки разрешима для любого ТМ на любом входе, если он не сам ТМ?

Нет. Если вы измените определение проблемы остановки таким образом, доказательство все еще работает. Мы не волнует то , что происходит , когда  получает  H в качестве входных данных , так как противоречие приходит после того, как мы даем вход Q , Q в  H .HHQ,QH

Во- вторых, если вы изменяли  , чтобы обнаружить , что вход, мы могли бы получить такое же противоречие, используя любой другой машины  Q ' , что эквивалентно  Q в том смысле , что для любого входа  ш , Q ' ( ш )  привалах , если, и только если , Q ( ш )  останавливается. Их бесконечно много, и H  не может обнаружить их все, потому что неясно, эквивалентны ли две машины Тьюринга.HQQwQ(w)Q(w)H

Дэвид Ричерби
источник
3
Одного последнего абзаца может быть достаточно, чтобы ответить на вопрос: вы не можете жестко закодировать все кодировки эквивалентных машин независимо от того, какую конечную адаптацию (на основе семантики) вы хотите выполнить. (Это не означает, что остальная часть вашего поста не стоит читать!)
Рафаэль
Спасибо за ответ. Разве неразрешимость того, являются ли программы функционально эквивалентными сама по себе, не является ли она неразрешимостью проблемы остановки? Почему бы это не круговые рассуждения?
CS101
1
HALTHALT
Смутил себя, забыл, что проблема полной остановки остается той же самой по моей догадке. Спасибо.
CS101