Prolog是否有可能记住计算出的目标?
我的意思是说Prolog不应重新计算之前计算出的目标。
因此,例如,对我来说相同的计算是:
goal([first, one], he, she, var(cat, 5)).
goal([first, one], he, she, var(cat, 5)).
但不是
goal([first, one], he, she, var(cat, 6)).
因此,实际上,必须有可能统一这些目标。
许多Prolog系统提供隐式记录此类结果的功能。这称为制表;请参阅Prolog系统的文档以了解如何启用它。
关于Prolog的一件好事是,您可以轻松地建立一个制表的更简单(但功能不那么强大)的变体,例如assertz/1
用于存储和加载计算结果。
一个非常简单的实现可能类似于:
:-动态备忘录_ / 1。 memo(Goal) :-(memo_(Goal)-> true ;目标, assertz(memo_(Goal)) )。
买家当心...
当然,这不是成熟的制表所能给您的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句