Solucion - 14
Solucion - 14
Solucion - 14
Solución Ayudantı́a 14
23 de noviembre de 2018
2o semestre 2018 - Profesores G. Diéguez - F. Suárez
Rudyard Jerez y Juan Ignacio Silva
Resumen
Dado un problema de decision π, llamamos Iπ el conjunto de de instancias (se puede ver como
todos los posibles candidatos a soluciones), y a Lπ ⊆ Iπ un lenguaje (son todos los candidatos
que son efectivamente aceptados).
Clase de comlejidad DTIME := problemas de decision que se pueden resolver en tiempo
polinomial P.
Clase de complejidad NP := problemas de decision en el cual chequar si una posible solucion
es aceptada o no se puede hacer en tiempo polinomial, pero encontrar una solucion, no
necesariamente en tiempo polinomial.
P ⊆ NP
Clase de complejidad NP-hard := problemas que son por lo menos tan dificiles que todos los
problemas de NP (no pertenece necesariamente a NP)
Clase de complejidad NP-completo := problemas pertenecientes a NP y que son NP-hard
Para demostrar que un problema a alguna clase de complejidad basta encontrar una reducion
hacia otro problema, es decir encontrar un problema equivalente, del cual si sepamos la
complejidad.
SAT-CNF (problema de decidir si una formula en CNF es satisfacible) es NP-Completo
CLIQUE (problema de decidir si un grafo no dirigido tiene un clique de mayor igual a 2) es
NP-completo
Pregunta 1
La función A complementa el grafo G(V, E) en tiempo polinomial acotado por O(|V |2 ). Finalmente,
por teorema visto en clases sabemos que:
G(V, E) tiene un clique ⇔ Ḡ(V, Ē) tiene un conjunto independiente
Luego la reducción es correcta e INDEPENDENT es N P -hard.
Pregunta 2
2
Solución Ayudantı́a 14 - Rudyard Jerez y Juan Ignacio Silva
En otras palabras, las instancias I DOBLE-SAT son todas las fórmulas en L(P ) y el lenguaje LDOBLE-SAT
son todas las fórmulas que tienen por lo menos dos valuaciones que las satisfacen. Demuestre que
DOBLE-SAT es NP-completo.
Solución
DOBLE-SAT ∈ NP: el certificado para DOBLE-SAT son dos asignaciones de verdad, por
lo que sigue siendo polinomial con respecto al número de variables (es dos veces el largo del
certificado de SAT). Además, el algoritmo es el mismo que en SAT, salvo que lo utilizamos
dos veces, lo que sigue siendo polinomial.
DOBLE-SAT es NP-hard: La reducción se hará desde SAT. Sea una fórmula ϕ ∈ L(P ) que
menciona variables x1 , . . . , xn . Consideremos la siguiente fórmula ψ ∈ L(P ∪ {y}), donde y es
una variable proposicional que no está en P (y por lo tanto no se menciona en ϕ):
ψ = ϕ ∧ (y ∨ ¬y)
Se puede ver que claramente es de tamaño polinomial con respecto a ϕ. Ahora demostraremos
que ϕ es satisfacible si y sólo si ψ tiene al menos dos valuaciones que la satisfacen:
(⇒): Si ϕ es satisfacible, entonces existe una valuación σ : P → {0, 1} tal que σ(ϕ) = 1.
Tomemos ahora dos valuaciones σ1 , σ2 : P ∪ {y} → {0, 1}:
σ(p) if p ∈ P
σ0 (p) =
0 if p = y
σ(p) if p ∈ P
σ1 (p) =
1 if p = y
Es claro que σ0 (ϕ) = σ1 (ϕ) = 1. Luego, como (y ∨ ¬y) es una tautologı́a, tenemos que
σ0 (ψ) = σ1 (ψ) = 1, y por lo tanto ψ tiene dos valuaciones que la hacen verdad.
(⇐): Si ψ tiene dos valuaciones que la hacen verdad, es evidente que existe una valuación
σ : P ∪ {y} → {0, 1} tal que σ(ψ) = 1. Como (y ∨ ¬y) es una tautologı́a, necesariamente se
debe cumplir que σ(ϕ) = 1, y luego ϕ es satisfacible.
Pregunta 3
Decimos que un ciclo en un grafo es un cı́rculo si no repite vértices. Considere el siguiente problema:
n
Half-Circle = { G | G tiene un cı́rculo de tamaño 2 }
En otras palabras, las instancias IHALF-CIRCLE son todos los grafos y el lenguaje LHalf-Circle son
todos los grafos que contienen un cı́rculo de tamaño n2 . Demuestre que el problema Half-Circle
es NP-completo.
3
Solución Ayudantı́a 14 - Rudyard Jerez y Juan Ignacio Silva
Solución
Half-Circle ∈ NP: Es fácil notar que Half-Circle está en NP. El certificado c para el
grafo G(V, E) es la instancia del ciclo que recorre G, el cuál esta acotado polinomialmente por
la cantidad de vértices. Para verificar el certificado, podemos utilizar el siguiente algoritmo:
Algoritmo: Half-Circle(G(V, E), c = (v1 , . . . , vm ))
1: k ← 0
2: S ← {}
3: for i = 1 to m do
4: if vi , vi+1 6∈ E or vi ∈ S then
5:
6: return False
7: else
8: k ←k+1
9: S ← S ∪ {vi }
10: end if
11: end for
12: if k 6= n2 then
13:
14: return False
15: end if
16:
17: return True
Pregunta 4
Definimos 3-SatSearch como el problema de buscar y retornar una valuación que satisfaga a una
fórmula ϕ en 3CNF. Demuestre que si 3-Sat puede ser resuelto en tiempo polinomial, entonces
3-SatSearch puede ser resuelto en tiempo polinomial.
4
Solución Ayudantı́a 14 - Rudyard Jerez y Juan Ignacio Silva
Hint: Recuerde que usted puede forzar el valor de una variable utilizando variables auxiliares como
en la reducción de Sat ∝ 3-Sat.
Solución
Supongamos que existe una función 3Sat(ϕ) que responde que sı́ en tiempo polinomial si ϕ en
3CNF es satisfacible y no en caso contrario. Lo que debemos buscar es un algoritmo que resuelve
3SatSearch en tiempo polinomial. Dicho algoritmo debe tomar como input una fórmula ϕ en
3CNF de n variables y k cláusulas, y debe retornar una asignación para cada variable x1 , . . . , xn
que satisfaga ϕ ó que ϕ es no satisfacible.
Notemos que es posible forzar el valor de una variable proposicional xi de la fórmula ϕ, transformando
ϕ en ϕ0 ∧ ϕ0i,v de la siguiente manera:
Para forzar xi = 1 ⇒ ϕ0i,1 = (xi ∨ y ∨ z) ∧ (xi ∨ ȳ ∨ z̄) ∧ (xi ∨ ȳ ∨ z) ∧ (xi ∨ y ∨ z̄)
Para forzar xi = 0 ⇒ ϕ0i,0 = (x̄i ∨ y ∨ z) ∧ (x̄i ∨ ȳ ∨ z̄) ∧ (x̄i ∨ ȳ ∨ z) ∧ (x̄i ∨ y ∨ z̄)