如何将命题公式转换为合取范式(CNF)?

时间:2009-03-17 17:31:03

标签: math artificial-intelligence boolean-logic

如何将此等式转换为CNF?

¬((p ∨ ¬Q) ⊃ R) ⊃ (P ∧ R))

4 个答案:

答案 0 :(得分:14)

要将propositional formula转换为conjunctive normal form,请执行以下两个步骤:

  1. 将否定推入公式,重复应用De Morgan's Law,直到所有否定仅适用于原子。您在negation normal form中获得了一个公式。

    • ¬(p ∨ q)(¬p) ∧ (¬q)

    • ¬(p ∧ q)(¬p) ∨ (¬q)

  2. 反复应用distributive law在结合处发生析象的地方。一旦这不可能,公式就在CNF中。

    • p ∨ (q ∧ r)(p ∨ q) ∧ (p ∨ r)
  3. 要获取分离范式的公式,只需在步骤2中应用超过的分布。

    关于

    的说明

    问题中使用的子集符号()只是逻辑蕴涵/蕴涵的替代符号,通常写成箭头()。

答案 1 :(得分:4)

http://en.wikipedia.org/wiki/Conjunctive_normal_form

  

将一阶逻辑转换为CNF:

     
      
  1. 转换为否定正常形式。      
        
    1. 消除影响:将x→y转换为¬x∨y
    2.   
    3. 向内移动NOT。
    4.   
  2.   
  3. 标准化变量
  4.   
  5. Skolemize the statement
  6.   
  7. 删除通用量词
  8.   
  9. 通过OR分发AND。
  10.         

    (人工智能:一种现代的   方法[1995 ...] Russel和Norvig)

答案 2 :(得分:1)

我可以建议吗?页面上有一个转换算法。

Conjunctive Normal Form

答案 3 :(得分:0)

我在Java中实现了一个小工具,它可以从布尔表达式到(C | D)NF进行基本转换。如果您有兴趣,可以查看https://github.com/julianthome/ctrans。实施基于these lecture notes。可以找到更详细的描述here。任何反馈将不胜感激; - )。