¿Cuál es la diferencia entre NP-hard y NP-complete?

Lo primero que debes tener es una idea básica sobre estos conceptos:

NP-Complete

NP-Complete es una clase de complejidad que representa el conjunto de todos los problemas X en NP para los cuales es posible reducir cualquier otro problema NP Y a X en tiempo polinómico.

Intuitivamente, esto significa que podemos resolver Y rápidamente si sabemos cómo resolver X rápidamente. Precisamente, Y es reducible a X , si hay un algoritmo de tiempo polinomial f para transformar instancias y de Y en instancias x = f(y) de X en tiempo polinomial, con la propiedad de que la respuesta a y es sí, si y solo si la respuesta a f(y) es sí.

Ejemplo

3-SAT . Este es el problema en el que se nos da una conjunción (AND) de disyunciones de 3 cláusulas (OR), declaraciones de la forma

(x_v11 O x_v21 O x_v31) Y
(x_v12 O x_v22 O x_v32) Y
… Y
(x_v1n O x_v2n O x_v3n)

donde cada x_vij es una variable booleana o la negación de una variable de una lista predefinida finita (x_1, x_2, ... x_n) .

Se puede demostrar que cada problema de NP puede reducirse a 3-SAT . La prueba de esto es técnica y requiere el uso de la definición técnica de NP ( basada en máquinas de Turing no deterministas ). Esto se conoce como el teorema de Cook .

Lo que hace que los problemas NP-completos sean importantes es que si se puede encontrar un algoritmo determinista de tiempo polinómico para resolver uno de ellos, cada problema NP puede resolverse en tiempo polinómico (un problema para gobernarlos todos).


NP-hard

Intuitivamente, estos son los problemas que son al menos tan difíciles como los problemas NP-completos . Tenga en cuenta que los problemas NP-hard no tienen que estar en NP , y no tienen que ser problemas de decisión .

La definición precisa aquí es que un problema X es NP-duro, si hay un problema NP completo Y , de modo que Y es reducible a X en tiempo polinomial .

Pero dado que cualquier problema NP-completo puede reducirse a cualquier otro problema NP-completo en tiempo polinómico, todos los problemas NP-completos pueden reducirse a cualquier problema NP-difícil en tiempo polinómico. Entonces, si hay una solución a un problema NP-duro en tiempo polinómico, hay una solución a todos los problemas NP en tiempo polinómico.

Ejemplo

El problema de detención es un problema NP-difícil. Este es el problema que da un programa P y entrada I , ¿se detendrá? Este es un problema de decisión pero no está en NP. Está claro que cualquier problema de NP completo se puede reducir a este. Como otro ejemplo, cualquier problema NP-complete es NP-hard.

Mi problema NP-complete favorito es el problema del Buscaminas.


P = NP

Este es el problema más famoso en informática y una de las preguntas pendientes más importantes en las ciencias matemáticas. De hecho, el Instituto Clay está ofreciendo un millón de dólares para una solución al problema (el informe de Stephen Cook en el sitio web de Clay es bastante bueno).

Está claro que P es un subconjunto de NP. La pregunta abierta es si los problemas de NP tienen o no soluciones deterministas de tiempo polinomial. Se cree en gran medida que no lo hacen. Aquí hay un artículo reciente sobresaliente sobre el último (y la importancia) del problema P = NP: El estado del problema P versus NP.

El mejor libro sobre el tema es Computadoras e Intractabilidad de Garey y Johnson.

Espero eso ayude….

NP-complete es un concepto más fuerte que NP-hard. Todos los problemas NP-completos son NP-hard, la diferencia radica en dos lugares (en uso y definiciones):

  1. No todos los problemas NP-hard son NP-complete. Para que un problema NP-difícil sea NP-completo, debe estar en NP.
  2. Debido a (1), comúnmente encontrará que cuando discutimos problemas de optimización, asumiendo que su versión de decisión es NP-complete, no decimos que son NP-complete; decimos que son NP-hard. Esto se debe a que los problemas de optimización generalmente no son problemas de decisión.

¡Espero que esto ayude!

Voy a hacer esto simple

P – Problemas que se pueden resolver en tiempo polinómico.

NP : problemas que pueden verificarse en tiempo polinómico.

Por lo tanto, cada problema de P también es un NP ya que cada problema de P también se puede verificar en tiempo polinómico, pero viceversa no es cierto porque no se puede resolver cada problema de NP en tiempo polinómico.

Ahora aquí están nuestros problemas representados al usar un diagrama de Venn,

NP Hard : si todos los problemas en el conjunto NP se pueden reducir a un problema aún más difícil, entonces ese problema se llama NP hard.

Aquí está el diagrama de Venn,

NP completo: si un problema NP difícil está dentro del conjunto de problemas NP, entonces eso es NP completo,

Espero que esto te de la claridad.

Gracias por leer.

Un problema en el conjunto de NP si se puede verificar una solución al problema en tiempo polinómico. es decir. si le di una pregunta y una solución propuesta, podría decirme si la solución es correcta o incorrecta en el tiempo polinómico.

Un problema es NP-hard si cualquier problema en NP puede reducirse en tiempo polinómico.

Un problema es NP completo si cualquier problema en NP puede reducirse a él en tiempo polinómico Y también está en NP (y, por lo tanto, las soluciones pueden verificarse en tiempo polinómico).

En otras palabras, el conjunto de problemas NP-completos es el conjunto formado por la intersección de NP y NP-hard.

Todos los problemas de NP-Complete son NP-Hard. Sin embargo, no todos los problemas NP-Hard son NP-Complete. Para que un lenguaje L sea NP-Completo, debe ser el caso que:

  1. L está en NP
  2. L es NP-Hard

Para que un lenguaje sea NP-Hard, significa que si puede resolverlo en tiempo polinómico, puede resolver cualquier problema en NP en tiempo polinómico.

Un ejemplo de un lenguaje L que es NP-Hard pero (muy probablemente) no NP-Complete es el lenguaje que determina, dada una fórmula booleana 3-SAT fy un entero k, hay k o más tareas satisfactorias. Al dejar k = 1, este es exactamente el problema de 3-SAT, por lo tanto, esto califica como NP-Hard. Sin embargo, el lenguaje que describí está en la clase “muy difícil” P #, y definitivamente se espera que no esté en NP.

NP-hard:

Intuitivamente, esos son los problemas que son tan mínimos como difíciles como los problemas de NP completo. se dice que los problemas difíciles de NP ahora no deben estar en NP, y que no necesitan ser problemas de selección.

La definición adecuada aquí es que un problema X es NP-difícil, si hay un problema NP-completo Y, de modo que Y es reducible a X en el tiempo polinomial.

pero debido al hecho de que cualquier molestia NP-completa puede reducirse a algún otro problema NP-entero en tiempo polinómico, todos los problemas NP-Completo pueden reducirse a cualquier problema NP-difícil en tiempo polinomial. Entonces, si hay un método para una molestia NP-resistente en el tiempo polinomial, hay un método para todos los problemas NP en el tiempo polinomial.

NP-Complete:

NP-Complete es una clase de complejidad que representa el conjunto de todos los problemas X en NP para los cuales es factible reducir otro problema de NP Y a X en tiempo polinómico. De manera intuitiva, podemos resolver Y rápidamente si entendemos cómo remedio X rápidamente. precisamente, Y es reducible a X, si hay un algoritmo de tiempo polinomial f para transformar instancias y de Y a veces x = f (y) de X en tiempo polinomial, con los activos que la solución a y es segura, si y más simple si La solución para f (y) es segura.

Esto puede ayudar. Del artículo de Wiki:

Un problema H es NP-duro si y solo si hay un problema NP-completo L que es tiempo polinómico Turing-reducible a H (es decir, L ≤ TH). En otras palabras, L puede resolverse en tiempo polinomial mediante una máquina de oráculo con un oráculo para H. Informalmente, podemos pensar en un algoritmo que pueda llamar a una máquina de oráculo como una subrutina para resolver H , y resuelva L en tiempo polinómico, si la llamada de subrutina toma solo un paso para computar. Los problemas NP-hard pueden ser de cualquier tipo: problemas de decisión, problemas de búsqueda o problemas de optimización.

Ver NP vs NP-Complete vs NP-Hard: ¿qué significa todo esto? – Desbordamiento de pila

More Interesting

¿Qué tipo de problemas se pueden resolver instantáneamente en las computadoras?

¿Es una pérdida de tiempo tratar de ser un programador de computadoras si soy malo en matemáticas?

¿Cómo se puede lograr acceso aleatorio en O (log n)?

¿Hay alguna prueba matemática de que los lenguajes de computadora modernos pueden representar cualquier algoritmo finito usando una cantidad finita de código?

Para prepararse para la investigación en informática teórica, ¿es mejor estudiar matemática o informática como estudiante universitario?

¿Hay un sitio como el Proyecto Euler pero sobre matemáticas puras?

¿Podría alguien ayudarme a determinar qué camino en mi educación se adaptaría mejor a mis intereses?

¿Cómo se usa el teorema de Bayes en robótica?

¿Cuáles son las diferencias en las consecuencias entre el principio tautológico de elección demostrable en la teoría de tipos y el axioma completo de elección?

¿Hay algún equivalente a lanzar la moneda en informática?

¿Por qué nos trasladamos además?

¿Cuáles son los conceptos fundamentales de la física?

Suponiendo que uno tenga una experiencia limitada en programación, matemáticas y neurociencia, ¿cómo se ingresa a un programa de posgrado para inteligencia artificial o neurociencia computacional?

¿Es elusiva la comprensión fundamental del aprendizaje automático? ¿Requiere habilidad matemática innata?

¿Es la informática teórica una subdisciplina de la lógica matemática? ¿Cuál es la diferencia entre los dos? ¿Dónde se cruzan?