Por que os números computáveis ​​(no sentido de Turing) são enumeráveis?


9

Por que os números computáveis ​​(no sentido de Turing) são enumeráveis? Deve ser muito óbvio, mas atualmente não estou vendo.


3
Não é simplesmente porque todas as TMs são enumeráveis?
yo '

Deve ser isso.

2
Ser enumerável significa (por definição) que existe uma máquina de Turing que pára com uma resposta sim para cada instância sim. Como ser computável significa que existe uma máquina de Turing que pára com a resposta correta para cada entrada, é fácil ver que ser computável implica que ele é enumerável (é um sub-caso).
Jonas G. Drange

Eu não acho que este seja o significado de "computável" neste caso. É um problema de construção, não um problema de decisão.
Lvella # 5/15

Respostas:


5

Estou assumindo que sua definição de número computável é a seguinte: existe uma máquina de Turing que na entrada , pára com o n º bit do número.nn

Suponha que houvesse uma enumeração recursiva de máquinas de Turing que produzem números computáveis. Você pode usar a diagonalização para criar um novo número computável que não faça parte dessa enumeração recursiva.

É tentador enumerar números computáveis ​​enumerando máquinas de Turing, mas nem todas as máquinas de Turing correspondem a um número computável e, em geral, decidindo se uma máquina de Turing pára para todas as entradas (e muito menos a saída 0 ou 1) não é computável. É possível, no entanto, enumerar todos os números computáveis ​​eficientes, digamos aqueles cujo tempo de execução é polinomial, usando máquinas de Turing com clock.


Portanto, mesmo que a cardinalidade de um conjunto (nesse caso, o conjunto de números computáveis) não seja maior que a cardinalidade de outro conjunto que seja listável (o conjunto de todas as TMs), isso não significa que o primeiro conjunto possa ser listados.
André Souza Lemos

2

Se por enumerável, você quer dizer que existe uma bijeção com os números naturais (ou seja, contáveis), então não, números computáveis ​​não são enumeráveis.

Vamos definir o problema com mais precisão: uma "NPTM) é uma máquina de Turing que, para cada transição de estado, pode não imprimir nada, ou pode imprimir qualquer dígito decimal, o sinal de menos ou o período. Isso é suficiente para imprimir representações decimais de números reais.

Vamos definir um número real computável como qualquer número real que possa ser impresso com uma representação arbitrariamente longa, com tempo suficiente, por um NPTM a partir de uma fita vazia. Digamos também que um número é calculado por um determinado NPTM se ele parar após a impressão de um número real bem formado (nesse caso, o número tem uma representação decimal finita) ou, em uma quantidade finita de tempo, imprimirá um número bem formado com um ponto decimal e aumentará a precisão do número imprimindo mais dígitos, com mais tempo.

Essa condição posterior é necessária porque, se tivermos uma máquina que, por exemplo, imprima uma sequência infinita de algum dígito, digamos 1111111111111111111..., não se pode dizer que esteja computando qualquer número real, porque os números reais só têm representação infinita à direita lado do período decimal. Por outro lado, se a máquina imprimir 3.14e parar de imprimir, mas nunca parar, não se pode dizer que esteja computando um número real simplesmente porque a precisão do número não está aumentando, portanto, essa máquina em particular não a construirá. mais longe.

Estes são exemplos de NPTM que calculam algum número. Um NPTM que:

  • imprime 1e depois pára. Ele calcula o número 1.
  • imprime 1.0e depois pára. Ele também calcula o número 1.
  • impressões 1.0000000 e mantém a impressão de zeros para sempre. Este também calcula o número 1.
  • imprime 3.14e depois pára. Ele calcula o número 3.14.
  • 3.14159ππ
  • imprime -42.e depois pára. Calcula o número -42.

E estes são exemplos de NPTM que não computam nenhum número. Um NPTM que:

  • imprime 123123123e depois continua imprimindo a sequência 123para sempre. Não está computando um número porque essa sequência infinita não representa nenhum número real.
  • imprime 1.0.0e depois pára. Não é porque essa sequência finita não esteja bem formada.
  • imprime ....-..---e depois pára. Não é porque este também não seja um número real bem formado.
  • nunca imprime nada, mas também não para. Não há número sendo construído.
  • nunca imprime nada e pára imediatamente. Nenhum número foi construído.
  • imprime 3.14, não pára, mas também nunca imprime mais nada. Não está computando um número porque sua precisão não está aumentando com o tempo.

Você entendeu a ideia. Então temos duas classes de NPTM: aquelas que calculam um número real e as que não.

O problema de encontrar alguma enumeração para os números computáveis ​​é que, mesmo que o NPTM seja contável, não podemos ter um procedimento que separa um tipo de NPTM do outro.

SF:NS

Para "provar" que os números computáveis ​​são contáveis, pode-se tentar definir essa função a partir da contagem do NPTM (e é isso que as pessoas costumavam fazer quando acreditam que os números computáveis ​​são contáveis). Algo assim:

ENPTM:N->NPTMEComputabe:NComputável

Bem, nós não. Considere uma máquina que imprime imediatamente 1.0, interrompe a impressão e tenta resolver uma instância do problema de correspondência posterior . Se resolver o problema, ele pára e a máquina apenas calcula o número um. Mas esse problema é indecidível, por isso pode nunca parar e, se nunca parar, nunca calcula um número real. Mas não podemos saber se isso irá parar, porque o problema da parada também é indecidível! Portanto, como não há como saber se essa máquina específica, e infinitamente muitas outras máquinas, computam ou não algum número real, não podemos construir / definir nossa função bijetiva dessa maneira.

A maneira ingênua de definir a bijeção falha e não é muito difícil provar que não há como fazê-lo. Como sugeriu Yuval Filmus, a diagonalização pode ser usada.


Você provavelmente quis dizer "números computáveis ​​não são enumeráveis" em vez de "números computáveis ​​não são contáveis".
IllidanS4 quer Monica de volta
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.