Logic 简化一组AND和OR子句
因此,如果我有一组AND和OR子句,如下所示:Logic 简化一组AND和OR子句,logic,conditional,Logic,Conditional,因此,如果我有一组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' ) (A + B)(
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' )
(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 = 1
B = 0
C = 0
D = 0
如果你的简化版本是错误的,那么原始声明是正确的。您可以找到另一种表示它的方法,方法是展开布尔表达式,然后尝试将其代数化,如下所示:
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' )
(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 = 1
B = 0
C = 0
D = 0
如果你的简化版本是错误的,那么原始声明是正确的。您可以找到另一种表示它的方法,方法是展开布尔表达式,然后尝试将其代数化,如下所示:
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' )
(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)。(A+C')==A+(B.C')) 所以它变成了 (A+(B.C'))。(B+D') 不知道这是否有助于你获得更有效/有用的东西
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
在电子表格中观看直播:我认为这里唯一有用的等价物是 (A+B)。(A+C')==A+(B.C')) 所以它变成了 (A+(B.C'))。(B+D') 不知道这是否有助于你获得更有效/有用的东西
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
在电子表格中观看现场直播:eZanmoto,乍一看它似乎可以工作,但我快速浏览并为每一个都做了真相表,下面是失败的例子:
@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
eZanmoto,乍一看,它似乎会起作用,但我很快就为每一个都做了真相表,下面是失败的例子:
@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
迟交的答复。我最近了解了更多,这是一种系统化的方法来模拟布尔式EPXpressions 我无意中发现这似乎很好,并认为我应该用它来验证我先前的答案:
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:不必为逻辑运算选择奇怪的运算符;这主要是因为在Python中不能重载和,或和而不是
健康检查
作为合理性检查,我确实检查了算法实现是否“看到”了我认为会导致潜在简化的等价性:
print logic.boolsimp((A & B) | (A & ~C))
print logic.boolsimp(A & (B | ~C))
打印两次相同的输出((~C&A)|(B&A)
)
迟交的回答。我最近了解了更多,这是一种系统化的方法来模拟布尔式EPXpressions
我无意中发现这似乎很好,并认为我应该用它来验证我先前的答案:
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:不必为逻辑运算选择奇怪的运算符;这主要是因为在Python中不能重载和,或和而不是
健康检查
作为合理性检查,我确实检查了算法实现是否“看到”了我认为会导致潜在简化的等价性:
print logic.boolsimp((A & B) | (A & ~C))
print logic.boolsimp(A & (B | ~C))
打印两次相同的输出((~C&A)|(B&A)
)
我想我知道哪里出了问题:当我计算出A时,我想我应该得到A+(B.C')。(B+D')
。这是正确的还是我又搞砸了?我想我知道我错在哪里了:当我算出A时,我想我应该得到A+(B.C')。(B+D')
。这是正确的还是我又搞砸了?又加了一些扣款。没有什么大的简化,我又加了一些推论。没有发现什么大的简化