2011-05-04 73 views
31

我想了解更多关于Prolog的内幕并了解它如何工作。Prolog如何在技术上工作?引擎盖下有什么?

我知道如何使用它。但不是内部如何工作。 Prolog中使用的算法和概念的名称是什么?

可能它会构建某种树结构或定向对象图,然后在查询时用一个复杂的算法来遍历该图。也许深度优先搜索。可能有一些源代码,但首先从高级角度阅读它会很好。

我对AI真的很陌生,理解Prolog似乎是一个很好的开始的方式,imho。我的想法是尝试重建类似的东西并完全跳过解析器部分。我需要知道我必须从事研究工作的方向。

回答

17

AI是一个广泛的领域,Prolog只涉及符号AI。至于Prolog,内部工作过于复杂,无法在这里解释,但使用Google搜索会为您提供大量资源。例如。 http://www.amzi.com/articles/prolog_under_the_hood.htm

查看Wikipedia文章以了解AI的其他领域。

+4

有些关键字您可能想要查找关于序言:回溯,统一,声明性编程,逻辑编程 – compostus 2011-05-04 09:50:23

23

Prolog中使用的算法和概念的名称是什么?

见英镑&夏皮罗,的Prolog的艺术(麻省理工学院出版社)背后Prolog的理论。

可能它会构建某种树形结构或定向对象图,然后在查询时用一个复杂的算法来遍历该图。也许深度优先搜索。

它没有明确地建立图表,这对于无限的搜索空间是不可能的。查看Russell & Norvig的第一章,了解状态空间搜索的概念。是的,它采用回溯技术进行深度优先搜索,但不是,这并不是很复杂。这只是非常方便,编程替代搜索策略在Prolog中并不难。

了解Prolog似乎是一个伟大的方式开始,恕我直言。

取决于你想要做什么,但知道Prolog肯定不会伤害。这是一种非常不同的编程方式。了解Prolog帮助我很快理解函数式编程。

我的想法是尝试重建类似的东西,并跳过解析器部分完全

你的意思是跳过Prolog的语法?如果您碰巧熟悉Scheme或Lisp,那么请在Scheme中查看section 4.4 of Abelson & Sussman,在那里他们解释如何实现Scheme的逻辑编程变体。

13

您可能也想了解Warren Abstract Machine
通常,prolog代码被转换为WAM指令,然后更高效地执行。

+4

并链接到WAM书http://wambook.sf.net – adamo 2011-05-04 14:21:09

2

该书由斯特林和夏皮罗,通过larsmans提到,实际上包含的Prolog的执行模式。这很好,并且清楚地解释了“Prolog如何工作”。这是一本很棒的书!

还有其他的来源可以尝试。最值得注意的是,一些Lisp的书教学法共建面向Prolog的解释:

  • Lisp上由保罗·格雷厄姆(Common Lisp中,使用 - 也许滥用 - 宏)人工智能编程的
  • 范式 - 彼得·诺维格(在Common Lisp中)
  • Abelson和Sussman的计算机程序的结构和解释(在方案中)。

其中,最后一个是最清楚的(在我的愚见)。但是,你需要学习一些Lisp(Common Lisp或Scheme)来理解这些。

3

Prolog的ISO核心标准还包含一个执行模型。执行模型令人感兴趣,因为它提供了一个很好的控制结构模型,如cut!/ 0,if-then-else( - >)/ 2,catch/3和throw/1。它还解释了如何合适地处理裸体变量。

在ISO核心标准的演示文稿并没有那么差。每个控件构造都以散文用例的形式描述,并引用由堆栈等组成的抽象Prolog机器。然后,有图片显示控件构造执行前后的堆栈。

最便宜的来源是ANSI:
http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+13211-1-1995+%28R2007%29

2

Prolog使用第一阶谓词逻辑的子集,被称为喇叭逻辑。用于导出答案的算法称为SLD分辨率。