Представление ограничений тральщика в Sat4J/CNF
Я пытаюсь внедрить решатель тральщика с использованием SAT solver (sat4j), и у меня есть простое понимание того, как они работают. Но я не могу понять, как представить x+y+Z+....=2
для мин, так как решатели SAT используют логический ввод. Нечто подобное в таблице ниже:
| а | б | с | д | е | | f | 2 | г | 3 | ч | | я | J | к | л | м |
Вы могли бы написать a+b+c+f+g+i+j+k = 2
а также c+d+e+g+h+k+l+m= 3
,
1 ответ
Решение
Если по a+b+c+f+g+i+j+k = 2
Вы имеете в виду, что окружающие ячейки содержат ровно две мины, тогда ваши буквы действительно являются булевыми переменными, и это ограничение называется ограничением мощности.
Это поддерживается из коробки Sat4j.
Вы можете найти некоторые советы здесь: https://sat4j.gitbooks.io/case-studies/content/