解决Prolog中的约束

时间:2014-04-19 18:23:01

标签: prolog constraint-programming clpfd

我正在寻找学习解决Prolog中约束的资源。例如,

List=[X, Y, Z], List ins 1..4, X - Y #= Z.

1 个答案:

答案 0 :(得分:3)

我的理解是,您希望获得具体的解决方案(而不是域名)。为此,请使用label/1labeling/2,这将提供所有显式解决方案(通过回溯)。在SWI-Prolog中,这些谓词在此处记录:labeling/2

label(List)相当于labeling([],List)

对于这个简单的例子,label(List)就足够了:

? - List = [X,Y,Z],List ins 1..4,X - Y#= Z,label(List)。

一般情况下,您可以阅读clpfd的完整文档(此处为SWI-Prolog)。