我一直在课堂上与布尔简化作斗争,并在家里多练习了一些。我找到了一个问题列表,但它们没有任何答案或工作原理。我坚持这一点,如果你能清楚地回答每一步,我将不胜感激:
Q=AB(~B+C)+B.C+B
我试着找一个计算器给我答案,然后想办法得到答案,但我迷路了
(我是新手)
编辑:~B = NOT B
我一直在课堂上与布尔简化作斗争,并在家里多练习了一些。我找到了一个问题列表,但它们没有任何答案或工作原理。我坚持这一点,如果你能清楚地回答每一步,我将不胜感激:
Q=AB(~B+C)+B.C+B
我试着找一个计算器给我答案,然后想办法得到答案,但我迷路了
(我是新手)
编辑:~B = NOT B
让我们偷懒,使用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更强,另请参见math.se 上的这个问题)。
所以表达式:
a & b & (~b | c) | b & c | b
是三个项的析取:
a & b & (~b | c)
b & c
b
您可以尝试对各个术语进行推理,知道只有一个必须是真实的(因为这是一个析取)。
最后两个为真,当且仅当 b 为真。首先,这有点难看,但如果你仔细观察:你现在有一个连词(用AND连接的术语):它们都必须为真,整个表达式为真,所以 a 和 b 必须是真的。特别是b必须为真。
总结:要使整个表达式为真,在所有三个顶级案例中,b 必须为真(如果 b 为假,它将为假)。所以它简化为b。
探索更多关于 Wolfram Alpha 的信息:
我从来没有这样做过,所以我正在使用这个网站来帮助我。
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
。
As A.(B + C) = B.(A.C)
,表达式是 now B.(A.C) + B
,等于(B + 1).(A.C) = B.(A.C)
。
注意:这还没有完成,所以请避免投票,因为我还没有完成(发布这个是为了帮助 OP 理解第一部分)。
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