任何人都可以指向一个或多个网站来下载#SAT求解器的有效实现吗?我对那些返回确切的解决方案计数而不是近似值的方法感兴趣。
任何人都可以指向一个或多个网站来下载#SAT求解器的有效实现吗?我对那些返回确切的解决方案计数而不是近似值的方法感兴趣。
Answers:
您可以通过迭代所有模型来使用SAT4J来做到这一点:http : //www.sat4j.org/howto.php#models。我想大多数SAT求解器都具有这种能力。
一种选择是使用BDD库,例如JavaBDD。所有这些库都具有快速计算解决方案的功能,或者至少使它们易于编写。但是,缺点是在许多情况下构造BDD的速度很慢,并且可能需要很多内存。
相关主题:最佳SAT解算器。
我发现最好的是“ c2d编译器”。http://reasoning.cs.ucla.edu/c2d/
它使用d-DNNF,并且您需要-count选项。
http://www.cs.cornell.edu/~sabhar/上提供的MBound解算器可以给出带有概率保证的模型计数。它比列举所有解决方案要快得多。
我写了一个小的模型/素数蕴含的枚举器。这已经可以用于通过模型枚举进行模型计数,但这不是很实际。如果有人感兴趣,我可以对其进行扩展,以便计算主要蕴涵量中的模型。
葡萄糖是波尔多大学开发的非常有效的SAT求解器。