证明 NAE-4-SAT 是 NP Complete
问题陈述:给定一个 4-CNF 公式f ,任务是检查是否存在每个子句使得至少一个字面量为TRUE而另一个为FALSE 。
说明:问题的一个实例是指定给问题的输入。 NAE-4-SAT 问题的一个实例是布尔 4-CNF 公式。由于 NP 完全问题是一个既是 NP 又是 NP-Hard 的问题,因此问题是 NP-Complete 的证明或陈述由两部分组成:
- The problem itself is in NP class.
- All other problems in NP class can be polynomial-time reducible to that.
(B is polynomial-time reducible to C is denoted as B ≤ PC)
如果仅满足第二个条件,则该问题称为NP Hard 。
但是不可能将每个 NP 问题都化简为另一个 NP 问题以始终显示其 NP-Completeness。为了证明一个问题是 NP-Complete,证明该问题是 NP 问题,并且任何 NP-Complete 问题都可以归结为,即,如果 B 是 NP-Complete 并且 B ≤ P C对于 NP 中的 C,则 C 是 NP-完全的。
因此,可以使用以下命题来验证命中集问题是 NP-Complete:
NAE-4-SAT 在 NP 中:
如果任何问题都在 NP 中,然后给出一个“证书”,它是问题的解决方案和问题的实例(布尔 4CNF 公式),我们将能够验证(无论解决方案是否正确)证书在多项式时间内。这可以通过检查真值分配是否满足公式f中的每个子句以及分配给任何特定子句的所有字面量值不具有所有相同的值来完成,即每个子句中至少有一个为假。
NAE-4-SAT 是 NP-Hard :
为了证明 NAE-4-SAT 是 NP Hard,将一个已知的 NP Hard 问题简化为这个问题,在我们的例子中,将3-SAT简化为NAE-4-SAT 。 3-SAT公式f是通过向公式f 的每个子句添加一个变量v来转换的。由于公式f现在在每个子句中都有四个字面量,因此它变成了 4-SAT 公式。
现在,以下命题成立:
- 如果 3-SAT 为 true ,这意味着每个子句中至少有一个字面量必须为真。我们可以将新添加的变量v赋值为 0。 NAE-4-SAT也成立,因为公式f中为真的字面量在 NAE 公式中也成立,并且变量v被分配了一个假布尔值,即在至少一个是真的,另一个是假的。
- 如果 4CNF 公式是可满足的,那么这个特定的变量赋值必须至少有一个真字面量和至少一个负字面量。如果附加变量v具有布尔值 false,那么我们可以轻松地从每个子句中删除它,然后 3-SAT 公式仍然可以满足。如果附加变量v具有布尔真值,那么我们可以从每个子句中删除任何字面量,因为变量v将使 3CNF 公式可满足。
考虑这个例子:
f=(x1 V x2‘ V x3) AND (x1‘ V x2‘ V x3)
NAE formula=(x1 V x2‘ V x3‘ V v) AND (x1‘ V x2 V x3 V v)
让我们假设 4CNF 公式的有效分配之一是(x 1 =0, x 2 =0, x 3 =0, v=1)
4-NAE 公式是正确的,因为在每个子句中v=1和x 1 =0 。现在,如果我们否定的所有值,到第二子句中以后删除V = 1,甚至则所述式通过设定X 1 = 1,第一子句中满足和x 2 = 1。
因此,也满足3-SAT公式。因此NAE 4-SAT问题是 NP-Complete。