[英]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.