¿Por qué no hay soluciones para los problemas NP-Hard?

No estoy de acuerdo con la premisa de la pregunta. Hay algunos problemas NP-hard que no tienen soluciones, pero como explicaré, hay áreas enteras de algoritmos dedicados a tratar el escenario en el que es posible que nunca encontremos algoritmos exactos eficientes para problemas NP-hard. Un ejemplo de un problema que técnicamente es NP-hard que no tiene solución es el Problema de detención, pero esto se debe a que NP-hard implica todos los problemas, al menos, tanto como los problemas más difíciles de la clase de complejidad NP. Los problemas (a menos que pueda demostrar que tienen una relación) se deben considerar caso por caso. Un enfoque que puede ayudar a resolver un problema puede fallar miserablemente por otro problema.

Mencionaré brevemente 2 enfoques (de los cuales soy un gran admirador) que surgieron de la cuestión de querer enfoques matemáticamente rigurosos para lidiar con problemas difíciles de NP, pero aún se puede obtener el deseo de soluciones eficientes :

  • Algoritmos de aproximación ( Algoritmo de aproximación – Wikipedia): en lugar de tratar de encontrar la solución óptima exacta, encuentre una solución que esté dentro de un factor óptimo. Aquí sacrificamos la calidad de la solución por un algoritmo eficiente. Tenga en cuenta que si bien esto parece que condenaría gran parte de la calidad, créalo o no, hay muchos problemas de optimización NP-hard que se pueden aproximar muy estrechamente al verdadero óptimo aún en el tiempo polinómico. No debe confundirse con una heurística más amplia, estas garantías (cuán cercanas son las soluciones producidas al óptimo) están demostradas matemáticamente y no son cosas manuales.
  • Algoritmos parametrizados (Complejidad parametrizada – Wikipedia): la idea es parametrizar los problemas en términos que algunos llaman parámetro , luego puede ver este parámetro como otra parte de la entrada. Por ejemplo, el problema clásico de NP-hard Vertex Cover en realidad se puede resolver de manera bastante eficiente si se supone que el tamaño de la cubierta de vértice es el parámetro. Se sabe que problemas como Vertex Cover son manejables con parámetros fijos (FPT) . Es decir, si arregla el parámetro, el problema se vuelve eficiente de resolver. Las personas que estudian esta área a menudo intentan identificar parámetros clave que permiten la existencia de algoritmos eficientes (y diseñan algoritmos eficientes que utilizan estos parámetros), esto muchas veces permite que surja una perspectiva muy diferente que no podría encontrarse por otros medios. También hay otra jerarquía de complejidad asociada con problemas parametrizados llamada la Jerarquía W (ver Complejidad parametrizada – Wikipedia).

En otra nota, es importante cuantificar lo que realmente significa “sin soluciones”. Cuando un informático escucha “no hay soluciones”, significa que el problema es indecidible típicamente, no es que sea intratable (a menos que proporcione más contexto). Por ejemplo, existen soluciones para muchos problemas NP-hard, solo que son algoritmos de tiempo exponencial.

Eso no es cierto. Todos los problemas NP-hard tienen soluciones (las personas no califican los problemas indecidibles como “NP-hard”). Lo que no tenemos son soluciones sorprendentemente eficientes : aquellas que funcionan milagrosamente en tiempo polinómico a pesar de que el espacio de búsqueda crece exponencialmente con el tamaño del problema.

¿Por qué no los tenemos? Bueno, muy probablemente porque no existen. Esa es una razón bastante buena. La pregunta más pertinente es por qué todavía no hemos podido demostrar que no existen, y la razón es que generalmente no es posible determinar la razón por la cual es difícil demostrar que algo no existe. . Es un problema muy profundo y muy difícil.

Es posible que existan estos algoritmos eficientes, en cuyo caso la respuesta a por qué no los hemos encontrado es que no somos lo suficientemente inteligentes, colectivamente, como especie.