将并非所有相等的2-Sat Pr0blem转换为等效的2-SAT prolblem

时间:2016-05-04 14:04:33

标签: algorithm satisfiability 2-satisfiability

我正在查看以前的试卷,并且遇到了这个困扰我的问题。

问题:

  

将子句{x1, x2}, {x2, x3}, {x3, x4}, {x4, x5}, {x5, x1}给出的Not-All-Equal 2-SAT问题转换为等效的2-SAT问题。 (提示:2-SAT问题包含10个条款)。

根据我的理解,这是否只是在每个条款中找到每个字面的否定?例如,{x1, x2} = {-x1, -x2},这是为每个子句完成的吗? 它是否正确?

1 个答案:

答案 0 :(得分:2)

这是正确的。具体而言,将所有子句(x ∨ y)替换为(x ∨ y) ∧ (~x ∨ ~y)。字面意思是" x或y必须为真,x或y必须为假"或等效地#34;满足(x ∨ y),同时确保x之一而y是假的"。

为了证明等效性,我们首先假设NAE 2-SAT问题是可以满足的。设A是一个令人满意的赋值,让{x, y}成为一个任意子句。由于xy中只有一个为真,这意味着(x ∨ y) ∧ (~x ∨ ~y)为真。因此,满足2-SAT公式中相应的两个条款。由于{x, y}被任意选择,我们得出结论,A满足2-SAT公式中的所有条款。

相反,让我们假设NAE 2-SAT不可满足。也就是说,对于任何赋值,都存在一些{x, y} xy都为真或两者都为假的子句{x, y}。设A是任意选择的赋值,让x = y成为A不满足的子句(在NAE 2-SAT中)。从(x ∨ y) ∧ (~x ∨ ~y)开始,这意味着while为假(因为连接的一半将为假)。因此,A不满足2-SAT公式。由于A是任意选择的,我们得出结论,没有任何指配满足2-SAT公式。