Está en la página 1de 27

Reduccin de 3-SAT a 3DM

Para demostrar que 3-Dimensional Matching es NP-completo podemos hacer la siguiente reduccin: 3SAT p 3DM

3-SAT
Las entradas del problema 3-SAT son los conjuntos: U = { u1, u2,, un} C = { c1, c2,, cm}

Donde U contiene todas las variables, y C contiene las clusulas formadas por 3 variables de U.
El objetivo es encontrar una asignacin de valores de verdad a cada variable en U, tal que todas las clusulas en C se satisfagan.

3DM
Las entradas del problema 3DM son los conjuntos: W, X, Y Donde |W| = |X| = |Y|. El objetivo es encontrar un matching de tamao |X| entre los 3 conjuntos. Un matching es una asignacin de tros (x,y,z), donde w , , , tal que ningn elemento de X, Y y Z aparezca en ms de un tro.

Reduccin
Tenemos que construir los conjuntos: W, X, Y con |W| = |X| = |Y|, y un conjunto M W X Y Tal que M M (donde M es una solucin a 3DM) sea un matching si y solo si C es satisfactible.

Idea general
M es un conjunto de tros, donde cada elemento pertenece a W X Y. Particionaremos M en 3 grupos: truth-setting and fan out satisfaction testing garbage collection

A continuacin veremos cmo formar cada uno de estos grupos.

truth-setting and fan out


Para cada elemento de U (de 3-SAT) formaremos 2m (m es el nmero de clusulas) tros en M. Denotaremos como Ti al conjunto de tros en truth-setting and fan out de la variable ui: Ti = Tit Tif Donde: Tit = { (i[j], ai[j], bi[j]) : 1 j m }
Tif = { (ui[j], ai[j+1], bi[j]) : 1 j m } { (ui[j], ai[1], bi[m])}

Dado que los elementos { (ai[j], bi[j]) : 1 j m } no aparecern en algn otro tro fuera de Ti , podemos observar que cualquier matching M deber contener m tros de Ti, ya sea todos los de Tit o todos los de Tif . De modo que podemos visualizar cada componente Ti como la encargada de determinar el valor de verdad de la variable ui . Siendo ui TRUE cuando M Ti = Tit.

Para m=2, cada componente Ti se vera de la siguiente forma:


u[1] a[2] b[1]

*2+

*1+ a[1]

b[2]

u[2]

Y claramente slo podramos elegir los tros de Tif (tringulos sombreados) o los de Tit (tringulos sin sombrear).

satisfaction testing
Cada componente del grupo satisfaction testing corresponder a una clusula cj C. El conjunto de tros que conforman cada componente es: Cj = { (ui[j], s1[j], s2[j]) : ui cj } { (i[j], s1[j], s2[j]) : ui cj } De modo que cualquier matching M M deber contener slo un tro de Cj. Esto slo ser posible si alguna ui[j] (o i[j]) para una variable ui cj (i cj) no aparece en los tros de M Ti , lo cual slo suceder cuando la asignacin de valores de verdad determinada por M satisfaga las clusula cj.

garbage collection
Ser el conjunto de tros que nos permitir completar el matching. Consta de una sola componente G: G={(ui[j], g1[k], g2[k]), (i[j], g1[k], g2[k]) : 1 k m(n-1), 1 i n, 1 j m }

Conjuntos W, X, Y
Los conjuntos W X y Y estarn formados de la siguiente manera: W = {(u1[j], 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[j] : 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 = {g2[j] : 1 j m(n-1)}

Conjunto M
El conjunto de tros lo formaremos de la siguiente manera: M=
=1

=1

Claramente todo tro en M es un elemento de W X Y . Adems M contiene 2 + 3 + 22 ( 1) tros y puede construirse en tiempo polinomial.

Ejemplo
Para la instancia de 3-SAT: U = {u1, u2} C = { (u1, u2, u2), (1, 2, u1) } Construiramos la siguiente instancia de 3DM:

U = {u1, u2} 2 clusulas


u1[1] a1[2] b1[1] 2[2] a2[1] a2[2] u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2]

b1[2]

u1[2]

u2[2]

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2]

2 clusulas
b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

clusula 1 c1 = (u1, u2, u2)

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

clusula 1 c1 = (u1, u2, u2)

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

clusula 2 c2 = (1, 2, u1)

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

clusula 2 c2 = (1, 2, u1)

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

clusula 2 c2 = (1, 2, u1)

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

u2[2]

g1[1]

g2[1]

g1[2]

g2[2]

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

a las 4 i[j] y las 4 ui[j]

u2[2]

g1[1]

g2[1]

g1[2]

g2[2]

s1[1]

s2[1]

s1[2]

s2[2]

u1[1] a1[2] b1[1] 2[2] a2[2]

u2[1] b2[1]

1[2] a1[1]

1[1]

2[1] b2[2] a2[1]

b1[2]

u1[2]

a las 4 i[j] y las 4 ui[j]

a las 4 i[j] y las 4 ui[j]

u2[2]

g1[1]

g2[1]

g1[2]

g2[2]

Es (relativamente) fcil notar que si M tiene un matching, entonces C es satisfactible. Ya que si en M no existe un matching, entonces.. Pendiente este cacho

Notamos que de T1t T1f T2t T2f slo podemos elegir Tit o Tif , pero nunca ambos, pues de lo contrario M no sera un matching.
Para nuestro ejemplo significa que de =1 , cuya cardinalidad es 8, slo podemos elegir 4 tros.

Por el mismo motivo slo podemos formar m tros de , siendo para nuestro ejemplo m=2. =1 para completar los 8 tros del matching (ntese que la cardinalidad de W, X y Y es 8) tendremos que elegir ahora 2 tros de G. Siendo que de G slo seremos capaces siempre de elegir slo m(n-1) tros (2*(2-1) = 2).

Si existe una asignacin de valores de verdad que satisface C entonces M contiene un matching.

Demostracin: Sea : *, + una asignacin de valores de verdad que satisface C. Construiremos un matching de la siguiente manera: Por cada clusula , sea , 1 una variable cuya valor de verdad asignado por es TRUE (al menos debe existir una dado que satisface ). Entonces construimos M de la siguiente manera:

=
=


=1

, 1 , 2

Donde incluye todas las g1[k], g2[k], y todas las ui[j] y i[j] restantes.

Por lo tanto

3-DM es NP-Completo

También podría gustarte