¿Son factibles los problemas NP-difíciles?

Hay muchos problemas de optimización [matemática] \ matemática {NP} [/ matemática] que son factibles en el sentido de que podemos proporcionar soluciones de buena calidad o incluso óptimas a un gran número de sus instancias en un tiempo computacional decente. Los métodos de metaheurística y búsqueda heurística en general hacen un buen trabajo al proporcionar soluciones prácticas a instancias del mundo real. También hay una serie de algoritmos de aproximación de tiempo polinómico que generan soluciones cuyo valor está garantizado dentro de una desviación conocida de la solución óptima (como en el caso de la mejor estrategia de reducción de ajuste para el Problema de Empaque de Contenedores, cuyas soluciones están probadas para no exceda [matemática] 11/9 [/ matemática] del valor óptimo). Estos resultados son generalmente satisfactorios porque, para fines prácticos, las soluciones cercanas al óptimo son más que suficientes.

Los problemas de decisión son otra historia. Una cosa es encontrar una ruta para el problema del vendedor ambulante que es [matemática] 1 \% [/ matemática] más larga que la óptima, pero es otra cosa deducir erróneamente que una fórmula 3-CNF no es satisfactoria. Esta estructura binaria, “todo o nada” de problemas de decisión puede complicar mucho las cosas.

De hecho, hay muchas veces en las que la metaheurística puede encontrar soluciones óptimas a los problemas de optimización [matemática] \ matemática {NP} [/ matemática], pero se dejan funcionando durante mucho más tiempo del necesario solo porque no pueden demostrar que La solución es óptima. Lo mismo se aplica a las técnicas de ramificación y unión, que a menudo encuentran la solución óptima muy pronto, pero no pueden demostrar su optimización hasta mucho más tarde. Esto ejemplifica el hecho de que querer probar cosas generalmente perjudica la viabilidad más que solo querer una solución que sea lo suficientemente buena.

En la práctica, sí.

Hay muchos estudios sobre problemas NP-hard, incluyendo aproximación, algoritmos basados ​​en probabilidad, búsqueda heurística, etc. Por lo tanto, no solo podemos resolver problemas NP-hard en escalas lo suficientemente pequeñas, sino también dar una buena aproximación de muchos problemas NPC a gran escala en poco tiempo. Y muchos juegos que jugaste son problemas difíciles de NP.

En teoría, la mayoría de los científicos sospechan que los problemas de NP son inviables. Incluso si P = NP, NP-Hard aún contiene problemas que no se pueden resolver en tiempo polinómico.

En cuanto a los problemas inviables, por ejemplo, el problema de detención es inviable tanto en teoría como en práctica. Ningún problema NP-duro puede competir con eso en términos de dificultad.

TODOS (complejidad) – Wikipedia

More Interesting

Cómo probar la profundidad del primer recorrido utilizando listas de adyacencia

Ahora he leído sobre algoritmos y estructuras de datos como Al Klein me dijo. ¿Qué lenguaje de programación debo aprender?

¿Cuál es el mejor y el último algoritmo de última generación para encontrar documentos similares?

¿Qué es un algoritmo basado en población? ¿Cuál es el propósito de esto?

¿Cómo funciona el algoritmo de recomendación de películas de Netflix?

¿Cuál es el algoritmo de tiempo polinómico de peor caso de más rápido crecimiento utilizado en la práctica?

Me acabo de unir a TopCoder porque quiero aprender las estructuras de datos y cómo codificarlas en C, pero no tengo idea de dónde comenzar en TopCoder ya que puedo ver 3 categorías en el sitio, pero no pude encontrar la forma correcta. ¿Qué debo hacer para comenzar?

¿Cuál es la solución a este décimo problema polinómico de clase?

¿Son los algoritmos de big data de caja negra una instancia de historia que se repite? ¿Qué está haciendo la comunidad de código abierto para crear algoritmos de big data transparentes y precisos?

Cómo elegir el mejor algoritmo de aprendizaje profundo o paquete R para un conjunto de datos

Cómo implementar un algoritmo de sincronización de reloj Berkeley en C ++

Informática: ¿Por qué la recursión es más elegante que la iteración?

¿Cuáles son algunas implementaciones reales de algoritmos altamente utilizados o patrones de diseño que ha utilizado en el desarrollo web front-end?

Cómo resolver un problema de programación difícil por mi cuenta

¿Cuál es la diferencia entre árboles binarios completos y completos?