将查询转换为CNF

时间:2016-04-27 14:35:38

标签: boolean logic boolean-logic cnf

我最近一直在努力学习逻辑,但我遇到了一个我不能做的查询,我不太确定我哪里出错了。将查询转换为CNF时,当您遇到这种特殊情况时,您会怎么做?

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

我如何重新安排这个以使其进入CNF形式?我做错了什么?

感谢您的帮助, 肖恩

1 个答案:

答案 0 :(得分:0)

我使用符号:

^ for AND
v for OR 
~ for NOT

以下是如何在CNF中转换公式:

  (a ^ ~(b ^  c)) ^ (d v e)
= (a ^ (~b v ~c)) ^ (d v e)    // DeMorgan:   ~(A ^ B) <=> (~A v ~B)
=  a ^ (~b v ~c)  ^ (d v e)
= CNF

每个子句由AND分隔,仅包含OR。根据您的语法,它提供:

a AND (NOT b OR NOT c) AND (d OR e) 

我希望它有所帮助:)