SAT求解器的n分之一编码


25

我正在使用SAT解算器对问题进行编码,作为SAT实例的一部分,我具有布尔变量,其中这些变量中的一个应该为true,其余的应该为false 。(我有时将其描述为“一次性”编码。)x1,x2,,xn

我想在SAT中编码约束“一个必须为true”。编码此约束以使SAT求解器尽可能高效运行的最佳方法是什么?x1,,xn

我可以看到许多方法来编码此约束:

  • 成对约束。我可以为所有添加成对约束以确保至多一个为true,然后添加以确保至少一个为true 。Ĵ X X 1X 2X Ѭxi¬xji,jxix1x2xn

    这将添加子句,并且没有额外的布尔变量。Θ(n2)

  • 二进制编码。 我可以引入新的布尔变量来表示(以二进制形式)一个整数,使得(添加一些布尔约束以确保在所需范围内)。然后,我可以添加一些约束来强制是tree,而所有其他都是false。换句话说,对于每个,我们添加强制执行子句。12... LG的Ñ1 Ñ X X Ĵ Ĵ = Ĵ X Ĵlgni1,i2,,ilgni1inixixjji=jxj

    这增加了子句,我不知道有多少个额外的布尔变量。Θ(nlgn)

  • 计算真实值的数量。 我可以实现一个布尔加法器电路树,并要求,将每个视为0或1而不是false或true,然后使用Tseitin变换将电路转换为SAT子句。一棵半加法器树就足够了:将每个半加法器的进位输出限制为0,并将该树中最后一个半加法器的最终输出限制为1。可以选择任何形状的树(平衡的二叉树,或不平衡的树,等等。x ix1+x2++xn=1xi

    这可以在门中完成,因此可以添加子句和新的布尔变量。Θ n Θ n Θ(n)Θ(n)Θ(n)

    这种方法的一个特例是引入布尔变量,以使应该包含。可以通过添加以下子句,和来强制实施此意图(其中,将视为a false的同义词。接下来,我们可以为添加限制。这基本上等效于半加法树的Tseitin变换,其中树具有最大的不平衡形状。ÿ X 1X 2X ÿ ¬ X ÿ ¬ ÿ - 1 ¬ ÿ X ÿ - 1个 Ÿ 0= 1 ... ñ ¬ ÿ ¬ X +y1,,ynyix1x2xiyi¬xiyi¬yi1¬yixiyi1y0i=1,,n=12...ñ-1¬yi¬xi+1i=1,2,,n1

  • 蝴蝶网。我可以在位上构建蝶形网络,将位输入约束为,将位输出约束为,并将每个2位蝶形门视为独立的门,交换或不交换其输入,并根据不受约束的新的布尔变量决定要执行的操作。然后,我可以应用Tseitin变换将电路转换为SAT子句。n 000 01 n x 1 x 2x nnn00001nx1x2xn

    这需要门,因此添加了子句和新的布尔变量。Θ n lg n Θ n lg n Θ(nlgn)Θ(nlgn)Θ(nlgn)

还有其他我忽略的方法吗?我应该使用哪一个?有没有人对此进行过测试或尝试过,还是有任何经验?子句的数量和/或新的布尔变量的数量是否是评估此问题对SAT求解器性能影响的良好替代指标,或者如果不是,您将使用哪种指标?


我只注意到这个答案对强制基数约束SAT,即,实施该约束恰好一些参考了出来变量是真实的。因此,我的问题归结为的特殊情况。也许有关基数约束的文献将有助于阐明我的问题。n k = 1knk=1


大多数现代SAT求解器都支持基数子句和其他特殊(非CNF)约束。
戴维·霍瓦斯

Answers:


12

对于特殊的情况,其中k = 1,n个变量中的k个为true,Klieber和Kwon 进行有效的CNF编码,用于选择1到N个对象中所述,进行了指令变量编码。简化:将变量分成小组并添加子句,这些子句会导致命令变量的状态暗示一组变量要么全为假,要么全为假。然后将相同的算法递归地应用于命令变量。在过程结束时,要求少数几个最终指挥官变量中的确切一个是正确的。结果是O(n)个新子句和O(n)个新变量。

鉴于在基于DPLL的求解器中普遍存在两面文字,我认为O(n)子句的增长是优于将添加更多子句的编码方案的决定性优势。


2
如果“小组”的大小为2,则这只是二进制加法,其中“命令者”为结果位,并且进位被断言为false。递归地完成,此方法是完全通用的(适用于N的1),并且实际上是实际可行的。
d8d0d65b3f7cf42 2015年

3

MagnusBjörk的一篇论文描述了两种可能值得尝试的技术。

nx1,,xny1,,ybb=lgn(x1xn)2lgnxi¬yjxiyjji

knx1,,xny1,,ynykyk+1O(nlg2n)O(nlg2n)

纸是

马格努斯·比约克(MagnusBjörk)。 成功的SAT编码技术。2009年7月25日。

nkn

艾伦·弗里希(Alan M.Frisch),保罗·吉安娜罗斯(Paul A. 最大k约束的SAT编码:一些旧的,一些新的,一些快速的,一些慢的。ModRef 2010。

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.