Tenho certeza de que não sou o primeiro a aceitar a idéia que vou apresentar. No entanto, seria útil encontrar alguma literatura relacionada à idéia.
A idéia é construir uma Máquina de Turing M com a propriedade de que, se P = NP, M resolverá o 3-SAT em tempo polinomial. (A escolha do 3-SAT é arbitrária. Poderia ser realmente qualquer problema no NP).
Só para ficar claro, isso não é uma afirmação de que P = NP. Na verdade, acredito no contrário. Apenas afirmo que, se P = NP, M fornecerá uma solução em tempo polinomial. Se você está procurando uma solução eficiente, devo avisar que isso está longe de ser eficiente.
M é construído da seguinte maneira: primeiro, assuma uma codificação canônica para todas as máquinas de Turing e aplique uma numeração a essas máquinas. Portanto, existe uma máquina de Turing número 1, um número 2, etc. A ideia de uma máquina de Turing universal que pode ler o formato de uma máquina fornecida e simular a máquina em funcionamento em uma entrada separada é bem conhecida. M empregará uma Máquina Universal de Turing para construir e simular cada uma delas.
Primeiro, simula o funcionamento da Máquina de Turing 1 para uma única etapa.
Em seguida, ele analisa a saída da Turing Machine 1.
Simula o funcionamento da Turing Machine 1 por duas etapas e analisa a saída e, em seguida, procede à simulação da Turing Machine 2 por 2 etapas. Ele continua e faz um loop dessa maneira, executando a Máquina de Turing 1 para k etapas e depois 2 para k etapas ... e, finalmente, usina k para k etapas.
Após cada execução da simulação, ele examina a saída da execução. Se a saída for uma designação de variáveis que satisfaçam a instância do problema 3-SAT, M parará no estado de aceitação. Se, por outro lado, a saída for uma string de prova em alguma linguagem de prova verificável, com o resultado comprovado de que a instância do problema não é satisfatória, M pára no estado de rejeição. (Para uma linguagem de prova, poderíamos, por exemplo, usar os axiomas de Peano com lógica de segunda ordem e os axiomas lógicos básicos de Hilbert. Deixo como um exercício para o leitor descobrir que, se P = NP, um válido existe uma linguagem de prova e é verificável em tempo polinomial).
Afirmo aqui que M resolverá o 3-SAT em tempo polinomial se e somente se P = NP. Eventualmente, o algoritmo encontrará uma Máquina de Turing mágica com o número K, que, por acaso, é um solucionador eficiente para o problema 3-SAT, e é capaz de fornecer uma prova de seus resultados, tanto para o sucesso quanto para o fracasso. O K será simulado executando etapas de poli (strlen (entrada)) para algum polinômio. O polinômio para M é aproximadamente o quadrado do polinômio para k no fator maior, mas com algumas constantes terríveis no polinômio.
Para reiterar minha pergunta aqui: quero saber se existe uma fonte de literatura que emprega essa ideia. Estou um pouco menos interessado em discutir a ideia em si.
fonte
A idéia de executar na diagonal todas as máquinas de Turing possíveis foi usada anteriormente por Leonid Levin no que agora é conhecido como Levins Universal Search. Infelizmente, e ao contrário do equívoco extremamente comum, pelo que sei, variações na pesquisa universal de Levins NÃO são capazes de fornecer algoritmos explícitos para resolver SAT (problema de decisão) em tempo polinomial, considerando apenas a suposição de que P = NP - e nem o seu algoritmo .
A ressalva do raciocínio proposto está (com muita freqüência) no "exercício fácil deixado ao leitor" - eu mesmo não pude provar o exercício e não acredito que sua afirmação seja verdadeira, a saber:
Assumindo P = NP, há um tamanho polinomial que o ZFC prova de insatisfação de determinada fórmula booleana.
Além disso: não vejo como provar a existência de um ZFC polinomialmente curto prova a insatisfação sob (mais forte) suposição de que "P = NP é comprovável no ZFC". Torna-se fácil, porém, sob suposição ainda mais forte, a saber:
(*) Existe a máquina M rodando em tempo polinomial que comprovadamente resolve SAT.
E essa é, acredito, a suposição correta sob a qual seu algoritmo resolve SAT em tempo polinomial. Acima, por "provàvelmente resolve SAT", quero dizer: existe uma máquina M e uma prova de ZFC que M resolve SAT.
Observe que essa suposição ainda é um pouco mais fraca que a seguinte: (**) Existe a máquina M, que provavelmente roda em tempo polinomial e que resolve SAT.
Em (**), pode-se ter uma construção explícita alcançando o mesmo objetivo, que é ainda mais simples: enumere todas as provas do ZFC até encontrar a máquina correta M (gastando tempo constante) e, em seguida, execute M em determinada instância.
É verdade, no entanto, que, sob a premissa de P = NP, existe algum sistema de prova polinomialmente verificável, com pequenas provas de insatisfação de determinada fórmula. Infelizmente, não conhecemos nem o sistema de prova nem o verificador de imediato, e não é útil nessa configuração.
Observe que esse esquema se aplica, por exemplo, ao problema FACTORING; aqui f é apenas multiplicação (definida apenas para fatores diferentes de \ pm 1) e B é verificação de primaridade. Portanto, a pesquisa universal de Levins seria (até um fator constante) o algoritmo ideal para FACTORING. Dado que o algoritmo ideal é mais lento que o algoritmo conhecido para verificação de primaridade - no outro caso, a verificação de primaridade se torna dominante.
fonte