Estoy bastante seguro de que no soy el primero en considerar la idea que voy a presentar. Sin embargo, sería útil si puedo encontrar alguna literatura relacionada con la idea.
La idea es construir una máquina de Turing M con la propiedad de que si P = NP, entonces M resolverá 3-SAT en tiempo polinómico. (La elección de 3-SAT es arbitraria. Podría ser realmente cualquier problema en NP).
Para ser claros, esto no es una afirmación de que P = NP. De hecho, creo lo contrario. Simplemente afirmo que si P = NP, entonces M proporcionará una solución de tiempo polinomial. Si está buscando una solución eficiente, debo advertir que esto está lejos de ser eficiente.
M se construye de la siguiente manera: primero, suponga una codificación canónica para todas las máquinas de Turing y aplique una numeración a estas máquinas. Entonces, hay una máquina de Turing número 1, una número 2, etc. La idea de una máquina de Turing universal que pueda leer el formato de una máquina provista y luego simular que la máquina está funcionando en una entrada separada es bastante conocida. M empleará una máquina universal de Turing para construir y simular cada máquina de Turing a su vez.
Primero simula el funcionamiento de Turing Machine 1 para un solo paso.
Luego observa la salida de Turing Machine 1.
Simula el funcionamiento de Turing Machine 1 durante dos pasos y observa la salida, luego procede a simular Turing Machine 2 durante 2 pasos. Continúa y se repite de esta manera, a su vez ejecuta Turing Machine 1 para k pasos, luego 2 para k pasos ... luego, finalmente, mecaniza k para k pasos.
Después de cada ejecución de simulación, examina la salida de la ejecución. Si la salida es una asignación de variables que satisfacen la instancia del problema 3-SAT, M se detiene en un estado de aceptación. Si, por otro lado, la salida es una cadena de prueba en algún lenguaje de prueba verificable con el resultado comprobado de que la instancia del problema no es satisfactoria, M se detiene en un estado de rechazo. (Para un lenguaje de prueba, podríamos, por ejemplo, usar los Axiomas de Peano con lógica de segundo orden y los axiomas lógicos básicos de estilo Hilbert. Lo dejo como un ejercicio para que el lector descubra que si P = NP, un valor válido el lenguaje de prueba existe y es verificable en tiempo polinómico).
Reclamaré aquí que M resolverá 3-SAT en tiempo polinómico si y solo si P = NP. Eventualmente, el algoritmo encontrará una máquina mágica de Turing con el número K, que resulta ser un solucionador eficiente para el problema 3-SAT, y es capaz de proporcionar una prueba de sus resultados para el éxito o el fracaso. K eventualmente se simulará ejecutando pasos poli (strlen (input)) para algunos polinomios. El polinomio para M es aproximadamente el cuadrado del polinomio para k en el factor más grande, pero con algunas constantes terribles en el polinomio.
Para reiterar mi pregunta aquí: quiero saber si hay una fuente de literatura que emplee esta idea. Estoy algo menos interesado en discutir la idea misma.