首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datalog vs CLIPS vs Prolog

Datalog vs CLIPS vs Prolog
EN

Stack Overflow用户
提问于 2010-10-13 22:18:02
回答 2查看 14K关注 0票数 30

我在大学里学习过Prolog的程序员和我一样多,但只有很少。我知道Prolog和Datalog关系密切,但Datalog更简单?此外,我相信我读到Datalog不依赖于逻辑子句的顺序,但我不确定为什么这是优点。CLIPS被认为是完全不同的,但它太微妙了,我无法理解。有没有人能提供一下这些语言相对于其他语言的总体亮点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-11 10:58:16

datalog是prolog的一个子集。datalog携带的子集有两个要点:

  1. 采用支持规则和查询的API
  2. 确保所有查询都终止

prolog是图灵完成的。数据记录不是。

让我们来看看prolog与clips的比较。

prolog的专长是“解决问题”,而clips则是一个“专家系统”。如果我理解正确的话,“解决问题”涉及到使用代码和数据的专业知识。“专家系统”大多使用数据结构来表达专业知识。请参阅http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems

另一种看待它的方式是:

专家系统的运行前提是大多数(如果不是全部)结果都是已知的。所有这些结果都被汇编成数据,然后输入到专家系统中。给专家系统一个场景,专家系统根据编译的数据计算结果,也就是知识库。它总是一种“偶数加偶数总是偶数”的思维方式。

问题解决系统对问题的看法是不完整的。因此,一个人从建模数据和行为开始,这将构成知识库(这给术语“角落案例”提供了正义),并以“如果我们将2加到6,我们最终得到8。8能被2整除吗?那么它是偶数”结束。

票数 20
EN

Stack Overflow用户

发布于 2010-10-14 20:24:22

CLIPS和Prolog/Datalog之间的不同之处在于,CLIPS是一个“产生式规则系统”,它通过正向链接进行操作:给定一组事实和规则,它将尝试对新事实进行所有可能的派生,并将其存储在内存中。然后,通过检查查询是否与事实存储中的内容匹配来回答查询。因此,在剪辑中,如果你有(伪语法):

代码语言:javascript
复制
parent(X,Y) => child(Y,X)
parent(john,mary)

它将立即派生child(mary,john)并记住这一事实。这可能非常快,但会对可能的规则集施加限制,并占用内存。

Prolog和Datalog通过反向链接进行操作,这意味着通过尝试证明查询(谓词调用)来应答查询,即运行Prolog/Datalog程序。Prolog是一种图灵完全编程语言,所以任何算法都可以用它来实现。

Datalog是Prolog的一个非图灵完整子集,它不允许,例如,求反。它的主要优点是每个Datalog程序都会终止(没有无限循环)。这使得它对所谓的“演绎数据库”很有用,即除了事实之外还有规则的数据库。

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

https://stackoverflow.com/questions/3924654

复制
相关文章

相似问题

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