Prolog中约束的求解
我正在寻找学习在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) 一般
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年,有点老了,但仍然鼓舞人心)。