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