【问题标题】:What is bounds propagation in clpfd什么是 clpfd 中的边界传播
【发布时间】:2016-05-11 11:40:57
【问题描述】:

我试图弄清楚 中的边界传播是什么,但似乎在任何地方都找不到好的解释。

我正在修改 Prolog 和 clpfd 并遇到了这个问题,但是查看讲义对我来说没有意义。有人可以解释一下边界传播的实际含义以及它的用途。

这是我所指的问题:

当下面的Prolog程序

:- use_module(library(clpfd)).
边界(X,Y,Z):-
   1..5 中的 X,
   Y 在 1..2 中,
   Z 在 3..5 中,
   X #= Y + Z。
被查询它给出了答案:
?- 边界(X,Y,Z)。
4..5 中的 X,
Y 在 1..2 中,
Z 在 3..4.

解释如何应用边界传播来推断这个答案。

【问题讨论】:

    标签: clpfd prolog clpfd


    【解决方案1】:

    我给你一个开始:

    在发布所有限制条件后,一件事马上就清楚了:X至少 4. 为什么?因为Y 至少为 1,Z 至少为 3,而XYZ总和

    鉴于这些知识,再次检查发布的约束,看看是否可以调整任何边界。

    这就是 边界传播 所做的:遍历所有变量的边界并查看是否可以根据发布的约束调整其中的任何一个。重复此过程,直到不再有可能的域缩减。

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 2017-03-22
      • 2012-03-22
      • 2019-04-18
      • 1970-01-01
      • 2018-08-15
      • 2015-10-08
      • 1970-01-01
      • 2012-05-08
      相关资源
      最近更新 更多