L'affidabilità può essere raggiunta nel modo seguente (riduzione da 2SAT a HornSAT). Quindi può anche essere ridotto a una formula di Horn in questo modo. Grazie a Joshua Gorchow per aver sottolineato questa riduzione.( p ∨ q)
Input: una formula 2-SAT , con le clausole , ..., sulle variabili , ..., .C 1 C k x 1 x nφC1CKX1Xn
Costruisci una formula di corno come segue:Q
Ci saranno 4 ( scegli ) nuove variabili, una per ogni possibile
possibile clausola 2-cnf sulle variabili con al massimo 2 letterali ( non solo le clausole in ) - questo è comprese le clausole unitarie e la clausola vuota. La nuova variabile corrispondente a una clausola sarà indicata da .n 2 + 2 n + 1 x C i ϕ D z D×n2+ 2 n + 1XCioφDzD
Il 4 ( sceglie ) deriva dal fatto che ogni coppia di
dà origine a quattro clausole 2-cnf. Il deriva dal fatto che ogni può creare 2 clausole unitarie. E infine "uno" deriva dalla clausola vuota. Quindi il numero totale di possibili clausole 2-cnf è
4 ( scegli ) .n 2 ( x i , x j ) 2 n x i = × n 2 + 2 n + 1×n2( xio, x j)2 nXio=×n2+ 2 n + 1
Se una clausola 2-cnf segue da altre due clausole 2-cnf ed con un singolo passaggio di risoluzione, quindi aggiungiamo la clausola Horn
a ... Ancora una volta, lo facciamo per tutte le possibili clausole 2-CNF - tutti e 4 (
scegliere ) di loro - non solo il .FDE( zD∧ zE→ zF)Q×n2+ 2 n + 1Cio
Poi si aggiungono le clausole unità a , per ogni clausola
appare in ingresso ... Infine, si aggiunge la clausola di unità a .zCioQCioφ( ¬ ze m p t y)Q
La formula Horn è ora completa. Nota che le variabili usate in sono completamente diverse da quelle usate in .QQφ