我在课堂上一直在努力进行布尔简化,并在家里练习了一些。我找到了一系列问题,但他们没有任何答案或工作方式。如果你能清楚地回答每一步我非常感激的话,我就会坚持下去:
问= A·B。(〜B + C)+ B.C + B
我试着找一个计算器来给我答案,然后找出解决方法,但我已经失去了
(我对此不熟悉)
编辑:~B = NOT B
答案 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
有两种方法可以实现这样的公式:
让我们先看看蛮力。以下是一个密集的真值表(为了更好看的表,请查看Wα),枚举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