一、约束满足问题的定义
(一)、CSP定义
CSP搜索算法利用了状态结构的优势,使用的是通用策略而不是问题专用启发式。其主要思想是通过识别违反约束的变量/值的组合迅速消除大规模的搜索空间。
约束满足问题包含三个成分、和:
是变量集合;
是值域集合,每个变量都有自己的值域;
是描述变量取值的约束集合。
例如下图CSP问题,相邻地区不能同色:
可以把以上CSP问题表示为如下约束图:
(二)、CSP形式化
1、一元约束:只限制单个变量的取值。
2、二元约束:限制只与两个变量有关。二元CSP只包含二元约束,它可以表示为约束图。
3、全局约束:变量个数任意的约束。
定理:任意有限值域的约束都可以通过引入足够的约束变量而转化为二元约束。
定理证明:
为了表示的三元约束,我们首先引入了一个新变量。如果和的定义域是数字的集合,那么的定义域是来自的数字对的集合,即。现在有三个二元约束条件,一个是和之间的:的值必须等于值对的第一个元素;一个是和之间:的值必须等于值对的第二个元素;最后一个是和之间的:两个元素的和必须等于的值。所有其他三元约束条件都可以类似地处理。
现在我们可以将三元约束简化为二元约束,我们可以通过如下方式来简化变量,,,的4元约束:首先将,,简化为二元约束,然后将与和一起添加到三元约束中,然后通过引入将这个三元约束简化为二元约束。
通过归纳,可以将任何元约束简化为元约束。我们可以止步于二进制,因为任何一元约束都可以通过不断检查变量的值域而被删除。
由以上定理可知:任何CSP问题可以转换成只含二元约束的,这使得算法变得简单。
举例:
4、偏好约束:以上描述的都是绝对约束,而偏好约束是指问题更偏好于哪些解。偏好约束通常被处理成个体变量赋值的开销。问题喜欢的解所付开销更小,而不喜欢的解所付开销更大。则有偏好的CSP可以用基于路径的或局部的最优搜索方法求解。即约束优化问题,COP。
二、约束传播:CSP中的推理
(一)、结点相容
定义:如果单个变量(对应于CSP网络中的结点)值域中的所有取值满足它的一元约束,就称此变量是结点相容的。如果网络中的每个变量都是结点相容的,则此网络是结点相容的。
通过运行结点相容总能消除CSP中的所有一元约束。
(二)、弧相容
定义:如果CSP中的某变量值域中的所有取值满足该变量