如何减少逻辑陈述?

时间:2009-03-20 15:35:44

标签: computer-science logic equivalence

我很确定我能记得在我的大学水平课程中做过类似的事情并且有一些类型的公式,但我的思绪让我失望了。

鉴于声明:(a OR b OR d)AND(a OR c)

我很确定这可以简化为:(OR OR b OR OR c)

但我不记得如何去证明它。

也许这是一系列逻辑表?

9 个答案:

答案 0 :(得分:10)

你不能将“(或OR b或d)和(a OR c)”减少为“(或OR b或d或c)”因为前者不满意“c = true,a,b,d = false“,而后者是。所以你不能证明减少正确:)

通常,有许多方法可以减小布尔公式的大小,这也是您想要优化的问题(总大小?条件评估的平均数量?)。卡诺图仅适用于少量变量。将大布尔公式简化为较小的布尔公式是一个高级主题,在自动逻辑电路设计。

答案 1 :(得分:8)

Karnaugh maps?逻辑表达式减少?

答案 2 :(得分:4)

卡诺夫地图是你的朋友:

http://en.wikipedia.org/wiki/Karnaugh_map

你必须从上面的等式中反过来构建它,但它是一个很好的工具,告诉你它是否可以进一步减少。

答案 3 :(得分:3)

卡诺图,关键是“画出”所有可能的输入并指出它们的输出。然后,您可以开始过滤掉对输出没有影响的输入,从而减少地图。一旦优化,您就可以从中生成逻辑。

答案 4 :(得分:2)

(a OR b OR d)AND(a OR c)

这意味着当a为真时,一切都是真的!

=> a OR {(b OR d)AND(c)}

=> a OR(b AND C)OR(d和C)

我认为结果(或者说OR或者或者是)是错误的,但是当它错了时请帮我一把。

答案 5 :(得分:1)

a或{(b OR d)AND c}

推理: 如果是“a”,则该陈述为真。 否则,你需要b或d(以满足声明的第一部分)和c(满足后半部分的情况!a

答案 6 :(得分:1)

使用Karnaugh maps

这是OR b OR d:

 \ab
cd\ 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
cd\ 00 01 11 10
---+-----------+
00 |  |  | X| X|
01 |  |  | X| X|
11 | X| X| X| X|
10 | X| X| X| X|
   +-----------+

将它们相交,我们得到:

 \ab
cd\ 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|

由于(某些东西)不是一个矩形,它需要两个表达式,可以是“或”或“或”在一起,这取决于我们想要接近它的方式。我们将在此示例中使用OR,因为它提供了更简单的表达式。

在这种情况下,我们可以将两个X彼此相邻,再用两个来填充整个cd行,因此cd可以是其中一个表达式。我们也可以将两者放在一起,将右边的两个组合成一个正方形。该正方形表示表达式bc,因为a和d都在正方形内变化。

所以最终表达式是 a OR((c AND d)OR(b AND d)),或 a + cd + bd 。好多了,不是吗?

答案 7 :(得分:1)

SOP最小形式:

y = a | b&c | c&d;

POS具有相同的成本(实现逻辑图的门数):

y = (a|c)&(a|b|d);

答案 8 :(得分:0)

是的,你可以证明这一点。你不能把它减少到(或OR b OR d或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(???)):(