ECLiPSe CLP语言中的主动和被动约束有什么区别?我怎么/何时可以使用其中一个?
答案 0 :(得分:1)
区别是指在执行期间使用约束的方式。主动约束(可能)直接影响它们中存在的变量,而被动约束则不会。考虑两种结构的一个小的,微不足道的例子:
% Active
f(a,X) = f(Y,b)
% Passive
2*X < 3*Y+2
在第一个例子中,当X或Y被实例化时,'约束'可以触发并立即评估(如果有效,则统一)双方=活动行为。
另一方面,在第二个例子中,双方都是相互依赖的,因此,无论X或Y是否首先被实例化,评估都必须延迟,直到双方的变量被实例化为被动行为。
(请注意,我试图在不使用任何约束/语言特定语法的情况下回答,因为主动/被动约束的概念通常可以应用于所有基于约束逻辑的系统。另请注意,某些语言(如ECLiPSe)提供全局约束推理在有限的整数域上,实际上可能会使某些行为主动/被动地满足我们的需要。但是,如果超出这个问题的范围,则不会考虑进一步的行为来保持简单。)
希望这有帮助!