我正在使用Z3
解算器和Python API
来解决Circuit SAT problem问题。
它由许多Xor
个表达式组成,最多包含21个输入和三个输入And
表达式。 Z3
能够解决我较小的例子,但不能处理较大的例子。
而不是使用
创建Solver
对象
s = Solver()
我尝试优化
中的求解策略t = Then('simplify', 'symmetry-reduce', 'aig', 'tseitin-cnf', 'sat' )
s = t.solver()
我通过describe_tactics()
不幸的是,我的尝试并没有取得多少成果。默认的战术序列似乎做得很好。之前在rise4fun中提供的战术教程已无法访问。
另一个尝试 - 没有可见效果 - 是设置阶段参数,因为我期望我的大多数变量都有假值。 (cf related post)
set_option("sat.phase", "always-false")
Circuit SAT 问题推荐采用什么样的策略?