Le SAT 1 sur 3 reste-t-il NP-difficile même si chaque variable se produit à la fois positivement et négativement?

9

Le problème standard 1-en-3 SAT (ou XSAT ou X3SAT) est:
Instance : une formule CNF avec chaque clause contenant exactement 3 littéraux
Question : y a-t-il un paramètre d'assignation satisfaisant avec précision 1 littéral par clause vrai?

Le problème est NP-complet et reste difficile même si aucune variable ne se produit. Je me demande si ce problème devient facile ou reste difficile si chaque variable doit se produire au moins une fois positivement et au moins une fois négativement .

La réduction habituelle de 3SAT montrant que le SAT 1 en 3 est dur remplace une clause par des clauses , , où sont frais pour chaque clause. Ainsi, cette réduction n'aide pas à répondre à ma question. J'ai eu du mal à trouver un gadget montrant la dureté de cette variante, car si exactement 1 littéral dans une clause est vrai, alors 2 littéraux non symétriques sont faux. Si cela s'avère facile, penser en termes de partitions de l'ensemble de clauses pourrait le faire, mais je ne vois pas comment.(xyz)(¬xab)(ybc)(¬zcd)a,b,c,d

Dominik Peters
la source
Peut-il être réduit à 2 sat?
Joshua Herman
4
indice: pour chaque var , ajoutez des clauses et, par exemple, . Xi(XiX¯iW)(XiX¯iY)(XiX¯iZ)(WYZ¯)
Neal Young
Ha, ça marche (bien sûr en ajoutant aussi ). Je vais laisser la question ouverte au cas où quelqu'un pourrait la résoudre sans l' astuce toujours si peu satisfaisante . (W¯YZ)(WY¯Z)XiX¯i
Dominik Peters
3
Puis-je vous encourager à rédiger une réponse complète à votre propre question, peut-être basée sur l'idée de Neal Young? (Soit dit en passant, je ne sais pas pourquoi c'est "insatisfaisant". Une réduction est une réduction.)
DW
4
Si ce cas spécial est celui qui vous intéresse vraiment, alors peut-être qu'il est logique de modifier votre question pour refléter cette contrainte supplémentaire?
DW

Réponses:

2

Dans un commentaire, OP a exprimé son intérêt pour une réduction qui générait des instances avec 3 variables distinctes par clause. Voici une approche simple:

La réduction est de 1 sur 3 SAT avec 3 variables distinctes par clause:

  • Tout d'abord, incluez toutes les clauses dans la formule d'entrée en tant que clauses dans la formule de sortie.
  • Deuxièmement, introduisez trois nouvelles variables , et et ajoutez les trois clauses suivantes à la formule de sortie: , et .F1F2F3(¬F1,F2,F3)(F1,¬F2,F3)(F1,F2,¬F3)
  • Enfin, pour chaque variable dans la formule d'origine, introduisez une nouvelle variable et ajoutez les deux clauses suivantes à la formule de sortie: et .xx(x,x,F1)(¬x,¬x,F1)

Vérifions que cette réduction fait ce que nous voulons. Les propriétés suivantes sont ce que nous voulons:

  1. Chaque clause a toujours trois variables distinctes.
  2. Chaque variable apparaît dans une clause positive et dans une clause négative.
  3. La formule d'entrée est équivalente à la formule de sortie.

La propriété 1 est triviale à vérifier. La propriété 2 est également facile à vérifier: les variables , et apparaissent chacune à la fois positivement et négativement dans les clauses ajoutées au deuxième point, tandis que toutes les autres variables de la formule apparaissent à la fois positivement et négativement dans les clauses ajoutées dans le troisième puce.F1F2F3

Quant à la propriété 3, elle est moins banale mais toujours facile. Vous pouvez facilement affirmer que la seule affectation pour les variables , et qui satisfait chaque clause à partir du deuxième point est de rendre les trois faux. Mais en supposant une valeur false pour , les clauses et ajoutées au troisième point sont satisfaites si et seulement si . Puisqu'il n'y a pas d'autres contraintes sur , cela signifie qu'il est toujours possible d'étendre une affectation satisfaisante pour la formule d'entrée dans une affectation satisfaisante pour la formule de sortie: définissez simplement chaqueF1F2F3FiF1(x,x,F1)(¬x,¬x,F1)x=¬xxx pour être la négation du correspondant et définir chaque sur faux.xFi

Mikhail Rudoy
la source