Supongo que está buscando definiciones intuitivas, ya que las definiciones técnicas requieren bastante tiempo para comprender. En primer lugar, recordemos un concepto preliminar necesario para comprender esas definiciones.
- Problema de decisión : un problema con una respuesta de sí o no .
Ahora, definamos esas clases de complejidad .
PAGS
P es una clase de complejidad que representa el conjunto de todos los problemas de decisión que se pueden resolver en tiempo polinómico .
Es decir, dada una instancia del problema, la respuesta sí o no se puede decidir en tiempo polinómico.
Ejemplo
Dado un gráfico conectado G
, ¿se pueden colorear sus vértices con dos colores para que ningún borde sea monocromático?
Algoritmo: comience con un vértice arbitrario, coloréelo en rojo y todos sus vecinos en azul y continúe. Deténgase cuando se quede sin vértices o se vea obligado a hacer que un borde tenga sus dos puntos finales del mismo color.
notario público
NP es una clase de complejidad que representa el conjunto de todos los problemas de decisión para los cuales las instancias donde la respuesta es "sí" tienen pruebas que pueden verificarse en tiempo polinómico.
Esto significa que si alguien nos da una instancia del problema y un certificado (a veces llamado testigo) de que la respuesta es sí, podemos verificar que sea correcto en el tiempo polinómico.
Ejemplo
La factorización entera está en NP. Este es el problema que dan los enteros n
y m
, ¿hay un entero f
con 1 < f < m
tal que se f
divida n
( f
es un pequeño factor de n
)?
Este es un problema de decisión porque las respuestas son sí o no. Si alguien nos entrega una instancia del problema (por lo que nos entrega números enteros n
y m
) y un número entero f
con 1 < f < m
, y afirma que f
es un factor de n
(el certificado), podemos verificar la respuesta en tiempo polinómico realizando la división n / f
.
NP-Complete
NP-completo es una clase de la complejidad que representa el conjunto de todos los problemas X
de NP para los que es posible reducir cualquier otro problema NP Y
que X
en tiempo polinómico.
Intuitivamente, esto significa que podemos resolver Y
rápidamente si sabemos cómo resolverlo X
rápidamente. Precisamente, Y
es reducible a X
, si hay un algoritmo de tiempo polinómico f
para transformar las instancias y
de Y
a instancias x = f(y)
de X
en tiempo polinómico, con la propiedad de que la respuesta a y
es sí, si y sólo si la respuesta a f(y)
es sí.
Ejemplo
3-SAT
. Este es el problema en el que se nos da una conjunción (AND) de disyunciones de 3 cláusulas (OR), declaraciones de la forma
(x_v11 OR x_v21 OR x_v31) AND
(x_v12 OR x_v22 OR x_v32) AND
... AND
(x_v1n OR x_v2n OR x_v3n)
donde cada x_vij
una es una variable booleana o la negación de una variable de una lista predefinida finita (x_1, x_2, ... x_n)
.
Se puede demostrar que cada problema de NP puede reducirse a 3-SAT . La prueba de esto es técnica y requiere el uso de la definición técnica de NP ( basada en máquinas de Turing no deterministas ). Esto se conoce como el teorema de Cook .
Lo que hace que los problemas NP-completos sean importantes es que si se puede encontrar un algoritmo determinista de tiempo polinomial para resolver uno de ellos, cada problema NP puede resolverse en tiempo polinomial (un problema para gobernarlos a todos).
NP-hard
Intuitivamente, estos son los problemas que son al menos tan difíciles como los problemas NP-completos . Tenga en cuenta que los problemas NP-hard no tienen que estar en NP , y no tienen que ser problemas de decisión .
La definición precisa aquí es que un problema X
es NP-duro, si hay un problema NP-completo Y
, tal que Y
es reducible a X
tiempo polinómico .
Pero dado que cualquier problema de NP completo se puede reducir a cualquier otro problema de NP completo en tiempo polinómico, todos los problemas de NP completo se pueden reducir a cualquier problema NP-difícil en tiempo polinómico. Entonces, si hay una solución a un problema NP-duro en tiempo polinómico, hay una solución a todos los problemas NP en tiempo polinómico.
Ejemplo
El problema de detención es un problema NP-difícil. Este es el problema que, dado un programa P
y una entrada I
, ¿se detendrá? Este es un problema de decisión pero no está en NP. Está claro que cualquier problema de NP completo se puede reducir a este. Como otro ejemplo, cualquier problema NP-complete es NP-hard.
Mi problema NP-complete favorito es el problema del Buscaminas .
P = NP
Este es el problema más famoso en informática, y una de las preguntas pendientes más importantes en las ciencias matemáticas. De hecho, el Instituto Clay está ofreciendo un millón de dólares para una solución al problema (la reseña de Stephen Cook en el sitio web de Clay es bastante buena).
Está claro que P es un subconjunto de NP. La pregunta abierta es si los problemas de NP tienen o no soluciones deterministas de tiempo polinomial. Se cree en gran medida que no lo hacen. Aquí hay un artículo reciente sobresaliente sobre el último (y la importancia) del problema P = NP: El estado del problema P versus NP .
El mejor libro sobre el tema es Computadoras e Intractabilidad de Garey y Johnson.
I
sobre lasn
variables, intente todas2^n
las asignaciones posibles a las variables y pare si una satisface la proposición y de lo contrario ingrese un bucle infinito. Vemos que este algoritmo se detiene si y solo siI
es satisfactoria. Por lo tanto, si tuviéramos un algoritmo de tiempo polinómico para resolver el problema de detención, entonces podríamos resolver SAT en tiempo polinómico. Por lo tanto, el problema de detención es NP-duro.