Aquí hay otra forma de ver el punto que Shaull hace con respecto a los "decisores".
Un problema está en NP si y solo si hay un algoritmo tal queV: { 0 , 1 }norte× { 0 , 1 }p o l y (n)→ { 0 , 1 }
para cada instancia SÍ , hay un certificado p ∈ { 0 , 1 } p o l y ( n ) tal que V ( x , p ) = 1 ; yx ∈ { 0 , 1 }nortep ∈ { 0 , 1 }p ol y (n)V( x , p ) = 1
para cada instancia de NO , tenemos V ( x , p ) = 0 para todas las p ∈ { 0 , 1 } p o l y ( n ) .x ∈ { 0 , 1 }norteV( x , p ) = 0pag ∈ { 0 , 1 }p o l y ( n )
Por lo general, se describen como las condiciones de integridad y solidez para el algoritmo de verificación NP : la condición de "integridad" dice que cada instancia de SÍ tiene un certificado, y la condición de "solidez" dice que el algoritmo nunca es engañado por una instancia de NO. Para coNP es al revés: hay un algoritmo verificador que aceptará al menos un certificado para cualquier instancia de NO, pero que nunca puede ser engañado por una instancia de YES.
Si desea mostrar que NP ⊆ coNP , debe mostrar que cada problema de NP tiene un verificador de tipo coNP , que puede certificar NO instancias en lugar de instancias YES. No puede hacer esto con una máquina de Turing no determinista: no hay forma de que sepamos, por ejemplo, de mapear eficientemente las instancias de SAT entre sí, de tal manera que todas las fórmulas insatisfactorias se asignen a otras satisfactorias, y viceversa.. (Negar el resultado de la fórmula no es suficiente, por ejemplo: una fórmula que es satisfactoria pero no una tautología simplemente se mapearía a una fórmula diferente que fuera satisfactoria pero no una tautología, cuando en su lugar requeriríamos una fórmula insatisfactoria). Simplemente no sabemos cómo engañar a una máquina no determinista para que detecte algo así como que todos sus caminos sean rechazados.
Puede preguntar: "¿No sabe la máquina de Turing no determinista qué resultado obtiene?" La respuesta sería no , no lo hace. El funcionamiento de la máquina no determinista no le da acceso a ninguna información sobre más de una ruta computacional a la vez: puede pensar que funciona en muchas rutas en paralelo, pero dentro de cada ruta solo conoce esa ruta. Si intenta equiparlo con la capacidad de "darse cuenta" de si hay alguna solución o no en algún momento, en su lugar, está describiendo una máquina con un oráculo NP , que es más (¡potencialmente!) Poderoso que una simple máquina de Turing no determinista.
Por ejemplo, si usted equipa un (determinista) máquina de Turing con un NP oráculo, entonces los problemas que pueden ser resueltos en tiempo polinómico en esa máquina se llama , que a menudo se escribe P N P . El "oráculo" le permite a la máquina simplemente recibir respuestas a problemas completos de NP en un solo paso, por lo que P N P obviamente contiene P ; y debido a que puede negar respuestas, obviamente también contiene coNP . Pero no sabemos si las contenciones inversas se mantienen, exactamente porque no sabemos cómo engañar a las máquinas de Turing no deterministas para que no detecten respuestas.ΔPAG2PAGN PPAGN P
ΣPAG2N PN PPAGN Pno tiene respuesta debido al oráculo, pero aún estaría atascado a operar dentro de una de sus propias ramas computacionales (bastante poderosas), de modo que no podría saber si todas sus propias ramas computacionales estaban rechazando.
N PNPNP
Entonces, no, no hay una máquina (determinista o no) que pueda simplemente "decidir" que un problema es una instancia SÍ o NO de manera eficiente, a menos que usemos oráculos; pero incluso con tal oráculo, terminamos con una máquina que es (probablemente) más poderosa que NP o coNP , no una que muestre que son iguales.