Si un problema es NP-Hard significa que existe una clase de instancias de ese problema que son NP-Hard. Es perfectamente posible que otras clases específicas de instancias puedan resolverse en tiempo polinómico.
Considere, por ejemplo, el problema de encontrar una coloración 3 de un gráfico . Es un conocido problema NP-Hard. Ahora imagine que sus instancias están restringidas a gráficos que son, por ejemplo, árboles. Claramente, puede encontrar fácilmente una coloración 3 de un árbol en tiempo polinómico (de hecho, también puede encontrar una coloración 2).
Considere los problemas de decisión por un segundo. Un método para probar la dureza de un problema de decisión es idear una reducción polinómica (Karp) de otro problema que se sabe que es NP-Hard. En esta reducción se demuestra que existe una función que asigna cada instancia del problema a una instancia del problema tal que:
es una instancia de sí a favor de es una instancia de sí para . Esto implica que resolver debe ser "al menos tan difícil" como resolver sí mismo.Q f q Q P q QPAGSQFqQPAGSqP f ( q ) qQ⟺F( q)PAGSF( q)q
Aviso cómo no se requiere para la imagen de sea igual al conjunto de las instancias de . Por lo tanto, es perfectamente posible que el problema restringido a algún subconjunto de instancias no sea difícil.P PFPAGSPAGS
Para volver a su pregunta original:
- El problema de asignación se puede resolver en tiempo polinómico, es decir, se puede calcular una solución a cada instancia del problema de asignación en tiempo polinómico.
- ILP es NP-Hard: en general, podría ser difícil calcular una solución a un problema de ILP, es decir, hay casos de ILP que son difíciles.
- Algunas instancias específicas de ILP se pueden resolver en tiempo polinómico.