基于DPLL的SAT求解器在可满足要求的PHP实例上的效率如何?


15

我们知道,基于DPLL SAT-求解器无法对不可满足的情况下,正确回答上(鸽巢原理),如“有来自射映射ñ + 1ñ ”:PHPn+1n

PHPnn+1:=(i[n+1] j[n] pi,j)(ii[n+1] j[n] (¬pi,j¬pi,j))

我正在寻找有关它们如何在可满足实例上执行的结果,例如在“存在从nn的内射映射”上。PHPnn

他们是否能在这种情况下迅速找到满意的任务?


1
“无法正确回答”是指“在足够大的n值下耗尽资源”吗?
维杰D

@Kaveh是否允许重复子句和/或同一子句中的变量重复?谢谢
Tayfun Pay

@VijayD,我的意思是算法对于足够大的不会在多项式时间内返回正确的答案。我希望可以证明一个基于DPLL的算法可以在该系列的多项式时间内工作。n
卡夫

@Geekster,我不确定您的意思。我有一个特殊的公式族。您是在问那个公式是否重复?
卡夫

Answers:


14

可满足实例上,基于DPLL的SAT求解器将在线性时间内提供令人满意的分配。PHP

要了解原因,请观察具有n个孔和n + 1个鸽子的的不满足实例的CNF编码在语法上与k = n Graph Coloring 的实例在语法上相同,其中输入图是n + 1个顶点的团。PHPnn+1k=nn+1

类似地,具有n个孔和n个鸽子的的可满足实例的CNF编码在语法上与k = n Graph Coloring 的实例在语法上相同,其中输入图是n个顶点的簇。PHPnnk=nn

现在,使用n种颜色为个顶点的族群着色很简单:扫描这些顶点,然后为每个顶点分配剩余的一种颜色(已分配的颜色已通过图的群体性自动排除(使用单位传播)。 。无论您选择其他哪种颜色,它都将是不错的选择,并且可以使您满意。nn

从DPLL求解器的角度来看:每次尝试猜测变量的布尔值时,该值都是正确的(无论是什么值),因为肯定会有令人满意的赋值,其中变量v i具有猜测值。单元传播将通过沿着令人满意的路径引导求解器(换句话说:通过防止其猜测错误的值)来完成其余的工作。vivi

然后,每次进行正确猜测时,搜索将线性地依次搜索一个变量。


谢谢,这就是我的期望。顺便说一句,您是否知道一个引用了此内容的参考文献(即“ DPLL算法可在线性时间内解决PHP / GC的令人满意的实例”)?
卡夫

1
别客气。我不知道有任何引用说明这一点,我只是通过一些原始推理自己得出的。依靠每个SAT求解器在选择下一个变量和猜测其布尔值时都使用某种合理的启发式这一事实,就不难正式证明这一点。实际上,必须观察到,至少存在一种不合理的启发式方法,使我们无法在线性时间内得出解决方案(这种不合理的启发式方法是将所有变量设置为假,直到可能)。虽然具有合理的启发,但可以确保线性时间。
Giorgio Camerani

我同意。我希望有人在某处说过这句话,以便我在需要时可以引用。我想再等几天,如果没有人提供参考,我将接受这个答案。再次感谢。:)
Kaveh

我的荣幸;-)干杯!
Giorgio Camerani
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.