首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >演绎检索器示例

演绎检索器示例
EN

Stack Overflow用户
提问于 2009-12-03 07:52:22
回答 1查看 134关注 0票数 1

在Lisp中,假设知识库中有以下两条规则:

代码语言:javascript
复制
(append nil ?x ?x)
(<- (append (cons ?x ?l1) ?l2 (cons ?x ?l3))
    (append ?l1 ?l2 ?l3))

那我怎么能推断如果我们问

代码语言:javascript
复制
(ask '(append (cons a (cons b nil))
              (cons c nil)
              ?l)
     '?l))

我们将得到结果'((cons a (cons b (cons c nil)))

这是我的Lisp类中的一个例子,希望你能帮助我理解这个检索器。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-04 21:00:56

要理解这个问题,我认为您首先需要掌握两个关键概念:反向链接和统一。

对于粗略的简化,以下是反向链接的工作原理:如果可以将目标(示例中“ask”的第一个参数)与任何规则的头部(请注意不确定性)统一起来,请尝试;如果可以,则将该规则的主体(可能为空)添加为子目标,并将统一的结果(一组变量绑定)存储起来。递归地将上述过程应用于具有累积绑定的每个子目标,直到(1)没有适用的规则,这意味着证明失败,或者(2)没有更多的子目标,这意味着证明成功。在后一种情况下,目标变量(第二个参数)的绑定将是答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1836725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档