解决SAT Solver解决这个子集问题是可行的吗?
-
28-09-2020 - |
题
问题是找到 $ \ mathcal {s} $ ,最小收集 $ \ {1的子集,\ dots,17 \} $ 使得满足两个条件:
- 如果 $ s \ supereteq \ mathcal {s} $ 那么 $ | s |= 6 $ ;
- 对于任何 $ a \ subseteq \ {1,\ dots,17 \} $ with $ | a |= 3 $ ,存在 $ s \ in \ mathcal {s} $ 使用 $ a \ subset s $ 。
看这里用于相关组合问题..
我认为这可以制定为min sat问题。
对于每个 $ s \ subseteq \ {1,\ dots,17 \} $ 使用 $ | s |= 6 $ ,我们介绍了一个变量 $ x_s $ 。对于每个 $ a \ subseteq \ {1,\ dots,17 \} $ with $ | a |= 3 $ ,我们介绍一个条款 $$ \ vee_ {s:a \ subseteq s,| s |= 6} x_ {s} $$ 然后,在主体中,我们可以使用SAT Solver来查找最小数量的 $ x_s $ ,它需要真实来满足所有条款。
此需要 $ \ binom {17} {6}= 12376 $ 变量, $ \ binom {17} { 3}= 680 $ 长度 $ \ binom {17-3} {3}= 364 $ 。
我在实际使用SAT求解器中的经验很少。这实际上值得在我的笔记本电脑上尝试,或者根本没有希望?
--- ---
更新
结果有很多关于套装的研究。似乎我越来越雄心勃勃地尝试解决参数的问题(17,6,3)。
它已经是(12,5,3)的打开问题。
请参阅在这里更多详细信息。
--- ---
更新2
试图在纯粹的sat中写一切,它比z3使用cadical非常好。
此外,找到一个解决方案明显更快,而不是显示不存在的解决方案。
我试图通过添加必须选择词汇顺序中的第一个和最后一个子集的约束来打破对称性。
解决方案
SAT的优化通常称为MaxSAT而不是Min Sat。特别是,我建议寻找“加权部分maxsat”的求解器,例如maxhs和rc2。
您在现代Maxsat-Solvers的背景下,您的问题大小相当小,所以是的,值得尝试。没有保证求解器将有效地工作,并且很难预测它是否会有效地工作,所以最好的事情就是尝试。
其他提示
与sat,预测会挑战是有挑战性,什么是可行的,什么是不可行的。值得一试。
我建议,而不是minsat,你首先尝试在 $ n= | \ mathcal {s} | $ ,设置你的数量需要。您可以使用最多 - $ n $ -out-12376在 $ x_s $ 变量。有多个 技术 在sat中,虽然在练习中,我将首先尝试使用用z3求解器。