¿Por qué es importante demostrar que un problema es NP-completo?

Respuestas:

26

Ali, buena pregunta.

Suponga que quiere mostrar que algún problema P es computacionalmente difícil. Ahora, podría conjeturar que P es difícil solo por el hecho de que todavía no tenemos algoritmos eficientes para ello. Pero esta es una evidencia bastante endeble, ¿no? Podría ser que nos hayamos perdido alguna forma agradable de ver P que haría que sea muy fácil de resolver. Entonces, para conjeturar que P es difícil, querríamos acumular más evidencia. ¡Las reducciones proporcionan una herramienta para hacer exactamente eso! Si podemos reducir algún otro problema natural de Q a P, entonces hemos demostrado que P es al menos tan difícil como Q. Pero Q podría ser un problema de un área matemática completamente diferente, y las personas pueden haber luchado durante décadas para resolver Q también . Por lo tanto, podemos ver nuestro fracaso para encontrar un algoritmo eficiente para que Q sea evidencia de que P es difícil. Si tenemos muchos de esos Q '

Esto es exactamente lo que proporciona la teoría de la integridad de NP. Si demuestra que su problema es NP-completo, entonces ha vinculado su dureza a la dureza de cientos de otros problemas, cada uno de interés significativo para varias comunidades. Por lo tanto, moralmente hablando, puede estar seguro de que su problema es realmente difícil.

arnab
fuente
Entonces, el objetivo inicial es encontrar un algoritmo eficiente para P, pero dado que parece inalcanzable, se supone que P es computacionalmente difícil y luego sus respuestas explican el resto.
Ali
Queremos demostrar que nuestro problema P es computacionalmente difícil, pero no queremos asumir que P es difícil de probar que P es difícil :) En cambio, si demuestra que P es NP-completo (o incluso NP-duro pero ignoremos la distinción aquí), usted ha demostrado que si alguno de los cientos de problemas ya analizados es difícil, entonces P también lo es. Esto se debe a que si hubiera un algoritmo eficiente para P, también habría algoritmos eficientes para cada uno de los cientos de problemas.
arnab
44
@ Ali: le sugiero que mire un libro de texto introductorio de teoría de la complejidad. Este sitio web no es realmente un foro para tales preguntas, sino más para preguntas de nivel de investigación.
arnab
55
@ Ali: Definitivamente te recomiendo que leas a Garey y Johnson . ¡La famosa caricatura del libro es una visita obligada!
Tsuyoshi Ito
9

Probar un problema NP-Complete es un éxito de investigación porque le libera de tener que buscar una solución eficiente y exacta para el problema general que está estudiando. Demuestra que su problema es miembro de una clase de problemas tan difícil que nadie ha podido encontrar un algoritmo eficiente y exacto para ninguno de los problemas, y tal solución para cualquiera de los problemas implicaría una solución para todos los problemas. problemas.

Por lo general, es un trampolín, porque su problema aún está ahí, simplemente tiene que relajar sus necesidades. Por lo general, las personas intentan descubrir cómo relajar uno o más de "eficiente", "exacto" o "general". Ineficiente-y-exacto-y-general es el intento de encontrar constantes cada vez mejores en el exponente de estos algoritmos. Eficiente e inexacto y general es el estudio de algoritmos de aproximación. Eficiente y exacto, pero no general, es el estudio de la trazabilidad de parámetros fijos y la búsqueda de subclases de entrada para los que se pueden encontrar algoritmos eficientes.

Peter Boothe
fuente
¡Buen punto para tres formas de relajar el problema! Supongo que los algoritmos aleatorios caen en la categoría de "eficiente, inexacto y general".
Hsien-Chih Chang 張顯 之
De Verdad? No todos los algoritmos aleatorios son inexactos.
Jeffε
Y, por supuesto, tienes razón, JeffE. Además, entiendo que estás (o estabas) instruyendo a un ex alumno mío en algoritmos! En cuanto al punto de Hsien-Chih, no creo que los algoritmos aleatorios encajen bien en este esquema. Ciertamente, algunos algoritmos aleatorios (los algoritmos genéticos y las redes neuronales me vienen a la mente) son inexactos pero eficientes y generales, pero algunos algoritmos aleatorios son bastante exactos: ¡considere que el algoritmo para verificar un número es primo! Es un algoritmo aleatorio, pero estoy bastante seguro de que nadie ha logrado una implementación razonable.
Peter Boothe
5

Veamos dos casos diferentes por los que a dos personas diferentes les gustaría probar un problema :NPcomplete

a) Estás trabajando en un proyecto de software. Una vez que haya especificado su sistema, está comenzando a definir la arquitectura de su aplicación. Esto incluye desglosar el gran problema / necesidad que la aplicación sirve para problemas más pequeños. Digamos que se le ha asignado la tarea de encontrar un algoritmo eficiente (¡no queremos que nuestra aplicación sea lenta!) Para uno de esos problemas más pequeños. Después de luchar por un tiempo, no puedes encontrar un algoritmo polinómico. Entonces podría pensar: tal vez este problema es muy difícil, por lo que es muy difícil (o incluso imposible) encontrar un algoritmo eficiente. Al demostrar que el problema es , tiene alguna evidencia de esta conjetura suya y debe comenzar a considerar un enfoque alternativo (por ejemplo, alterar el problema para que sea más fácil).NPcomplete

b) Estás investigando la teoría de la complejidad. Por definición, desea caracterizar los problemas (o clases de problemas) de acuerdo con la cantidad de recursos necesarios, es decir, la dificultad para resolverlos. Al demostrar que cierto problema es , obtienes algunas ideas:NPcomplete

i) Sabes que tienes un vasto conocimiento del problema. En lugar de trabajar en un solo problema, puede trabajar con la clase de , lo que podría llevarlo a nuevas ideas.NPcomplete

ii) Se permiten investigaciones que quieran probar otra forma de hacerlo. Tal vez su problema sea más fácil de atacar que .3 - S A TP=NP3SAT

iii) En la dirección inversa, puede utilizar su nuevo problema como representante de . Al estudiarlo, tal vez puedas entender por qué este problema es tan difícil de resolver (= no tiene un algoritmo eficiente) y aplicar este conocimiento a todos los demás problemas de la clase. (eso es lo que Deolalikar intentó hacer con el problema de )C L I Q U ENPcompleteCLIQUE

Resumiendo, caracterizar un problema le permite utilizar técnicas comunes. Al estudiar la clase con la que está relacionada, puede pensar en un nivel abstracto, sin preocuparse por los detalles de este problema en particular, que es común en matemáticas y ciencias en general. Trabajar con clases en lugar de miembros individuales le permite utilizar técnicas conocidas y, además, aplicar sus conocimientos a un mayor número de objetos, en lugar de solo uno.

chazisop
fuente
2
Muchas personas resuelven problemas de NP completo en la práctica, incluso si son NP difíciles de aproximar. En el caso promedio, muchos problemas resultan ser mucho más fáciles, aunque esto puede ser difícil de mostrar; Es aún más difícil demostrar algo sobre algoritmos heurísticos que funcionan bien en la práctica. Le sugiero al arquitecto de software que pregunte a alguien si el problema es "realmente" difícil antes de darse por vencido y cambiar su diseño.
Yuval Filmus
No estoy diciendo que el diseño deba cambiar. Usar un algoritmo heurístico o de aproximación me parece (falsamente) como cambiar el problema ... ya que sé que está pidiendo soluciones menos precisas (¿son aceptables? ¡Depende de la aplicación!).
chazisop
3

Cada problema tiene varias conexiones con otros problemas. Además, existen relaciones entre un problema y las clases de complejidad.

Por lo tanto, clasificar un problema como NPC generalmente nos da una idea de otros problemas, así como de las clases de complejidad.

Por ejemplo, tome el problema del isomorfismo gráfico (GI). En el siguiente artículo:

Uwe Schöning, El isomorfismo gráfico está en la jerarquía baja , Actas del 4º Simposio anual sobre aspectos teóricos de la informática , 1987, 114–124; también: Journal of Computer and System Sciences, vol. 37 (1988), 312–323.

está comprobado que si GI ∈ NPC, entonces la jerarquía polinómica (PH) colapsa a su segundo nivel; que será un gran avance en la teoría de la complejidad estructural.

MS Dousti
fuente
3

pppp

Radu GRIGore
fuente
1
Escuché que hubo un momento en que demostró que algunos problemas son NP completos, tendría su tesis doctoral. ¿Es eso cierto?
Hsien-Chih Chang 張顯 之
@ Hsien-ChihChang 張顯 之: No puedo comentar sobre eso, pero esos resultados ciertamente solían ser mucho más populares hace unas décadas. En estos días parece cada vez más difícil publicar un documento en el que "solo" se demuestre un resultado de dureza (con la excepción de "problemas famosos", por supuesto), mientras que eso no habría sido un problema en los años 70-80, a juzgar por el abundancia de este tipo de documentos durante ese período.
Anthony Labarre