(1) NP pero no NP-completo
Vamos a sacar esto de en medio: si P = NP, entonces cualquier problema en NP es NP-completo (salvo tecnicismos). Entonces supongamos que P no es igual a NP.
En ese caso, obviamente cualquier problema en P no será NP-completo. Los problemas más interesantes son los problemas NP intermedios: problemas que están en NP pero no en P ni en NP completos. El teorema de Ladner muestra que si P no es igual a NP, ¡entonces existen problemas NP intermedios! Pero la construcción de Ladner es muy complicada, y no conozco ningún problema intermedio NP conocido que sea “natural”. Sin embargo, algunos problemas que podrían ser NP-intermedios incluyen:
- Dada una lista de cadenas, ¿cómo puedo determinar si existe un orden de caracteres para el cual las cadenas están ordenadas en orden lexicográfico?
- ¿Vale la pena pagar 6 x $ 49 por una estructura de datos y especialización de algoritmos en Coursera?
- ¿Cuál es el enfoque para resolver Gráficos Chef y Bipartitos?
- Cómo encontrar un algoritmo eficiente para un problema
- ¿Cómo elige Chrome el color de las rayas en las miniaturas de la página "Más visitadas"? Está claramente basado en el favicon, pero no puedo decir exactamente cómo se deriva.
- Factoring (o la versión de decisión apropiada, etc.)
- Isomorfismo gráfico
- Juegos unicos
No iré tan lejos como para asignar probabilidades o confianzas a ninguno de estos; Solo notaré que están en NP, pero no se sabe que estén en P o que estén completos en NP.
(2) NP-completo
Hay muchos problemas conocidos de NP completo, y afortunadamente, muchos de ellos son muy naturales. Los más conocidos son:
- SAT (o 3-SAT)
- Problema de vendedor ambulante (versión del problema de decisión: ¿existe una ruta de distancia <= k)
- Problema del camino hamiltoniano (caso especial de TSP)
- 3-colorear un gráfico
- Problema de la camarilla
Para más información, recomendaría primero revisar los 21 problemas completos de NP de Karp para algunos problemas básicos y luego esta lista más completa.
(3) NP-hard pero no NP-complete (es decir, NP-hard pero no en NP)
¡Para esto estamos buscando problemas aún más difíciles que NP!
Se sabe que NP no es igual a NEXP (tiempo exponencial no determinante). Por lo tanto, podemos decir con certeza que podemos decir que cualquier problema NEXP-complete es NP-hard pero no en NP. Los problemas de NEXP-complete en realidad se parecen un poco a los problemas de NP-complete, pero son “más grandes”. Uno de estos ejemplos es “3 colores sucintos”, básicamente como 3 colores, excepto en un gráfico exponencialmente grande e implícitamente especificado.
Sin embargo, probablemente todavía haya problemas más fáciles que este que están fuera de NP, aunque no creo que podamos probarlo. Por ejemplo, un problema completo de [math] \ Sigma_2 [/ math] no está en NP a menos que la jerarquía polinómica se colapse. Un ejemplo más conocido sería calcular el permanente, que es [math] \ # \ mathsf {P} [/ math] -hard.
¿Qué tan cerca puede llegar a NP un problema difícil de NP sin estar en él? Probablemente lo más cercano que vamos a llegar fácilmente sería un problema en [math] \ mathsf {P} ^ {\ mathsf {NP}} [/ math]. Este es el conjunto de problemas que puede calcular dado el acceso de Oracle a NP, es decir, la capacidad mágica de resolver cualquier problema de NP instantáneamente. Esto es (bueno, probablemente, pero no probado) más grande que NP. Por ejemplo, considere el problema de TSP donde preguntamos “¿cuál es la mejor ruta de distancia k?” Para resolver esto, necesitamos encontrar una ruta de distancia k y mostrar que no hay una ruta de distancia menor que k. El primero es un problema de NP y el segundo es un problema de coNP. Podríamos resolverlo con dos llamadas a un oráculo NP, pero no podemos decir que el problema esté en NP.