布尔逻辑简化

时间:2015-05-19 02:54:27

标签: boolean logic

我正在努力解决这个问题,但我很难过: '意味着补充 Y = A'B'+ A'BC'+(A + C')' 我的尝试: A'B'+ A'BC'+ A'C A'(B'+ BC'+ C) 现在这就是我迷失的地方。不知何故,括号表达式的计算结果为1但不确定如何。 编辑:现在解决了。

1 个答案:

答案 0 :(得分: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 - 那些也是假的。前两个词A'B'A'BC'都是假的,因为它们AND都有假A'。最后一个词有A+C',它总是正确的(因为真OR任何事都是真的),这意味着对它的否定总是错误的。

  • 转到前四行,当AB都为假时,第一个词A'B'为真,所以其他两个词不是物质(真OR任何事物OR任何事都是真的。)

  • 只留下第三和第四行。第三,AC都是假的,C为真,这意味着中间词A'BC'为真。

  • 第四行A为false,C为true,因此A+C'给出错误或错误 - &gt; false,因此第三项(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 / De Morgans法律仅指出a'b' -> (a+b)'a'+b' -> (ab)'

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

3 /不确定此法律是否有名称,但如果c为真,则整个表达式为真。如果c为false,则归结为b and trueb。这有效b+c

4 /这些不言而喻,正如任何一位优秀的数学家应该告诉你的那样,很少应该在正式证明中不言而喻: - )