【发布时间】:2010-10-14 13:53:40
【问题描述】:
我很确定我记得在我的一门大学课程中做过这样的事情,并且有某种公式,但除此之外,我的想法让我失望。
给定语句: ( a OR b OR d ) AND ( a OR c )
我很确定这可以简化为:( a OR b OR d OR c )
但我不记得我将如何证明这一点。
也许是一系列逻辑表?
【问题讨论】:
标签: computer-science logic equivalence
我很确定我记得在我的一门大学课程中做过这样的事情,并且有某种公式,但除此之外,我的想法让我失望。
给定语句: ( a OR b OR d ) AND ( a OR c )
我很确定这可以简化为:( a OR b OR d OR c )
但我不记得我将如何证明这一点。
也许是一系列逻辑表?
【问题讨论】:
标签: computer-science logic equivalence
您不能将“(a OR b OR d)AND(a OR c)”简化为“(a OR b OR d OR c)”,因为前者不满足“c=true, a,b,d =false”,而后者是。所以你也不能证明减少是正确的:)
总的来说,减少布尔公式大小的方法有很多,这也是你要优化什么的问题(总大小?条件评估的平均次数?)。卡诺图仅适用于少数变量。将大布尔公式简化为更小的布尔公式是一个高级主题,在例如自动逻辑电路设计。
【讨论】:
Karnaugh maps?逻辑表达式减少?
【讨论】:
【讨论】:
卡诺图,关键是“绘制”所有可能的输入并指出它们的输出。然后您可以开始过滤掉对输出没有影响的输入,从而减少映射。优化后,您就可以从中生成逻辑。
【讨论】:
( a OR b OR d ) AND ( a OR c )
这意味着当 a 为真时,一切都为真!
=> a OR { (b OR d) AND (c) }
=> a OR (b AND C) OR (d and C)
我认为结果 ( a OR b OR d OR c ) 是错误的,但是当它出错时请帮我一把。
【讨论】:
a 或 {(b OR d) AND c}
推理: 如果为“a”,则该陈述为真。 否则,您需要 b 或 d(以满足语句的第一部分)和 c(满足 !a
的情况下的后半部分【讨论】:
这是一个 OR b OR d:
\ab 光盘\ 00 01 11 10 ---+-----------+ 00 | | X| X| X| 01 | X| X| X| X| 11 | X| X| X| X| 10 | | X| X| X| +-----------+这是一个 OR c:
\ab 光盘\ 00 01 11 10 ---+-----------+ 00 | | | X| X| 01 | | | X| X| 11 | X| X| X| X| 10 | X| X| X| X| +-----------+相交它们,我们得到:
\ab 光盘\ 00 01 11 10 ---+-----------+ 00 | | | X| X| 01 | | | X| X| 11 | X| X| X| X| 10 | | X| X| X| +-----------+显然,这是一个 OR(某事),其中(某事)是:
00 01 11 | X| X| 10 | | X|由于 (something) 不是一个矩形,它需要两个表达式,可以是 AND'ed 或 OR'ed 一起,这取决于我们想要如何处理它。我们将在本例中使用 OR,因为它给出了更简单的表达式。
在这种情况下,我们可以将两个相邻的 X 组合成另外两个以填充整个 cd 行,因此 cd 可以是表达式之一。我们也可以将两者放在一起,将两者放在右侧,形成一个正方形。这个正方形代表表达式 bc,因为 a 和 d 在正方形内都不同。
所以最后的表达式是a OR ((c AND d) OR (b AND d)),或a + cd + bd。好多了,不是吗?
【讨论】:
SOP 最小形式:
y = a | b&c | c&d;
POS 的成本相同(实现逻辑图的门数):
y = (a|c)&(a|b|d);
【讨论】:
是的,你可以证明这一点。您不能将其简化为 ( a OR b OR d OR c )
请看下面的第 3 行。您的减少将无法产生正确的答案。
运行一下:
A B C D
0 0 0 0 = 0
0 0 0 1 = 0
0 0 1 0 = 0
.
.
.
1 0 0 0 = 1
1 0 0 1 = 1
到目前为止,我得到了 (A OR (???)) :(
【讨论】: