L'exquiabilité peut être obtenue de la manière suivante (réduction de 2SAT à HornSAT). Ainsi peut également être réduit à une formule de Horn de cette manière. Merci à Joshua Gorchow d'avoir signalé cette réduction.( p ∨ q)
Entrée: Une formule 2-SAT , avec les clauses C 1 , ..., C k sur les variables x 1 , ..., x n .ϕC1CkX1Xn
Construisez une formule de klaxon comme suit:Q
Il y aura 4 ( n choisir 2 ) + 2 n + 1 nouvelles variables, une pour chaque
clause 2-cnf possible sur les variables x avec au plus 2 littéraux ( pas seulement les clauses C i dans ϕ ) - c'est y compris les articles de l' unité et la clause vide .. la nouvelle variable correspondant à une clause D sera désigné par z D .×n2+ 2 n + 1XCjeϕrézré
Le 4 ( n choisir 2 ) vient du fait que chaque paire de ( x i , x j )
donne lieu à quatre clauses 2-cnf. Le 2 n vient du fait que chaque x i peut créer 2 clauses unitaires. Et enfin le "un" vient de la clause vide. Donc le nombre total de clauses 2-cnf possibles est =
4 × ( n choisissez 2 ) + 2 n + 1 .×n2( xje, x j)2 nXje=×n2+ 2 n + 1
Si une clause 2-cnf découle de deux autres clauses 2-cnf D et E par une seule étape de résolution, alors nous ajoutons la clause Horn
( z D ∧ z E → z F )
à Q ... Encore une fois, nous le faisons pour toutes les clauses 2-cnf possibles - toutes les 4 × ( n
choisir 2 ) + 2 n + 1 d'entre elles - pas seulement le C i .FréE( zré∧ zE→ zF)Q×n2+ 2 n + 1Cje
Ensuite , nous ajoutons les clauses de l' unité à Q , pour chaque clause C i
apparaissant dans l'entrée φ ... Enfin, nous ajoutons la clause unitaire ( ¬ z e m p t y ) à Q .zCjeQCjeϕ( ¬ ze m p t y)Q
La formule Horn est maintenant terminée. Observez que les variables utilisées dans Q sont complètement différentes de celles utilisées dans ϕ .QQϕ