一、回溯搜索的变量赋值顺序
1-最少剩余值启发式(MRV)
最大受限变量(具有最少合法赋值的变量),优先赋值
2-最大约束变量
约束其他未赋值变量最多的变量
3-最小约束值
选择好变量后,选择一个 最小约束值来对变量赋值
最小约束值:对其他未赋值变量的合法赋值影响最小的值
二、回溯搜索的前向检查和约束传播(弧相容原则)
1-前向检查
跟踪未赋值变量的合法赋值,如果发现有变量没有合法赋值,搜索停止
(前向检查表)
2-弧相容-约束传播一种方法
前向检查不能提前检测到所有失败
弧相容:弧x->y是相容的当且仅当,对于变量x的每一种赋值,变量y都存在一个合法赋值
把弧x->y从不相容变成相容:删除x的一个剩余合法值
当变量x删除了一个合法赋值,那么它的邻居变量需要重新检查,
即:从x的邻居变量出发到x的弧需要检查
3-弧相容算法AC-3
时间复杂度:n平方*d立方
n:变量个数,d:取值个数
n2*d,检查每一条弧(加上重复检查的,最多n(n-1)条弧,每条弧最多检查d次)
单条弧的相容性检查d2(对于d个xi和d个xj),
四、
偏好约束通常被计入个体变量赋值的耗散。
约束传播的一种形式:边界传播
后向跳转:基于失败的原因回溯
冲突指导的后向跳转