所以如果我有一组AND和OR子句如下:
Y = ( A + B ) . ( A + C' ) . ( B + D' )
我可以像这样简化:
Y = A . ( B + C' ) . ( B + D' ) ; Because A is common to ( A + B ) and ( A + C' )
Y = A . B . ( C' + D' ) ; Because B is common to ( B + C' ) and ( B + D' )
感谢您的时间。
答案 0 :(得分:5)
不,如果您使用以下值:
A = 1
B = 0
C = 0
D = 0
如果您的简化版本为false,则原始语句为true。您可以通过扩展布尔表达式然后尝试代数减少它来找到表示它的另一种方式,如下所示:
(A + B)(A + C')(B + D')
(AA + AC' + AB + BC')(B + D') // expand first 2 groups
AAB + ABC' + ABB + BBC' + AAD' + AC'D' + ABD' + BC'D' // expand all groups
AB + ABC' + AB + BC' + AD' + AC'D' + ABD' + BC'D' // apply identity to reduce
AB + BC' + AD' // eliminate redundant expressions
最终结果将在您的符号中显示为
(A . B) + (B . C') + (A . D')
进一步可以将其带到
B . (A + C') + (A . D')
或
A . (B + D') + (B . C')
答案 1 :(得分:3)
我认为唯一有用的等价物是
(A + B)。(A + C')=== A +(B.C')
所以它变成
(A +(B.C'))。 (B + d')
if B: --> A . D'
else: --> (A+C')
不知道这是否有助于您获得更有效/更有用的信息
A B C' D' f()
TRUE TRUE TRUE TRUE TRUE
TRUE TRUE TRUE FALSE TRUE
TRUE TRUE FALSE TRUE TRUE
TRUE TRUE FALSE FALSE TRUE
TRUE FALSE TRUE TRUE TRUE
TRUE FALSE TRUE FALSE TRUE
TRUE FALSE FALSE TRUE FALSE
TRUE FALSE FALSE FALSE FALSE
FALSE TRUE TRUE TRUE TRUE
FALSE TRUE TRUE FALSE FALSE
FALSE TRUE FALSE TRUE TRUE
FALSE TRUE FALSE FALSE FALSE
FALSE FALSE TRUE TRUE FALSE
FALSE FALSE TRUE FALSE FALSE
FALSE FALSE FALSE TRUE FALSE
FALSE FALSE FALSE FALSE FALSE
在电子表格中观看:[{3}}
答案 2 :(得分:0)
@A = B = C = D = True
Original = True
First = True
Second = False
@A = C = True, B = D = True
Original = True
First = False
Second = False
@A = True, B = C = D = False
Original = True
First = True
Second = False
@A = C = False, B = D = True
Original = True
First = False
Second = False
@A = C = D = False, B = True
Original = True
First = False
Second = False
答案 3 :(得分:0)
迟到的答案。我最近学到了更多关于Quine-McClusky algorithm and Karnaugh maps的知识,这是模仿布尔epxressions的系统方法。
我偶然发现this python implementation看起来很不错,我以为我会使用它验证我之前的答案:
import logic
A,B,C,D = logic.bools('ABCD')
print logic.boolsimp((A & B) | (A & ~C) | (B & ~D))
果然打印
(B & ~D) | (~C & A) | (B & A)
Pythonists:永远不要为逻辑运算选择错误的运算符;这主要是因为and
,or
和not
无法在Python中重载
作为一项完整性检查,我确实通过算法实现检查了我认为会导致潜在简化的等效性是“看到”:
print logic.boolsimp((A & B) | (A & ~C))
print logic.boolsimp(A & (B | ~C))
打印两次相同的输出((~C & A) | (B & A)
)