我正在查看以前的试卷,并且遇到了这个困扰我的问题。
问题:
将子句
{x1, x2}, {x2, x3}, {x3, x4}, {x4, x5}, {x5, x1}
给出的Not-All-Equal 2-SAT问题转换为等效的2-SAT问题。 (提示:2-SAT问题包含10个条款)。
根据我的理解,这是否只是在每个条款中找到每个字面的否定?例如,{x1, x2} = {-x1, -x2}
,这是为每个子句完成的吗?
它是否正确?
答案 0 :(得分:2)
这是正确的。具体而言,将所有子句(x ∨ y)
替换为(x ∨ y) ∧ (~x ∨ ~y)
。字面意思是" x或y必须为真,x或y必须为假"或等效地#34;满足(x ∨ y)
,同时确保x
之一而y
是假的"。
为了证明等效性,我们首先假设NAE 2-SAT问题是可以满足的。设A是一个令人满意的赋值,让{x, y}
成为一个任意子句。由于x
和y
中只有一个为真,这意味着(x ∨ y) ∧ (~x ∨ ~y)
为真。因此,满足2-SAT公式中相应的两个条款。由于{x, y}
被任意选择,我们得出结论,A满足2-SAT公式中的所有条款。
相反,让我们假设NAE 2-SAT不可满足。也就是说,对于任何赋值,都存在一些{x, y}
x
和y
都为真或两者都为假的子句{x, y}
。设A是任意选择的赋值,让x = y
成为A不满足的子句(在NAE 2-SAT中)。从(x ∨ y) ∧ (~x ∨ ~y)
开始,这意味着while
为假(因为连接的一半将为假)。因此,A不满足2-SAT公式。由于A是任意选择的,我们得出结论,没有任何指配满足2-SAT公式。