如何解决逻辑表达式?

时间:2014-08-10 17:30:18

标签: boolean-logic boolean-expression

我们有逻辑表达式:

p AND (p OR q) AND NOT (NOT p AND p)

这个表达的最终结果是什么?

如何解决?从我记得的大学。但是如何呈现答案呢?就我而言,我认为它只是 p 。但如果有1101或其他奇怪的结果如何将其作为答案呢?

enter image description here

3 个答案:

答案 0 :(得分:3)

在您给出的表达式中,如果ptrue,则表达式的计算结果为true。否则,如果pfalse,则表达式的计算结果为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(或结合法线形式)。正常形式很容易从真值表中构建。