查找布尔表达式的简化乘积和

时间:2011-04-30 13:35:51

标签: math theory boolean-logic algebra truthtable

通过简单的简化就遇到了一些问题。我正在对具有3个输入A,B和C的多数解码器进行简化。如果2或所有3个输入假定为1,则其输出Y假设为1.否则Y假定为0。选择正确的切换功能Y = f(A,B,C)。

所以,在做了一个真值表后,我发现Canonical Sum of Products来了

NOT(A).B.C + A.NOT(B).C + A.B.NOT(C) + A.B.C

这简化,显然是Y = A * B + B * C + A * C

简单地使用这样的表达式需要采取哪些步骤?怎么做?在这种情况下,这个价值是如何得到的?

4 个答案:

答案 0 :(得分:5)

首先,请注意布尔表达式:

A= A + A

现在,看看

NOT(A).B.C + A.NOT(B).C + A.B.NOT(C) + A.B.C
= NOT(A).B.C + A.NOT(B).C + A.B.NOT(C) + A.B.C + A.B.C + A.B.C
= (NOT(A)+A).B.C + A.(NOT(B)+B).C + A.B.(NOT(C)+C)
= B.C + A.C + A.B

答案 1 :(得分:2)

顺便提一句WolframAlpha非常适合做(检查)布尔数学,在这种情况下,您的示例的格式为:

~A && B && C || A && ~B && C || A && B && ~C || A && B && C

此外,您的具体表达实际上以this page为例,与给出的其他答案不同。

答案 2 :(得分:0)

您将从理解一些基本逻辑概念中受益:

  • De Morgan's Laws解释如何将ANDed术语翻译成ORed术语(反之亦然)。这是一个非常强大的值得学习的概念,它允许将逻辑表达式转换为纯NAND或纯NOR形式,这有很好的理由

  • 可以使用Karnaugh map将逻辑表达式直观地转换为第一个规范形式。在许多现实生活中使用卡诺图是不切实际的,但这是一种非常好的学习技巧

查找任何逻辑表达式的第一个规范形式的一种直接方法是生成适当的真值表,然后检查导致输出为1的输入。

对于输出为1的真值表中的每一行,您只能相对容易地为该行形成逻辑表达式。完整的逻辑表达式来自ORing每行的所有表达式。这将是一个最小的表达(可能有其他人,没有一个会更小)。

答案 3 :(得分:0)

另一种解释。

我们有(1):

(not(A) and B and C ) or (A and not(B) and C) or (A and B and not C) or (A and B and C).

我们知道:

A = A or A.

所以我们可以重写(1)到(2):

(not(A) and B and C ) or (A and B and C) or
(A and not(B) and C) or (A and B and C) or
(A and B and not C) or (A and B and C)

我们也知道:

(A and B) or (A and not B) = A and (B or not B) = A

所以我们可以重写(2)到(3):

(B and C) or (A and C) or (A and B)

我们的想法是找到可以(部分)消除的组以简化方程式。