2016-05-11 3 views
3

で境界伝播が何であるか把握しようとしていますが、どこでも良い説明を見つけることはできません。clpfdで境界伝播とは何ですか

私はPrologとclpfdを改訂していますが、この質問に出くわしましたが、講義ノートを見てもわかりません。誰かが境界の伝播の実際の意味とそれが何のために使用されているか説明してください。ここで

私が言及しています質問です:

次のPrologプログラム

:- use_module(library(clpfd)).
bounds(X, Y, Z) :- 
    X in 1..5, 
    Y in 1..2, 
    Z in 3..5, 
    X #= Y + Z. 
が照会されたとき、それは答えを与える:

?- bounds(X, Y, Z). 
X in 4..5, 
Y in 1..2, 
Z in 3..4.

境界の伝播を推測するために適用する方法を説明この答え。

答えて

4

私はあなたのスタートを与える:

すべての制約が掲載された後、一つのことはすぐに明らかである:Xは少なくとも    4.なぜでのですか? Y少なくとも  1、及びZあるため、少なくとも  3であり、そしてX和  Yと  Zあります。この知識を考えると

は、再び投稿制約を通過し、そしてあなたが任意の境界を調整することができるかどうかを確認します。

これは、の境界伝播です。すべての変数の境界を通り、投稿された制約のためにそれらのいずれかが調整できるかどうかを確認します。これは、可能なドメイン縮小がなくなるまで繰り返される。

+2

ありがとうございました – user6248190