2012-02-24 62 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是真的可以被標記爲任何行「不關心」因爲我們知道它永遠不會發生。