Prolog在技术上是如何工作的?什么';引擎盖下面有什么?

Prolog在技术上是如何工作的?什么';引擎盖下面有什么?,prolog,Prolog,我想进一步了解Prolog的内部结构,并了解它是如何工作的 我知道如何使用它。但不是它内部的工作方式。Prolog中使用的算法和概念的名称是什么 它可能会构建某种树结构或有向对象图,然后在查询时使用复杂的算法遍历该图。可能是深度优先搜索。可能有一些源代码,但最好先从高层次的角度来阅读 我对人工智能非常陌生,理解Prolog似乎是一个很好的开始,imho。我的想法是尝试重建类似的东西,并完全跳过解析器部分。我需要知道我的研究方向。人工智能是一个广泛的领域,Prolog只涉及象征性人工智能。至于Pr

我想进一步了解Prolog的内部结构,并了解它是如何工作的

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

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


我对人工智能非常陌生,理解Prolog似乎是一个很好的开始,imho。我的想法是尝试重建类似的东西,并完全跳过解析器部分。我需要知道我的研究方向。

人工智能是一个广泛的领域,Prolog只涉及象征性人工智能。至于Prolog,其内部工作太复杂,无法在这里解释,但谷歌搜索将为您提供大量资源。例如

还可以查看维基百科的文章,了解人工智能的其他领域

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

  • 深度优先,搜索
有关Prolog背后的理论,请参见Sterling&Shapiro,《Prolog的艺术》(麻省理工学院出版社)

它可能会构建某种树结构或有向对象图,然后在查询时使用复杂的算法遍历该图。可能是深度优先搜索

它没有显式地构建图形,这在无限的搜索空间中甚至是不可能的。查看的第一章,了解状态空间搜索的概念。是的,它使用回溯进行深度优先搜索,但不,这不是很复杂。它非常方便,在Prolog中编程替代搜索策略并不难

imho,理解序言似乎是一个很好的开始

这取决于你想做什么,但知道序言肯定不会有什么坏处。这是一种非常不同的看待编程的方式。了解Prolog有助于我很快理解函数式编程

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


你是说跳过Prolog语法?如果您碰巧熟悉Scheme或Lisp,请查看他们在Scheme中解释如何实现Scheme的逻辑编程变体的地方。

您可能还想了解 通常,prolog代码被转换为WAM指令,然后执行得更有效。

我要补充:

  • 塞缪尔·卡明。这本书已绝版,但你可以在大学图书馆里找到。它包含一个用Pascal实现的Prolog

  • Tim Budd的“C++中的Kamin解释器”()


    • 拉尔斯曼提到的斯特林和夏皮罗的书实际上包含了一个序言的执行模型。它非常好,并且清楚地解释了“Prolog是如何工作的”。这是一本很棒的书

      你也可以尝试其他来源。最值得注意的是,一些Lisp书籍构建了面向教学的Prolog解释器:

      • paul Graham的Lisp(在常见的Lisp中,使用——或者滥用——宏)
      • Peter Norvig的人工智能编程范例(通用Lisp)
      • Abelson和Sussman的计算机程序的结构和解释(在方案中)

      其中,最后一个是最清楚的(依我拙见)。但是,您需要学习一些Lisp(公共Lisp或Scheme)来理解它们。

      Prolog的ISO核心标准还包含一个执行模型。执行模型很有趣,因为它提供了一个很好的控制结构模型,比如cut/0,如果然后是else(->)/2,接住/3并抛出/1。它还解释了如何一致地处理裸变量

      在ISO核心标准中的表现并没有那么糟糕。每个控件构造都以散文用例的形式描述,并引用由堆栈等组成的抽象Prolog机器。。然后有一些图片显示了在执行控件构造之前和之后的堆栈

      最便宜的来源是ANSI:

      Prolog使用一阶谓词逻辑的子集,称为Horn逻辑。用于推导答案的算法称为SLD分辨率。

      除了已经发布的许多好答案之外,我还在Prolog中添加了一些历史事实

      • :序言是1972年前后由阿兰·科默劳尔和菲利普·鲁塞尔根据罗伯特·科瓦尔斯基对霍恩条款的程序性解释共同创作的。 阿兰是法国计算机科学家,1970年至1995年在马赛艾克斯大学担任教授。他于2006年退休,一直活跃到2017年去世。1986年,他被法国政府任命为荣誉骑士
      • 在本文中,Prolog的发明者可以最好地解释Prolog的内部工作。它发表在ACM通讯,第28卷,第12期,12月。1985年

      关于prolog,您可能需要查找一些关键词:回溯、统一、声明式编程、逻辑编程