Está en la página 1de 10

Conjetura de Cook

Uno de los siete problemas es PTIME versus NP:


“Suppose that you are organizing housing accommodations for a
group of four hundred university students. Space is limited and only
one hundred of the students will receive places in the dormitory. To
complicate matters, the Dean has provided you with a list of pairs
of incompatible students, and requested that no pair from this list
appear in your final choice. This is an example of what computer
scientists call an NP-problem, since it is easy to check if a given
choice of one hundred students proposed by a coworker is satisfac-
tory ..., however the task of generating such a list from scratch seems
to be so hard as to be completely impractical ...”

Ejercicio
Muestre que el problema mencionado en este párrafo es
NP-completo.

IIC2213 – Introducción a la Complejidad Computacional 81 / 111


Que hacer con un problema NP-completo

¿Qué hacemos si tenemos que solucionar un problema


NP-completo?
! Existen casos que no vamos a ser capaces de solucionar.
! Pero, ¿Qué pasa en la práctica?

Dado un problema NP-completo:


! Nos gustarı́a encontrar casos que puedan ser solucionados
eficientemente y que sean interesantes en la práctica.

Ejemplo
3-COL es NP-completo pero 2-COL puede ser solucionado
eficientemente.

Vamos a ver dos casos en los que SAT puede ser resuelto
eficientemente: 2-CNF-SAT y Cláusulas de Horn.

IIC2213 – Introducción a la Complejidad Computacional 82 / 111


La complejidad de 2-CNF-SAT

Sea 2-CNF-SAT = {ϕ | ϕ es una fórmula en CNF que contiene dos


literales por cláusula y es satisfacible}.

Teorema
2-CNF-SAT puede ser solucionado eficientemente.

Demostración: Sea ϕ una fórmula en CNF que contiene dos


literales por cláusula. Suponga que ϕ menciona las variables
proposicionales x1 , . . ., xn .
Sea Gϕ = (N, A) un grafo construido de la siguiente forma:
! N = {x1 , . . . , xn , ¬x1 , . . . , ¬xn }.
! Para cada cláusula C = l1 ∨ l2 en ϕ, A contiene los arcos
(l¯1 , l2 ) y (l¯2 , l1 ).
Nótese que este grafo es dirigido.

IIC2213 – Introducción a la Complejidad Computacional 83 / 111


La complejidad de 2-CNF-SAT

Ejemplo
Si ϕ = (x1 ∨ x2 ) ∧ (¬x1 ∨ x3 ) ∧ (x2 ∨ ¬x3 ), entonces Gϕ es el
siguiente grafo:

x1 ¬x1

x2 ¬x2

x3 ¬x3

IIC2213 – Introducción a la Complejidad Computacional 84 / 111


La complejidad de 2-CNF-SAT

¿Por qué construimos Gϕ ? ¿Cuál es la relación entre ϕ y Gϕ ?

Vamos a demostrar que ϕ es satisfacible si y sólo si no existe un


nodo xi tal que ¬xi es alcanzable desde xi y xi es alcanzable desde
¬xi en Gϕ .

¿Por qué nos sirve esta propiedad?


! Porque se puede verificar en tiempo polinomial (¿cómo?).

IIC2213 – Introducción a la Complejidad Computacional 85 / 111


La complejidad de 2-CNF-SAT

(⇒) Por contradicción: Suponga que ϕ es satisfacible y existe xi tal


que ¬xi es alcanzable desde xi y xi es alcanzable desde ¬xi en Gϕ .

Sea σ una valuación tal que σ(ϕ) = 1.

Consideramos σ(xi ) = 1. El otro caso se resuelve de la misma


forma.

IIC2213 – Introducción a la Complejidad Computacional 86 / 111


La complejidad de 2-CNF-SAT

Como ¬xi es alcanzable desde xi en Gϕ : Existe un camino


l1 , . . . , lk en Gϕ tal que k ≥ 2, l1 = xi y lk = ¬xi .

Como σ(¬xi ) = 0: Existe j ∈ [1, k − 1] tal que σ(lj ) = 1 y


σ(lj+1 ) = 0.

Como (lj , lj+1 ) ∈ A: (l¯j ∨ lj+1 ) o (lj+1 ∨ l¯j ) es una cláusula en ϕ.

Pero: σ no satisface a ninguna de estas cláusulas, por lo que


σ(ϕ) = 0, una contradicción.

IIC2213 – Introducción a la Complejidad Computacional 87 / 111


La complejidad de 2-CNF-SAT

(⇐) Suponga que para todo i ∈ [1, n]: xi no es alcanzable desde


¬xi o ¬xi no es alcanzable desde xi en Gϕ .
Usamos Gϕ para construir una valuación σ tal que σ(ϕ) = 1:

Sea V = {x1 , . . . , xn , ¬x1 , . . . , ¬xn }


Mientras V (= ∅
elija li ∈ V tal que l¯i no es alcanzable desde li en Gϕ
V := V \ {li , l¯i }
σ(li ) := 1
Para todo lj tal que lj es alcanzable desde li en Gϕ
V := V \ {lj , l¯j }
σ(lj ) := 1

IIC2213 – Introducción a la Complejidad Computacional 88 / 111


La complejidad de 2-CNF-SAT

Primero tenemos que demostrar que σ está bien definida:

! σ asigna un valor de verdad a cada variable xi .


! No existe una variable xi tal que el procedimiento asigna 1
tanto a xi como a ¬xi .

Es claro que el primer punto se cumple (¿por qué?).

IIC2213 – Introducción a la Complejidad Computacional 89 / 111


La complejidad de 2-CNF-SAT

Segundo punto: Por contradicción, asuma que existe xi tal que el


procedimiento asigna 1 tanto a xi como a ¬xi .

Entonces existen literales l y l ! tales que:


! l y l ! fueron elegidos en la tercera linea del procedimiento.
! Existe un camino l1 , . . ., lj en Gϕ tal que j ≥ 1, l1 = l y
l j = xi .
! Existe un camino l1! , . . ., lk! en Gϕ tal que k ≥ 1, l1! = l ! y
lk! = ¬xi .

IIC2213 – Introducción a la Complejidad Computacional 90 / 111

También podría gustarte