Un tipo de conversión es simplemente el reverso de la conversión de k-sat-a-3-sat:
Recordemos, la conversión de k-sat a "j" -sat, :j<k
→(x1∨x2...∨xj∨...∨xk)(x1∨x2...xj∨d)∧(d¯¯¯∨xj+1∨xj+2...xk)
Aquí, es una variable ficticia, lo que significa algo así como "Esta cláusula no es verdadera, pero otra que sé que es". La otra cláusula es la siguiente cláusula que se separó del original. Lo anterior es un ejemplo donde , de lo contrario, el segundo nodo dividido seguirá siendo mayor que , y debemos dividirlo nuevamente, de la misma manera.d2j≥kj
Revertir la conversión
(x1∨x2...xj)∧(x¯¯¯j∨xj+1∨...xk) luego puede combinar las cláusulas en:
(x1∨x2...xj−1∨xj+1∨xj+2∨...xk)
Observe la falta de en esta nueva fórmula.xj
Por supuesto, no se garantiza que encuentre cláusulas como esta en una fórmula arbitraria, por lo que la garantizada más pequeña es igual a .nk+mnk
Sin embargo, en fórmulas ordinarias, una variable y su negación aparecerán en la fórmula; de lo contrario, puede realizar la eliminación literal pura (descrita aquí ). Por simplicidad, supongamos también que . Luego podemos combinar dos cláusulas que contengan un literal en una y su negación en la otra. Dado que cada literal debería tener otra cláusula con una negación, uno puede adivinar empíricamente que debería poder reducir a la mitad aproximadamente el número de cláusulas (podría quedar atrapado con algunos literales y sus negaciones en cláusulas ya unidas, y por lo tanto se quedará con algunas cláusulas que no se pueden unir al final; unir óptimamente cláusulas como esta podría ser otro problema interesantek+m≥2k−2
EDITAR:
Después de reflexionar, me di cuenta de que debe ser libre y no usarse en ninguna otra parte de la fórmula para colapsar las dos cláusulas a las que pertenece. Por lo tanto, este tipo de cláusulas (una que contiene un literal y la otra su negación, ya que este literal no se usa en ninguna otra parte de la fórmula) es mucho más raro de lo que pensaba anteriormente. Entonces, la verdadera respuesta es que no hay garantía de cuánto podemos reducir el número de cláusulas en la fórmula.xj