如何简化布尔方程

时间:2018-09-12 07:20:57

标签: boolean-logic boolean-expression

请注意,这是一个示例问题,代表所有类似问题的总和,请不要仅回答以下问题,而是回答优化布尔表达式的一般问题


我有这个布尔方程:[boolean equation] e.g. (!B && A) || A

有什么更好的方法吗?

1 个答案:

答案 0 :(得分:-1)

布尔方程遵循简单的计算规则,称为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。 它应该看起来像这样:Truth table

您也可以在线创建真值表,例如使用此tool

您可以在真值表中创建一个KV-Map。 那些看起来像这样:

KV-Map

还有在线工具可以创建KV地图(我建议使用this one)。

如何根据您的真值表填写这些地图不是这里的主题。

如何从KV-Map中获取布尔方程式也不是主题,但是推荐的工具正在为您计算布尔值方程:calculation

该问题的结论:如果要优化布尔方程,请使用方程创建一个真值表:Truth table

填写KV地图:

KV-Map

,然后用计算出的最短方法替换方程式: Calculation


补充:用KV-Map计算的方程式是最短的方法。您仍然可以使用布尔代数进行一些转换,但这不会使这些方程式看起来更容易。