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

Math 如何将命题公式转换为合取范式(CNF)?,math,artificial-intelligence,boolean-logic,Math,Artificial Intelligence,Boolean Logic,我怎样才能把这个方程式转换成CNF ¬((p ∨ ¬Q) ⊃ R) ⊃ (P ∧ R)) 我可以提出这个建议吗?页面上有一个转换算法 要将一阶逻辑转换为CNF: 转换为否定范式。 消除影响:转换x→ y到x∨ y 不要向内移动 标准化变量 使这句话具体化 删除通用量词 通过ORs分配数据 (人工智能:现代 方法[1995…]罗素和诺维格) 要将转换为,请执行以下两个步骤: 将否定推到公式中,反复应用,直到所有否定都只适用于原子。您可以在中获得一个公式 ,(p∨ q) 至(p)∧ (q)

我怎样才能把这个方程式转换成CNF

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

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

要将一阶逻辑转换为CNF:

  • 转换为否定范式。
  • 消除影响:转换x→ y到x∨ y
  • 不要向内移动
  • 标准化变量
  • 使这句话具体化
  • 删除通用量词
  • 通过ORs分配数据
  • (人工智能:现代 方法[1995…]罗素和诺维格)

    要将转换为,请执行以下两个步骤:

  • 将否定推到公式中,反复应用,直到所有否定都只适用于原子。您可以在中获得一个公式

    • ,(p∨ q) 
      (p)∧ (q)

    • ,(p∧ q) 
      (p)∨ (q)

  • 在连接上发生析取时重复应用。一旦这不可能了,这个公式就是CNF

    • p∨ (q)∧ r) 
      (p∨ q)∧ (p∨ r) 
  • 要获得析取范式的公式,只需应用
    超过<代码>∨在步骤2中

    关于
    
    
    子集符号(
    )只是逻辑蕴涵/蕴涵的替代符号,通常写为箭头(
    )。

    我用Java实现了一个小工具,可以将布尔表达式基本转换为(C | D)NF。如果你感兴趣,你可能想看看。实现基于。可以找到更详细的描述。任何反馈都将不胜感激;-)

    其中一些符号是不标准的。什么⊃ 应该是布尔逻辑吗?我想问同样的问题我猜是“->”符号是的,我刚读到关于你是对的约旦我会说被称为算法有点高。“在ORs上分配ANDs”并不是对该算法的充分描述。@jamie这意味着应用分配定律。这是一个非常准确的描述。@ziggystar,那么你是怎么做到的呢?很明显,你和其他任何对逻辑有任何理解的人都会发现这一步非常简单和明显,因为花了好几天的时间才找到一个描述。我发现的最后一个答案,顺便说一句,是谷歌上的付费答案。@jamie分配定律是在德国五年级的数学课上教的(我刚刚查过)。我不认为有人问事情,所以不知道。也许你不明白答案中的短语。但是如果你不理解我的重新表述(“应用分配定律”)-对不起,给定的算法是针对谓词逻辑的,而不是针对命题逻辑的。