¿Cuántas cláusulas se requieren para SAN para ser NP-HARD en las fórmulas CNF?
-
29-09-2020 - |
Pregunta
No es difícil ver que se sentó para una fórmula CNF con $ n $ variables y un número constante de cláusulas se puede resolver en el tiempo polinomio. Por otro lado, no es difícil ver que una fórmula CNF con $ n $ variables y $ O (n) $ Las cláusulas son suficientes para la dureza NP (considere, por ejemplo, las instancias de SAT asociadas con la fórmula natural para 3-Colorabilidad, aplicadas a gráficos planos).
Podríamos definir esto formalmente como $ \ texto {cnfsat} -f- \ texto {cláuses} $ , una familia de problemas parametrizados por una función
¿Qué pasa con $ g=log n $ ? ¿Hay un algoritmo simple para CNFSAT sobre las fórmulas que tienen $ o (\ lg \ lg n) $ clauses?
Solución
Límite inferior. para $ g \ le c \ cdot \ sqrt {\ log n} $ Existe un algoritmo de tiempo polinomial . La idea es la siguiente: si algunas cláusulas tienen demasiadas variables, entonces debería ser trivial para seleccionar alguna variable para satisfacer esta cláusula, sin lastimar las cláusulas con pocas variables. Repetimos lo siguiente:
Encuentre la cláusula con el número más pequeño de variables. Deje que $ x_1, \ ldots, x_k $ sean las variables que participan en esta cláusula.
- si $ k> g $ , entonces toda la fórmula es satisfactoria (procesamos las cláusulas una por una y seleccione una variable que no seleccionamos antes).
- de lo contrario, eliminamos la cláusula. También eliminamos $ x_1, \ ldots, x_k $ de todas las demás cláusulas.
Ahora, tenemos que satisfacer las cláusulas eliminadas. Dado que en la mayoría de los $ g $ cláusulas y cada una de ellas introduce en la mayoría $ g $ nuevas variables, Significa que hay como máximo $ g ^ 2= C ^ 2 \ CDOT \ LOG N $ variables en general. Por lo tanto, hay en la mayoría de $ n ^ {c ^ 2} $ combinaciones variables, y podemos utilizar la fuerza bruta.
Límite superior condicional. está casi apretado en el siguiente sentido. asume que el límite inferior en el sat con $ n $ variables y $ \ ge c \ CDOT N $ cláusulas (para algunos $ C $ , por ejemplo, procedentes de $ 3 $ -coloring ) es $ \ alfa ^ n $ ( $ \ alfa \ in (1, 2] $ ). Tenga en cuenta que el mismo límite inferior se mantiene después de nuestra transformación (ya que podemos aplicarlo antes de cualquier algoritmo). Por lo tanto, si hay al menos $ \ log ^ {1+ \ epsilon} n n $ cláusulas, pueden tener $ \ frac {\ log ^ {1+ \ epsilon} n} C $ variables y el límite inferior para correr el tiempo para correr Nuestro problema es
$$ \ alfa ^ {\ frac {\ log ^ {1+ \ epsilon} n} c}= n ^ {\ frac {\ log ^ \ epsilon n \ CDOT \ log \ alfa} {c}}, $$
que es súper polinomio.