2012-02-24 36 views
2

我正在做布尔简化使用Quine-McCluskey这很好。布尔简化与一些已知的组合简化

但是,我现在需要用一些已知的术语组合来执行简化。

例如,我想简化:

(A+B)C

如果我知道:

A+B == true

则简化为:

C

或者,如果我知道:

BC == false

然后将其简化为

AC

是否有可以简化定的已知条件列表布尔表达式的算法?

+0

前段时间,我面临同样的问题。有一个名为Espresso的最小化器,应该是非常好的。但是,当时我没能取得很大的进展。也许现在,网上有更多的信息(至少,有一个维基百科条目)。这可能值得一看。 – Eduardo 2012-02-24 22:30:01

+0

感谢您的评论,但我一直未能找到Espresso算法的描述,所以我不知道它是否可以借助已知术语处理简化。 – Chris 2012-02-28 15:40:31

+0

我已经解决了这个问题。请参阅下面的答案。 – Chris 2012-02-28 15:50:21

回答

2

我发现了一个很好的解决这个问题的方法。

奎因 - 麦克罗斯基能够处理的真表,其中一些条款的被标记为“不关心”,这意味着永远不会出现的名词,所以最小化的表达式可以返回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是真的可以被标记为任何行“不关心”因为我们知道它永远不会发生。