[英]how to minimize this logic (or-gate CNF)?
我正在写电路可满足性问题中“或”门的真值表(这与减少3可满足性问题有关)。
我有:
a b c c = (a OR b)
1 1 1 1
1 1 0 0
1 0 1 1
1 0 0 0
0 1 1 1
0 1 0 0
0 0 1 0
0 0 0 1
因此,如果我在列c =(a OR b)中使用0,则对a,b,c求反,那么我得到了四个子句:
!a AND !b AND c
a AND !b AND !c
a AND !b and c
a AND b AND !c
我试图最小化这些条款。 我知道正确的答案是:
c OR !a
c OR !b
c OR !a or !b
如何最小化这四个条款? 在线有程序吗? 我使用了Wolfram,但是它没有输出正确的答案,因此,如果有人有帮助的话,那就太好了
很容易看出,除了最后两行外,最后一列与c
列几乎相同。 对于最后两行,它交换了c
列中的值。 所以我们可以这样写:
if (a ∨ b) then c else ¬c
if c then t else f
可以表示为CNF (c ∨ t) ∧ (¬c ∨ f)
因此上面的公式将如下所示:
(a ∨ b ∨ ¬c) ∧ (¬(a ∨ b) ∨ c)
= (a ∨ b ∨ ¬c) ∧ ((¬a ∧ ¬b) ∨ c)
= (a ∨ b ∨ ¬c) ∧ (¬a ∨ c) ∧ (¬b ∨ c)
最后一个正是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.