Sat Solver -- Minisat & Sat4j 使用报告

来源:互联网 发布:藏獒崩盘 知乎 编辑:程序博客网 时间:2024/06/18 15:42

cnf文件下载:http://people.sc.fsu.edu/~jburkardt/data/cnf/cnf.html


一、Minisat

简介:MiniSAT是简约的求解器,开源的布尔可满足问题求解器。给SAT求解器一个逻辑命题,包含与或非逻辑符号以及若干布尔变量,SAT求解器根据这个表达式判定该逻辑命题是否可满足从而决定该命题是否成立。

 

下载:https://github.com/niklasso/minisat

 

编译:

1.      exportMROOT=<minisat-dir>             

2.      cd { core | simp }

3.      gmake rs (or make rs)

4.      cp minisat_static<minisat-dir>

            

运行:

输入文件

输出文件

可满足性

simple_v3_c2.cnf

simple_v3_c2.out

Satisfiable

 

输入文件

输出文件

可满足性

aim-50-1_6-yes1-4.cnf

aim-50-1_6-yes1-4.out

Satisfiable

 

输入文件

输出文件

可满足性

aim-100-1_6-no-1.cnf

aim-100-1_6-no-1.out

Unsatisfiable


二、Sat4j

简介:SAT4j基于Minisat,是一个用Java实现的SAT求解器,其支持可满足问题、部分极大可满足问题和带权的极大可满足问题。

 

下载:http://www.sat4j.org/

 

运行:java -jar org.sat4j.core.jar  <Cnf File>

 

输入文件

可满足性

simple_v3_c2.cnf

Satisfiable

 

输入文件

可满足性

aim-50-1_6-yes1-4.cnf

Satisfiable

 

输入文件

可满足性

aim-100-1_6-no-1.cnf

Unsatisfiable

 


0 0