Problemas NP-completos y reducciones William Cruz-Santos y Guillermo Morales-Luna Departamento de Computación, Cinvestav-IPN, Ciudad de México, feb 2011 Abstract. Mostramos ejemplos de funciones de energı́a para los problemas de decisión 3-SAT, Caminos Hamiltonianos en gráficas y 3DM (3-Dimensional Matching). 1 Introducción En la computación cuántica se ha propuesto la evolución adiabática para resolver problemas difı́ciles, donde se hace uso del teorema adiabático [2, ?] definiendo dos operadores hamiltonianos. Para un problema difı́cil en particular, el primer operador hamiltoniano HB se construye de tal forma que sea fácil encontrar sus estados de menor energı́a (éstos son los eigenvectores con eigenvalores de menor valor absoluto, a los cuales llamaremos estados base) y el segundo operador hamiltoniano HP codifica el problema y sus estados base representan una solución (a este último lo llamaremos el hamiltoniano del problema). Dados los operadores hamiltonianos HB y HP se define una interpolación de la forma H(t) = (1 − t/T )HB + (t/T )HP donde T es el tiempo total de integración y t ∈ (0, T ). Como lo establece el teorema adiabático, si el tiempo total de integración T es lo suficientemente grande y el paso de integración t es pequeño entonces el estado final es una aproximación a los estados base del hamiltoniano del problema. En [1] se propone una solución al problema 3-SAT usando la computación adiabática en términos de un problema de optimización. En este manuscrito consideramos el planteamiento de tres problemas de decisión y sus versiones de optimización: 3-SAT, Caminos Hamiltonianos y 3DM (3 Dimensional Matching). 2 El problema de satisfactibilidad 3-SAT Sea X = (Xj )n−1 j=0 un conjunto de variables booleanas. Una literal tiene la forma X δ con X ∈ X , δ ∈ {0, 1} donde X 1 = X y X 0 = ¬X. Una cláusula es una disyunción de literales y una forma conjuntiva (FC) es una conjunción de cláusulas. Una asignación es un punto ε = (εj )nj=1 ∈ {0, 1}n . Una asignación satisface a la literal Xjδ si y sólo si εj = δ, también satisface una cláusula si satisface al menos una literal y finalmente satisface a una FC si satisface a todas las cláusulas. Una m-cláusula es una cláusula con exactamente m literales y una m-FC es una FC con m-cláusulas. El problema de satisfactibilidad SAT consiste en decidir si dada una m-FC (en general se trata de una FC, pero toda FC se puede convertir a una mFC) tiene una asignación que la satisface. Un caso particular es cuando m = 3, llamado 3-SAT; ambos problemas son completos en NP. Para cualquier 3-cláusula C sea hC : {0, 1}m → R tal que ε satisface a C =⇒ hC (ε) = 0, (1) ε no satisface a C =⇒ hC (ε) = 1. m−1 m−1 Y para cualquier m-FC φ = (Ci )i=0 sea hφ : {0, 1}m → R como hφ = Σi=0 hCi . Claramente ∀ε ∈ {0, 1}m : [hφ (ε) = 0 ⇐⇒ ε satisface a φ] (2) De esta forma encontrar el mı́nimo valor de hφ = 0 significa encontrar una asignación ε tal que φ se satisface. 3 El problema de los caminos hamiltonianos Consideremos una gráfica G = (V, A) donde V es un conjunto finito de vértices y A ⊆ V × V es un conjunto de aristas. Para |V | = n (| · | es la cardinalidad del conjunto), sea Sn el conjunto de permutaciones de n vértices donde |Sn | = n!. Dada s ∈ Sn , si es el ı́ndice del i-ésimo vértice en la permutación con 1 ≤ i ≤ n. Un Camino Hamiltoniano (CH) es una permutación s ∈ Sn tal que para cualquier par de ı́ndices consecutivos si y sj con j = i + 1 y vértices vsi , vsj ∈ V se cumple que (vsi , vsj ) ∈ A. Por ejemplo, la figura 1 muestra una gráfica con: Fig. 1. Diagrama de una gráfica. V = {q1 , q2 , q3 , q4 , q5 , q6 } y A = {(q2 , q1 ), (q1 , q3 ), (q4 , q2 ), (q2 , q3 ), (q3 , q4 ), (q5 , q3 ), (q4 , q5 ), (q4 , q6 ), (q6 , q5 ), (q2 , q6 )}. donde existen dos caminos hamiltonianos que son: ch1 = q1 q3 q4 q6 q5 , ch2 = q5 q3 q4 q2 q1 . Ahora, sea (AdjG )i,j=1,...,n la matriz de adyacencia de G tal que AdjG (i, j) = 1 si aparece la arista (vi , vj ) ∈ A y AdjG (i, j) = 0 de otro modo. Por ejemplo, la matriz de adyacencia de la gráfica en la figura 1 es: 001000 1 0 1 0 0 1 0 0 0 1 0 0 AdjG = 0 1 0 0 1 1. 0 0 1 0 1 0 000010 Dada una gráfica G = (V, A) con |V | = n. Si AdjG es la matriz de adyacencia de G y para cualquier permutación s ∈ Sn sea: TG : Sn −→ R TG : s 7−→ n−1 X (3) AdjG (sj , sj+1 ). j=1 Es fácil verificar que: ∀s ∈ Sn : [TG (s) = n − 1 ⇐⇒ s es un CH ] (4) También se tiene que: ∀s ∈ Sn : [TG (s) = n ⇐⇒ s es un Ciclo Hamiltoniano ] (5) Observamos que si TG = n − 1 para alguna permutación s entonces se trata de un camino hamiltoniano, de otra forma TG < n − 1. 4 El problema 3DM (3 Dimensional Matching) Una instancia del problema 3DM es un conjunto M ⊆ W × X × Y donde W, X y Y son conjuntos disjuntos con el mismo número de elementos, esto es |W | = |X| = |Y | = n. Se pregunta si M contiene un subconjunto M 0 ⊆ M tal que |M 0 | = n y para cualquier pareja de elementos en M 0 no coinciden en alguna coordenada (decimos que hay una correspondencia tridimensional). Por ejemplo, considere los siguientes conjuntos W = {w1 , w2 , w3 }, X = {x1 , x2 , x3 }, Y = {y1 , y2 , y3 }; y un subconjunto M ⊂ W × X × Y dado por: M = {(w1 , x1 , y1 ), (w1 , x2 , y1 ), (w1 , x3 , y1 ), (w2 , x1 , y2 ), (w2 , x2 , y2 ), (w2 , x3 , y2 ), (w3 , x1 , y3 ), (w3 , x2 , y3 ), (w3 , x3 , y3 )}. Una correspondencia tridimensional en M es M 0 = {(w1 , x2 , y1 ), (w2 , x1 , y2 ), (w3 , x3 , y3 )}. Para ver al problema 3DM en términos de optimización consideremos lo siguiente. Para cualquier conjunto C = {ci |i ∈ IC } donde IC = [[0, |C| − 1]], sea indC : C → IC como indC : ci 7→ i. Para una instancia del problema 3DM M ⊆ W × X × Y y cualquier subconjunto M 0 ⊂ M con |M 0 | = n dado por: M 0 = {(wi1 , xj1 , yk1 ), . . . , (win , xjn , ykn )} (6) donde wiδ ∈ W, xjδ ∈ X, ykδ ∈ Y para los ı́ndices iδ ∈ IW , jδ ∈ IX , kδ ∈ IY con δ = 1, . . . , n. En general, para cualquier conjunto C y elementos ciδ ∈ C con ı́ndices iδ ∈ IC donde δ = 0, . . . , n, sea: SC : IC −→ R SC : i 7−→ n−1 X (7) (indC (ciδ ) == i) δ=0 aquı́ (a == b) es una operación binaria que nos da 1 si a es igual a b y 0 de otro modo. SC cuenta el número de elementos ciδ con ı́ndices iδ iguales a i. Consideremos la suma total T SC para todo ı́ndice i ∈ IC como: T SC = n−1 X FS (SC (iν )) (8) 1 si s > 0 0 de otro modo (9) ν=0 donde FS (s) = Finalmente de (6) sea TM 0 = T SW + T SX + T SY entonces: ∀M 0 ⊆ M, |M 0 | = n : [TM 0 = 9 ⇐⇒ M 0 es una correspondencia tridimensional en M ] (10) observamos que si TM 0 = 9 entonces M 0 es una correspondencia tridimensional en M , de otro modo TM 0 < 9. 5 Operadores hamiltonianos para los CH’s Por la completitud del problema de los caminos hamiltonianos existe un procedimiento de complejidad polinomial en tiempo, que traduce una instancia de CH a una instancia de SAT. De esta forma dada una gráfica G, existen un predicado P que se satisface si y sólo si, G contiene un CH. El procedimiento de traducción es el siguiente: Dada una gráfica G = (V, A) con |V | = n. Sea P (G) una expresión booleana tal que se satisface si y sólo si G contiene un CH. P (G) consta de n2 variables booleanas (Xij )ni,j=1 donde cada Xij representa que el vértice j es el i-ésimo vértices en el CH (permutación). Representamos a P en forma conjuntiva con cláusulas de la siguiente forma. 1. Para cada vértice vj ∈ G consideramos la siguiente cláusula: 1 1 1 (X1j ∨ X2j ∨ · · · ∨ Xnj ) (11) 2. Cada vértice vj debe aparecer una sola vez en el CH, es decir, no puede aparecer en la i-ésima ni en la k-ésima posición del CH, esto lo expresamos con la siguiente cláusula: 0 0 (Xij ∨ Xkj ) (12) con i 6= k. 3. De igual forma, para cada vértice vi ∈ G consideramos la siguiente cláusula: 1 1 1 (Xi1 ∨ Xi2 ∨ · · · ∨ Xin ) (13) 4. Cada vértice vi debe aparecer una sola vez en el CH, es decir, no puede aparecer en la j-ésima ni en la k-ésima posición del CH, esto lo expresamos con la siguiente cláusula: 0 0 (Xij ∨ Xik ) (14) con j 6= k. 5. Si (vi , vj ) ∈ / A entonces el vértice vj no puede venir después del vértice vi en el CH. Es decir, para cada par (vi , vj ) tal que AdjG (i, j) = 0 consideramos la siguiente cláusula (donde AdjG es la matriz de adyacencia de G): 0 0 (Xki ∨ Xk+1,j ) (15) para k = 1, . . . , n − 1. 6. Finalmente, la expresión booleana en FC P es la conjunción de las cláusulas descritas en (11),(12),(13),(14) y (15). En [4] se puede ver la demostración de que el procedimiento anterior construye una expresión booleana P (G) tal que se satisface si y sólo si, G contiene un CH. Ahora, necesitamos transformar la instancia P (G) de SAT a una instancia de 3-SAT para construir los operadores hamiltonianos descritos en la sección anterior. Emplearemos la reducción propuesta en [3] para convertir una instancia de SAT P a una instancia φ de 3-SAT. Dada una instancia de SAT P descrita por las cláusulas C = {C1 , C2 , . . . , Cm } sobre un conjunto de variables booleanas X = {X1 , X2 , . . . , Xn }. Construiremos un nuevo conjunto de cláusulas C 0 con exactamente tres literales cada una, para llevar a cabo esto, es necesario introducir nuevas variables booleanas al conjunto X y que depende del número de cláusulas en C y el número de literales por cláusula. El procedimiento de reducción convierte cada cláusula Ci ∈ C en un subconjunto de cláusulas según el número k de literales que contenga: δ 1. Si k = 1, Ci = (Xj1 ). Introducimos 2 nuevas variables booleanas {Yi,1 , Yi,2 } y formamos las nuevas cláusulas: δ 1 1 δ 1 0 δ 0 1 δ 0 0 {(Xj1 ∨Yi,1 ∨Yi,2 ), (Xj1 ∨Yi,1 ∨Yi,2 ), (Xj1 ∨Yi,1 ∨Yi,2 ), (Xj1 ∨Yi,1 ∨Yi,2 )} (16) δ2 δ1 ). Introducimos una nueva variable {Yi,1 } y ∨ Xj2 2. Si k = 2, Ci = (Xj1 formamos las nuevas cláusulas: δ2 δ1 δ2 δ1 0 1 ∨ Yi,1 )} ∨ Xj2 ∨ Yi,1 ), (Xj1 ∨ Xj2 {(Xj1 (17) δ3 δ2 δ1 ). En este caso se conserva la misma cláusula ∨ Xi3 ∨ Xi2 3. Si k = 3, Ci = (Xi1 Ci . δ3 δ2 δ1 )} (18) ∨ Xi3 ∨ Xi2 {(Xi1 δk δ2 δ1 ∨, . . . , ∨Xjk ). Introducimos las nuevas variables ∨ Xj2 4. Si k > 3, Ci = (Xj1 {Yi,1 , Yi,2 , . . . , Yi,k−3 } y formamos las nuevas cláusulas: δ4 δ3 δ2 δ1 1 1 0 1 0 ∨ Yi,3 ), . . . , ∨ Yi,2 ), (Yi,2 ∨ Xj4 ∨ Yi,1 ), (Yi,1 ∨ Xj3 ∨ Xj2 {(Xj1 0 (Yi,k−4 ∨ δk−2 Xjk−2 ∨ 1 0 Yi,k−3 ), (Yi,k−3 ∨ δk−1 Xjk−1 ∨ (19) δk Xjk )} Finalmente el conjunto de cláusulas C 0 es la unión de los subconjuntos dados en (16), (17), (18) y (19). Y la instancia φ de 3-SAT es la conjunción de las cláusulas en C 0 . 5.1 Ejemplo de reducción Consideremos un ejemplo de la reducción de CH a SAT y de SAT a 3-SAT. Dada la siguiente matriz de adyacencia de la gráfica G como: 001 AdjG = 0 0 0 . 010 La reducción de CH a SAT introduce el conjunto de variables booleanas X = (Xij )3i,j=1 y la expresión booleana P (G) es la siguiente 1 : (X11 ∨ X41 ∨ X71 ) ∧ (X21 ∨ X51 ∨ X81 ) ∧ (X31 ∨ X61 ∨ X91 ) ∧ (X11 ∨ X21 ∨ X31 ) ∧ (X41 ∨ X51 ∨ X61 ) ∧ (X71 ∨ X81 ∨ X91 ) ∧ (X10 ∨ X40 ) ∧ (X10 ∨ X70 ) ∧ (X20 ∨ X50 ) ∧ (X20 ∨ X80 ) ∧ (X30 ∨ X60 ) ∧ (X30 ∨ X90 ) ∧ (X40 ∨ X70 ) ∧ (X50 ∨ X80 ) ∧ (X60 ∨ X90 ) ∧ (X10 ∨ X20 ) ∧ (X10 ∨ X30 ) ∧ (X20 ∨ X30 ) ∧ (X40 ∨ X50 ) ∧ (X40 ∨ X60 ) ∧ (X50 ∨ X60 ) ∧ (X70 ∨ X80 ) ∧ (X70 ∨ X90 ) ∧ (X80 ∨ X90 ) ∧ (X10 ∨ X50 ) ∧ (X40 ∨ X80 ) ∧ (X20 ∨ X40 ) ∧ (X50 ∨ X70 ) ∧ (X20 ∨ X60 ) ∧ (X50 ∨ X90 ) ∧ (X30 ∨ X40 ) ∧ (X60 ∨ X70 ) La expresión booleana P (G) tiene una única asignación de verdad dada por: X1 = 1, X2 = 0, X3 = 0 X4 = 0, X5 = 0, X6 = 1 X7 = 0, X8 = 1, X9 = 0 1 La enumeración empleada de las variables booleanas es la siguiente: para la variable booleana Xij −→ X(i−1)n+j donde n es el número de vértices en G. que codifica el CH: v1 v3 v2 . La reducción de SAT a 3-SAT es la siguiente: (X11 ∨ X41 ∨ X71 ) ∧ (X21 ∨ X51 ∨ X81 ) ∧ (X31 ∨ X61 ∨ X91 ) ∧ (X11 ∨ X21 ∨ X31 ) ∧ 1 0 (X41 ∨ X51 ∨ X61 ) ∧ (X71 ∨ X81 ∨ X91 ) ∧ (X10 ∨ X40 ∨ X10 ) ∧ (X10 ∨ X40 ∨ X10 )∧ 1 0 1 0 (X10 ∨ X70 ∨ X11 ) ∧ (X10 ∨ X70 ∨ X11 ) ∧ (X20 ∨ X50 ∨ X12 ) ∧ (X20 ∨ X50 ∨ X12 )∧ 1 0 1 0 (X20 ∨ X80 ∨ X13 ) ∧ (X20 ∨ X80 ∨ X13 ) ∧ (X30 ∨ X60 ∨ X14 ) ∧ (X30 ∨ X60 ∨ X14 )∧ 1 0 1 0 (X30 ∨ X90 ∨ X15 ) ∧ (X30 ∨ X90 ∨ X15 ) ∧ (X40 ∨ X70 ∨ X16 ) ∧ (X40 ∨ X70 ∨ X16 )∧ 1 0 1 0 (X50 ∨ X80 ∨ X17 ) ∧ (X50 ∨ X80 ∨ X17 ) ∧ (X60 ∨ X90 ∨ X18 ) ∧ (X60 ∨ X90 ∨ X18 )∧ 1 0 1 0 (X10 ∨ X20 ∨ X19 ) ∧ (X10 ∨ X20 ∨ X19 ) ∧ (X10 ∨ X30 ∨ X20 ) ∧ (X10 ∨ X30 ∨ X20 )∧ 1 0 1 0 (X20 ∨ X30 ∨ X21 ) ∧ (X20 ∨ X30 ∨ X21 ) ∧ (X40 ∨ X50 ∨ X22 ) ∧ (X40 ∨ X50 ∨ X22 )∧ 1 0 1 0 (X40 ∨ X60 ∨ X23 ) ∧ (X40 ∨ X60 ∨ X23 ) ∧ (X50 ∨ X60 ∨ X24 ) ∧ (X50 ∨ X60 ∨ X24 )∧ 1 0 1 0 (X70 ∨ X80 ∨ X25 ) ∧ (X70 ∨ X80 ∨ X25 ) ∧ (X70 ∨ X90 ∨ X26 ) ∧ (X70 ∨ X90 ∨ X26 )∧ 1 0 1 0 (X80 ∨ X90 ∨ X27 ) ∧ (X80 ∨ X90 ∨ X27 ) ∧ (X10 ∨ X50 ∨ X28 ) ∧ (X10 ∨ X50 ∨ X28 )∧ 1 0 1 0 (X40 ∨ X80 ∨ X29 ) ∧ (X40 ∨ X80 ∨ X29 ) ∧ (X20 ∨ X40 ∨ X30 ) ∧ (X20 ∨ X40 ∨ X30 )∧ 1 0 1 0 (X50 ∨ X70 ∨ X31 ) ∧ (X50 ∨ X70 ∨ X31 ) ∧ (X20 ∨ X60 ∨ X32 ) ∧ (X20 ∨ X60 ∨ X32 )∧ 1 0 1 0 (X50 ∨ X90 ∨ X33 ) ∧ (X50 ∨ X90 ∨ X33 ) ∧ (X30 ∨ X40 ∨ X34 ) ∧ (X30 ∨ X40 ∨ X34 )∧ 1 0 (X60 ∨ X70 ∨ X35 ) ∧ (X60 ∨ X70 ∨ X35 ) Como puede verse el número de variables booleanas crece rápidamente. Por un lado en el problema CH se tiene un número factorial de permutaciones posibles (caminos hamiltonianos), esto es |Sn | = n!. Cuando se reduce cualquier instancia de CH a una instancia de SAT, obtenemos un expresión booleana sobre un conjunto X con n2 variables booleanas, es decir, un espacio de búsqueda 2 de tamaño 2n . Después de reducir las instancias de SAT a instancias de 3-SAT, el número de variables booleanas están acotadas por O(n3 ), resultando en un 3 espacio de búsqueda de tamaño 2n . 3 Es evidente que la función g(n) = 2n (doble exponenciación) crece más rápido que la función factorial h(n) = n!. De esta forma obtenemos un problema aun más difı́cil que el problema original. 5.2 Reducción a 2-SAT De la reducción de CH a SAT vista en la sección anterior podemos pensar en dos conjuntos de cláusulas como sigue. Sea Φ el procedimiento de traducción de CH a SAT descrito en la sección anterior. Para una instancia G = (V, A) de CH con |V | = n, sea F C=SAT(Φ(G)) una forma conjuntiva tal que F C=verdad si y sólo si, G contiene un camino hamiltoniano. Podemos escribir a FC como F C = F C≤2 ∧ F C≥3 donde: F C≤2 = {c ∈ F C | long(c) ≤ 2}, F C≥3 = {c ∈ F C | long(c) ≥ 3}, aquı́ long(c) es el número de literales en la cláusula c. Explı́citamente F C≤2 y F C≥3 pueden ser: sean C1 , C2 , C3 , C4 , C5 los conjuntos de cláusulas dadas en (11), (12), (13), (14) y (15), respectivamente. Entonces F C≥3 = C1 ∪ C3 F C≤2 = C2 ∪ C4 ∪ C5 Ya que F C≤2 se forma como la conjunción de cláusulas de una o dos literales se puede encontrar una asignación σ en tiempo polinomial tal que F C≤2 (σ) = verdad y ”propagar” σ a F C≥3 . Es decir, emplear los valores de verdad en σ para reducir el número de literales en F C≥3 , de esta forma se reduce el número de asignaciones posibles. El algoritmo de la tabla 1 lleva a cabo la propagación. De la construcción anterior vemos que si (F C≤2 (σ) ∧ F C≥3 (σ)) = 1 =⇒ (σ es única o es el camino vacı́o). Para ver esto considere lo siguiente: sea σ≤2 = {σ|F C≤2 (σ) = 1} como el conjunto de asignaciones que satisfacen a F C≤2 ; si 2 σ 0 ∈ σ≤2 =⇒ |σ 0 | = n2 (es decir σ 0 ∈ {0, 1}n ), esto significa que si σ 0 ∈ σ≤2 se cumple que (F C≤2 (σ 0 ) ∧ F C≥3 (σ 0 )) = 1 implica recorrer todas las asignaciones posibles de las n2 variables booleanas. Partición de FC Consideremos otra división de las cláusulas en FC como: F Cf ixed = C1 ∪ C2 ∪ C3 ∪ C4 F Cvar = C5 se puede ver a F Cf ixed como al conjunto de cláusulas necesarias para asegurar que cada vértice en G aparezca una sola vez en el camino hamiltoniano. F Cvar depende de las aristas existentes en la gráfica y asegura que cualquier camino válido pase a travéz de las aristas en A. Analicemos como son las cláusulas en F Cvar . Dada AdjG una matriz de adyacencia de una gráfica G. Sean ∆inf y ∆sup los conjuntos de cláusulas formadas por (15) para la parte triangular inferior y superior de la matriz AdjG , respectivamente. Es fácil ver que ∆inf ∩ ∆sup = ∅ y F Cvar = ∆inf ∪ ∆sup . Por ejemplo, para la matriz de adyacencia de la sección 5.1 se tiene que: F Cf ixed = {(X11 ∨ X41 ∨ X71 ), (X21 ∨ X51 ∨ X81 ), (X31 ∨ X61 ∨ X91 ), (X11 ∨ X21 ∨ X31 ), (X41 ∨ X51 ∨ X61 ), (X71 ∨ X81 ∨ X91 ), (X10 ∨ X40 ), (X10 ∨ X70 ), (X20 ∨ X50 ), (X20 ∨ X80 ), (X30 ∨ X60 ), (X30 ∨ X90 ), (X40 ∨ X70 ), (X50 ∨ X80 ), (X60 ∨ X90 ), (X10 ∨ X20 ), (X10 ∨ X30 ), (X20 ∨ X30 ), (X40 ∨ X50 ), (X40 ∨ X60 ), (X50 ∨ X60 ), (X70 ∨ X80 ), (X70 ∨ X90 ), (X80 ∨ X90 )} F Cvar = {(X10 ∨ X50 ), (X40 ∨ X80 ), (X20 ∨ X40 ), (X50 ∨ X70 ), (X20 ∨ X60 ), (X50 ∨ X90 ), (X30 ∨ X40 ), (X60 ∨ X70 )} también ∆inf = {(X20 ∨ X40 ), (X50 ∨ X70 ), (X30 ∨ X40 ), (X60 ∨ X70 )} ∆sup = {(X10 ∨ X50 ), (X40 ∨ X80 ), (X20 ∨ X60 ), (X50 ∨ X90 )} es importante notar que las cláusulas formadas por los valores sobre la diagonal tal que AdjG (i, j) = 0 con i = j ya pertenecen a F Cf ixed . Las literales X1δ1 y X9δ2 no están presentes en ∆inf , mientras que las literales X3δ3 y X7δ4 no están en ∆sup . En general, si ∆inf y ∆sup son tales que F Cvar = ∆inf ∪ ∆sup para una gráfica G = (V, A) con |V | = n, se tiene que los conjuntos de cláusulas ∆inf y ∆sup no involucran al menos las literales, δ4 X1δ1 , Xnδ22 y Xnδ3 , Xn(n−1)+1 δ1 δ3 δ4 δ2 respectivamente. Si re-indexamos las literales como X1,1 , Xn,n y X1,n , Xn,1 éstas se refieren a los casos en que los vértices v1 y vn son los extremos del camino hamiltoniano. Entrada. Salida. Dada la gráfica G. Instancia 3SAT reducida. 1. Construir F C = F C≤2 ∧ F C≥3 . 0 0 2. Hacer F C≤2 := F C≤2 y F C≥3 := F C≥3 . 0 3. Mientras F C≤2 6= ∅ Hacer 0 (a) Con 2SAT encontrar una asignación σ tal que F C≤2 (σ) = verdad. 0 0 0 0 (b) Propagar σ a F C≥3 y escribirlo como F C≥3 = F C≤2 ∧ F C≥3 . 0 4. Dar de salida F C≥3 . Tabla 1. Algoritmo de propagación. Referencias 1. Edward Farhi, Jeffrey Goldstone, Sam Gutmann, Joshua Lapan, Andrew Lundgren, and Daniel Preda. A quantum adiabatic evolution algorithm applied to random instances of an NP-complete problem. arXiv:quant-ph/0104129v1, 2001. 2. Edward Farhi, Jeffrey Goldstone, Sam Gutmann, and Michael Sipser. Quantum computation by adiabatic evolution. arXiv:quant-ph/0001106v1, 2000. 3. John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation (2nd Edition). Addison Wesley, November 2000. 4. Christos H. Papadimitriou. Computational Complexity. Addison Wesley Longman, 1994.