用于逻辑程序包容表求值的子目标的高效实例检索
Efficient Instance Retrieval of Subgoals for Subsumptive Tabled Evaluation of Logic Programs
摘要:
表求值是解决传统Prolog系统在处理递归和冗余计算方面存在的问题的一种实现技术。大多数制表引擎通过使用变量检查来确定一个制表的子目标是否会产生或使用答案。一个更精确的方法,称为调用包含,认为如果A被B(的实例)包含,则子目标A将从子目标B消耗,从而允许更大的答案重用。我们最近开发了一个名为Retroactive Call Subsumption的扩展,它通过支持在已包含/已包含子目标之间双向共享答案来改进呼叫包含。在本文中,我们提出了一个算法和扩展的表空间数据结构,有效地实现实例检索的子目标的包容表评估的逻辑程序。使用YapTab制表系统的实验结果表明,我们的实现在一些复杂的基准测试中表现得很好,并且足够强大,可以处理大量的子目标而不会降低性能。
英文摘要:
Tabled evaluation is an implementation technique that solves some problems of traditional Prolog systems in dealing with recursion and redundant computations. Most tabling engines determine if a tabled subgoal will produce or consume answers by using variant checks. A more refined method, named call subsumption, considers that a subgoal A will consume from a subgoal B if A is subsumed by (an instance of) B, thus allowing greater answer reuse. We recently developed an extension, called Retroactive Call Subsumption, that improves upon call subsumption by supporting bidirectional sharing of answers between subsumed/subsuming subgoals. In this paper, we present both an algorithm and an extension to the table space data structures to efficiently implement instance retrieval of subgoals for subsumptive tabled evaluation of logic programs. Experiments results using the YapTab tabling system show that our implementation performs quite well on some complex benchmarks and is robust enough to handle a large number of subgoals without performance degradation.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。