微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

3-OCC-MAX SAT np完成?

如何解决3-OCC-MAX SAT np完成?

假设3-OCC-MAX SAT是所有CNF公式的语言,其中每个变量最多出现在3个子句中。 这是NP完成问题吗?我正试图在SAT与这个问题之间找到一种降低卡尔普的方法,但我找不到它。

解决方法

此问题是NP完全的。很容易看到它在NP中(猜测模型;在多项式时间内检查它)。

第一次尝试(失败)

为显示NP硬度,我提出以下构造:

考虑在n个变量上的3-SAT实例F。 考虑一个子句[L1,L2,L3]。 定义新变量p1,p2,p3。 定义Li等于pi。 然后,使用新鲜的变量替换原始子句。

这导致以下形式的子句:

[p1,p2,p3]
[-p1,L1]
[-L1,p1]
[-p2,L2]
[-L2,p2]
[-p3,L3]
[-L3,p3]

对所有子句执行此操作,并始终使用新鲜变量。

请注意,变量p1至p3恰好使用了3次,而L1至L3则使用了2次。 这种构造是多项式。

编辑:我目前看到这不是有效的解决方案:原始文字可能超过3的最大出现次数。

第二次尝试

想法是在文字的每次出现时都使用新鲜的变量。

让M为3SAT公式中变量的出现次数(可以改进)。 对于3SAT CNF中的每个原子A,将以下内容添加到生成的3-OCC-MAX SAT公式中:

q0 <- A
q1 <- q0
q2 <- q1
q3 <- q2     
q4 <- q3
...
q_M <- q_M-1
q_M+1 <- q_M
q0 <- q_M+1

对-A的出现执行相同操作。

p0 <- -A
p1 <- p0
p2 <- p1
p3 <- p2     
p4 <- p3
...
p_M <- p_M-1
p_M+1 <- p_M
p0 <- p_M+1

此外,添加以下内容以确保q行或p行为真。

-p0 <- qM+1
-q0 <- pM+1

现在,添加原始3SAT CNF的子句,其中文字L的第n个出现被qn代替。 没有“第0次发生”,即我们从1开始计数;因此,在此上下文中不使用q0和p0以及qM和pM。 请注意,A和-A出现2x,变量p0,q0,p_M + 1,q_M + 1出现3次,变量p_i,q_i出现,其中i最多在1到M之间3次。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。