1

ECLiPSe CLP 语言中的主动约束和被动约束有什么区别?以及如何/何时可以使用其中一种?

4

1 回答 1

1

区别是指在执行期间使用约束的方式。主动约束(可能)直接影响其中存在的变量,而被动约束不会。考虑这两种结构的一个小例子:

% Active
f(a,X) = f(Y,b)

% Passive
2*X < 3*Y+2

在第一个示例中,当 X 或 Y 被实例化时,“约束”可以触发并立即评估(如果有效,则统一)双方 = 主动行为。

另一方面,在第二个示例中,双方相互依赖,因此无论是先实例化 X 还是 Y 都无关紧要,必须延迟评估,直到双方的变量都被实例化 = 被动行为。

(请注意,我试图在不使用任何约束/特定于语言的语法的情况下回答,因为主动/被动约束的概念通常可以应用于所有基于约束逻辑的系统。另请注意,像 ECLiPSe 这样的一些语言提供了对有限整数的全局约束推理域,并且实际上可能使某些行为主动/被动地满足我们的需求。但是,在此问题的范围之外,不会考虑进一步的行为来保持简单。)

希望这可以帮助!

于 2016-06-04T22:15:39.800 回答