布尔简化 - Q = A.B。(~B + C)+ B.C + B.

时间:2018-03-01 11:19:02

标签: boolean-expression booleanquery

我在课堂上一直在努力进行布尔简化,并在家里练习了一些。我找到了一系列问题,但他们没有任何答案或工作方式。如果你能清楚地回答每一步我非常感激的话,我就会坚持下去:

问= A·B。(〜B + C)+ B.C + B

我试着找一个计算器来给我答案,然后找出解决方法,但我已经失去了

(我对此不熟悉)

编辑:~B = NOT B

3 个答案:

答案 0 :(得分:0)

让我们懒惰并使用sympy,一个用于符号计算的Python库。

>>> from sympy import *
>>> from sympy.logic import simplify_logic
>>> a, b, c = symbols('a, b, c')
>>> expr = a & b & (~b | c) | b & c | b # A.B.(~B+C)+B.C+B
>>> simplify_logic(expr)
b

有两种方法可以实现这样的公式:

  • 应用简化,
  • 蛮力

让我们先看看蛮力。以下是一个密集的真值表(为了更好看的表,请查看),枚举a,b和c的所有可能值,以及表达式的值。

a b c -- a & b & (~b | c) | b & c | b = Q
0 0 0    0   0    10 1 0    0 0 0   0 = 0
0 0 1    0   0    10 1 1    0 0 1   0 = 0
0 1 0    0   1    01 0 0    1 0 0   1 = 1
0 1 1    0   1    01 1 1    1 1 1   1 = 1
1 0 0    1   0    10 1 0    0 0 0   0 = 0
1 0 1    1   0    10 1 1    0 0 1   0 = 0
1 1 0    1   1    01 1 0    1 0 0   1 = 1
1 1 1    1   1    01 1 1    1 1 1   1 = 1

您还可以将表达式视为树,这将取决于优先级规则(例如,通常 AND 绑定比 OR 更强,另请参阅{{3} })。

所以表达式:

a & b & (~b | c) | b & c | b 

是三个词的this question on math.se

a & b & (~b | c)
b & c
b

你可以尝试推理个别条款,知道只有一条必须是真的(因为这是一种脱节)。

当且仅当b为真时,最后两个将是真的。对于第一个,这有点难以看到,但如果你仔细观察:你现在有一个disjunction(由 AND 连接的术语):所有这些都必须是真的,对于整体表达式为真,所以a和b必须为真。特别是 b 必须是真的。

总结:要使整个表达式成立,在所有三个顶级情况下,b必须为true(如果b为false,则为false)。所以它简化为b。

了解有关Wolfram Alpha的更多信息:

https://www.wolframalpha.com/input/?i=a+%26+b+%26+(~b+%7C+c)+%7C+b+%26+c+%7C+b

答案 1 :(得分:0)

我从未这样做过,所以我使用this site来帮助我。

A.B.(B' + C) = A.(B.B' + B.C) = A.(0 + B.C) = A.(B.C)

所以表达式现在是A.(B.C) + B.C + B

对此不确定,但我猜是A.(B.C) + (B.C) = (A + 1).(B.C)。 这等于A.(B.C)

所以表达式现在是A.(B.C) + B

作为A.(B + C) = B.(A.C),表达式现为B.(A.C) + B,等于(B + 1).(A.C) = B.(A.C)

注意:这还没有完成,所以请避免因为我还没有完成而贬低(发布这个以帮助OP理解第一部分)。

答案 2 :(得分:0)

A.B.(~B+C) + B.C + B = A.B.~B + A.B.C + B.C + B    ; Distribution
                     = A.B.C + B.C + B             ; Because B.~B = 0
                     = B.C + B                     ; Because A.B.C <= B.C
                     = B                           ; Because B.C <= B