分辨率算法如何用于命题逻辑?

时间:2012-09-17 13:56:07

标签: algorithm logic artificial-intelligence

我无法理解命题逻辑中的解析规则是什么。解决方案是否只是简单地陈述了一些句子可以扩展和以另一种形式书写的规则? 以下是命题逻辑的简单分辨率算法。该函数返回通过解析它的2输入获得的所有可能子句的集合。我无法理解算法的工作原理,有人可以向我解释一下吗?

  function PL-RESOLUTION(KB,α) returns true or false
     inputs: KB, the knowledge base, a sentence α in propositional logic, the query, a
             sentence in propositional logic 
     clauses <--- the set of clauses in the CNF representation of KB ∧ ¬α
     new <--- {}
     loop do
        for each Ci, Cj in clauses do
            resolvents <----- PL-RESOLVE(Ci, Cj)
            if resolvents contains the empty clause then return true
            new <--- new ∪ resolvents
        if new ⊆ clauses then return false
        clauses <---- clauses  ∪ new                                                                           

3 个答案:

答案 0 :(得分:11)

这是一个完整的讨论话题,但我会试着向你解释一个简单的例子。

您的算法输入为 KB - 执行解决方案的一组规则。很容易理解像以下一样的事实:

  1. Apple是红色的
  2. 如果 smth是红色然后这个smth很甜
  3. 我们引入了两个谓词R(x) - (x 为红色)和S(x) - (x 是甜蜜的)。我们可以用正式语言写出我们的事实:

    1. R('apple')
    2. R(X) -> S(X)
    3. 我们可以将第二个事实替换为¬R v S,以便有资格获得解决规则。

      程序中的Caluclating resolvents步骤删除了两个相反的事实:

      示例:1)a & ¬a -> empty。 2)a('b') & ¬a(x) v s(x) -> S('b')

      注意第二个示例变量x替换为实际值'b'

      我们的程序确定句子 apple is sweet 的目标是否正确。我们也用正式语言S('apple')写这句话,并以倒置状态提出。然后问题的正式定义是:

      • CLAUSE1 = R('apple')
      • CLAUSE2 = ¬R(X) v S(X)
      • 目标? = ¬S('apple')

      算法的工作原理如下:

      1. 取条款c1和c2
      2. 计算c1的解决方案,c2给出新的子句c3 = S('apple')
      3. 计算c3的resolvents,目标为我们设置空集。
      4. 这意味着我们的判决是真的。如果你不能得到具有这样的分辨率的空集,则意味着句子是错误的(但对于大多数情况,在实际应用中,缺少KB事实)。

答案 1 :(得分:3)

考虑条款X和Y,其中X = {a,x1,x2,...,xm},Y = {~a,y1,y2,...,yn},其中a是变量,〜 a是否定,xi和yi是文字(即可能否定的变量)。

X的解释是命题(a \ / x1 \ / x2 \ / ... \ / xm) - 也就是说,假设X为真,则xi中的至少一个或其中一个必须为真。同样对于Y。

我们假设X和Y为真。

我们也知道(a \ / ~a)总是正确的,无论a的值是什么。

如果~a为真,则a为假,所以~a / \ X =&gt; {x1,x2,...,xm}。

如果a为真,则~a为假。在这种情况下,a / \ Y =&gt; {y1,y2,...,yn}。

因此,我们知道{x1,x2,...,xm,y1,y2,...,yn}必须为真,假设X和Y为真。注意新子句不引用变量a。

这种推论被称为解决方案。

这如何在基于分辨率的定理证明器中工作?简单:我们使用矛盾证明。也就是说,我们首先将我们的“事实”转化为条款,并添加对应于否定我们“目标”的条款。然后,如果我们最终可以解决空子句{},那么我们就会遇到矛盾,因为空子句相当于虚假。因为事实已经给出,这意味着我们否定的目标必定是错误的,因此(不需要的)目标必须是真的。

答案 2 :(得分:0)

分辨率是用于证明在谓词逻辑中可表达的参数是正确的过程 对于命题逻辑中的句子,分辨率导致驳斥定理证明技术 决议通过反驳提供证据。即为了表明它是有效的,决议试图表明否定该陈述与一个已知的陈述产生矛盾 算法:
1)。将公理的所有命题转换为子句形式
2)。否定命题&amp;将结果转换为子句形式
3)解决它们 4)如果解决方案是空条款,则发现矛盾