Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog中约束的求解_Prolog_Constraint Programming_Clpfd - Fatal编程技术网

Prolog中约束的求解

Prolog中约束的求解,prolog,constraint-programming,clpfd,Prolog,Constraint Programming,Clpfd,我正在寻找学习在Prolog中解决约束的资源。比如说, List=[X, Y, Z], List ins 1..4, X - Y #= Z. 据我所知,您希望得到具体的解决方案(而不是域)。为此,请使用label/1或label/2,这将给出所有明确的解决方案(通过回溯)。在SWI Prolog中,以下谓词记录在此处: 标签(列表)相当于标签([],列表) 对于这个简单的例子,标签(列表)就足够了: ?-List=[X,Y,Z],List-ins 1..4,X-Y#=Z,标签(List) 一般

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

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

据我所知,您希望得到具体的解决方案(而不是域)。为此,请使用
label/1
label/2
,这将给出所有明确的解决方案(通过回溯)。在SWI Prolog中,以下谓词记录在此处:

标签(列表)
相当于
标签([],列表)

对于这个简单的例子,
标签(列表)
就足够了:

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


一般来说,阅读的完整文档(此处为SWI Prolog)会使您受益匪浅

这是不正确的Prolog语法<代码>列表[X,Y,Z]无效,正如您在中所评论的那样。谢谢,我现在已经更正了它。我正在尝试弄清楚Prolog是如何计算域的。你能推荐一些资料来阅读更多吗?如果你想了解域(以及传播器等)是如何工作的,一本关于约束(逻辑)编程的完整书籍可能是描述这一点的最好方法。关于这方面我喜欢的书有:Rina Dechter:“约束处理”(2003年),Apt“约束编程原则”(2003年),Marriott&Stuckey“约束编程”(1998年,有点老了,但仍然鼓舞人心)。