¿Por qué si tenemos una reducción en el tiempo polinomial de un problema de P a un problema de NP, esto no muestra que P = NP (pero al contrario)?

Básicamente, mostrar una reducción de tiempo polinomial de un problema NP-completo (llamémoslo L) a un problema P mostraría que NP está contenido en P. La razón de esto es que, por definición de NP-completo, cualquier problema M en NP puede reducirse a L. Por lo tanto, M puede reducirse a L, que a su vez puede reducirse a un problema polinómico, lo que le permite resolver M en tiempo polinómico.

Entonces, una reducción de NP-completo a P muestra que NP está contenido en P.

Ir en la otra dirección mostraría que P está contenido en NP.

Para mostrar que P = NP, necesitamos ambos, por supuesto. Como resultado, la segunda dirección es trivial. De casi cualquier definición de P y NP que leas, será evidente que P está contenido en NP. De hecho, decir que podemos reducir un problema de P a un problema de NP es casi una declaración tautológica.

Por lo tanto, lo único que queda por hacer para mostrar P = NP es mostrar que NP está contenido en P; es decir, necesitamos mostrar una reducción de un problema de NP completo a P.

Una reducción del problema A al problema B significa que si le dan un algoritmo mágico que resuelve el problema B, puede usar este algoritmo mágico como una caja negra para resolver el problema A. El tiempo adicional que necesitaría para hacerlo es el tiempo para haciendo la reducción (que en este caso es tiempo polinomial). Tal reducción nos dice que si puede resolver el problema B en tiempo polinómico, entonces también puede resolver A en tiempo polinómico (es decir, A no es más difícil que B si desconta el tiempo polinómico tomado para la reducción)

Ahora, una reducción del tiempo polinómico de un problema en P a un problema en NP significa que los problemas en P no son más difíciles que los problemas en NP. Sin embargo, esto no implica que podamos resolver el problema de NP en tiempo polinómico. Solo dice que si pudiéramos haber resuelto el problema NP (al que redujimos nuestro problema P) en tiempo polinómico, también podríamos resolver nuestro problema P en tiempo polinómico. Esta es una declaración redundante porque ya sabíamos, por definición, que nuestro problema P se puede resolver en tiempo polinómico. Por lo tanto, esta dirección de reducción es bastante inútil. La otra dirección, concretamente la de reducir un problema de NP a un problema de P, sería extremadamente significativa.

Un problema NP es aquel en el que puede proporcionar algún tipo de prueba de que la respuesta es correcta, que puede verificarse en tiempo polinómico. Eso es lo que significa NP. (Por ejemplo, resolver Sudoku es NP, porque puedes mostrarme la solución y puedo verificar que es correcta en tiempo polinómico).

Dado que cualquier solución a un problema en P se puede verificar en tiempo polinómico simplemente resolviéndolo de nuevo, esto significa que

Todos los problemas de P son NP.

Entonces, “la reducción del tiempo polinomial de un problema P a un problema NP” es bastante trivial, y no prueba nada muy interesante.

Ya sabemos que P es un subconjunto de NP. Probar lo contrario es lo difícil.

Todos los problemas de P son NP.

P = Problemas solucionables en tiempo polinómico por una máquina determinista
NP = Problemas solucionables por una máquina no determinista

More Interesting

¿Por qué se le dio al F-117 Nighthawk un prefijo F?

¿Cuál es la forma más eficiente de resolver el problema 27 del Proyecto Euler?

Ciencias de la computación teóricas: ¿Hay una prueba para: "La mejora personal recursiva es posible"?

Si f (n) es O (g (n)) yf (n) es O (h (n)), ¿significa que g (n) es O (h (n))?

¿Cuál es el significado de los algoritmos de aproximación? ¿Cómo debo estudiarlos?

¿Los problemas de optimización en el aprendizaje profundo son típicamente convexos o no convexos?

¿Por qué debería elegir especializarme en ciencias de la computación en lugar de las matemáticas?

Cómo entender la pregunta para poder intentar resolverla

¿Es posible iterar a través de todos los números reales en [a, b] en cualquier lenguaje de programación? ¿Se acerca algo?

¿Cuál es la diferencia entre NP-hard y NP-complete?

¿Los humanos alguna vez entenderán verdadera y completamente el Universo?

¿Qué es O (nlog (n)) de notación big-O? ¿Cuáles son algunos ejemplos de sus algoritmos?

¿Existe un algoritmo para fusionar dos árboles rojo-negros con una complejidad menor que O (n + m)?

¿Cuáles son las diversas formas en que puede resolver el siguiente laberinto con un robot seguidor de enlace negro basado en IR? ¿Cómo puede resolverlo con el mínimo número de sensores posible y el tiempo más rápido para llegar al final?

Geometría: ¿Cómo se distribuye uniformemente (igualmente espacio) 36 puntos de ancho y un triángulo rectángulo isósceles? Sé cómo distribuir uniformemente los puntos a través de un rectángulo (coloque los puntos en 0 a la longitud del lado en incrementos de (longitud del lado) / (raíz (36)), pero ¿cómo haría uno para un triángulo?