Otros problemas NP-completos Notación: si L es completo para C, decimos que L es C-completo. ¿Cómo podemos demostrar que un problema L es NP-completo? - Nos basta con demostrar que L ∈ NP y que existe una reducción polinomial de SAT a L. Antes de utilizar esta técnica tenemos que pensar que versión de SAT usar. - En general es más fácil utilizar fórmulas en alguna forma normal. 65 Otros problemas NP-completos Una versión de SAT muy útil: CNF-SAT = {ϕ | ϕ es una fórmula en CNF y ϕ es satisfacible}. ¿Es CNF-SAT NP-completo? - Podemos modificar la demostración del Teorema de Cook para mostrar esto. Teorema: CNF-SAT es NP-completo. 66 Otros problemas NP-completos Ahora podemos usar la idea inicial para mostrar que otros problemas son NP-completos. Algunos ejemplos: - 3-CNF-SAT = {ϕ | ϕ es una fórmula en CNF que contiene tres literales por cláusula y es satisfacible}. - 3-COL = {G | G es una grafo 3-coloreable}. - PRO-ENT = {(A, ~b) | A es una matriz de enteros, ~b es un vector de enteros y existe un vector de enteros ~ x tal que A~ x ≤ ~b}. 67 Conjetura de Cook Conjetura de Cook: PTIME ( NP. - No existe un algoritmo eficiente para resolver SAT. - Tampoco existen algoritmos eficientes para resolver ninguno de los problemas NP-completos. ¿Cuán fundamental es este problema? 68 Conjetura de Cook Desde la página del Clay Mathematics Institute: “In order to celebrate mathematics in the new millennium, The Clay Mathematics Institute of Cambridge, Massachusetts (CMI) has named seven Prize Problems. The Scientific Advisory Board of CMI selected these problems, focusing on important classic questions that have resisted solution over the years. The Board of Directors of CMI designated a $7 million prize fund for the solution to these problems, with $1 million allocated to each.” 69 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 satisfactory ..., 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. 70 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 practica? Dado un problema NP-completo: - Nos gustarı́a encontrar casos que puedan ser solucionados eficientemente y que sean interesantes en la practica. 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. 71 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. Asuma 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. 72 La complejidad de 2-CNF-SAT Por ejemplo, si ϕ = (x1 ∨ x2 ) ∧ (¬x1 ∨ x3 ) ∧ (x2 ∨ ¬x3 ), entonces Gϕ es el siguiente grafo: x1 ¬x1 x2 ¬x2 x3 ¬x3 73 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?). 74 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. 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. 75 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 6= ∅ 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 76 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é?). 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 l0 tales que: - l y l0 fueron elegidos en la tercera linea del procedimiento. - Existe un camino l1 , . . ., lj en Gϕ tal que j ≥ 1, l1 = l y lj = xi . - Existe un camino l10 , . . ., lk0 en Gϕ tal que k ≥ 1, l10 = l0 y lk0 = ¬xi . 77 La complejidad de 2-CNF-SAT Supongamos que l0 fue elegido primero. Como l¯j , . . . , l¯1 es un camino en Gϕ desde ¬xi a ¯ l: Existe un camino en Gϕ desde l0 a ¯ l. Como l0 fue elegido primero: el procedimiento asigna 1 a σ(¯ l) y remueve tanto l como ¯ l desde V . Por lo tanto: l no es elegido y σ(l) = 0, una contradicción. Para terminar la demostración, tenemos que mostrar que σ(ϕ) = 1. - Sea C = l1 ∨ l2 una cláusula en ϕ. Tenemos que demostrar que σ(C) = 1. 78 La complejidad de 2-CNF-SAT Como (l1 ∨ l2 ) es una cláusula en ϕ: (l¯1 , l2 ) es un arco en Gϕ . Para cada arco (l, l0 ) en Gϕ , el procedimiento: - asigna 0 a σ(l) y σ(l0 ) o - asigna 0 a σ(l) y 1 a σ(l0 ) o - asigna 1 a σ(l) y σ(l0 ). Por lo tanto: En los dos primeros casos σ(l1 ) = 1, y en el último caso σ(l2 ) = 1. En cualquiera de los tres casos, σ(l1 ∨ l2 ) = 1. 79 Cláusulas de Horn Notación: p es un literal positivo y ¬p es un literal negativo. Una cláusula C es de Horn si C contiene a lo más un literal positivo. Ejemplos: p ∨ ¬q ∨ ¬r, p, ¬q ∨ ¬r, ¬q. ¿Por qué son interesantes las cláusulas de Horn? 80 Conocimiento definitivo Una fórmula (p ∧ q) → r expresa conocimiento definitivo: - Si sabemos que p y q son verdaderos, entonces también sabemos que r es verdadero. En cambio, una fórmula (p ∧ q) → (r ∨ s) no expresa conocimiento definitivo: - Si sabemos que p y q son verdaderos, no podemos concluir que r es verdadero ni tampoco podemos concluir que s es verdadero, sólo podemos concluir que alguno de los dos es verdadero. - Esta fórmula expresa conocimiento disyuntivo. 81 Conocimiento definitivo La cláusulas de Horn corresponden al siguiente tipo de reglas que expresan conocimiento definitivo: - q. - ¬q. - (p1 ∧ · · · ∧ pn ) → q. - (p1 ∧ · · · ∧ pn ) → ¬q. En muchos casos es posible modelar el dominio de aplicación usando sólo este tipo de reglas. 82 La complejidad de HORN-SAT Sea HORN-SAT = {ϕ | ϕ es una conjunción de cláusulas de Horn y ϕ es satisfacible}. Teorema: HORN-SAT puede ser solucionado eficientemente. Ejercicio: Demuestre el teorema. 83 La complejidad de NEG-HORN-SAT C es una cláusula de Horn negativa si C contiene a lo más un literal negativo. Sea NEG-HORN-SAT = {ϕ | ϕ es una conjunción de cláusulas de Horn negativas y ϕ es satisfacible}. Ejercicio: Demuestre que NEG-HORN-SAT puede ser solucionado eficientemente. 84