Eli*_*der 25 prolog logic-programming clips datalog
和许多程序员一样,我在大学里学过Prolog,但只是很少.我知道Prolog和Datalog密切相关,但Datalog更简单吗?另外,我相信我读到Datalog不依赖于逻辑子句的排序,但我不确定为什么这是优点.据说CLIPS完全不同,但对我来说理解太微妙了.有人可以提供其他语言的一般语言亮点吗?
Fre*_*Foo 25
CLIPS和Prolog/Datalog之间的区别在于CLIPS是一个通过正向链接操作的"生产规则系统" :给定一组事实和规则,它将尝试尽可能地推导出新事实并将其存储在内存中.然后通过检查查询是否与事实存储中的某些内容匹配来回答查询.那么,在CLIPS中,如果你有(伪语法):
parent(X,Y) => child(Y,X)
parent(john,mary)
Run Code Online (Sandbox Code Playgroud)
它会立即得出child(mary,john)并记住这一事实.这可能非常快,但会限制可能的规则集并占用内存.
Prolog和Datalog通过反向链接操作,这意味着通过尝试证明查询(即运行Prolog/Datalog程序)来回答查询(谓词调用).Prolog是图灵完整的编程语言,因此任何算法都可以在其中实现.
Datalog是Prolog的非图灵完整子集,不允许例如否定.它的主要优点是每个Datalog程序都会终止(没有无限循环).这使得它对所谓的"演绎数据库"很有用,即除了事实之外还有规则的数据库.
Ana*_*bic 19
数据记录是prolog的一个子集.数据记录所包含的子集有两点:
prolog是图灵完成的.数据记录不是.
将数据记录放在一边,让我们看看prolog与剪辑的比较.
prolog的专长是"解决问题",而剪辑是一个"专家系统".如果我理解正确,"解决问题"涉及使用代码和数据的专业知识."专家系统"主要使用数据结构来表达专业知识.见http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems
另一种看待它的方法是:
专家系统的运作前提是大多数(如果不是全部)结果都是已知的.所有这些结果都汇编成数据,然后输入专家系统.给专家系统一个场景,专家系统从编译数据计算结果,即知识库.它始终是一个"偶数加偶数甚至总是偶数"的思维方式.
问题解决系统对问题的看法不完整.因此,我们开始使用建模数据和行为,这将构成知识库(这使得术语"角落案例"得以公正)并最终得出"如果我们添加两到六个,我们最终得到八个.是八个可被整除两个?那么它甚至是"