Un type de conversion est simplement l'inverse de la conversion k-sat-à-3-sat:
Rappelons, la conversion de k-sat en "j" -sat, j < k:
→(X1∨X2. . . ∨Xj∨ . . . ∨Xk)(X1∨X2. . .Xj∨ d) ∧ (r鯯¯∨Xj + 1∨Xj + 2. . .Xk)
Ici, dest une variable fictive, ce qui signifie quelque chose comme "Cette clause n'est pas vraie, mais une autre clause que je connais est". L'autre clause étant la prochaine clause qui a été séparée de l'original. Ce qui précède est un exemple où2j≥k, sinon le 2e nœud divisé sera toujours plus grand que j, et nous devons le diviser à nouveau, de la même manière.
Inverser la conversion
(x1∨x2...xj)∧(x¯¯¯j∨xj+1∨...xk) alors vous pouvez combiner les clauses en:
(x1∨x2...xj−1∨xj+1∨xj+2∨...xk)
Remarquez les disparus xj dans cette nouvelle formule.
Bien sûr, vous n'êtes pas assuré de trouver des clauses comme celle-ci dans une formule arbitraire, donc la plus petite garantienk+m est égal à nk.
Cependant, sur les formules ordinaires, une variable et sa négation apparaîtront dans la formule; sinon, vous pouvez effectuer une élimination purement littérale (décrite ici ). Pour simplifier, supposons également quek+m≥2k−2. Ensuite, nous pouvons combiner deux clauses qui contiennent un littéral dans l'une et sa négation dans l'autre. Puisque chaque littéral devrait avoir une autre clause avec une négation, on peut supposer empiriquement que vous devriez être en mesure de diviser par deux le nombre de clauses (vous pourriez vous retrouver avec certains littéraux et leurs négations dans des clauses déjà jointes, et donc vous serez coincé avec certaines clauses non joignables à la fin; joindre de manière optimale des clauses comme celle-ci pourrait être un autre problème intéressant).
ÉDITER:
Après réflexion, j'ai réalisé que xjdoit être libre et non utilisé ailleurs dans la formule afin de réduire les deux clauses auxquelles il appartient. Par conséquent, ce type de clauses (l'une contenant un littéral et l'autre sa négation, ce littéral n'étant pas utilisé ailleurs dans la formule) est beaucoup plus rare que je ne le pensais précédemment. Donc, la vraie réponse est, il n'y a aucune garantie de combien nous pouvons réduire le nombre de clauses dans la formule.