ECLiPSe CLP 中的主动与被动约束
Active vs Passive constraints in ECLiPSe CLP
ECLiPSe CLP 语言中的主动约束和被动约束有什么区别? how/when 我可以使用其中之一吗?
区别是指在执行期间使用约束的方式。主动约束(可能)直接影响其中存在的变量,而被动约束则不会。考虑这两种结构的一个小而简单的例子:
% Active
f(a,X) = f(Y,b)
% Passive
2*X < 3*Y+2
在第一个示例中,当 X 或 Y 被实例化时,'constraint' 可以触发并立即评估(如果有效,统一)双方 = 活动行为。
另一方面,在第二个示例中,双方相互依赖,因此无论 X 还是 Y 先实例化都无关紧要,评估必须延迟到双方的变量都实例化= 被动行为。
(请注意,我试图在不使用任何 constraint/language-specific 语法的情况下进行回答,因为 active/passive 约束的概念通常可以应用于所有基于约束逻辑的系统。还要注意一些语言,如 ECLiPSe在有限整数域上提供全局约束推理,并且实际上可能会根据我们的需要做出一些行为 active/passive。但是,在这个问题的范围之外,没有进一步的行为被认为是为了让事情变得简单。)
希望对您有所帮助!
ECLiPSe CLP 语言中的主动约束和被动约束有什么区别? how/when 我可以使用其中之一吗?
区别是指在执行期间使用约束的方式。主动约束(可能)直接影响其中存在的变量,而被动约束则不会。考虑这两种结构的一个小而简单的例子:
% Active
f(a,X) = f(Y,b)
% Passive
2*X < 3*Y+2
在第一个示例中,当 X 或 Y 被实例化时,'constraint' 可以触发并立即评估(如果有效,统一)双方 = 活动行为。
另一方面,在第二个示例中,双方相互依赖,因此无论 X 还是 Y 先实例化都无关紧要,评估必须延迟到双方的变量都实例化= 被动行为。
(请注意,我试图在不使用任何 constraint/language-specific 语法的情况下进行回答,因为 active/passive 约束的概念通常可以应用于所有基于约束逻辑的系统。还要注意一些语言,如 ECLiPSe在有限整数域上提供全局约束推理,并且实际上可能会根据我们的需要做出一些行为 active/passive。但是,在这个问题的范围之外,没有进一步的行为被认为是为了让事情变得简单。)
希望对您有所帮助!