有一個問題,我遇到了問題。查找#個真值組合#
p,q和r的真值有多少組合使這個表達式成立? (p & &!q)|| (q ||!r)
我知道答案是7,但我不知道他們是如何得到答案的。我可以簡單地測試每種組合(8是最大值,2^3),但是有沒有更快的方法可以做到這一點?表達式可以簡化嗎?
有一個問題,我遇到了問題。查找#個真值組合#
p,q和r的真值有多少組合使這個表達式成立? (p & &!q)|| (q ||!r)
我知道答案是7,但我不知道他們是如何得到答案的。我可以簡單地測試每種組合(8是最大值,2^3),但是有沒有更快的方法可以做到這一點?表達式可以簡化嗎?
這當然不需要詳盡的搜索。您可以推理如下:
r == false
滿足表達|| !r
的|| q
你知道,剩下的4種組合中,2 q == true
滿足表達式(p && !q)
你知道,剩下的2種組合都有q == false
(因爲你已經考慮到上述情況,其中q == true
)等的1 p == true
滿足式添加那些你有7個組合滿足表達式。
至於簡化表達式,(p && !q) || q
相當於p || q
。所以表達式可以簡化爲p || q || !r
。這也可以表示爲!(!p && !q && r)
,這就很明顯爲什麼有7種組合:只有一種組合不滿足表達式。
爲了回答第二個問題, 「可以將它簡化?」:在布爾代數,表達
a || (!a && b)
相當於
a || b
尋找在原始表達式:
(p && !q) || (q || !r)
請注意||
是關聯的(所以&&
),因此,你可以重新排列括號:
((p && !q) || q) || !r
與第一部分是在我的答案上等價的情況下,從而
((p && !q) || q)
相當於
p || q
(注意||
和&&
都是可交換的),所以整個表達式相當於
p || q || !r
謝謝,我也忘了注意我沒有想到要創建一個程序。我正在學習競爭力的計算機科學測試,這是我頭腦麻煩的問題。 – 2015-02-08 00:19:20