定义约束满足问题

约束满足问题:
环境:单agent、延续、静态、完全可观察
一种特殊的搜索问题,通过识别违反约束的变量/值的组合迅速消除大规模的搜索空间,利用结构状态的优势。

约束满足问题包含变量X,值域D,描述变量取值范围的约束集合C
二元约束-约束图
全局约束-变量个数任意 - 约束超图,alldiff、atmost
偏好约束通常被处理成个体变量赋值的开销

当对问题中变量的赋值满足所有约束时,该赋值是相容
CSP问题的解是所有变量的相容的、完整的赋值

约束满足问题的特性
可交换性 : 对变量赋值的顺序不影响最终结果
约束传播:一个变量的赋值将改变其它变量的值域

约束传播:CSP中的推理

约束传播与搜索可以交替进行,也可以将约束传播作为搜索前的预处理
约束传播核心思想:增强图中各部分局部相容性,通过删除不相容结点的取值。

结点相容

如果单个变量(对应于CSP网络中的结点)值域中的所有取值满足它的一元约束,就称此变量是结点相容的。

弧相容

若对Xi的每个赋值,Xj都存在某个取值满足弧(Xi, Xj)的二元约束,则称Xi关于Xj是弧相容的。

AC-3算法能够处理的只有二元约束,即弧相容的情况。
算法步骤:
1、首先,将所有的二元组(弧)入队
2、二元组一个个出队,出队的时候确定一个为固定的值,另一个可变
3、对可变变量的值域进行调整,剔除不满足的值
4、如果值域发生改变,将与可变变量有关的所有的二元组入队
5、队列为空时,结束算法

路径相容

对{Xi, Xj}的每一个相容赋值{Xi=a, Xj=b},Xm都有合适的取值同时使得{Xi, Xm}和{Xm, Xj}是相容的,则称集合{Xi, Xj}关于Xm是路径相容的。

k相容

如果对于任何k − 1个变量的任何相容赋值,任何第k个变量总能被赋予一个和前k − 1个变量相容的值,那么称这个CSP是k相容的。

CSP的回溯搜索

变量和取值顺序

  • 最少剩余值(MRV)变量优先: V优先选择剩余值数量最少的变量。
    选择剩余值数量多的变量容易使得剩余值数量少的变量的值域变为空值域。
    也称为“失败优先”启发式,剩余值少的变量的值域容易变为空而失败

如果剩余值数量相同:

  • 最大度变量优先:优先选择对其他变量约束最多的变量(约束最多其他变量的变量).通过选择与其它未赋值变量约束最多的变量来试图降低未来的分支因子

  • 最少约束值优先:选择的取值会删除邻居变量的一些有效值,选择的取值应尽可能少地删除邻居变量的有效值(让邻居保留更多的剩余值)。

  • 为什么变量选择失败优先而值选择是失败最后呢?
    选择具有最少剩余值的变量通过早期有效剪枝有助于最小化搜索树中的结点数;
    而对于值的排序只需找到一个解,因此首先选择最有可能的值是有意义的。

提前检查失败/如何剪枝(前向检验、维护弧相容)

前向检验(Forward Checking):一个变量X赋值后,对每个相邻变量Y根据弧相容推理从值域删除与X不相容的值,如果某个变量值域变为空,就回溯。(只影响邻居)

维护弧相容(MAC):当变量X赋值后,INFERENCE调用AC-3,从与X相邻的所有未赋值变量开始,进行约束传播,一旦某个变量的值域变为空,则AC-3调用失败并立即回溯。(一石激起千层浪)

弧相容能够比前向检查更早地检测到失败,原因是MAC在变量值域发生变化时递归传播约束。

CSP的局部搜索(非重点)

在为变量选择新值的时候,最明显的启发式是选择与其它变量冲突最少的值——最少冲突启发式。
使用最少冲突启发式的CSP的地形通常有一系列高原。可能有上百万种赋值,它们都只有一个冲突。

◼ 高原搜索。这可以由禁忌搜索引导:将最近访问过的状态记录在表中,并禁止算法再回到那些状态。

◼ 模拟退火也可以用于逃离高原

 约束加权。每个约束都有一个数字权重Wi,初始都为1。搜索的每一步,算法都选择修改一个变量的值,使得违反的约束权重和最小化。接着增加当前赋值违反的约束的权重值。这给高原增加了地形,并且它随着时间的进行不断给难于解决的约束增加权重。

CSP的问题结构

如果一个CSP是树形结构的或是类树形结构的,能对其使用树形CSP算法来在线性时间内得到一个解。
如果一个CSP是类树形结构的,我们能用割集调整(cutset conditioning)来将CSP转换为树形结构CSP求解。如果能找到比较的割集,算法十分有效。
树分解技术把CSP转变为子问题构成的树,如果约束图的树宽不大,则算法十分有效。

独立子问题

独立性通过寻找连通子图确定
分治解决:
假设变量共n个,每个子问题c个变量一共n/c个子问题,每个子问题的复杂性为O(dc),总工作量为O(dcn/c)
 不分解的情况下为O(dn)

树形结构的CSP的求解算法

  • 拓扑排序
    求解树结构CSP时,首先任意选择一个变量为树的根,选择变量顺序,这样每个变量在树中出现在父结点之后。
    n个结点的树有n-1条弧,所以在 O(n)步内可以将此图改造成直接弧相容,每一步需要比较两个变量的d个可能取值,所以总时间是 O(nd2)。一旦有了直接弧相容的图,就可以沿着变量列表并选择任意剩余值。由于父结点与其子结点的弧是相容的,我们知道无论父结点选择什么值,子结点都有值可选。这意味着无须回溯; 可以沿着变量线性前进。

    如果CSP有解,在线性时间O(nd2)求解,如果无解,则会检测到矛盾。

化简为树形结构的方法

删除结点(环割集)

(1)从 CSP 的变量中选择子集 S,使得约束图在删除 S 之后成为一棵树。S称为环割集(cycle cutset)。
(2)对于满足S所有约束的S中变量的每个可能赋值∶
(a)从CSP剩余变量的值域中删除与S的赋值不相容的值,并且
(b)如果去掉S后的剩余 CSP有解,把解和S的赋值一起返回。
如果环割集的大小为 c,那么总的运行时间为 **O(dc·(n-c)d²)**∶我们需要尝试S中变量的赋值组合共dc种,对其中的每个组合需要求解规模为n-c 的树问题。如果约束图"近似于一棵树",那么c将会很小,直接回溯将节省巨大开销。然而在最坏情况下,c 可能大到(n-2)。

合并结点(树分解) 原理:分治

树分解将约束图分解为相关联的子问题,每个子问题独立求解,再把得到的结果合并起来。

树分解必须满足的条件

  1. 原问题中的每个变量至少在一个子问题中出现
  2. 原问题中的两个变量若有约束相连,它们至少同时出现在一个子问题中(连同它们的约束)
  3. 如果一个变量出现在树中的两个子问题中,那么它必须出现在连接这两个子问题的路径上的所有子问题里。

树分解CSP的求解:
独立求解每个子问题;任何一个无解,整个问题就无解。求解所有的子问题后,设法构造一个完整解。
每个子问题被视为一个“巨型变量”,它的值域是这个子问题的所有解的集合。
用前面给出的树算法来求解连接这些子问题的约束——它们的共享变量要取相同的值

习题

4阶幻方

一个n阶幻方是n*n方阵:该方阵每一行、每一列和两条对角线上的整数的和都等于同一个数。现在我们得到了一个残缺的4阶幻方,如图所示。
1)将该问题形式化,描述为CSP(约束满足问题),给出约束关系;
2)按照约束传播策略和标准搜索过程求解该问题,补全给出的4阶幻方。


变量集合:{X11,X12,X21,X22,X32,X41,X42}(10分)
值域集合:{X⋲Z,X⋲[1,16]}(20分)
约束集合:(20分)
X11 + X12 + 2 +13 = X21 + X22 + 11 + 8 =
9 + X32 + 7 + 12 = X41 + X42 + 14 + 1 =
X11 + X21 + 9 + X41 = X12 + X22 +X32 +X42 =
2 + 11 + 7 + 14 = 13 + 8 + 12 + 1 = 34 =
X11 + X22 + 7 + 1 = X41 + X32 + 11 +13
AllDiff(X11,X12,X21,X22,X32,X41,X42)

2)按照约束传播策略和标准搜索过程求解该问题,补全给出的4阶幻方。

利用约束传播或是最少剩余值启发式优先确定X32,X41,X42三个点的值,在确定X11的值之后,通过前向检验缩减后续节点的值域,在缩减值域后,通过最少剩余启发式快速结束搜索
补全幻方

6.5


选择C3,域是{0,1}。
为C3选择值1。(不能选择0;它将无法在向前检查中存活下来,因为它将迫使F为0,并且该和的前导数字必须是非零的。)
选择F,因为它只有一个剩余的值。
为F选择值1。
现在C2和C1的最小剩余值是2;选择C2。
任何一个值都可以通过前项检验,为C2选择0。
现在C1有了最小的剩余值。
对于C1的值选择0。
变量O必须是一个偶数(因为它是T+T小于5的和(因为O+O=R+10×0)。这使得它最受限制。
任意选择4作为O的值。
R现在只有1个剩余的值。
为R选择值8。
T现在只有1个剩余的值。
为T选择值7。
U必须小于9而且是偶数;选择U。
向前检查的唯一值是6。
剩下的唯一的变量是W。
W所剩下的唯一值是3。
这是一个解决方案。

6.9

为什么变量选择失败优先而值选择是失败最后呢?

  • 选择具有最少剩余值的变量通过早期有效剪枝有助于最小化搜索树中的结点数;
  • 而对于值的排序只需找到一个解,因此首先选择最有可能的值是有意义的。

6.12

用AC-3算法求解树结构CSP在最坏情况下的复杂度是多少?
在树状结构图上,没有弧会被考虑多于一次,因此AC-3算法为O(ED),其中E为边数,D为最大域的大小。

人工智能第6章 约束满足问题相关推荐

  1. 人工智能原理——第一章 绪论

    人工智能原理--第一章 绪论 文章目录 人工智能原理--第一章 绪论 1.1 人工智能的发展 人工智能的发展 – 孕育期 人工智能的发展 – 摇篮期 人工智能的发展 – 发展期(1970-1979) ...

  2. 人工智能:第九章 Agent (艾真体)

    第九章 Agent (艾真体) 教学内容:介绍Agent的基本概念,使读者对Agent有个初步了解. 教学重点:艾真体及其要素 教学难点:艾真体的BDI(信念.愿望和意图)模型.艾真体的结构分类 教学 ...

  3. 人工智能:第二章 知识表示方法

    第二章 知识表示方法 教学内容:本章讨论知识表示的各种方法,是人工智能课程三大内容(知识表示.知识推理.知识应用)之一,也是学习人工智能其他内容的基础. 教学重点:状态空间法.问题归约法.谓词逻辑法. ...

  4. 人工智能:第一章 绪 论

    第一章 绪 论 教学内容:本章首先介绍人工智能的定义.发展概况及相关学派和他们的认知观,接着讨论人工智能的研究和应用领域,最后简介本书的主要内容和编排. 教学重点: 1.从不同科学或学科出发对人工智能 ...

  5. 人工智能第2章 智能 Agent

    第2章 智能 Agent Agent通过传感器感知环境并通过执行器执行动作反馈到环境. ​​​​​​ AI的任务是设计Agent程序,实现把感知信息映射到行动的Agent函数. Agent就是能够行动 ...

  6. 人工智能期末——第二章知识的表示

    第二章 知识的表示 知识表示是建立在符号主义的基础上的 符号主义:人类的智能活动主要是获得并运用知识,知识是智能的基础 为了使计算机具有智能.模拟人类的智能行为,就必须使它具有知识 知识需要用适当的模 ...

  7. 中国大学MOOC 人工智能导论第一章测试

    1 单选(2.5分) 1956年达特茅斯会议上,学者们首次提出"artificial intelligence(人工智能)"这个概念时,所确定的人工智能研究方向不包括: 得分/总分 ...

  8. 人工智能第五章知识总结

    (本章不是重点) 5.1概述 5.2概率基础 概率论的对象定随机现象.在概率中,把随机现象的某些样本点组成的集合称为随事件,简称事件.Ⅲ慨平佣还的就是随机事件发生的可能性. 5.3主观贝叶斯方法 不确 ...

  9. 人工智能第3章 通过搜索进行问题求解

    第3章 通过搜索进行问题求解 搜索:在确定性的.可观察的.静态的和完全可知的环境下,Agent构造行动序列以达到目标的过程称为搜索. 问题求解Agent 问题形式化: 初始状态: In(Arad) 行 ...

最新文章

  1. 知识回顾——构造函数
  2. jQuery实现登录提示
  3. 上传 jar 包到 nexus3、上传本地 jar 包到 maven 私服
  4. queue emplace_c++ queue、deque、priority_queue/队列最大值/滑动窗口/top K
  5. 柔性太阳能电池pdf_CIS太阳能电池.pdf
  6. 如何在跑cts的时候生成log_晚上跑高速如何超大货车,教你几条经验,关键时候能保命...
  7. 关于SN和PN的概念
  8. 运筹学基础及其matlab,【官方直发】 运筹学基础及其MATLAB应用
  9. Python学习笔记-2017.5.4thon学习笔记-2017.5.19
  10. U盘被写保护无法格式化的解决方法
  11. 工业交换机堆叠技术的优缺点
  12. VLAN的原理及配置
  13. 猿人学web端爬虫攻防大赛赛题解析_第四题:雪碧图、样式干扰
  14. linux内核函数出错的返回值
  15. 1×pbs缓冲液配方_【pbs缓冲液配制】动物细胞培养pbs缓冲液配制
  16. CAS:1347750-20-2,氨基PEG巯基,NH2-PEG-SH,Amine-PEG-Thiol
  17. IOS设置微信URL Schemes
  18. Java简介超详细整理,适合新手入门
  19. 百度地图,读取后台值,获取地点坐标
  20. FPGA视频接口方案,VGA,HDMI,LVDS,SDI接口转换

热门文章

  1. android device id格式,Android之设备ID(Device ID)
  2. Java基础算法50题(二)
  3. 基于U-net神经网络的微血管图像分割
  4. 故地重游--OpenCV,新的版本,新的参考书
  5. 用python函数画德国国旗代码_用Python的turtle模块画国旗
  6. idea取消git托管(删除git文件)
  7. 论文阅读【检测】CVPR2020 | Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Trai
  8. bt_code(2012.3.17)
  9. Vue脚手架使用【快速入门】
  10. IOS数据存储 之WCDB (一)