我正在使用Quine-McCluskey进行布尔简化,效果很好。
但是,我现在需要使用一些已知的术语组合进行简化。
例如,我想简化:
(A+B)C
如果我知道:
A+B == 真
那么这简化为:
C
或者,如果我知道:
卑诗省 == 假
然后它简化为
交流电
有没有一种算法可以在给定已知术语列表的情况下简化布尔表达式?
我正在使用Quine-McCluskey进行布尔简化,效果很好。
但是,我现在需要使用一些已知的术语组合进行简化。
例如,我想简化:
(A+B)C
如果我知道:
A+B == 真
那么这简化为:
C
或者,如果我知道:
卑诗省 == 假
然后它简化为
交流电
有没有一种算法可以在给定已知术语列表的情况下简化布尔表达式?
我发现了一个很好的解决这个问题的方法。
Quine-McCluskey 能够处理一个真值表,其中一些术语被标记为“不关心”,这意味着该术语永远不会出现,因此最小化的表达式可以返回真或假。
例如:
AB结果 0 0 0 0 1 不在乎 1 0 不在乎 1 1 不在乎
可以清楚地看到,上面的函数可以最小化为只返回'false',因为这是我们唯一关心的结果。
因此,要处理已知项,只需将结果设置为“不关心”真值表中已知项评估为假的任何项。然后,Quine-McCluskey 算法在考虑已知项的情况下生成最小化函数。
例如,如果我们有一个 A 和 B 的函数,并且我们知道A == false
,那么真值表上 A 为真的任何行都可以标记为“不关心”,因为我们知道它永远不会发生。