我在大学里学习过Prolog的程序员和我一样多,但只有很少。我知道Prolog和Datalog关系密切,但Datalog更简单?此外,我相信我读到Datalog不依赖于逻辑子句的顺序,但我不确定为什么这是优点。CLIPS被认为是完全不同的,但它太微妙了,我无法理解。有没有人能提供一下这些语言相对于其他语言的总体亮点?
发布于 2011-04-11 10:58:16
datalog是prolog的一个子集。datalog携带的子集有两个要点:
prolog是图灵完成的。数据记录不是。
让我们来看看prolog与clips的比较。
prolog的专长是“解决问题”,而clips则是一个“专家系统”。如果我理解正确的话,“解决问题”涉及到使用代码和数据的专业知识。“专家系统”大多使用数据结构来表达专业知识。请参阅http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems
另一种看待它的方式是:
专家系统的运行前提是大多数(如果不是全部)结果都是已知的。所有这些结果都被汇编成数据,然后输入到专家系统中。给专家系统一个场景,专家系统根据编译的数据计算结果,也就是知识库。它总是一种“偶数加偶数总是偶数”的思维方式。
问题解决系统对问题的看法是不完整的。因此,一个人从建模数据和行为开始,这将构成知识库(这给术语“角落案例”提供了正义),并以“如果我们将2加到6,我们最终得到8。8能被2整除吗?那么它是偶数”结束。
发布于 2010-10-14 20:24:22
CLIPS和Prolog/Datalog之间的不同之处在于,CLIPS是一个“产生式规则系统”,它通过正向链接进行操作:给定一组事实和规则,它将尝试对新事实进行所有可能的派生,并将其存储在内存中。然后,通过检查查询是否与事实存储中的内容匹配来回答查询。因此,在剪辑中,如果你有(伪语法):
parent(X,Y) => child(Y,X)
parent(john,mary)它将立即派生child(mary,john)并记住这一事实。这可能非常快,但会对可能的规则集施加限制,并占用内存。
Prolog和Datalog通过反向链接进行操作,这意味着通过尝试证明查询(谓词调用)来应答查询,即运行Prolog/Datalog程序。Prolog是一种图灵完全编程语言,所以任何算法都可以用它来实现。
Datalog是Prolog的一个非图灵完整子集,它不允许,例如,求反。它的主要优点是每个Datalog程序都会终止(没有无限循环)。这使得它对所谓的“演绎数据库”很有用,即除了事实之外还有规则的数据库。
https://stackoverflow.com/questions/3924654
复制相似问题