Respuestas:
Para mostrar que un problema es NP completo, debe:
En otras palabras, dada alguna información C
, puede crear un algoritmo de tiempo polinomial V
que verificará para cada entrada posible X
si X
está en su dominio o no.
Demuestre que el problema de las cubiertas de vértices (es decir, para algún gráfico G
, ¿tiene un conjunto de cubiertas de vértices de tamaño k
tal que cada borde en G
tenga al menos un vértice en el conjunto de cubiertas ?) Está en NP:
nuestra entrada X
es un gráfico G
y un número k
(esto es de la definición del problema)
Considere nuestra información C
como "cualquier posible subconjunto de vértices en el gráfico G
de tamaño k
".
Luego podemos escribir un algoritmo V
que, dado G
, k
y C
, devolverá si ese conjunto de vértices es una cobertura de vértice para G
o no, en tiempo polinomial .
Luego, para cada gráfico G
, si existe algún "posible subconjunto de vértices G
de tamaño k
" que sea una cobertura de vértices, entonces G
está en NP
.
Tenga en cuenta que no es necesario encontrar C
en tiempo polinomial. Si pudiéramos, el problema estaría en `P.
Tenga en cuenta que el algoritmo V
debería funcionar para todos G
, para algunos C
. Para cada entrada debe existir información que pueda ayudarnos a verificar si la entrada está en el dominio del problema o no. Es decir, no debe haber una entrada donde la información no exista.
Esto implica obtener un problema NP-completo conocido como SAT , el conjunto de expresiones booleanas en la forma:
(A o B o C) y (D o E o F) y ...
donde la expresión es satisfactoria , es decir, existe alguna configuración para estos valores booleanos, lo que hace que la expresión sea verdadera .
Luego, reduzca el problema NP-completo a su problema en tiempo polinomial .
Es decir, dada alguna entrada X
para SAT
(o cualquier problema NP-completo que esté usando), cree alguna entrada Y
para su problema, de modo que X
esté en SAT si y solo si Y
está en su problema. La función f : X -> Y
debe ejecutarse en tiempo polinomial .
En el ejemplo anterior, la entrada Y
sería el gráfico G
y el tamaño de la cubierta del vértice k
.
Para una prueba completa , tendrías que probar ambos:
eso X
está en SAT
=> Y
en tu problema
y Y
en su problema => X
en SAT
.
La respuesta de marcog tiene un vínculo con varios otros problemas NP-complete que podría reducir a su problema.
Nota a pie de página: En el paso 2 ( Demuestre que es NP-difícil ), será suficiente reducir otro problema NP-difícil (no necesariamente NP-completo) al problema actual, ya que los problemas NP-completo son un subconjunto de los problemas NP-difíciles (que son también en NP).
Necesita reducir un problema NP-Complete al problema que tiene. Si la reducción se puede hacer en tiempo polinomial, entonces ha probado que su problema es NP-completo, si el problema ya está en NP, porque:
No es más fácil que el problema NP-completo, ya que se puede reducir en tiempo polinomial lo que hace que el problema NP-Difícil.
Consulte el final de http://www.ics.uci.edu/~eppstein/161/960312.html para obtener más información.
Para demostrar que un problema L es NP-completo, debemos seguir los siguientes pasos:
Primero, demuestra que se encuentra en NP en absoluto.
Luego, encuentra otro problema que ya sabe que es NP completo y muestra cómo reduce polinomialmente el problema NP Difícil a su problema.