2015-05-19 126 views
-1

我试图解决这个但我有很难: '是指互补 Y = A'B' + A'BC '+(A + C ')' 我尝试: A' B'+ A'BC'+ A'C A'(B'+ BC'+ C) 现在这是我迷失的地方。不知何故,加括号的表达式评估为1,但我不知道如何。 编辑:现在解决。布尔逻辑简化

+0

我不认为你应该问布尔逻辑在这里。 – Mox

+0

我应该问哪里? – theProdigyLebron

+0

不太确定,但这是我已经制定的。 A'B'+ A'BC'+(A + C')'= A'B'+ A'BC'+ A'C = A'(B'+ C + BC')= A'(B' + C + B)= A'(C + 1)= A' 你需要的规则是这个A + A'B = A + B – Mox

回答

0

我总是喜欢写程序的这种东西,看是否逻辑推理会持币观望:

#include<stdio.h> 
int main (void) { 
    puts ("A B C"); 
    for (int a = 0; a < 2; a++) { 
     for (int b = 0; b < 2; b++) { 
      for (int c = 0; c < 2; c++) { 
       int x = !a && !b; 
       int y = !a && b && !c; 
       int z = !(a || !c); 
       printf ("%d %d %d -> %d %d %d -> %d\n", 
        a, b, c, x, y, z, x || y || z); 
      } 
     } 
    } 
    return 0; 
} 

的输出是:

A B C 
0 0 0 -> 1 0 0 -> 1 
0 0 1 -> 1 0 1 -> 1 
0 1 0 -> 0 1 0 -> 1 
0 1 1 -> 0 0 1 -> 1 
1 0 0 -> 0 0 0 -> 0 
1 0 1 -> 0 0 0 -> 0 
1 1 0 -> 0 0 0 -> 0 
1 1 1 -> 0 0 0 -> 0 

,你可以告诉简单的表达式只是A'。你也可以看到,为什么,由于中间部分显示三个单独的术语是OR - 一起得到最终结果。

  • A是真实的(最后四线),所有这三个方面都是假的,所以OR -ing那些提供虚假为好。前两项A'B'A'BC'是错误的,因为它们都是AND,而其中的错误A'。最后一项有A+C',它总是如此(因为真正的OR任何事情都是真的),这意味着否定它总是错误的。

  • 谈到前四线,当AB都是假的,第一项A'B'是真实的,那么其他两个条款并不重要(真OR什么OR什么是真实的)。

  • 只留下第三和第四行。第三,AC都是错误的,并且C是正确的,这意味着中期术语A'BC'是正确的。

  • 第四线具有A假和C真所以A+C'提供虚假或假 - >假所以第三项(A+C')'为真(B是无关紧要的)。


做它CompSci方式,你只需要一步通过它,应用规则:

 A'B' + A'BC' + (A+C')' 
= A'B' + A'BC' + A'C   # "De Morgan" final term  [note 1] 
= A'(B' + BC' + C)   # extract common A'   [note 2] 
= A'(B' + B  + C)   # (B and not C) or C -> B or C [note 3] 
= A'( T  + C)   # (not B or B) -> true   [note 4] 
= A'(  T  )   # true or anything -> true  [note 4] 
= A'       # X and true -> X    [note 4] 

注:

1 /德摩根法律只规定a'b' -> (a+b)'a'+b' -> (ab)'

2 /分配法ax+ay -> a(x+y)

3 /不知道这个法律是否有一个名字,但如果c是真的,整个表达式是真实的。如果c是错误的,那么它可以归结为b and true或者只是b。这实际上是b+c

4 /这些不用说,虽然,因为任何好的数学家应该告诉你,很少应该去没有在正式的证明说:-)

+0

感谢您的详细解答! – theProdigyLebron