我们有逻辑表达式:
p AND (p OR q) AND NOT (NOT p AND p)
这个表达的最终结果是什么?
如何解决?从我记得的大学。但是如何呈现答案呢?就我而言,我认为它只是 p 。但如果有1101或其他奇怪的结果如何将其作为答案呢?
答案 0 :(得分:3)
在您给出的表达式中,如果p
为true
,则表达式的计算结果为true
。否则,如果p
为false
,则表达式的计算结果为false
。
如果我们从骑手一侧打破你的表情:
NOT (NOT p AND p) is always true
因此,您提供的表达式等同于:
p AND (p OR q)
对于true
的任何p
值,表达式p AND (p OR q)
为真:
true AND (true or q) == true
对于false
的任何p
值,表达式p AND (p OR q)
为false:
false AND (false or q) == false
因此,给定的表达式p AND (p OR q) AND NOT (NOT p AND p)
完全依赖于p
。
答案 1 :(得分:1)
如果您需要编写用于解决此类表达式的代码,请使用一些解析器生成器,如JavaCC或类似的。它会将表达式转换为数据树,这些数据树很容易使用递归进行评估,甚至可以在解析时动态进行评估。
如果您只需要解决这个表达式,请参阅您的问题的评论,这是一个答案。表达式的计算结果为p
。
答案 2 :(得分:1)
您的解决方案是正确的。您也可以通过一系列转换来推导它(例如,您可以观察到NOT p AND p
始终为假等)。
但如果有1101或其他奇怪的结果如何将其作为答案呢?
您可以将其显示为真值表或显示disjunctive normal form(或结合法线形式)。正常形式很容易从真值表中构建。