约束推理涉及各种类型的技术,以解决满足一组约束的问题的固有难以处理的问题。 约束传播是这些类型的技术之一。 约束传播是解决约束问题过程的核心,如果没有它,我们很难想到约束推理。
约束传播是一个非常通用的概念,根据时期和作者的不同,出现在不同的名称下。在这些名称中,我们可以找到约束松弛,过滤算法,缩小算法,约束推理,简化算法,标签推理,局部一致性实施,规则迭代,混沌迭代。
约束传播嵌入了任何推理,其中包括明确禁止问题的某些变量的值或值组合,因为其约束的给定子集不能满足。例如,在填字游戏中,当您从欧洲国家/地区中丢弃单词NORWAY和SWEDEN时,由于第二个字母必须为“R”,因此您可以传输约束。在包含两个变量x1和x2的问题中,取1..10中的整数值,以及指定| x1 - x2 |的约束。 > 5,通过传播这个约束,我们可以禁止x1和x2的值为5和6。解释这些'nogoods'是一种减少搜索机制将探索的组合空间的方法。
约束传播的概念可以在不同种类和名称的其他领域中找到。 (例如,参见命题演算中“单位传播”的条款的传播[40]。)然而,这个概念显示了其最完美的形式。没有其他领域约束传播的概念以各种形式出现,并且其特征已被如此深入地分析。
在过去的30年中,科学界已经投入了大量精力来形成和表征这种无处不在的约束传播概念,并提出了传播约束的算法。 这种形式化可以分为两个主要方面:局部一致性和规则迭代。 局部一致性定义了约束问题在约束传播之后必须满足的属性。 这样,操作行为就完全打开了,唯一的要求就是在输出上实现给定的属性。 相反,规则迭代方法定义了传播过程本身的属性,即应用于问题的减少操作的种类/顺序的属性。
本章不包括数据流约束[76],即使这一系列研究已经成为交互式应用中相当多工作的焦点,并且其中一些论文谈到了这些约束的“传播”[27]。 它们确实与约束编程中出现的技术相差甚远。
本章的其余部分安排如下。 第3.1节包含本章中使用的基本定义和符号。 3.2节在统一框架内规范了所有约束传播方法。 第3.3-3.8节包含主要的现有约束传播类型。 这些部分中的每一部分都介绍了传播类型和解决方案的基本知识。