具有k个一元子句和仅有两个子句的SAT实例的复杂性是多少?
我想找到一篇有这个结果的论文..我发现一篇论文中的问题有点不同。所有变量最多出现两次......
答案 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
如您所见,只有使用线性时间操作才能找到解决方案。