我找到了一种方法,可以使用此link中描述的方式找到所有解决方案。
这工作正常,但速度很慢。当它从一开始就重新计算约束时,i_e没有利用先前的计算。
现在,我在这个link中看到,有一种更有效的方法可以使用MiniSat作为库找到所有解决方案。但那里没有描述的方式。
您能否指出我正确的文档,以便有效地找到所有SAT解决方案?
感谢。
答案 0 :(得分:3)
Yu,Subramanyan,Tsiskaridze和Malik在"All-SAT using Minimal Blocking Clauses"的论文中描述了一种更有效的查找所有SAT解决方案的方法。
迭代查找解决方案和添加阻止子句的基本策略是相同的,但阻止子句是使用新颖的想法生成的,这会减小它们的大小。产生的阻止子句比通常的朴素部分赋值小,因此每次迭代包含更令人满意的赋值,从而加快了枚举过程。
据我所知,没有公开实施本文所包含的可以下载和运行的想法。