簡體   English   中英

在Prolog中記住目標

[英]Memoizing goals in Prolog

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的一個好處是,你可以輕松地構建一個更簡單(並且功能更強大)的自我制表變體,使用examlpe assertz/1來存儲和加載計算結果。

一個非常簡單的實現可能看起來類似於:

:- dynamic memo_/1.

memo(Goal) :-
    (    memo_(Goal) -> true
    ;    Goal,
         assertz(memo_(Goal))
    ).

買者自負...

那當然不是那些成熟的表格會給你的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM