【问题标题】:Active vs Passive constraints in ECLiPSe CLPECLiPSe CLP 中的主动与被动约束
【发布时间】:2016-06-04 19:05:58
【问题描述】:

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

【问题讨论】:

    标签: constraints constraint-programming eclipse-clp


    【解决方案1】:

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

    % Active
    f(a,X) = f(Y,b)
    
    % Passive
    2*X < 3*Y+2
    

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

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

    (请注意,我尝试在不使用任何约束/特定于语言的语法的情况下进行回答,因为主动/被动约束的概念通常可以应用于所有基于约束逻辑的系统。另请注意,像 ECLiPSe 这样的一些语言提供全局约束推理在有限的整数域上,实际上可能使某些行为主动/被动地满足我们的需求。但是,超出了这个问题的范围,没有进一步的行为被认为是为了让事情变得简单。)

    希望这会有所帮助!

    【讨论】:

    • 在 ECLiPSe 中使用 ic 库时,此约束将处于活动状态是否也正确:2*X #&lt; 3*Y+2? (注意添加的#)。那么当任何一方的域更新时,另一方的域也可以更新。
    • 是的,这是正确的。在 ECLiPSe 中,当 X 或 Y 将拥有有限域并且其中任何一个将被实例化时,约束 #
    • 谢谢,现在说得通了:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多