具有两个子句的SAT是多项式的

时间:2015-07-27 13:56:13

标签: polynomial-math np-complete clause propagation sat

具有k个一元子句和仅有两个子句的SAT实例的复杂性是多少?

我想找到一篇有这个结果的论文..我发现一篇论文中的问题有点不同。所有变量最多出现两次......

2 个答案:

答案 0 :(得分:0)

如果我理解正确,这似乎是条款总长度的线性时间。

一元子句立即强制部分变量赋值τ。如果两个条款中的任何一个在τ下不可满足(空),或者某些单元条款相互冲突,则该实例是不可满足的。否则,如果两个子句在τ下是单位和互补的,那么实例是不可满足的,即x̅和x。

答案 1 :(得分:0)

您的问题有complexity in O(n) n is the total size of clauses

你有K个一元条款,这些K一元从句可以被认为是变量的子分配。如果你不尊重这些一元条款,肯定你找不到解决方案(如果存在)。

让我们举个例子来查看您的问题,目标是找到variables的值。

 variables = _ _ _ _ _ _ _ _
 problem   = 
              x1                 AND
              x4                 AND
              x7                 AND
             -x8                 AND
             -x5                 AND
              x2                 AND
              x3 OR  -x4 OR x5   AND
              x6 OR  -x1 OR x8

 with K = 5.

因为一元子句会将其值传播到variables,所以此问题基本上与以下内容相同:

 variables = x1 x2 _ x4 -x5 _ x7 -x8
 problem   = 
              x3 OR  -x4 OR  x5  AND
              x6 OR  -x1 OR  x8
 with K = 0.

(为了获得这个,我们进行了线性时间操作)。

因为,我们已经知道x4,x5,x1和x8的值,这个问题与以下内容相同:

 variables = x1 x2 _ x4 -x5 _ x7 -x8
 problem   = 
              x3 AND
              x6
 with K = 0.

(为了获得这一点,我们再次进行了线性时间操作)。

通过调用与第一个操作相同的功能,我们将获得:

 variables = x1 x2 x3 x4 -x5 x6 x7 -x8
 problem   = 
              true.
 with K = 0.

(我们再次进行线性时间操作以获得此结论)。

为您提供最终解决方案:variables = x1 x2 x3 x4 -x5 x6 x7 -x8 如您所见,只有使用线性时间操作才能找到解决方案。