我最近一直在努力学习逻辑,但我遇到了一个我不能做的查询,我不太确定我哪里出错了。将查询转换为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形式?我做错了什么?
感谢您的帮助, 肖恩
答案 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)
我希望它有所帮助:)