2
我正在做布尔简化使用Quine-McCluskey这很好。布尔简化与一些已知的组合简化
但是,我现在需要用一些已知的术语组合来执行简化。
例如,我想简化:
(A+B)C
如果我知道:
A+B == true
则简化为:
C
或者,如果我知道:
BC == false
然后将其简化为
AC
是否有可以简化定的已知条件列表布尔表达式的算法?
我正在做布尔简化使用Quine-McCluskey这很好。布尔简化与一些已知的组合简化
但是,我现在需要用一些已知的术语组合来执行简化。
例如,我想简化:
(A+B)C
如果我知道:
A+B == true
则简化为:
C
或者,如果我知道:
BC == false
然后将其简化为
AC
是否有可以简化定的已知条件列表布尔表达式的算法?
我发现了一个很好的解决这个问题的方法。
奎因 - 麦克罗斯基能够处理的真表,其中一些条款的被标记为“不关心”,这意味着永远不会出现的名词,所以最小化的表达式可以返回true或false 。
例如:
A B result 0 0 0 0 1 don't care 1 0 don't care 1 1 con't care
可以清楚地看出,上述功能可以最小化到刚刚返回“假”,因为这是我们关心的唯一结果。
因此,为了处理已知的术语,所有必须完成的操作都将结果设置为“不关心”,其中已知术语评估为假的真值表中的任何术语。 Quine-McCluskey算法然后在考虑已知项的情况下生成最小化函数。
例如,如果我们有A和B的功能,而我们知道A == false
,然后在真值表其中A是真的可以被标记为任何行“不关心”因为我们知道它永远不会发生。
前段时间,我面临同样的问题。有一个名为Espresso的最小化器,应该是非常好的。但是,当时我没能取得很大的进展。也许现在,网上有更多的信息(至少,有一个维基百科条目)。这可能值得一看。 – Eduardo 2012-02-24 22:30:01
感谢您的评论,但我一直未能找到Espresso算法的描述,所以我不知道它是否可以借助已知术语处理简化。 – Chris 2012-02-28 15:40:31
我已经解决了这个问题。请参阅下面的答案。 – Chris 2012-02-28 15:50:21