一般我們(men) 都是采用公式法或者卡諾圖的方法。不過用程序自動化來實現,這兩(liang) 種方法都不合適。在計算邏輯代數裏麵有個(ge) 叫做Quine-McCluskey(奎因-麥克拉斯基)算法的,用於(yu) 化簡邏輯公式的,並且它還給出了檢查布爾函數是否達到了最小化形式的確定性方法。不過這個(ge) 算法是NP-完全的,因此運行時間隨輸入變量個(ge) 數呈指數增長。比如邏輯變量個(ge) 數有幾十個(ge) 的時候,這時候找到最簡表達式已經是不太可能,隻能通過啟發式算法(Espresso算法)來尋求次優(you) 解。
根據輸入端的變化,寫(xie) 出輸出端的狀態,真值表就出來了。相反,從(cong) 輸出端倒推回輸出端,就是邏輯表達式
第一種方法:以真值表內(nei) 輸出端“1”為(wei) 準
第一步:從(cong) 真值表內(nei) 找輸出端為(wei) “1”的各行,把每行的輸入變量寫(xie) 成乘積形式;遇到“0”的輸入變量上加非號。 第二步:把各乘積項相加,即得邏輯函數的表達式。
第二種方法:以真值表內(nei) 輸出端“0”為(wei) 準
第一步:從(cong) 真值表內(nei) 找輸出端為(wei) “0”的各行,把每行的輸入變量寫(xie) 成求和的形式,遇到“1”的輸入變量上加非號。
第二步:把各求和項相乘,即得邏輯函數表達式。
最後化簡,在實際運用過程中,哪個(ge) 方法簡便就采用哪種。
將真值表中函數值等於(yu) 1的變量組合選出來;對於(yu) 每一個(ge) 組合,凡取值為(wei) 1的變量寫(xie) 成原變量,取值為(wei) 0的變量寫(xie) 成反變量,各變量相乘後得到一個(ge) 乘積項;最後,把各個(ge) 組合對應的乘積項相加,就得到了相應的邏輯表達式。 例1120 試根據表Z1112,寫(xie) 出相應的邏輯表達式。
從(cong) 表中看到,當A=0、B=1時,Y=1;當A=1、B=0時Y=1。因此可寫(xie) 出相應的邏輯表達式為(wei) :
Y=B+A
真值表還可用來證明一些定理。
例1121 試用真值表證明摩根定理=+
證:設上式左邊 =Y1,右邊=Y2,分別列出相應的真值表如表Z1113所示:
比較Y1和Y2,證得=+。
例1122 試用真值表證明A+AB=A。
證:令A+AB=Y1,A=Y2,列出真值表如Z1114所示。
比較Y1和Y2,證得A+AB=A。