假设您有一个CNF公式,其中一些变量标记为特殊 有没有办法让SAT求解器(比方说,minisat)找到一个解决方案,最大化分配给true的特殊变量的数量?
答案 0 :(得分:2)
你(我)想要的是Partial Max Sat.有一个名为qmaxsat的求解器,它似乎运行得很好。
答案 1 :(得分:0)
不确定是否所有这些都能处理特殊变量的指示,但至少wikipedia为搜索提供了一些方向:
有几个解决方案提交给上一次Max-SAT评估:
- 基于分支和界限:克隆,MaxSatz(基于Satz),IncMaxSatz,IUT_MaxSatz,WBO。
- 基于满意度:SAT4J,QMaxSat。
- 不满足:msuncore,WPM1,PM2。
检查所有这些内容的描述应该是可管理的。
答案 2 :(得分:0)
您可以使用PBC解算器,例如minisat + http://minisat.se/MiniSat+.html 它们使用称为伪布尔约束的附加约束来解决常规CNF文件 Minisat +还支持优化此类约束 从我的理解,它解决了你的问题
设x1,.... xn是你想要最大化真值分配数的变量 然后您可以定义约束 最大化+1 x1 ..... +1 xn minisat +解决了这样的优化问题