¿Es un problema CNF SAT NP difícil cuando el número total (pero no el ancho) de las cláusulas de 3 o más términos está limitado por una constante? ¿Qué pasa específicamente cuando solo hay una de esas cláusulas?
np-hardness
sat
upper-bounds
dspyz
fuente
fuente
Respuestas:
Vale la pena señalar que el problema se vuelve NP-duro cuando la restricción se relaja ligeramente.
Con un número fijo de cláusulas que también son de tamaño acotado, el número promedio de literales en una cláusula es tan cercano a 2 como uno quiera, considerando una instancia con suficientes variables. Como usted señala, existe un límite superior simple que es polinómico si el tamaño de la cláusula está limitado.
Por el contrario, si el número promedio de literales por cláusula es al menos para algunos fijos (pero arbitrariamente pequeños) , entonces el problema es NP-hard.2+ϵ ϵ>0
Esto se puede demostrar reduciendo 3SAT a este problema, introduciendo nuevas cláusulas con 2 literales que son trivialmente satisfactorios. Supongamos que hay cláusulas en la instancia de 3SAT; para reducir el tamaño promedio de la cláusula a , es suficiente agregar nuevas cláusulas con dos literales. Como es fijo y positivo, la nueva instancia es de tamaño polinómico.m (2+ϵ) m(1−ϵ)/ϵ ϵ
Esta reducción también muestra que incluso la versión donde las cláusulas "grandes" están restringidas a 3 literales es NP-hard.
El caso restante es cuando las pocas cláusulas grandes no son de tamaño limitado; cada cláusula grande parece dificultar el problema. Vea el documento SODA 2010 de Pǎtraşcu y Williams para el caso de dos cláusulas: argumentan que si esto se puede hacer en tiempo subcuadrático, entonces tendríamos mejores algoritmos para SAT. Puede haber una extensión de su argumento a más cláusulas, lo que proporcionaría evidencia de que su límite superior no puede mejorarse (módulo de alguna forma de la hipótesis del tiempo exponencial).
fuente
Ok, lo tengo La respuesta es no. Esto se puede resolver en poli-tiempo. Para cada cláusula de 3 o más términos, seleccione un literal y configúrelo como verdadero. Luego resuelva el problema restante de 2 sat. Si alguien proporciona una solución, entonces esa es una solución al problema general. Como el número de cláusulas de 3 o más términos es fijo (por ejemplo, c), si todas esas cláusulas tienen un tamaño <= m, entonces esto se ejecuta en O (m ^ (c) * n). O (m ^ c) para revisar cada selección posible, multiplicada por O (n) para resolver el problema restante de 2 sat.
fuente