¿Es computable cada problema NP-hard?

Respuestas:

15

No, un duro no necesita ser computable. La definición es bastante completa: un problema es -duro si ese problema que tiene una solución de poli-tiempo implica que cada problema en tiene una solución de poli-tiempo (es decir, existe una reducción a para cada problema en ).NPLNPNPLNP

Los problemas incontrolables son difíciles de resolver: supongamos que podríamos resolver uno en tiempo polinómico. Luego, usamos la prueba de que es incuestionable deducir que es computable y no computable, una contradicción. De esta falsedad, podemos derivar cualquier cosa, a saber, que existe un algoritmo de tiempo polinómico para cualquier problema de que estemos viendo.NP

Por ejemplo, consideremos el problema de la parada . Podemos reducir cualquier lenguaje a siguiente manera, suponiendo que tengamos un verificador de polytime que verifica si es un certificado para :HNPAHf(s,c)csA

  • Dadas de entradas
  • Constructo (pero no de ejecución) de la máquina de Turing , que toma la entrada intenta todos los certificados y se detiene si es un certificado que verifica que .MxccsA
  • Devuelve (es decir, devuelve verdadero si detiene en la entrada )H(M,x)Mx

Por lo tanto, con una sola llamada a un algoritmo de poli-tiempo que resuelve el problema de detención, podemos resolver cualquier problema de en tiempo polinómico.NP

Tal reducción no es útil, porque todo lo que hace es decir si "si es falso, entonces algo". Ya sabemos que no existe un algoritmo de polytime para problemas inconfundibles.

jmite
fuente
77
"La definición es bastante completa", pero no es lo que sigue a esa cita en su respuesta.
Tengo una pregunta sobre esto. Puedo imaginar una función que resuelva el problema de detención para el conjunto de programas más grande posible bajo algunas restricciones apropiadas, pero puedo imaginar que esta función aún no es computable (en el sentido de que nunca la encontraríamos incluso con un tiempo infinito) . Sin embargo, si de alguna manera tuvimos la solución, ni siquiera está claro para mí que deba resolver todos los problemas NP-hard necesariamente. Entonces, o la lógica en esta respuesta no sigue (¡lo que significa indecidible! = Incuestionable), o mi razonamiento es defectuoso (probable). Entonces, ¿cuál es el defecto?
Mehrdad el
12
La mayor parte de esta respuesta es incorrecta, incluida su definición de NP difícil: el problema A es NP difícil si, "para cada problema NP B, hay una reducción poli-temporal de B a A". Eso no es lo mismo que "si A es poli-tiempo, entonces P = NP". (La última es una consecuencia de la primera, pero no al revés). En particular, es casi seguro que hay problemas no computables que tampoco pueden ser NP difíciles. No he resuelto los detalles, pero el problema de la membresía en un conjunto suficientemente genérico (en el sentido de forzar) debería ser suficiente. El conjunto de detención, específicamente, es NP-duro, sin embargo, por su reducción.
77
Piense en una reducción de tiempo múltiple de A a B de esta manera: es un programa que se ejecuta en tiempo polinómico, pero tiene la capacidad especial de consultar, en un solo paso, un oráculo que responde a instancias del problema B. Independientemente de si hay un algoritmo de poli-tiempo para B, o incluso si B es computable, todavía tiene sentido hacer la siguiente pregunta: suponiendo que el oráculo responda correctamente las preguntas que se le hacen (en un solo paso), el programa en cuestión correr en tiempo polinómico y resolver correctamente instancias del problema A?
2
@MikeHaskel Su analogía con el oráculo solo es precisa si, después de consultar el oráculo, el programa debe detenerse con la misma respuesta que ese oráculo. De lo contrario, co-SAT se reduce a SAT: consulta el oráculo y niega. En algunas nociones de reducción, por ejemplo, la reducción de Turing, esto sería aceptable, pero en la reducción estándar de tiempo múltiple, o incluso en la reducción de muchos, no lo es.
chi
16

Parece haber una considerable confusión en esta comunidad con respecto a esta pregunta. Daré una respuesta detallada con la esperanza de aclarar el agua e iluminar la relación entre la computabilidad y la dureza NP.

Primero, creo que ser claro y explícito sobre las diversas definiciones involucradas resolverá gran parte de la confusión.

Una cadena es una secuencia finita de caracteres de un alfabeto finito fijo.

Un problema de decisión es un conjunto de cadenas. (Este conjunto es típicamente infinito). Piense en el problema de decisión como pruebas de cadenas para alguna propiedad: las cadenas con la propiedad están en el conjunto y las cadenas sin la propiedad no lo están.

Supongamos que tenemos dos problemas de decisión, y . Digamos que es polinomial reducible en tiempo a si hay algún polinomio y algoritmo algún algoritmo tal que, para todas las cadenas ,ABABp(x)Ms

  • Si proporciona con la entrada , detiene en menos de pasos (donde es la longitud de la cadena ) y genera una cadena .MsMp(|s|)|s|sM(s)
  • s está en si y sólo si M ( s ) es en B .AM(s)B

Un problema de decisión es NP-difícil si, para cada problema de decisión NP A , A es en tiempo polinomio irreducible a B .BAAB

Un problema de decisión es computable si hay un algoritmo , que, para todas las cadenas s ,Ms

  • Si proporciona con la entrada s , M se detiene y emite "sí" o "no".MsM
  • La salida es "sí" si está en A y "no" de lo contrario.sA

Con las definiciones anteriores, podemos aclarar inmediatamente lo que creo que podría ser la raíz de la confusión en su pregunta: nada en las definiciones de problema de decisión, reducciones o dureza NP requiere que los problemas de decisión sean computables. Las definiciones tienen mucho sentido pensando en los problemas de decisión como conjuntos arbitrarios de cadenas, y estos conjuntos pueden ser muy desagradables.


Eso deja dos preguntas sobre la mesa:

  1. Las definiciones dejan abierta la posibilidad de que las funciones no computables sean NP-hard. ¿Existen en realidad funciones NP-hard no computables?
  2. Existe la intuición de que decir que un problema es NP-hard es decir que es difícil de resolver. Decir que no es computable es como decir que es "realmente difícil" de resolver. Entonces, ¿ todos los problemas no computables son NP-hard?

La pregunta 1 es más fácil de responder. Hay dos formas particularmente importantes de encontrar problemas de decisión no computables que son NP-hard. El primero es el problema de la parada: el problema de la parada, , tiene la propiedad de que cada computable problema de decisión es en tiempo polinomio irreducible a H . Dado que los problemas de NP son computables, cada problema de NP es reducible en tiempo polinomial a H , entonces H es NP-duro.HHHH

La otra forma importante de construir un problema NP-hard no computable es observar que podemos combinar cualquier problema NP-hard conocido con cualquier problema no computable conocido. Deje que sea ​​NP-hard y B sea ​​no computable. Forme el problema de decisión A B de la siguiente manera: A B contiene esas cadenas de la forma "0, seguidas de una cadena en A " y las de la forma "1, seguida de una cadena en B ". A B es NP-duro porque podemos convertir cualquier reducción (de cualquier problema) a A en una reducción a A BABABABABABAAB: simplemente modifique el algoritmo para generar un "0" adicional al frente de su cadena de salida. no es computable, ya que calcular A B requiere decidir qué cadenas que comienzan con "1" están en el conjunto; Esto es imposible, ya que B no es computable.ABABB


La pregunta 2 es considerablemente más complicada, pero de hecho hay problemas de decisión no computables que no son NP-hard (suponiendo P NP). La buena respuesta de Yuval construye tal problema de decisión explícitamente. (Para cualquier teórico de la computabilidad en la sala, cualquier "Cohen Π 0 1- genérico" también funcionará). Analizaré por qué la intuición de que "los problemas NP-difíciles son difíciles, los problemas no computables son más difíciles " Está Mal.Π10

La dureza NP y la no computabilidad dicen que un problema es "difícil" en un sentido muy general, pero son muy diferentes y no deberían agruparse como el mismo tipo de fenómeno. Específicamente, la dureza NP es una propiedad "positiva": un problema NP difícil es difícil en el sentido de que, dado el acceso a una hoja de trucos para A , puede resolver una clase difícil de problemasAA . Por otro lado, la no computabilidad es una propiedad "negativa": un problema no computable difícil en el sentido de que no se puede resolver A con una clase dada de recursosAA .

( "Forzar", por cierto, es la técnica utilizada para producir el "Cohen genérico" que he mencionado. Para ser muy muy vaga, forzando está de manera general para producir cosas que son "genérico" en que tienen sin propiedades positivas y todas las propiedades negativas, por eso forzar puede producir directamente un problema que no es computable ni NP-hard).Π10

Comunidad
fuente
2
¿No puedes construir un lenguaje indecidible que no sea NP-hard por diagonalización? Diagonalice contra todos los decisores y todas las reducciones de polytime de SAT.
Yuval Filmus el
1
@YuvalFilmus Eso probablemente funcione, sí. Sin embargo, creo que escribir los detalles de por qué la diagonalización en contra de las reducciones de polytime de SAT es posible es similar en sabor a mostrar que el forzamiento funciona, así que no pensé en eso en esos términos.
1
@YuvalFilmus También agregué la aclaración en este momento de que tienes que asumir P NP: definitivamente hubo un paso en mi prueba que decía "toma algún problema en NP pero no en P."
1
@aelguindy No estoy seguro de cuál es el método más accesible para demostrarlo. Mencioné la técnica de forzar , que es muy general y poderosa. Lo aprendí de la gente, no de los libros de texto, así que personalmente no conozco una gran referencia sobre el forzamiento. Como Yuval señaló, sin embargo, forzar es probablemente exagerado: probablemente funcione algún argumento más directo que implique la diagonalización. Los "Conjuntos y grados recursivamente enumerables" de Soare es un libro de texto que cubre gran parte de ese estilo de argumento si desea familiarizarse con él. De nuevo, la mayor parte probablemente sea exagerada. ...
1
@aelguindy Además, si piensa en el conjunto de problemas de decisión como un espacio topológico, probablemente pueda dar masajes al teorema de la Categoría de Baire para producir una prueba. Este teorema está estrechamente relacionado con el forzamiento, pero es más antiguo y más directo.
11

No NP-Hard significa que es tan difícil o más difícil que los problemas NP más difíciles. Intuitivamente, ser incuestionable hará que sea mucho más difícil que NP.

Wikipedia:

Hay problemas de decisión que son NP-hard pero no NP-complete, por ejemplo, el problema de detención.

Todos saben que no es computable

Limón Destructible
fuente
44
Tenga en cuenta que, si bien algunos problemas no computables (como el problema de detención) son NP-hard, eso no significa que todos los problemas no computables sean NP-hard. Vea mis comentarios sobre la respuesta de jmite. La dureza NP es una propiedad positiva: dice que las respuestas a su problema pueden ayudar a resolver los problemas NP. Ser NP-hard implica que el problema es, hasta cierto punto, difícil. No todos los problemas difíciles son NP-hard.
@MikeHaskel: Poseer la solución al problema de detención reduce todos los problemas a la dificultad P * del problema de detención ..
Joshua
1
@ Joshua: Eso no tiene sentido. Es como un fragmento de una no prueba. ¿Qué quiere decir siquiera para que un problema tenga un número finito de bits en su solución, y por qué cree que esto se aplica a todos los problemas no discutibles? ¿Qué quieres decir con "P * se detiene"? ¿Qué es el resto de "reducir a través de la enésima parte de ..."?
user2357112 es compatible con Monica el
1
@ Joshua: Parece que el problema central es que estás asumiendo que cada problema corresponde a una máquina de Turing. No todos los problemas corresponden a una máquina de Turing. No hay problem()función que podamos llamar.
user2357112 es compatible con Monica el
1
Probablemente deberías mover esto para chatear o algo así
Destructible Lemon
9

Para completar, demostremos el siguiente teorema:

,{0,1}

TiL{0,1,?}{0,1}L0L1L??

2iTiTiTixL(x)=?L(x):=0Ti(x)L(x):=1Ti(x)

2i+1TiTiTixL(Ti(x))=?xSATxL(x):=0L(x):=1

{0,1,?}{0,1}

L2iTiTiLTiTiLTiTi2i+1L

Yuval Filmus
fuente
3

LLNPLL

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

LNPLMfLANTM

f(x)=M,x
Hans Hüttel
fuente
3

Creo que lo que hace que las personas piensen que no hay un problema NP-hard incuestionable es que pierden el punto de que la dureza NP es un límite inferior de la dureza de un problema, no un límite superior de su dureza como P o NP.

Un lenguaje L siendo NP-hard significa que está por encima del lenguaje en NP y eso es. Ahora, si comprende esto, lo que necesita es demostrar que hay un problema arbitrario más difícil.

AACACAHaltCACA

AAA<AA<A<A<A<...

Kaveh
fuente