我有一个问题在做。
p,q和r的真值的多少组合使这个表达式成立? (p&&!q)|| (q ||!r)
我知道答案是7,但我不知道他们是如何得到答案的。我可以简单地测试每个组合(8是最大值,2 ^ 3),但有更快的方法可以做到这一点吗?表达式可以简化吗?
答案 0 :(得分:1)
这当然不需要详尽的搜索。你可以推理如下:
|| !r
您知道与r == false
的4种组合满足表达式|| q
您知道剩余的4个组合,q == true
的2符合表达式(p && !q)
您知道剩余的2个组合中的q == false
都有q == true
(因为您已经考虑了上面p == true
的情况)所以(p && !q) || q
p || q
1}}满足表达式添加这些,你有7个组合满足表达。
至于简化表达式,p || q || !r
相当于!(!p && !q && r)
。因此表达式可以简化为{{1}}。这也可以表示为{{1}},这清楚地表明为什么有7种组合:只有一种组合不满足表达式。
答案 1 :(得分:0)
要回答第二个问题,“可以简化吗?”:在布尔代数中,表达式
a || (!a && b)
相当于
a || b
查看原始表达:
(p && !q) || (q || !r)
请注意||
是关联的(&&
也是如此),因此您可以重新排列括号:
((p && !q) || q) || !r
第一部分是我答案顶部的等价情况,因此
((p && !q) || q)
相当于
p || q
(请注意||
和&&
都是可交换的),因此整个表达式相当于
p || q || !r