假设我有一个带变量(a,b,c,d,e,f,g)
的CNF表达式。在给定(d,e,f)
和{a,b,c,g} = {1,0,0,1}
的情况下,如何使用SAT求解程序查找{a,b,c,g} = {1,1,1,1}
的作业?如果是一个假设,调用坐标求解器来查找{d,e,f}
的赋值将是直截了当的(例如,通过向CNF添加单位子句)。但是,如果我有多个假设怎么办?这可能吗?
答案 0 :(得分:3)
以下是哈罗德试图向您描述的内容(我认为)。你对变量a,b,c,d,e,f和g有一些CNF公式F.
求解器将找到符合(a,b,c,g)和(aa,bb,cc,gg)预设值的令人满意的作业。
答案 1 :(得分:0)
目前尚不清楚您是否需要实际答案或有趣理论答案。我会追求实用。
对于每组假设,调用一个支持求解的坐标求解器,并假设这组假设(betweeness)。在同一个求解器实例上按顺序执行此操作。
优点:
F & G
,其中F超过变量X,G超过变量Y,X和Y共享无变量,解决方案 - CDCL中使用的推理规则 - 无法导出混合F的子句没有明显的好处,将两者混合在一起而不是将它们分开,除非一个例子更容易证明不饱和并提前停止。)缺点:
我知道这是一个明显的答案,但值得尝试。如果失败了,你可以尝试做更好的事情,比如解决w.r.t.假设A union A'
,并且只有在不能解决这个A和A的策略的情况下才能解决。这对您的示例没有帮助,因为(a,b,c,g) = (1,0,0,1)
和(a,b,c,g) = (1,1,1,1)
是互斥的。