MA50B Reducciones 9 de junio 2008 Ejercicio 1 Mostrar que 2 − SAT ∈ P. Solución: Una instancia de 2 − SAT es una instancia de SAT donde las formulas estan en forma conjuntiva normal y donde cada clausula tiene dos literales. A partir de una instancia de 2 − SAT vamos a construir un grafo dirigido en tiempo polinomial. Luego este grafo podrá ser usado para decidir en tiempo polinomial si la formula es satisfacible o no. Sea I una instancia de 2 − SAT sobre las variables {x1 , x2 , ..., xn } entonces el grafo dirigido GI es tal que GI = (V, E) donde: − − − V = {x1 , x1 , x2 , x2 , ..., xn , xn } − E = {(xi , x j ) : si (xi ∨x j ) = (xi → x j ) es una clausula de I )} − Lemma 1. I es satisfacible si y solo si no existe niguna variable xi tal que GI contenga un camino de xi a xi y un − camino de xi a xi . Demostración: (⇒) Mostremos que si existe un camino xi − facible. Si tenemos xi − xi y xi − − xi y un camino de xi xi entonces I no es satis- xi entonces hay dos casos: • xi = T luego en el camino xi satisface I. − xi va a aparecer una arista con T → F, lo que da una asignación que no − − • xi = F entonces xi = T , luego en el camino xi a F. xi existe una arista del tipo T → F forzando I a estar evaluada En los dos casos I no se puede satisfacer. − − (⇐) Mostremos que si no existe ninguna variable xi tal que xi xi y xi asignación de variables que satisface I. Necesitamos dar unas definiciones y resultados de teorı́a de grafos: xi entonces se puede construir una Definición 2. Sea G = (V, E) un grafo dirigido. Una componente fuertamente conexa de G es un conjunto C ⊆ V tal que ∀x, y ∈ C existe un camino de x a y. − − La condición “No existe ningun xi tal que G contiene un camino xi xi y otro camino xi xi ” se expresa de − manera equivalente como “∀i : xi y xi pertenecen a componentes fuertamente conexas distintas.” 1 Proposición 3. Sea G = (V, E) un grafo dirigido entonces el grafo G′ = (V ′ , E ′ ) donde V ′ son las componentes fuertamente conexas de G y para X 6= Y , (X,Y ) ∈ E ′ ⇔ existe en G una arista (u, v) donde u ∈ X y v ∈ Y , es un grafo aciclico. Demostración: Si G′ tiene solamente un vertice entonces es aciclico, pues por construcción no hay aristas que van de un punto a este mismo. Supongamos que |V ′ | > 0 y que G contiene un ciclo . Entonces sea U,V ∈ G′ distintos tal que existe un camino U V y un camino V U. Eso significa que para todas x, y ∈ U ∪V , existe un camino de x a y. Entonces V = U. Contradicción. Definición 4. Sea G = (V, E) un grafo dirigido aciclico, el orden topológico es una secuencia de todos los vertices tal que si (u, v) ∈ E entonces u aparece antes que v. Podemos observar que si un grafo tiene un ciclo entonces no existe ningun orden topológico. De vuelta a 2 − SAT . − − − − Si (a, b) ∈ GI entonces ( b , a) ∈ GI dado que a → b ⇔ b → a. Esto significa que si a y b estan en la misma − − componente fuertamente conexa entonces a y b también. − − Podemos agrupar las componentes fuertamente conexas en U, U donde los literales que aparecen en U son las − − negaciones de los que aparecen en U (xi ∈ U ⇔xi ∈U ). Vamos a tomar un orden topologico del grafo de las componentes fuertamente conexas de GI y poner las − variables que pertenecen a U con valor T si U aparece después de U y con valor F sino. Para mostrar que esa asignación satisface I basta mostrar que ninguna arista en GI (donde se hizo la asignación) es de la forma a → b con a = T y b = F. Mostremoslo por contradicción: sea U la primera componente que tiene un vertice y que es una extremidad de (v, w) donde v tiene valor T y w valor F. Notar que v o w no está en U pués todos los vertices de U recibieron el mismo valor. Por nuestra elección de U (primero) el vertice que no está en U esta en una componente que viene después de U en el orden topológico. Entonces v ∈ U. Sin embargo dado que v − − − tiene valor T significa U aparece antes que U y además (w, v) también es de la forma T → F. Esa arista tiene un − vertice en U lo que contradice nuestra elección de U. Eso termina la demostración del lemma. Finalmente resolver 2 − SAT se reduce polinomialmente a encontrar las componentes fuertamente conexas de un grafo. Esto se puede hacer en tiempo θ(|V | + |E|), ver [1]. Ejercicio 2 Mostrar que 3 −COLOR es NP-Completo. Solución: Definición 5. (3-COLOR) Instancia: G = (V, E). Respuesta: SI, si existe una asignación de tres colores a los vertices tal que ∀(u, v) ∈ E el color de u y el color v son distintos. 3 − COLOR es claramente NP-Completo pués con una asignación correcta de colores, se puede verificar en tiempo polinomial que el grafo es 3-coloriable. Mostremos que NAESAT ≤P 3 −COLOR. Definición 6. Una instancia de NAESAT es una instancia de 3 − SAT donde cada clausula es satisfacible con valores no todas iguales. (T ∨ T ∨ T prohibido). 2 − − Dada una instancia I = (a11 ∨ a12 ∨ a13 ) ∧ ... ∧ (am1 ∨ am2 ∨ am3 ) con ai j ∈ {x1 , x1 , ..., xn , xn } de NAESAT construimos el grafo (no dirigido) GI = (V, E) siguiente: − − − V = {ν, x1 , x1 , x2 , x2 , ..., xn , xn , (1, a11 ), (1, a12 ), (1, a13 ), ..., (m, am1 ), (m, am2 ), (m, am3 )} y E es tal que: • ∀1 ≤ i ≤ n : (v, xi ) ∈ E. − • ∀1 ≤ i ≤ n : (xi , xi ) ∈ E. • ∀1 ≤ l ≤ m : ((l, al1 ), (l, al2 )), ((l, al2 ), (l, al3 )), ((l, al3 ), (l, al1 )) ∈ E. • ∀1 ≤ i ≤ m : (al1 , (l, al1 )), (al2 , (l, al2 )), (al3 , (l, al3 )) ∈ E. La idea es que se crea un triangulo para cada variable y un triangulo para cada clausula. Luego, los literales de los “triangulos variable” estan vinculados con los literales de los “triangulos clausula”. Ver figura 1. Esa construcción se puede hacer en tiempo polinomial. Mostremos que I ∈ NAESAT ⇔ GI es 3-coloriable. (⇐) Supongamos que GI es 3-coloriable y que los colores son 0, 1, 2. Sin perdida de generalidad podemos suponer que Color(ν) = 2. Luego necesariamente, los otros vertices tienen color 0 o 1. Consideremos los triangulos que corresponden a clausulas. Dado que se requiere tres colores para coloriar un triangulo, sean (i, x) y (i, y) los vertices con colores respectivos 0 y 1. Para cada uno de esos vertices asignar 1 si Color((i, x)) = 0 y 0 sino. Eso da una asignación de variables que satisface I (en cada clausula hay al menos un 1). Luego el tercer vertice tiene color 2. Dar al literal que le corresponde un valor consistente con el valor de su variable. Encontramos una asignación que satisface I. − (⇒) Si I ∈ NAESAT . Asignamos 2 al vertice ν, colores 0 y 1 a los vertices etiquetados xi y xi basados en los valores de la instancia I. Sean dos literales en la clausula j que no evaluados a 0 los dos (existen por definición − − de NAESAT). Si xi (xi ) es uno de ellos asignar como color el complemento booleano al vertice ( j, xi ) o ( j, xi ) del − color de xi (xi ). Hacer lo mismo para el otro literal. El tercer vertice del triangulo obtiene color 2. La asignación de color hace de GI un grafo 3-coloriable. Ejercicio 3 Mostrar que ENSEMBLE COMPUTAT ION es NP-Completo. Solución: Definición 7. (ENSEMBLE COMPUTATION) Instancia: una colección C de subconjuntos de un conjunto finito A y un entero positivo J. Respuesta: SI si existe una secuencia < z1 = x1 ∪ y1 , z2 = x2 ∪ y2 , ..., z j = x j ∪ y j > con j ≤ J donde cada xi o yi es de la forma {a} con a ∈ A o zk por algún k < i, y donde ∀i : xi ∩ yi = 0/ y tal que ∀c ∈ C, ∃i : 1 ≤ i ≤ j con zi = c. ENSEMBLE COMPUTAT ION ∈ NP pués se puede verificar en tiempo polinomial que la secuencia tiene las propiedades deseadas. Vamos a mostrar la reducción V ERT EX COV ER ≤P ENSEMBLE COMPUTAT ION. Definición 8. Un recubrimiento de vertices (Vertex Cover o VC) de tamaño K de un grafo no dirigido G = (V, E) es un subconjunto V ′ de K nodos de V tal que ∀(u, v) ∈ E : u ∈ V ′ o v ∈ V ′ . Definición 9. (VERTEX-COVER) Instancia: G = (V, E) un grafo no dirigido, K ≤ |V |. Respuesta: SI, si G posee un recubrimiento de vertices de tamaño K. Sea G = (V, E) y K ≤ |V | una instancia de VC. Entonces definemos: 3 − − − Figure 1: 3 − SAT ≤P 3 − COLOR: un grafo que corresponde a las clausulas c1 = {x1 , x2 , x3 } y c2 = {x1 , x2 , x3 } de una instancia de NAESAT . Hay un triangulo para cada variable, y un triangulo para cada clausula. • A = V ∪ {a0 } • C = {{a0 , u, v} : (u, v) ∈ E} • J = K + |E| Claramente A,C y J se pueden computar en tiempo polinomial. Lemma 10. G tiene un recubrimiento de vertices de tamaño a lo más K ⇔ la secuencia deseada de j ≤ J operaciones existe para C. Demostración: (⇒) Podemos suponer sin perdida de generalidad que el recubrimiento tiene tamaño K (al agregar un vertice a un recubrimiento el conjunto obtenido sigue siendo un recubrimiento). Sea V ′ el recubrimiento de tamaño K. Se nombran sus vertices v1 , v2 , ..., vK , y las aristas de E se enumeran e1 , e2 , ..., em con |E| = m. Dado que V ′ es un recubrimiento, cada e j tiene al menos un vertice de V ′ . Entonces e j se puede escribir e j = {u j , vr[ j] } donde 1 ≤ r[ j] ≤ K. La secuencia siguiente de tamaño K + |E| = J tiene las propiedades deseadas: < z1 = {a0 }∪{v1 }, z2 = {a0 }∪{v2 }, ..., zK = {a0 }∪{vK }, zK+1 = {u1 }∪zr[1] , zK+2 = {u2 }∪zr[2] , ..., zJ = {um }∪zr[m] > (⇐) Sea S =< z1 = x1 ∪ y1 , ..., z j = x j ∪ y j > una secuencia deseada de largo j ≤ J para una instancia de EC. Supongamos que S es la secuencia más corta para esa instancia. Aseveración 11. S puede no tener elementos de la forma zi = {u} ∪ {v} con u, v ∈ V . Demostración: Por contradicción. Sea zi ∈ S : zi = {u} ∪ {v} con u, v ∈ V dado que {u, v} ∈ / C y que S tiene tamaño minimo, {a0 , u, v} = {a0 } ∪ zi debe ocurrir luego en S. Sin embargo {u, v} es un subconjunto de C solamente (no se puede reusar para calcular otro elemento de la secuencia de largo minimo). Entonces podemos reemplazar zi = {u} ∪ {v} y {a0 , u, v} = {a0 } ∪ zi por zi = {a0 , u} y {a0 , u, v} = {v} ∪ {zi }. La secuencia que obtenemos es de mismo largo (minimal) y no tiene zi = {u} ∪ {v}. Entonces S solo tiene elementos de la forma zi = {a0 } ∪ {u} para u ∈ V o {a0 , u, v} = {v} ∪ zi para {u, v} ∈ E. 4 Dado que |C| = |E| y dado que cada elemento de C tiene tres elementos, S contiene exactamente |E| elementos de la forma {a0 , u, v} = {v} ∪ zi y exactamente j − |E| ≤ J − |E| = K elementos de la forma zi = {a0 } ∪ {u}. Entonces el conjunto V ′ = {u ∈ V : zi = {a0 } ∪ {u} es una operación de S } tiene a lo más K vertices de G y debe ser un recubrimiento: todos los {a0 , u, v} = {v} ∪ zi que representan una arista se construyen a partir de algún elemento de V ′ . Ejercicio 4 En el “problema de los matrimonios”, existen n hombres y n mujeres y una lista de posibles parejas. El problema consiste en saber si se puede formar n parejas que respetan las restricciones de la lista y de tal manera que cada persona reciba una pareja y una sola. Eso se puede formalizar de la manera siguiente: dados dos conjuntos X e Y disjuntos y de mismo tamaño n y M un subconjunto de X ×Y encontrar M ′ ⊆ M tal que cada elemento de X, y cada elemento de Y aparezca una y una sola vez en las componentes de M ′ . 3 − DIMENSIONAL MATCHING (3 − DM) es una generalización del problema de los matrimonios: dados tres conjuntos disjuntos W, X y Y , y M ⊆ X × Y × Z, encontrar M ′ ⊆ M un pareo tal que cada elementos de los respectivos conjuntos W, X y Y aparezca una y una sola vez en las triplas de M ′ . Mostrar que 3 − DM es NP-Completo. Solución: 3 − DM ∈ NP pués dado el conjunto M ′ ⊆ M se puede verificar en tiempo polinomial que M ′ es un pareo solución para W × X ×Y y M. Mostremos que 3−SAT ≤P 3−DM. Sea Φ una formula en forma 3 conjuntiva normal. Sea U = {u1 , u2 , ..., un } el conjunto de las variables y C = {c1 , c2 , ..., cm } el conjunto de las clausulas. Vamos a construir los conjuntos W, X e Y disjuntos y M ⊆ W × X ×Y tal que M contiene un pareo solución si y solo si Φ es satisfacible. El conjunto M va estar compuesto de tres partes: • Asignación (Verdadero / Falso) f Para cada variable ui se crean los conjuntos Ti = Tit ∪ Ti . − Tit = {( u i [ j], ai [ j], bi [ j]) : 1 ≤ j ≤ m} f T j = {(ui [ j], ai [ j + 1], bi [ j]) : 1 ≤ j ≤ m} ∪ {ui [m], ai [1], bi [m]} Los ai [ j] y bi [ j] son elementos “internos”, lo que quiere decir que no van a aparecer en ningun otro conjunto f que no sea Tit o Ti . La idea es que estos elementos van a tener que estar apareados y eso obliga a que el pareo solución tenga conjuntos solamente de la forma Tit (que corresponde a la asignación de 1 a una f variable ui ) o Ti (asignación de 0 a ui ). Esta construcción esta ilustrada en la figura 2. • Clausula Para cada clausula c j se crea el conjunto C j siguiente: − − C j = {(ui [ j], s1 [ j], s2 [ j]) : ui ∈ c j } ∪ {( u i [ j], s1 [ j], s2 [ j]) : u i ∈ c j } Nuevamente s1 [ j] y s2 [ j] son elementos internos que solamente aparecen en triplas de C j . Una solución − M ′ ⊆ M debera entonces contener exactamente una tripla de C j . Eso solo se puede hacer si ui [ j] (o u i [ j]) − para un literal ui ∈ c j ( u i ∈ c j ) no aparece en las triplas Ti ∩ M ′ . Eso ocurre si y solamente si la asignación de valores determinada por M ′ satisface c j . 5 Figure 2: Conjunto Ti donde m = 4. O (exclusivo) los conjuntos oscuros o los conjuntos claros deben ser escogidos en la solución. Eso equivale a escoger una asignación para la variable ui . 6 • Consistencia Hasta ahora M puede dejar algunos elementos no apareados. Se requiere completar M agregandole el conjunto G siguiente: − G = {(ui [ j], g1 [k], g2 [k]), ( u i [ j], g1 [k], g2 [k]) : 1 ≤ k ≤ m(n − 1), 1 ≤ i ≤ n, 1 ≤ j ≤ m} Cada par de elementos internos g1 [k], g2 [k] tiene que estar apareado de manera única con ui [ j] o (exclusivo) − u i [ j] que no aparece en ninguna tripla de M ′ −G. Hay exactamente m(n−1) de esos elementos no apareados. Siempre se puede escoger M ′ ∩ G para que todos los elementos esten apareados. En resumen tenemos: − W = {ui [ j], u i [ j] : 1 ≤ i ≤ n, 1 ≤ j ≤ m} X = A ∪ S1 ∪ G1 donde A = {ai [ j] : 1 ≤ i ≤ n, 1 ≤ j ≤ m} S1 = {s1 [ j] : 1 ≤ j ≤ m} G1 = {g1 [k] : 1 ≤ j ≤ m(n − 1) Y = B ∪ S2 ∪ G2 donde: B = {bi [ j] : 1 ≤ i ≤ n, 1 ≤ j ≤ m} S2 = {s2 [ j] : 1 ≤ j ≤ m} G2 = {g[ j] : 1 ≤ j ≤ m(n − 1)} y M = (∪ni=1 Ti ) ∪ (∪mj=1C j ) ∪ G Se puede verificar que construcción de W, X,Y y M desde Φ se puede hacer en tiempo polinomial. Mostremos que C es satisfacible si y solo si M contiene un pareo solución. (⇐) Sea M ′ un pareo solución para M. Hemos visto anteriormente que para cada variable ui , M ′ contiene f solamente elementos de Tit o (exclusivo) Ti . Luego cada tripla de C j debe estar apareada con un elemento que f no aparece en Tit o (exclusivo) Ti . Tomando ui = 1 si M ′ contiene triplas de Tit y ui = 0 sino, obtenemos una asignación que satisface Φ. (⇒) Consideremos una asignación de variable t : U → {0, 1} que satisface C. Construimos M ′ ⊆ M de la − manera siguiente: para cada clausula c j ∈ C sea z j ∈ {ui , u i : 1 ≤ i ≤ n} un literal que tiene valor 1 en la asignación y que pertenece a c j . Entonces definemos: f M ′ = (∪t(ui )=1 Tit ) ∪ (∪t(ui )=0 Ti ) ∪ (∪mj=1 {z j [ j], s1 [ j], s2 [ j]}) ∪ G′ − donde G′ se escoge de tal manera que los ui [ j] y u i [ j] que quedan esten apareados. M ′ es un pareo solución para M, pués aparea todos los elementos de W, X y Y sin que haya repetición de ellos en las triplas. Ejercicio 5 Consideremos el juego siguiente donde tenemos m tarjetas con k filas y 2 columnas. En cada posición puede haber un hueco o no. Cada tarjeta T se puede poner en dos posiciones “normal” o “al reves”. La meta del juego consiste en saber si se puede sobreponer las tarjetas en una caja escogiendo la posición para cada una, de manera que no se pueda ver el fondo de la caja (todos los huecos de cada tarjeta son tapados por alguna tarjeta). Notar que el orden de las tarjetas no importa. PUZZLE se define como el lenguaje formado por los conjuntos de tarjetas que pueden sobreponerse de manera a tapar todas las posiciones. Mostrar que PUZZLE es NP −Completo. 7 Solucion: PUZZLE ∈ NP dado que podemos diseñar una mT no determinista que adivina las posiciones de las tarjetas y luego verifica si cada posición esta tapada. Mostremos que 3 − SAT ≤P PUZZLE. Sea Φ una formula en forma 3 conjuntiva normal, y sea U = {x1 , ..., xn } el conjunto de variables y C = {c1 , ..., cm } el conjunto de clausulas. Para cada variable se va a construir una tarjeta de m filas. • Si la variable xi aparece en la clausa c j entonces la j-iesima lı́nea de la tarjeta tendra un hueco a la derecha, y la posición izquierda tapada. • Si el complemento de xi aparece en c j entonces la j-iesima lı́nea tendra un hueco a la izquierda, y la posición derecha tapada. • Las otras posiciones son solamente huecos. Además se agrega una tarjeta especial que tiene la columna izquierda con puros huecos y la columna derecha sin huecos. Esa construcción se puede hacer en tiempo polinomial, en función de n y m. Mostremos que Φ es satisfacible si y solo si PUZZLE tiene solución. (⇒) Si Φ es satisfacible entonces existe una asignación de variables que la satisface. Para cada variable xi de Φ si se asigna 1 a xi entonces se escoge la “posición normal” de la tarjeta, en el caso contrario se toma la posición “al reves”. La tarjeta especial se pone en “posición normal”. Esa manera de sobreponer las tarjetas tapa todas las posiciones. De lo contrario , existe una posición de la columna izquierda en la lı́nea j de la tarjeta especial sin tapar. Entonces significa que cada tarjeta variable aparece con un hueco a la izquierda en la posición j, lo que implica que la asignación de variables da una evaluación de c j a 0, y luego Φ = 0. (⇐) Si PUZZLE tiene solución entonces podemos suponer sin perdida de generalidad que la tarjeta especial es en “posición normal”. Luego cada posición de la columna izquierda de esa tarjeta es tapada por al menos una tarjeta variable xi . Si esa tarjeta es en posición normal se asigna el valor 1, sino 0. Para las variables que corresponden a las otras tarjetas se puede escoger una asignación arbitraria. Esa asignación satisface Φ dado que − para cada clausula c j existe al menos una variable cuyo literal xi o xi satisface c j . References [1] T OMAS H. C ORMEN , C HARLES E. L EISERSON , RONALD L. R IVEST Introduction to Algorithms 8