Observaci´on 6.5 En la pr´actica, es bueno conocer un conjunto variado de problemas NP- completos. Eso ayudar´a a intuir que un problema dado es NP-completo, y tambi´en qu´e problema NP-completo conocido se puede reducir a ´el, para probar la NP-completitud. Si un problema es NP-completo, en la pr´actica no es esperable resolverlo eficientemente, por lo que se deber´a recurrir a algoritmos aproximados, probabil´ısticos, o meras heur´ısticas para tratarlo.
6.4
SAT es NP-completo
[AHU74, sec 10.4]Lo que hemos visto nos entrega herramientas para mostrar que un problema es NP- completo mediante reducir a ´el otro problema que ya sabemos que es NP-completo. Pero, ¿c´omo obtenemos el primer problema NP-completo? No es f´acil, pues debemos demostrar que cualquier problema NP reduce a ´el.
El lenguaje que elegiremos como nuestro primer problema NP-completo se llama sat. Definici´on 6.9 El lenguajesates el de las f´ormulas proposicionales satisfactibles, es decir,
aquellas que es posible hacer verdaderas con alguna asignaci´on de valor de verdad a sus variables. Permitiremos los par´entesis, la disyunci´on ∨, la conjunci´on ∧, y la negaci´on ∼. Los nombres de las variables proposicionales ser´an cadenas sobre alg´un alfabeto de letras, aunque por simplicidad pensaremos en letras individuales (no har´a diferencia). Llamaremos
literales a variables o variables negadas, conjunciones a f´ormulas de la forma P1∧. . .∧Pq
y disyunciones a f´ormulas de la forma P1∨. . .∨Pq.
Observaci´on 6.6 Si una f´ormula P tiene una cantidad peque˜na k de variables proposicionales distintas, se puede probar una a una las 2k combinaciones de valores de
verdad y ver si alguna combinaci´on hace P verdadera. El problema es que k puede ser cercano al largo de P, con lo cual este m´etodo toma tiempo exponencial en el largo de la entrada.
Ejemplo 6.4 Considere la f´ormula
(p ∨ ∼q ∨ r) ∧ (∼p ∨ q ∨ ∼r) ∧ (∼p ∨ ∼q ∨ r) ∧ (p ∨ ∼q ∨ ∼r)
∧ (∼p∨ ∼q ∨ ∼r) ∧ (p ∨ q ∨ r)
¿Es satisfactible? Toma algo de trabajo, pero s´ı lo es, con las asignaciones p= 0, q= 0 y r= 1, o
p= 1,q = 0 yr= 0 (estamos escribiendo 1 para verdadero y 0 para falso).
Para mostrar que sat es NP-completo, debemos comenzar mostrando que sat ∈ N P. Esto es evidente: Una MTND puede adivinar los valores a asignar a las variables y luego evaluar la f´ormula en tiempo polinomial.
La parte compleja es mostrar que todo L ∈ N P reduce a sat. La idea esencial es que, si L ∈ N P, entonces existe una MTND M = (K,Σ,∆, s) que se detiene en tiempo p(|w|)
o menos sii w ∈L, donde p(n) es un polinomio. A partir de M, w y p, construiremos una f´ormula proposicional P que ser´a satisfactible sii M se detiene frente a w en a lo sumo p(n) pasos. Esta construcci´on fM,p(w) = P ser´a nuestra funci´on f, por lo que debemos cuidar que P tenga largo polinomial en |w| y que se pueda escribir en tiempo polinomial.
La f´ormula P debe expresar todo el funcionamiento de una MTND, incluyendo afirmaciones que nosotros mismos hemos obviado por ser intuitivas. Comenzaremos con un par de simplificaciones y observaciones para lo que sigue.
• Como la MTND arranca en la configuraci´on (s,#w#), enp(|w|) pasos s´olo puede llegar a la celda n´umerop′(w) = |w|+ 2 +p(|w|), el cual tambi´en es un polinomio en|w|.
• Modificaremos la MTNDM para que, si llega al estadoh en un paso anterior ap(|w|), se mantenga en ese estado de ah´ı en adelante. De este modo w ∈ L sii M est´a en el estado h en el paso p(|w|). No es dif´ıcil de hacer esta modificaci´on: basta agregar las reglas (h, a, h, a) a ∆, para todoa∈Σ (notar que esto no est´a realmente permitido en el formalismo, pero lo podemos hacer).
Utilizaremos las siguientes variables proposicionales en P. De ahora en adelante llamaremos n=|w|, y renombraremos Σ = {1, 2, . . . , |Σ|} y K ={1, 2, . . . , |K|}.
• C(i, j, t), para cada 1≤i≤p′(n), 1≤j ≤ |Σ|, 0≤t≤p(n), se interpretar´a como que
en la celda i, en el pasot, est´a el car´acter j.
• H(i, t), para cada 1≤i≤p′(n), 0≤t≤p(n), se interpretar´a como que el cabezal est´a
en la celda i en el paso t.
• S(k, t), para cada 1≤k≤ |K|, 0≤t≤p(n), se interpretar´a como que la MTND est´a en el estado k en el paso t.
La cantidad de variables proposicionales esO(p′(n)2) (puesKy Σ son constantes, siempre
nos referimos al largo de w). Como tenemos que usar un alfabeto fijo para los nombres de variables, realmente los largos que reportamos a continuaci´on deben multiplicarse por algo del tipo logp′(n) =O(logn), lo cual no afecta su polinomialidad.
La f´ormula P tiene siete partes:
P = A ∧ B ∧ C ∧ D ∧ E ∧ F ∧ G
cada una de las cuales fija un aspecto de la computaci´on:
A: El cabezal est´a exactamente en un lugar en cada paso de una computaci´on.
A = ^
0≤t≤p(n)
6.4. SAT ES NP-COMPLETO 145
Hemos usado la notaci´on U para indicar que uno y s´olo uno de los argumentos debe ser verdadero, es decir,
U(x1, x2, . . . , xr) = _ 1≤m≤r xm ! ∧ ^ 1≤m<m′≤r ∼(xm∧xm′) ! .
Como el largo de U es O(r2), el largo deA esO(p′(n)3).
B: Cada celda contiene exactamente un s´ımbolo en cada paso de una computaci´on.
B = ^
1≤i≤p′(n)
0≤t≤p(n)
U(C(i,1, t), C(i,2, t), . . . , C(i,|Σ|, t)),
cuyo largo es O(p′(n)2).
C: La MTND est´a exactamente en un estado en cada paso de una computaci´on.
C = ^
0≤t≤p(n)
U(S(1, t), S(2, t), . . . , S(|K|, t)),
cuyo largo es O(p′(n)).
D: La ´unica celda que puede cambiar entre un paso y el siguiente es aquella donde est´a el cabezal. D = ^ 1≤i≤p′(n) 1≤j≤|Σ| 0≤t<p(n) (H(i, t) ∨ (C(i, j, t)≡C(i, j, t+ 1)),
donde hemos abreviado x ≡y para decir (x ∧ y) ∨ (∼ x ∧ ∼ y). El largo de D es
O(p′(n)2).
E: Reci´en aqu´ı empezamos a considerar la M espec´ıfica, pues lo anterior es general para toda MT. En E se especifica lo que ocurre con la posici´on del cabezal y el contenido de la cinta en esa posici´on en el siguiente instante de tiempo, seg´un las opciones que d´e el ∆ de M. E = ^ 1≤i≤p′(n) 1≤j≤|Σ| 1≤k≤|K| 0≤t<p(n) (C(i, j, t) ∧ H(i, t) ∧ S(k, t)) =⇒ W (k,j,kℓ,bℓ)∈∆(C(i, jℓ, t+ 1) ∧ H(iℓ, t+ 1) ∧ S(kℓ, t+ 1)),
• Sibℓ ∈Σ, iℓ =i y jℓ =bℓ.
• Sibℓ =, iℓ =i−1 y jℓ =j Esta regla se agrega s´olo sii >1.
• Sibℓ =, iℓ =i+ 1 y jℓ =j.
El tama˜no de E es O(p′(n)2). N´otese c´omo aparece el no determinismo aqu´ı. Dada
una P que afirma algo para cierto t, para el tiempo t+ 1 vale la disyunci´on de varias posibilidades, seg´un la MTND.
F: Establece las condiciones en que comienza la computaci´on.
F = S(s,0)∧H(n+2,0)∧C(1,#,0)∧ ^ 2≤i≤n+1 C(i, wi−1,0)∧ ^ n+1<i≤p′(n) C(i,#,0),
donde recordemos que s, # y los wi son todos n´umeros.
G: Establece, finalmente, que M est´a en el estado h en el instante p(n).
G = S(h, p(n)).
Teorema 6.1 sat es NP-completo.
Prueba: Vimos que sat ∈ N P. Luego, mostramos c´omo reducir polinomialmente cualquier
L ∈ N P a sat: Describimos la construcci´on de una f´ormula proposicional P =fM,p(w) que dice
que existe una computaci´on deM que empieza en la configuraci´on (s,#w#) y llega al estadoh en el paso p(n). Es posible hacer verdadera P (es decir, P ∈sat) siiM acepta w (es decir, w∈L). Asignar los valores de las variables proposicionales C(i, j, t), H(i, t) y S(k, t) equivale a decir qu´e computaci´on elegiremos que sea v´alida y termine en el estadoh. Si|w|=n,|P|=O(p′(n)3logn), es decir polinomial en |w|, y puede construirse f´acilmente en tiempo polinomial. 2
Observaci´on 6.7 Esto significa que, si hall´aramos un m´etodo determin´ıstico de tiempo polinomial para resolver sat, inmediatamente podr´ıamos resolver en tiempo polinomial cualquier problema en N P. Basta construir una MTND M que lo resuelva, hallar el polinomiop(n)que acota el tiempo en que operar´a, construir laP correspondiente a partir de
M, p y la cadenaw que nos interesa saber si est´a en L, y finalmente determinar en tiempo polinomial si P es satisfactible.
Definici´on 6.10 Una f´ormula proposicional est´a en forma normal conjuntiva (FNC) si es una conjunci´on de disyunciones de literales. sat-fnc es el lenguaje de las f´ormulas
satisfactibles que est´an en forma normal conjuntiva. Lema 6.9 sat-fnc es NP-completo.
Prueba: Determinar si una f´ormula est´a en FNC es simple, de modo que el verdadero problema es saber si es satisfactible. Ya sabemos que sat es NP-completo, pero podr´ıa ser que este caso particular fuera m´as f´acil. No lo es. La f´ormulaP que se construye parasatest´a pr´acticamente en FNC, s´olo hay que redistribuir algunas f´ormulas de tama˜no constante enDyE. Por ejemplo, enD, debemos convertirx∨(y≡z), es decir,x∨(y∧z)∨(∼y∧ ∼z), en (x∨y∨ ∼z)∧(x∨ ∼y∨z). En el caso deE la f´ormula tambi´en es de largo constante (independiente den). 2