Ocorreu-me uma pergunta sobre o problema da interrupção e não consegui encontrar uma boa resposta on-line, imaginando se alguém poderia ajudar.
É possível que o problema da parada seja decidível para qualquer TM em qualquer entrada, desde que a entrada não seja a própria TM? Basicamente:
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'
Aparentemente, isso resolve a contradição. Quando chamamos os paradoxais de Halts de '(Halts'), não podemos esperar um comportamento consistente, mas todas as outras chamadas para Halts (e Halts) são legítimas e solucionáveis.
Eu entendo que isso é altamente intuitivo. Se algum padrão nos bits pudesse revelar o comportamento de todos os programas possíveis, por que desmoronaria repentinamente quando a TM e a entrada correspondessem? Mas podemos matematicamente eliminar isso como uma possibilidade?
E esse problema de parada reduzida não seria nada interessante. Mesmo que houvesse algum programa significativo que tivesse seu próprio código como entrada, ele poderia ser reescrito trivialmente para trabalhar com entradas ligeiramente diferentes. É claro que essa sugestão torna ainda menos compreensível por que uma solução de parada poderia existir com essa ressalva, mas novamente, podemos realmente eliminar matematicamente essa possibilidade?
Obrigado por qualquer ajuda.
Respostas:
Mas podemos contornar facilmente sua restrição. Suponha que um programaG que inverta os bits da entrada e chame seu H′ no resultado, depois defina ! H com todos os bits invertidos (ou seja, 0 para 1s, 1s para 0s). Então podemos chamar seu H′ com G(!H) e voltamos ao problema original.
fonte
Lembre-se da prova padrão da indecidibilidade do problema de parada. Suponha-se que uma máquina resolve o problema da paragem e deixar Q ser a máquina que, na entrada ⟨ M ⟩ usa H para determinar se M ( ⟨ M ⟩ ) pára e, em caso afirmativo, Q ciclos; caso contrário, Q pára. Agora, Q ( ⟨ Q ⟩ ) paradas se, e somente se, ele não parar.H Q ⟨M⟩ H M(⟨M⟩) Q Q Q(⟨Q⟩)
Não. Se você alterar a definição do problema de parada dessa maneira, a prova ainda funcionará. Não importa o que acontece quando recebe ⟨ H ⟩ como entrada, porque a contradição vem depois damos entrada ⟨ Q ⟩ , ⟨ Q ⟩ para H .H ⟨H⟩ ⟨Q⟩,⟨Q⟩ H
Segundo, se você modificou para detectar essa entrada, podemos obter a mesma contradição usando qualquer outra máquina Q ' que seja equivalente a Q no sentido de que, para qualquer entrada w , Q ' ( w ) é interrompido se, e somente se , Q ( w ) pára. Existem infinitas delas e H não pode detectar todas porque é indecidível se duas máquinas de Turing são equivalentes.H Q′ Q w Q′(w) Q(w) H
fonte