【问题标题】:how to minimize this logic (or-gate CNF)?如何最小化这个逻辑(或门 CNF)?
【发布时间】:2014-05-14 01:46:35
【问题描述】:

我正在写下电路可满足性问题中或门的真值表(这与减少 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,但它没有输出正确的答案,所以如果有人能帮上忙,那就太棒了

【问题讨论】:

  • 依稀记得大学时的这个……看看Karnaugh maps
  • 您的第三个连接子句似乎是错误的——应该是“!a AND b AND !c”。

标签: algorithm logic circuit


【解决方案1】:

很容易看出,除了最后两行之外,最后一列与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)

最后一个正是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2011-08-31
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多