我无法理解命题逻辑中的解析规则是什么。 解决方案是否只是简单地说明了一个句子可以扩展和以另一种形式书写的规则?
以下是命题逻辑的简单分辨率算法。 该函数返回通过解析它的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                                                                           

#1楼 票数:11 已采纳

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

您的算法输入是KB - 执行分辨率的规则集。 很容易理解,如下事实:

  1. Apple是红色的
  2. 如果 smth是红色那么这个smth是甜的

我们引入两个谓词R(x) - ( x 是红色 )和S(x) - ( x 是甜的 )。 我们可以用正式语言写出事实:

  1. R('apple')
  2. R(X) -> S(X)

我们可以将第二个事实替换为¬R v S以符合解决规则的条件。

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

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

请注意 ,在第二个示例变量x用实际值'b'替换。

我们的程序确定判断苹果是否甜的目标是真实的。 我们也用正式语言将这句话写为S('apple')并以倒置状态询问它。 那么问题的正式定义是:

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

算法的工作原理如下:

  1. 取条款c1和c2
  2. 计算c1和c2的resolvents给出新的子句c3 = S('apple')
  3. 计算c3的resolvents,目标给我们空集。

这意味着我们的判决是真的。 如果你不能得到具有这样的分辨率的空集,则意味着句子是错误的(但对于大多数情况,在实际应用中,它缺乏KB事实)。

#2楼 票数: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 => {x1,x2,...,xm}。

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

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

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

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

#3楼 票数:0

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

  ask by Ghost translate from so

未解决问题?本站智能推荐:

2回复

命题逻辑算法的困惑

我无法理解以下与命题逻辑和蕴涵有关的算法,该算法取自《人工智能一种现代方法》一书。 用于确定命题蕴含度的真值表枚举算法。 TT代表真相表。 PL-TRUE? 如果句子包含在模型中,则返回true。 变量模型仅代表部分变量的部分模型分配。 函数调用EXTEND(P,true,mod
1回复

分辨率推理规则算法

我对解析推理规则有以下疑问。 1 *在for each Ci, Cj in clauses do中的每个Ci中,Cj是否都必须包含互补符号(例如,一个包含A,另一个包含〜A)? 2 *在上面的示例中,如果两个子句都具有相同的符号(例如A和A),该怎么办。 我应该考虑一下进行推断吗?
2回复

DPLL 算法如何工作? [关闭]

就目前而言,这个问题不适合我们的问答形式。 我们希望答案得到事实、参考或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。
5回复

谓词与一阶逻辑中的函数

关于一阶逻辑中谓词和函数之间的区别,我最近一直很困惑。 到目前为止我的理解是, 谓词是显示比较或显示两个对象之间的关系,如, 函数用于指定特定对象的内容,例如 现在我正在走上正确的道路来区分这两个术语,或者我完全错了,需要一个简短的解释,我希望得到专家的意见来澄清我的
14回复

游戏2048的最优算法是什么?

我最近偶然发现了游戏2048 。 您可以通过在四个方向中的任何一个方向移动它们来合并类似的瓷砖以制作“更大”的瓷砖。 每次移动后,都会在随机空位置出现一个新的图块,其值为2或4 。 当所有方块都填满并且没有可以合并图块的移动时,游戏终止,或者您创建了一个值为2048的图块。 一,我需要遵循一个明确
2回复

如何在游戏中设置对话逻辑?

我正在制作一个游戏,其中一部分玩家必须参与对话。 游戏向玩家询问一个question并提供3 options来回答。 当玩家回答时,根据玩家之前的回答,会弹出一个新问题。 这意味着,现在有3可能的潜在问题。 这些问题中的每一个都带来了3个新答案,因此现在有9个可能的answers 。
1回复

命题逻辑-分辨率属性

我在youtube上观看了有关分辨率的视频,并看了这段视频,这对我有很大帮助: http://www.youtube.com/watch?v=hhTxW5c3BXo 在结尾处,他举了一个例子,其中每个子句中相对两侧的X都抵消了,其余的都连接在一起了,这没关系,但是我想知道它是否可以抵
2回复

命题逻辑和谓词逻辑

鉴于句子: 1. 汤姆有一台不错的笔记本电脑 2. 只有玛丽去餐厅时,汤姆才会去餐厅 我将如何将其转换为命题逻辑和谓词逻辑。 我试着试一试,但我不确定它是否正确。 这样对吗?