Tenho problemas para entender o problema de parada de Turing.
Sua prova supõe que exista uma máquina mágica que possa determinar se um computador interromperá ou repetirá para sempre uma determinada entrada. Em seguida, anexamos outra máquina que inverte a saída e temos uma contradição e, portanto, não pode existir.H
Minha preocupação é que parece que estamos dizendo que uma resposta está errada porque a invertemos. Como analogia, se houver uma máquina chamada que produza uma resposta correta em determinadas entradas e uma resposta incorreta em outras. Em seguida, anexamos outra máquina que reverte o resultado de modo que a combinação das duas máquinas contraria a forma como é definida. As duas máquinas agora geram respostas incorretas para as entradas que está definida para gerar respostas corretas e produz respostas corretas para as entradas que está definido para gerar respostas incorretas. Isso seria chamado de contradição e, portanto, não existe uma máquina que produza resposta correta em algumas entradas e respostas incorretas em outras?A A A A
fonte
Você está discutindo dois significados diferentes de "contradizer".
Na sua analogia, a máquina A e sua modificação invertida se contradizem apenas no sentido de que suas saídas são sempre diferentes. (Por exemplo, eles podem implementar duas funções de teste em números inteiros, " x ≤ 5?" E " x > 5?"). Isso certamente é uma coisa que "contradizer" pode significar no uso diário, mas não é o que isso significa na lógica. provas.
Nas provas lógicas, isso significa algo mais forte: algo que é simplesmente impossível. Por exemplo, uma função que retorna "verdadeiro" em todas as entradas maiores que 5 e "falso" em todas as entradas menores que 10 - isso é contraditório nesse sentido mais forte, porque, por exemplo, 7, sua saída teria que ser "verdadeira" e "falso", mas esses não são os mesmos. O argumento de Turing mostra que o programa de interrupção é contraditório no sentido mais forte: supondo que leve a algo que é impossível, ou que já se sabe ser falso.
fonte
Aqui está outra prova de que o problema da parada é indecidível. Dizemos que um programa gera uma string se parar e gerar x . (Se o programa nunca parar, ele não produzirá nenhuma string.) Defina f ( n ) como o comprimento da string mais longa que é emitida por um programa C de comprimento no máximo n .x x f(n) n
Suponha que o problema da parada fosse decidível. Então pode ser calculado por um programa C:f(m)
Isso significa que para cada , podemos escrever um programa de P m que as saídas f ( m ) + 1 zeros. Qual é o comprimento de P m ? Existe um modelo de programa C fixo, com um espaço reservado, que implementa P m ; o espaço reservado deve ser preenchido com a constante m . Especificando m takes | m | caracteres (aqui | m | é o comprimento da representação decimal de m ), onde | m | ≈ log 10m Pm f(m)+1 Pm Pm m m |m| |m| m . O molde tem um número fixo T de caracteres, e assim o comprimento de P m é t + log 10 m . Se escolhermos m grande o suficiente ( m = 2 T faria), teremos T + log 10 m ≤ m , e, portanto, f ( m ) é pelo menos o tamanho da string produzida por P m , ou seja, f ( m ) ≥ f ( m ) + 1|m|≈log10m T Pm T+log10m m m=2T T+log10m≤m f(m) Pm f(m)≥f(m)+1 . Chegamos a uma contradição.
fonte