No. Si la instancia de 3-SAT tiene cláusulas , puede probar la satisfacción en el tiempo O ( m 2 N ) . Dado que N es una constante fija, este es un algoritmo de tiempo polinómico que resuelve todas las instancias de su problema.mO(m2N)N
El algoritmo funciona en etapas. Vamos φ i denotar la fórmula que consiste de las cláusulas que utilizan sólo las variables de x 1 , ... , x i . Supongamos que S i ⊆ { 0 , 1 } n denota el conjunto de asignaciones a x i - N , x i - N + 1 , ... , x i que puede extenderse a una asignación satisfactoria para φ i . Tenga en cuenta que dado Smφix1,…,xiSi⊆{0,1}nxi−N,xi−N+1,…,xiφi , podemos calcular S i en el tiempoO( 2 N ): para cada( x i - N - 1 ,…, x i - 1 )∈ S i - 1 , probamos ambas posibilidades para x i y verificamos si cumple todas las cláusulas de φ i que contienen la variable x i ; si es así, agregamos( x i - N ,...Si−1SiO(2N)(xi−N−1,…,xi−1)∈Si−1xiφixi a S i . En la i ésima etapa, calculamos S i . Una vez que hemos terminado todas lasetapas m , la instancia de 3-SAT es satisfactoria si y solo si S m ≠ ∅ . Cada etapa toma tiempo O ( 2 N ) , y hay m etapas, por lo que el tiempo total de ejecución es O ( m 2 N ) . Este es un polinomio en el tamaño de la entrada y, por lo tanto, constituye un algoritmo de tiempo polinomial.(xi−N,…,xi)SiiSimSm≠∅O(2N)mO(m2N)
Incluso si permite que un número fijo de cláusulas violen la restricción, el problema aún puede resolverse en tiempo polinómico. En particular, si cuenta el número de cláusulas que violan la restricción, puede resolver el problema en el tiempo O ( m 2 ( t + 1 ) N ) , enumerando primero todos los valores posibles para las variables en esas cláusulas, luego continúe con El algoritmo anterior. Cuando t es una constante fija, este es el tiempo polinómico. Puede haber algoritmos más eficientes.tO(m2(t+1)N)t