第六章 约束满足问题
6.0绪论
从搜索算法的角度看,每个状态都是原子的,或者是不可见的
本章,使用成分表示来描述状态:一组变量,每个变量都有自己的值。当每个变量都有自己的赋值,同时满足所有关于变量的约束时,问题就得到了解决。
这类问题称为约束满足问题(CSP)
CSP搜索算法使用的是通用策略,而不是问题专用启发式来求解复杂问题。
主要思想是通过识别违反约束的变量/值的组合迅速消除大规模的搜索空间。
6.1定义约束满足条件
- 1.约束满足问题包含三个成分:X、D和C。
值域是由变量的可能取值{}组成的集合。
每个约束是有序对<scope, rel>,其中,scope是约束中的变量组,rel定义了这些变量取值应满足的关系。
关系可以显式地列出所有关系元组,也可以是支持如下两个操作的抽象关系: - 测试一个元组是否为一个关系的成员
- 枚举所有关系成员
例如,如果的值域为{A,B},约束是二者不能取相同的值,关系可以如下描述:
Latex的不等号是not equal \neq
- 2.地图着色问题
每个变量的值域是集合{red, green, blue}。
约束是:要求相邻的区域染成不同颜色,所以约束关系有9个元组:
图6.1(b)是约束图,结点对应问题的变量,变量间的连线表示两者间有约束。
- 3.作业调度问题
巴拉巴拉巴拉巴拉巴拉~~~~~~~~~~~~~~~~
- 4.约束的形式化
简单的CSP涉及的变量是离散的、有限值域的,例如地图着色和有时间限制的调度问题。
八皇后问题也可以看作是有限值域的CSP,变量是每个皇后在列1-8的位置,变量的值域是{1,2,3,…,8}.
离散值域可能是无限的,如果是无限值域,就没法枚举可能的取值组合来描述约束条件。只能用约束语言代替,如, 不再能通过枚举所有可能的赋值来求解。。
对于整数变量的线性约束,如刚给出的约束,有特殊的求解算法。而非线性约束,没有算法能求解整数变量的非线性约束问题。
连续值域,如太空望远镜的 实验日程安排 要求非常精确的观测时间,每次观测的开始i、结束时间和机动时间都是连续值变量。
最著名的连续值域CSP是线性规划问题,约束必须是线性等式或线性不等式。线性规划问题可以在变量个数的多项式时间内求解。
上面不是太懂。。。?????
约束的类型:
- (1)一元约束
- (2)二元约束
- (3)全局约束:变量个数任意。最常见的全局约束是Alldiff,指的是约束中的所有变量必须取不同的值
全局约束eg
习题6.6:任意有限值域的约束都可以通过引入足够的约束变量而转化为二元约束。
另一种将N元CSP转换成二元CSP的方法是对偶图转换
课本173
上面的所有约束都是绝对约束,即任何违反规则的都排除在解之外。现实世界CSP包含偏好约束。有偏好约束的CSP可以用基于路径的或局部的最有搜索方法求解。这种问题成为约束优化问题。
6.2 约束传播
- 0.核心思想是局部相容性。约束为图中的弧,增强图中各部分局部相容性会导致不相容的结点取值被删除。
1.结点相容
如果单个变量(对应CSP网络中的结点)值域中的所有取值满足它的一元约束,就称此变量是结点相容。
例如,地图着色问题中南澳人不喜欢绿色,原先SA变量的值域为{red, green, blue},删除green此结点即为结点相容。
- 2.弧相容
如果CSP中某变量值域中的所有取值满足该变量的所有二元约束,就称此变量是弧相容。例如
最流行的弧相容算法AC-3
没看,估计不考,有时间再看。P174页
- 3.路径相容
弧相容通过弧(二元约束)缩进值域(一元约束)。路径相容通过观察变量得到隐式约束,并以此来加强二元约束。
未完待续。。。。。。。。。。。。。
发现这样准备时间严重不够用,所以先暂停这样写,尝试下换个方式