比较Prolog抽象机的执行效果

8
我正在寻找研究论文或其他出版物,比较不基于抽象机的Prolog解释器与执行Prolog的不同抽象机(多个)。目前我所见的大多数实现似乎都是以Warren抽象机为基础构建其Prolog解释器,尽管也有其他的抽象机被提出(如Vienna抽象机面向树的抽象机),但没有任何一种通用的比较方法。我感兴趣的是效率的比较(而非功能),尽管所有比较的解释器都应该支持约束逻辑编程。

2
请参见https://dev59.com/3m855IYBdhLWcg3wMRVW#4504325。不清楚您在比较中还可能指的是什么。我不清楚您所说的“使用非基于抽象机器的Prolog解释器执行Prolog”的含义: 任何实现都是基于某个抽象机器的。 - false
1
@false,我可以使用C++编写Prolog解释器,这样它就不会基于任何抽象机器。比较的意思是测试每个解释器的效率(计算时间、内存消耗等)。 - Grzegorz Adam Kowalski
1
即使您正在使用抽象机器,仍然需要做出许多决策。请考虑回溯/追踪。 - false
2
在20世纪80年代,Prolog中的效率比较是一个雷区,因为系统基本上是由KLips销售的。然而,请参考上述答案,其中包含了一些效率方面的非常详细的比较。 - false
1个回答

3
你可以在普通的Prolog基础上构建约束逻辑编程,只需引入一些用于跟踪约束存储和统一挂钩的原语即可。例如:
SICStus Prolog:带属性变量 http://sicstus.sics.se/sicstus/docs/3.7.1/html/sicstus_17.html

Jekejeke Minlog: Little Solver
http://www.jekejeke.ch/idatab/doclet/prod/zh/docs/15_min/10_docu/02_reference/04_examples/05_solver.html
http://www.jekejeke.ch/idatab/doclet/prod/zh/docs/15_min/15_stdy/06_bench/10_examples/02_addensure/01_referensure.p.html

当然,您可以将额外的原语视为抽象机器中的新指令。但在上述两种情况中,原语是在谓词级别上添加的,因此这引出了一个问题,即是否真正需要约束逻辑编程的抽象机器。

当然,您也可以通过Google找到一些约束逻辑编程抽象机器的建议。

再见


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接