就像我在大学学习的许多程序员一样,但只有很少的。我知道Prolog和Datalog密切相关,但是数据元更简单吗?另外,我相信我读到数据并不依赖于逻辑子句的订购,但是我不确定为什么这是优势。据说片段完全不同,但对我来说太微妙了。有人可以通过其他语言提供一般的语言亮点吗?

有帮助吗?

解决方案

Datalog是Prolog的子集。 Datalog带有的子集有两件事:

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

Prolog正在完成Turing。 Datalog不是。

避免数据编号,让我们看看Prolog与剪辑的比较。

Prolog的专业知识是“解决问题”,而剪辑是“专家系统”。如果我正确理解,“解决问题”涉及使用代码和数据的专业知识。 “专家系统”主要使用数据结构来表达专业知识。看 http://en.wikipedia.org/wiki/expert_system#comparison_to_problembaribor-solving_systems

查看它的另一种方法是:

专家系统以大多数(如果不是全部)成果是已知的前提。所有这些结果都将其编译到数据中,然后被馈入专家系统。给专家系统一个方案,专家系统从编译的数据(也就是知识库)中计算出结果。这始终是“一个均匀的数字和一个均匀的数字”,甚至总是”。

解决问题系统对问题的看法不完整。因此,一个人始于建模数据和行为,这将构成知识库(这为“角案”一词的正义),最终以“如果我们添加2到6,我们最终以八个。两个?

其他提示

剪辑和prolog/datalog之间的区别在于剪辑是一个“生产规则系统”,可通过 向前链: :鉴于一组事实和规则,它将尝试使新事实的每一个可能的派生并将其存储在记忆中。然后,通过检查它是否与事实商店中的某些内容进行匹配,从而回答查询。因此,在剪辑中,如果您有(伪Syntax):

parent(X,Y) => child(Y,X)
parent(john,mary)

它将立即得出 child(mary,john) 并记住这个事实。这可能非常快,但是对可能的规则集进行了限制并占用内存。

Prolog和Datalog通过 向后链接, ,这意味着通过试图证明查询,即运行Prolog/DataLog程序来回答查询(谓词调用)。 Prolog是一种图灵完整的编程语言,因此可以在其中实现任何算法。

DataLog是一个非曲目的完整子集,不允许,例如,否定。它的主要优点是每个数据编程程序终止(无无限循环)。这使得它对于所谓的“演绎数据库”,IE数据库除了事实之外,还具有规则。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top