请注意,本文编写于 137 天前,最后修改于 137 天前,其中某些信息可能已经过时。
目录
约束满足问题
约束传播
AC3
路径一致性3-Consistency
CSP与传统搜索不同的是采用因子化表示状态
- 因子化表示为一组变量,变量有自己的值
- 求解问题时,每个变量的值须满足对该变量约束
约束满足问题
可以以三部分定义约束满足问题
- 变量集合X,{X1,X2,⋯,Xn}
- 域集合D,表征变量的取值范围,每个变量都需要有与{D1,D2,⋯,Dn}
- 约束集合C,规定哪些变量取值是允许的
约束可以抽象地表示为
<变量组,组中的变量应满足的关系>
CSP希望对变量进行赋值,不违反约束的赋值是合法赋值,每个变量都被赋值则为完美赋值。CSP的解是合法完美赋值
约束传播
CSP下可以通过约束传播的过程进行推断。选择变量赋值时,需要考虑的合法选项会减少
- 节点一致性:单个变量的取值在其域中
- 弧一致性:单个变量的取值满足二元约束
如对于约束“X,Y是整数,并且Y=X2”中,整数
是节点一致性,Y=X2是弧一致性
AC3
AC3算法用于进行弧一致性约束,可以描述如下
- 将所有的弧(两个变量的二元约束)加入队列
- 从队列中取出弧(Xi,Xj)
- 检查两个变量Xi,Xj是否有不满足该约束的取值,若有则删除取值
- 若
2
操作使得某些变量的域变小,则将这些变量关联的弧加入队列
- 回到
1
循环,直到队列为空
路径一致性3-Consistency
弧一致性只考虑了二元约束,可能并不能很好地约束变量的域。此时需要引入第三个变量通过观测变量的三元推断将二元约束收紧
可以进一步推广到k-Consistency
本文作者:GBwater
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!