一般我們都是采用公式法或者卡諾圖的方法。不過(guò)用程序自動(dòng)化來(lái)實(shí)現(xiàn),這兩種方法都不合適。在計(jì)算邏輯代數(shù)里面有個(gè)叫做Quine-McCluskey(奎因-麥克拉斯基)算法的,用于化簡(jiǎn)邏輯公式的,并且它還給出了檢查布爾函數(shù)是否達(dá)到了最小化形式的確定性方法。不過(guò)這個(gè)算法是NP-完全的,因此運(yùn)行時(shí)間隨輸入變量個(gè)數(shù)呈指數(shù)增長(zhǎng)。比如邏輯變量個(gè)數(shù)有幾十個(gè)的時(shí)候,這時(shí)候找到最簡(jiǎn)表達(dá)式已經(jīng)是不太可能,只能通過(guò)啟發(fā)式算法(Espresso算法)來(lái)尋求次優(yōu)解。
根據(jù)輸入端的變化,寫出輸出端的狀態(tài),真值表就出來(lái)了。相反,從輸出端倒推回輸出端,就是邏輯表達(dá)式
第一種方法:以真值表內(nèi)輸出端“1”為準(zhǔn)
第一步:從真值表內(nèi)找輸出端為“1”的各行,把每行的輸入變量寫成乘積形式;遇到“0”的輸入變量上加非號(hào)。 第二步:把各乘積項(xiàng)相加,即得邏輯函數(shù)的表達(dá)式。
第二種方法:以真值表內(nèi)輸出端“0”為準(zhǔn)
第一步:從真值表內(nèi)找輸出端為“0”的各行,把每行的輸入變量寫成求和的形式,遇到“1”的輸入變量上加非號(hào)。
第二步:把各求和項(xiàng)相乘,即得邏輯函數(shù)表達(dá)式。
最后化簡(jiǎn),在實(shí)際運(yùn)用過(guò)程中,哪個(gè)方法簡(jiǎn)便就采用哪種。
將真值表中函數(shù)值等于1的變量組合選出來(lái);對(duì)于每一個(gè)組合,凡取值為1的變量寫成原變量,取值為0的變量寫成反變量,各變量相乘后得到一個(gè)乘積項(xiàng);最后,把各個(gè)組合對(duì)應(yīng)的乘積項(xiàng)相加,就得到了相應(yīng)的邏輯表達(dá)式。 例1120 試根據(jù)表Z1112,寫出相應(yīng)的邏輯表達(dá)式。
從表中看到,當(dāng)A=0、B=1時(shí),Y=1;當(dāng)A=1、B=0時(shí)Y=1。因此可寫出相應(yīng)的邏輯表達(dá)式為:
Y=B+A
真值表還可用來(lái)證明一些定理。
例1121 試用真值表證明摩根定理=+
證:設(shè)上式左邊 =Y(jié)1,右邊=Y(jié)2,分別列出相應(yīng)的真值表如表Z1113所示:
比較Y1和Y2,證得=+。
例1122 試用真值表證明A+AB=A。
證:令A(yù)+AB=Y(jié)1,A=Y2,列出真值表如Z1114所示。
比較Y1和Y2,證得A+AB=A。