如何简化布尔方程
How To simplify boolean equations
请注意,这是一个代表所有类似问题之和的示例问题,请不要只回答下面的问题,而是优化布尔表达式的一般问题
我有这个布尔方程:[boolean equation] e.g. (!B && A) || A
有没有更好的方法?
布尔方程遵循简单的计算规则,称为 Boolean Algebra
。
有了这些规则,您可以通过努力简化任何布尔方程:
Associativity of ∨ : x ∨ ( y ∨ z ) = ( x ∨ y ) ∨ z
Associativity of ∧ : x ∧ ( y ∧ z ) = ( x ∧ y ) ∧ z
Commutativity of ∨ : x ∨ y = y ∨ x
Commutativity of ∧ : x ∧ y = y ∧ x
Distributivity of ∧ over ∨ : x ∧ ( y ∨ z ) = ( x ∧ y ) ∨ ( x ∧ z )
Identity for ∨ : x ∨ 0 = x
Identity for ∧ : x ∧ 1 = x
Annihilator for ∧ : x ∧ 0 = 0
The following laws hold in Boolean Algebra, but not in ordinary algebra:
Annihilator for ∨ : x ∨ 1 = 1
Idempotence of ∨ : x ∨ x = x
Idempotence of ∧ : x ∧ x = x
Absorption 1: x ∧ ( x ∨ y ) = x
Absorption 2: x ∨ ( x ∧ y ) = x
Distributivity of ∨ over ∧ : x ∨ ( y ∧ z ) = ( x ∨ y ) ∧ ( x ∨ z )
Complementation 1 : x ∧ ¬x = 0
Complementation 2 : x ∨ ¬x = 1
Double negation : ¬(¬x) = x
De Morgan 1 : ¬x ∧ ¬y = ¬(x ∨ y)
De Morgan 2 : ¬x ∨ ¬y = ¬(x ∧ y)
注意
∨
代表OR
(||
)
∧
表示AND
(&&
)
¬
代表NOT
(!
)
=
表示EQUALS
(==
)
但是随着方程式的复杂化,手工完成这几乎是不可能的。完成的第一步是 truth table。
它应该看起来像这样:
您也可以在线创建真相 table,例如 tool。
从事实table,你可以创造一个KV-Map。
这些看起来像这样:
还有创建 KV-Map 的在线工具(我推荐 this one))。
如何根据你的真实情况填写那些地图table不是这里的主题。
如何从KV-Map中得到boolean equations也不是主题,推荐工具帮你计算:
问题的结论:如果你想优化你的布尔方程,用你的方程创造一个真理table:
填写 KV 映射:
并用计算出的可能的最短路径替换您的方程式:
补充:用KV-Map计算出来的方程是最短路径。您仍然可以使用布尔代数进行一些变换,但这不会使这些方程式看起来更简单。
请注意,这是一个代表所有类似问题之和的示例问题,请不要只回答下面的问题,而是优化布尔表达式的一般问题
我有这个布尔方程:[boolean equation] e.g. (!B && A) || A
有没有更好的方法?
布尔方程遵循简单的计算规则,称为 Boolean Algebra
。
有了这些规则,您可以通过努力简化任何布尔方程:
Associativity of ∨ : x ∨ ( y ∨ z ) = ( x ∨ y ) ∨ z
Associativity of ∧ : x ∧ ( y ∧ z ) = ( x ∧ y ) ∧ z
Commutativity of ∨ : x ∨ y = y ∨ x
Commutativity of ∧ : x ∧ y = y ∧ x
Distributivity of ∧ over ∨ : x ∧ ( y ∨ z ) = ( x ∧ y ) ∨ ( x ∧ z )
Identity for ∨ : x ∨ 0 = x
Identity for ∧ : x ∧ 1 = x
Annihilator for ∧ : x ∧ 0 = 0
The following laws hold in Boolean Algebra, but not in ordinary algebra:
Annihilator for ∨ : x ∨ 1 = 1
Idempotence of ∨ : x ∨ x = x
Idempotence of ∧ : x ∧ x = x
Absorption 1: x ∧ ( x ∨ y ) = x
Absorption 2: x ∨ ( x ∧ y ) = x
Distributivity of ∨ over ∧ : x ∨ ( y ∧ z ) = ( x ∨ y ) ∧ ( x ∨ z )
Complementation 1 : x ∧ ¬x = 0
Complementation 2 : x ∨ ¬x = 1
Double negation : ¬(¬x) = x
De Morgan 1 : ¬x ∧ ¬y = ¬(x ∨ y)
De Morgan 2 : ¬x ∨ ¬y = ¬(x ∧ y)
注意
∨
代表OR
(||
)∧
表示AND
(&&
)¬
代表NOT
(!
)=
表示EQUALS
(==
)
但是随着方程式的复杂化,手工完成这几乎是不可能的。完成的第一步是 truth table。
它应该看起来像这样:
您也可以在线创建真相 table,例如 tool。
从事实table,你可以创造一个KV-Map。 这些看起来像这样:
还有创建 KV-Map 的在线工具(我推荐 this one))。
如何根据你的真实情况填写那些地图table不是这里的主题。
如何从KV-Map中得到boolean equations也不是主题,推荐工具帮你计算:
问题的结论:如果你想优化你的布尔方程,用你的方程创造一个真理table:
填写 KV 映射:
并用计算出的可能的最短路径替换您的方程式:
补充:用KV-Map计算出来的方程是最短路径。您仍然可以使用布尔代数进行一些变换,但这不会使这些方程式看起来更简单。