2012-06-03 59 views
2

我已經提出具有以下問題的輸出d的表推導布爾函數:從描述一個布爾函數

下表描述布爾樂趣的具有三個輸入端的輸出d值a, b和c。

a b c | d 
----------+---- 
0 0 0 | 1 
0 0 1 | 1 
0 1 0 | 1 
0 1 1 | 0 
1 0 0 | 0 
1 0 1 | 0 
1 1 0 | 0 
1 1 1 | 0 

使用AND,OR,XOR,NOT,NAND,NOR或XNOR的適當組合給出該布爾函數。

爲什麼是正確的答案:

d := (((NOT a) AND (NOT b)) AND (NOT c)) OR 
(((NOT a) AND (NOT b)) AND c) OR 
(((NOT a) AND b) AND (NOT c)) 

我的答案。 (((不是a)和(非b))和(非c))

a b c  d 
=============== 
0 0 0  1  
. 
. 
. 

這是如何派生的?

+0

請告訴我們您爲什麼認爲這是錯誤的。由於這是功課,我們希望看到一些努力。記得要顯示你的工作請:-)但作爲線索看D列和答案的數量。 –

+0

我研究出瞭解決方案'd:=(((不是a)和(不b))和(不c))',但這是不正確的。 – methuselah

+1

好吧,現在製作一張表格,顯示你的功能在答案中的輸出。我會讓你開始: –

回答

2

您給出的答案叫做產品總和(SOP)配方。看看由手術室加入了三個大的方面:

  • ((NOT a) AND (NOT b)) AND (NOT c))
  • ((NOT a) AND (NOT b)) AND c)
  • ((NOT a) AND b) AND (NOT c)

現在看真值表,其中恰好三條線有在d 1欄。這三條線中的每條線對應於三個術語中的一個。

Briefer的答案可以組成,例如d := (NOT a) AND (NOT(b AND c)),但它們不是您給出的積和產品公式。

+0

順便提一句,您應該密切關注@ PreetSangha的評論。他們可能會幫助你,甚至超過我的回答。祝你好運。 – thb

1
  • 檢查表格的上半部分。 a必須是虛假的fun爲true。
  • 此外,bc都不能同時爲true。所以,它必須是!(b && c)
  • 這應該煮沸fun!a && !(b && c)
  • 您可以應用德摩根定理的第二部分,使用!b || !ca必須是假的,甚至那麼,如此:!a && (!b || !c)是你到底是什麼了。
1

對於3個變量,8項(2^3)呈現3個變量abc之間的所有可能的變量的詳盡組合。變量d是(可以看出)某些函數的輸出說f(x)

現在,由於8個條目包含了所有可能的變化,我們可以推斷出輸出d僅在發生特定組合時爲布爾型1。在所有其他情況下,結果爲0

因此,我們簡單地將所有具有輸出的行組合爲1。你有這個結果。

程序很簡單:

  • 採取所有的行與輸出作爲1
  • 對於每一行,輸出一個表達式,該表達式將導致變量值爲1
    • AND每個變量。如果任何變量在AND之前的值爲0,NOT
  • OR上述步驟中找到的所有8個表達式。
1

從(完整的)真值表導出函數的最簡單方法是通過與一個(或零)作爲結果只讀取線和寫下disjunctive(或conjunctive)範式。

在您的表中,結果1比0更少,因此析取常態形式將會更短。正如可以從表中看到的,d將1正好三種情況:

  • A = 0,B = 0,C = 0
  • A = 0,B = 0,C = 1
  • A = 0,b = 1,C = 0

只要把這些結合在一起,你會得到:(=不,& =和v =或!)

d = (!a & !b & !c) v (!a & !b & c) v (!a & b & !c) 

這種形式自動前包括所有其他情況。你仍然可以簡化這個公式。仔細看看真值表,如果ab均爲0,則值c並不重要。因此,前兩個部分可以摺疊以獲得以下析取形式:(不再是正常形式)

d = (!a & !b) v (!a & b & !c) 

如果你申請分配性可以得到更短:

d = !a & (!b v (b & !c)) 

幾乎做到:

d = !a & (!b v b) & (!b v !c) | applying (x v !x) == 1 and (1 & y) == y 
    = !a & (!b v !c)    | applying De Morgan (!a v !b) == !(a & b) 
    = !a & !(b & c) 

完成。

1

正如有人提到你應該看看卡諾圖地圖。檢查它wikipedia 它可能看起來有點複雜,但一旦你得到它,它是非常簡單的,以獲得任何真值表的最佳表達式。

下圖顯示給定真值表的卡諾圖。

\ AB 
C\ 00 01 11 10 
    \---------------- 
0 | 1 | 1 | 0 | 0 | 
    |---------------- 
1 | 1 | 0 | 0 | 0 | 
    ---------------- 

使用卡諾的第一件事就是將真值表複製到地圖上。我會讓你解決這個問題。

下一步是將這些組合起來,維基百科的文章介紹瞭如何做到這一點。

最後制定出解決方案

從卡諾圖,可以看到,輸出爲true時(!一個&!B)無論C的值時,輸出也是如此時(! A & B &!C)。

因此,函數可以被寫爲:(!甲& B)(!甲&乙& C) d = OR

一種替代的解決方案是: d =(A &!C! )OR(!A &!B & C)