比方说,你有一个布尔函数,它接受两个数字(二进制),并返回true,如果他们平等16:计算布尔可满足性时,是否包含隐式约束?
01000 + 01000 = 10000
8 + 8 = 16 -> true
00110 + 01000 = 01110
6 + 8 = 14 -> false
在这个例子中,该功能需要十分投入,让我们称他们为ABCDE + FGHIJ。
引擎盖下,它直接仿照门逻辑,并使用两个加法器和一些XNOR门,以检查等价于二进制串10000
我们再喂此二元函数为一个布尔可满足性算法来寻找一组输入产生一个真正的输出(例如上面的第一个例子)。
我的问题是:如果我们要明确观察到的约束,SAT算法会更快地找到解决方案吗?
“观察到的约束”是什么意思?那么,一个观察到的约束可能是“如果任何一个数大于16,那么就不要执行加法并返回错误”。
你可能会包含此约束,像这样:
(一^ ^¬b^¬c^¬d¬e)^(F^^¬g^¬h^¬i¬j)^(中功能你以前)
另一个约束可能是“如果一个数字是偶数,而另一个是奇数,则返回false”。
((E ^¬j)V(¬e^ j)的)^(你之前所具有的功能)
这些布尔函数是在正确性等效的,但在门逻辑,后者将(可能)效率更高。将问题模型化为SAT减少的唯一问题,还是有助于包含这些观察到的约束?
我意识到这不是一个很好的例子,但希望它解释我在问什么。
预先感谢
我有点困惑;我不太明白你在问什么,我不确定这是不是在问SAT的问题? –