A prova de indecidibilidade do Problema da Parada trapaceia revertendo os resultados?


12

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.HHH

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 AAAAAA

Respostas:


20

Versão curta: As saídas das máquinas não estão corretas ou incorretas, são apenas contraditórias, o que prova que a máquina inicial que decide se a máquina de entrada pára na sequência especificada ou não pode existir.

Versão longa : primeiro, esboçaremos a prova (ou pelo menos uma versão - existem muitas).

  1. Suponha que temos uma Máquina de Turing que decide se a Máquina de Turing pára na entrada ou não.H xHALT(M,x)Mx
  2. Usando , construímos uma máquina que usa para verificar se pára em ou não, então faz o oposto, ou seja, se pára em , loops, se não parar em , pára.F G I P ( M , x ) H A G T M x M x F G I P H x F G I PHALTFLIP(M,x)HALTMxMxFLIPMxFLIP
  3. Por fim, criamos uma TM (fiquei sem nomes bons), que pega a descrição de uma TM e executa com a entrada , produzindo o que quer que seja .F G I P ( M , M ) F G I PC(M)FLIP(M,M)FLIP

É importante observar que, enquanto o existir, cada uma dessas etapas é simples de implementar; apenas precisa usar para verificar o que fazer e apenas duplica sua entrada para passar para .F L I P H A L T C F L I PHALTFLIPHALTCFLIP

A contradição surge quando olhamos para o que acontece quando executamos . O pára quando se apresenta como entrada ou não. decidirá isso:C H A G TC(C)CHALT

  • Se parar na entrada , dirá , mas então fará um loop, então fará um loop , contradizendo .CCHALTYesFLIPCHALT
  • Se fizer loop na entrada , dirá , mas então será interrompido, então também parar, contradizendo .CCHALTNoFLIPCHALT

Como cada uma das etapas da construção é claramente sólida, podemos concluir apenas que não pode existir; nós construímos um caso em que não importa o que diz, não pode decidir o que produzir, ou seja, o problema é indecidível. Apenas para realmente insistir um pouco, não pode existir - ou seja, não pode haver uma TM que decida o Problema da Parada - porque há pelo menos um caso que construímos explicitamente onde não há resposta logicamente possível. Lembre-se de que um decisor não tem permissão para dar a resposta errada e precisa dar algo, mas no caso que construímos, ambas as respostas possíveis estão erradas.HALTHALTHALT


Sua definição da máquina não faz sentido porque não aceita nenhuma das entradas que aceita. Então, como ele pode funcionar? CM
AleksandrH

7

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.


2

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 .xxf(n)n

Suponha que o problema da parada fosse decidível. Então pode ser calculado por um programa C:f(m)

Na entrada , execute todos os programas C de comprimento no máximo m e determine sua saída; retorna o comprimento da saída máxima.mm

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 10mPmf(m)+1PmPmmm|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|log10mTPmT+log10mmm=2TT+log10mmf(m)Pmf(m)f(m)+1. Chegamos a uma contradição.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.