P/NP: Pruebas, Conjunto Independiente, Cobertura de Vértices, Set Cover, 3 Dimensional Matching Flashcards
Explicar cómo se puede probar que un problema X es NP-Hard
Sea X un problema de decisión, queremos probar que un problema Z que es NP-Hard puede ser reducido polinomialmente a X:
- Z pertenece a NP-Hard
- Z <=p X
=> X pertenece a NP-Hard.
¿Qué significa que Z sea NP-H?
Que Z sea NP-H significa que todos los problemas Y de NP pueden ser reducidos a Z. Y si Z puede ser reducido a X, entonces todos los problemas Y pueden ser reducidos a X. Por lo tanto, X pertenece a NP-H.
Explicar cómo se puede probar que un problema X es NP-C
Sea X el problema de decisión, queremos probar que X pertenece a NP - C.
- Probamos que X pertenece a NP
a. Conseguimos un algoritmo de verificación en tiempo polinómico no determinístico.
b. Dado un certificado válido, verificamos que el resultado devuelva true
.
- Probamos que X pertence a NP-H
a. Dado un problema Y de NP-C (o NP-H), reducimos polinomialmente Y a X tal que Y <=p X.
b. Entonces, si Y pertence a NP-C/H e Y <=p X, entonces significa que X es NP-H.
De esta forma:
- Transformamos de forma polinomial la entrada de
Y
en una entrada equivalente deX
- Resolvemos
- Transformamos de forma polinomial la salida de
X
en una salida equivalente para el problemaY
.
¿Se puede probar que P = NP?
Los pasos para probar que P = NP son:
- Tomar un problema X NP-C
- Construir un algoritmo que resuelva X en tiempo polinomial.
Como todo problema NP-C se puede reducir entre si con igual complejidad y todo problema NP se puede reducir a otro NP-C
Entonces existe un algoritmo polinomial para todo problema NP tal que P = NP.
La cuestión de si P es igual a NP es uno de los problemas más importantes en el campo de la teoría de la complejidad computacional.
Hasta el momento, no se ha resuelto si P = NP.
Explique el problema de Conjunto Independiente
Sean:
- Un grafo
G = (V, E)
- Un valor
k
Determinar si existe un conjunto independiente de nodos de como mucho tamaño k
.
Un conjunto de nodos es independiente si no existe ejes que los una entre sí. El tamaño del conjunto corresponde a la cantidad de nodos dentro del mismo.
¿Conjunto independiente es NP?
Conjunto independiente es NP.
Dado un grafo G
, un tamaño k
y un subconjunto T
de nodos del grafo, yo puedo verificar en tiempo polinomial dos cosas:
- Si |T| = k
- Si no existen ejes que conecten a dos nodos entre sí dentro del conjunto
T
.
¿Conjunto Independiente es P?
Conjunto independiente no es P.
No se conoce algoritmo que resuelva Conjunto Independiente en tiempo polinómico.
Si logramos probar que Conjunto Independiente es NP-C, entonces sería P si y sólo si P = NP.
Explique la reducción de 3SAT a Conjunto Independiente
- Para la cláusula
Ti = (ti1 v ti2 v ti3)
se crean 3 vértices conectados entre sí. - Por cada
tij = xa
ytkl = ¬ xa
(por cada nodo creado y otro nodo con esa misma variable negada, crear un eje entre ellos. - El grafo resultante se llama G y es una instancia del problema.
Ahora, queremos encontrar un set independiente de k
elementos, siendo k
el número de cláusulas en la expresión.
3SAT a Conjunto Independiente:
Realice la reducción para la siguiente expresión de 2 cláusulas:
E = (x1, x2, x3) y ( ¬x1, ¬x2, ¬x4)
k = 2
El grafo obtenido es:
[ (x1, ~x1), (x1, x2), (x1, x2), (x2,x,3), (x2, ~x2), (~x1,~x2), (~x1, ~x4), (~x2, ~x4)]
Conjunto independiente elegido: (~x1, x2)
Esto significa que con ~x1 = 1 y x2 = 1, el valor de E es True. Cualquier certificado (0,1,x3,x4) verifica que E es true.
Pudimos verificar que el Conjunto Independiente es NP-C, porque:3SAT <=p Conj. Independiente
Cobertura de Vértices: Explique el problema.
Sea G un grafo, diremos que S⊆ V es una cobertura de vértices si para todo eje del grafo, al menos uno (puedenser los dos) de sus vértices pertenece a S.
Cobertura de Vértices: Explique el problema de decisión
Sea un grafo G, determinar si existe una cobertura de vértices de tamaño al menos k
.
Cobertura de Vértices: ¿Es NP?
Sí.
Sea un grafo G y un certificado t
(conjunto de nodos que forman el cubrimiento), podemos verificar:
|t|= k
- Para toda arista, uno o dos de los vértices pertenece a ´t´. Esto es O(V * E).
Explique la reducción de conjunto independiente a vertex cover
Sea un grafo G y un conjunto independiente S
de tamaño |S|, llamaremos C = V - S al complemento de S.
Decimos que para todo eje e=(u,v), u pertenece a S y v pertenece a C (porque S es independiente). Entonces, V-S es una cobertira de vértices de tamaño |V-S|.
¿Cómo se transforma un problema de vertex cover en uno de conjunto independiente?
- Sea G un grafo de V vértices.
- Sea k el tamaño de la cobertura de vértices.
| V | - k = k*
- Planteo un problema de set independiente con
k*
. - Si encuentro un conjunto independiente, entonces el conjunto de cobertura es C = V - S.
Vertex cover: ¿Es NP-C?
Podemos ver que:
- 3SAT <=p Conjunto Independiente
- Conjunto independiente <=p cobertura de vértices
- Cobertura de vértices <=p Conjunto independiente
Por lo tanto, tienen la misma complejidad => Cobertura de vértices es NP-C.