常数输入如何影响问题的SAT公式?

时间:2018-09-21 18:38:28

标签: cryptography sat satisfiability 2-satisfiability

让我们说我有一个黑箱电路,其中有N个输入和1个输出。

我想确定M个输入的值,并找到电路可以满足的其余输入(N-M)的值。如果我在verilog RTL中手动修复了M输入,然后将其转换为CNF(使用abc),会产生正确的结果吗?是解决此类问题的正确方法吗?

1 个答案:

答案 0 :(得分:4)

问题的原始搜索空间包含2^N个条目。通过固定M个输入,搜索空间减少了2^M倍,并且有2^(N-M)个条目。

根据您对固定M输入值的选择,您可以简化搜索或缩小搜索空间,最终导致无法解决。

您的黑匣子是组合电路,其中输出仅取决于输入的当前状态吗?在RTL(寄存器传输级别/语言)设置中,您还可以描述一种顺序机制,其中输出也取决于先前的输入。

要考虑固定输入,称为Boolean Constraint Propagation。这可以从根本上简化您的电路,因为可以移除所有具有预定输出的元件。示例:具有一个或多个错误输入的AND的输出为 false 。具有一个或多个 true 输入的OR具有一个 true 输出,依此类推。其他简化方法包括消除双重求反和对XOR/XNOR门的反向输入对。

您可以看看bc2cnf,这是一个从布尔网表格式转换为SAT求解器可消化的DIMACS/CNF文件的转换器。与ABC类似,bc2cnf将传播恒定的输入并提供相当优化的CNF