使用一阶逻辑构造分辨率证明

时间:2012-06-09 08:58:19

标签: artificial-intelligence first-order-logic

对于即将到来的考试,我有以下评论问题,我希望得到一些帮助。我必须使用分辨率回答“玛丽只使用青苹果制作馅饼”的问题。我目前的知识库和语言是以下句子:

Mary only uses apples from John to make pies:
 ∀π,a(Apple(a) ∧ Pie(π) ∧ Make(M,π,a) => Grows(J,a))
(⌐Apple(a) V ⌐Pie(π) V ⌐Make(M, π, a) V Grows(J,a))    (in CNF)

最新更新:

我会尝试更具体一些。我想要证明的是“玛丽只用青苹果制作馅饼”。 写下这个逻辑我得到了:

玛丽只用青苹果做馅饼: π,Pie(π)A Make(M,π,a)=>绿色(a)

将其翻译成CNF格式的步骤(http://en.wikipedia.org/wiki/Conjunctive_normal_form):

π,a ⌐(Pie(π) A Make(M, π, a)) V Green(a) 
π,a (⌐Pie(π) V ⌐Make(M, π, a)) V Green(a) 
(⌐Pie(π) V ⌐Make(M, π, a)) V Green(a) 
⌐Pie(π) V ⌐Make(M, π, a) V Green(a) (CNF form)

以CNF形式否定此声明(我们将在证明的决议中使用):

Pie(π)A Make(M,π,a)A⌐Green(a)

现在使用分辨率作为一阶逻辑:(http://en.wikipedia.org/wiki/Resolution_(logic))

这是对的吗??或者我弄错了?

2 个答案:

答案 0 :(得分:1)

我不确定你是否正确接近了这个问题。第一步是将三个陈述(“苹果是绿色或红色”,“约翰只生长青苹果”,“玛丽只使用约翰的苹果制作馅饼”)编成分句形式,这是你没有做过的。

第二步是将你想要证明的陈述的否定(“玛丽只使用青苹果制作馅饼”)编码成条款形式。我认为你没有这样做,我认为你编写了积极的声明。也许我错过了一些东西。但是编码查询语句的否定最终会产生四个与AND串起来的简短语句,每个语句都可以作为知识库中的语句处理。

从那里,减少是机械的。

更新:再一次,您需要添加您要证明的语句的否定。你没有这样做,你正在添加声明本身和另一个关于苹果是绿色的声明。不要那样做。你不是要试图证明关于苹果是绿色的陈述,你试图证明一个关于玛丽的声明,只使用青苹果制作馅饼。否定该语句,使用其他三个知识库语句解决它,并提取一个矛盾(也就是说,对于某些语句X,将X和not-X一起解析。)

这就是算法。有用。如果你不这样做,无论你是否“需要”,你正在做除解决算法以外的其他事情,并且我对你的作业/考试进行评分,我认为它是不正确的。

更新2 :你越来越近了,但你的查询语句需要一个关于作为Apple(即Apple(a))的附加条款,因为你的其他几个语句已经有了。它应该看起来几乎完全像关于Mary的声明只使用John的苹果(然后否定因为它是查询。)它的形式是正确的,小的子句与AND串在一起,你只是缺少一个。

但是请注意,一旦你有了这些,每个小条款(因为它们与AND串在一起)可以作为知识库中的独立声明。因此,例如,您现在制定它的方式,您可以使用第三个语句的表达式解决Pie(p)。分辨率证明中有很多步骤,但是一旦你完全对查询否定进行编码,它们就是这样的小步骤。

答案 1 :(得分:1)

作为一般信息,您需要拥有CNF的知识库和NEGATED目标(也在CNF中)。然后通过统一和应用解决方案,你需要有一个零解决方案或目标状态本身。其他选项无法找到任何这些并无限解决。

如果

Make(p,π,a)

在您的知识库中,然后统一并使用最后一个解决方案解决它:

⌐Make(M,π,a)

给你一个零解决方案。此时你可以停下来结束。