代表Sat4J / CNF中的扫雷限制

时间:2018-03-16 21:27:30

标签: java sat sat4j

我试图使用SAT解算器(sat4j)实现扫雷解算器,我对它们的工作原理有一个简单的了解。但有一点我无法弄清楚如何代表地雷x+y+Z+....=2,因为SAT求解器使用布尔输入。如下表所示:

| a | b | c | d | e |
| f | 2 | g | 3 | h |
| i | j | k | l | m |

您可以撰写a+b+c+f+g+i+j+k = 2c+d+e+g+h+k+l+m= 3

1 个答案:

答案 0 :(得分:0)

如果a+b+c+f+g+i+j+k = 2表示周围的单元格恰好包含两个地雷,那么你的字母确实是布尔变量,而这个约束称为基数约束。

这是由Sat4j开箱即用的。

您可以在此处找到一些提示: https://sat4j.gitbooks.io/case-studies/content/