约束满足问题

目录

1.CSP定义
2.与局部搜索的区别
3.如何形式化CSP
4.约束传播与局部相容性
5.CSP形式化为一个搜索问题(回溯)
6.CSP回溯搜索如何提高搜索效率

1.CSP定义

使用一组变量来描述状态,每个变量有自己的值。当每个变量都有自己的赋值同时满足所有关于变量的约束时,问题就得到了解决。

2.与局部搜索的区别

局部搜索一次为8个变量赋值,再调整取值;CSP部分赋值,一次为一个变量赋值。

3.如何形式化CSP

CSP包含三个成分X,D,C:
X:变量集合 (variables)
D:一组值域集合:每个变量有自己的值域 (domain)
C:一组约束:描述变量取值的约束集合constraint,哪些变量之间有约束以及什么样的 约束<scope,rel>
求整个变量X满足形式C的一个赋值。
eg1:
在这里插入图片描述eg2:区域涂色问题
变量:7个区域
值域:每个区域所取的颜色(红绿蓝)
约束:相邻区域不同颜色
求解:满足所有约束的分配

约束图:
绝对约束:一元(不能是绿色),二元,多元
相对约束:偏好(红色比绿色好,越大越好……)
顶点代表变量,直线代表约束

全局约束:变量个数任意的约束
约束超图:约束条件三个及以上
每个方块代表一个约束
每个圆圈代表一个变量
在这里插入图片描述

4.约束传播与局部相容性

约束传播:给一个变量赋值,通过约束传播可以缩小与它有关系的变量的值域(颜色不相邻)。
搜索:选择一个变量赋值
约束传播和搜索可以交替进行,约束传播可以作为搜索前的预处理。
约束传播核心:局部相容性
1>节点相容
单个变量(对应一个节点)值域中的所有取值满足它的一元约束,就称该变量是节点相容的。
2>弧相容
对变量xi的每个赋值,xj存在某个取值满足弧(xi,xj)的二元约束,则称xi相对xj是弧相容的。——单向
每个变量相对于其他变量都是弧相容,则称该网络是弧相容的。(仅考虑相邻两个节点,不考虑全局);弧相容不一定有解。
3>路径相容在这里插入图片描述4>k-相容

在这里插入图片描述

5.CSP形式化为一个搜索问题

状态:到目前为止变量赋值的结果
转态模型(转移模型):选择变量赋值
eg:三个变量,两个取值
回溯搜索思路:
1)单个变量
2)合法赋值(非合法通过约束条件过滤)
3)回溯搜索

6.CSP回溯搜索如何提高搜索效率

1)取变量的顺序
2)值的顺序
3)如何检查失败/如何剪枝
4)如何设计更高效的结构
问题1:合法取值最少剩余即最少剩余值优先/失败优先
多个变量剩余值最少?
问题2:最少约束值(尽量不减少其他变量的约束值)
问题3:1>前项检验(当任何一值没有合法取值,回到父节点)
2>维护弧相容在这里插入图片描述问题4:
拓扑排序:每个父节点都在孩子节点的前面
缩小父节点值域(去掉孩子节点不能弧相容)保证每一个父节点相对于子节点是相容的。如下A有可取值即可:
在这里插入图片描述o(nd*d)
不是树的时候
1.回溯搜索变成树,再利用树的算法
2.进行分割

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值