【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第6章 用搜索树对问题求解

人工智能 一种现代方法 第6章 用搜索树对问题求解

6.1定义约束满足问题(CSP)

变量的集合: X={X1, X2,...Xn} 

值域:D={D1, D2...Dn}

约束关系:C

6.1.1地图着色问题

要求相邻区域颜色不同,可把问题形式化为CSP问题。

常规搜索只能问:这个解是目标吗?

CSP一旦发现某部分赋值不满足约束,便可立即剪枝,不再进一步求精。

6.1.2作业调度问题

过程约束:某部分工作需要在其他工作之前完成

洗去约束:几个工作之间不能有时间上的重合

6.1.3CSP的形式化

离散的、连续的、有限值域的、无限值域的

一元约束、二元约束、全局约束

任意有限值域的约束都可以引入约束变量而转换为二元约束


6.2约束传播:CSP中的推理

约束传播可以减小变量的合法取值范围,可以与搜索交替进行,也可以作为搜索前的预处理步骤。

核心思想为局部相容性。

6.2.1结点相容

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

运行结点相容可消除一元约束,可将n元约束转换为二元约束。

6.2.2弧相容

如果CSP中某变量值域中的所有取值满足该变量的所有二元约束,则称为弧相容。

AC-3算法:

先把所有弧装入队列

当弧队列不为空时,循环弹出一个弧

        如果弧两端的节点满足弧相容,则继续

        如果不满足弧相容,即一个结点的值域要变小

                保存变小后的值域

                把指向该结点的所有弧重新插入队列

6.2.3路径相容

对于{Xi, Xj}的每一个相容赋值,Xm都有合适的取值同时使得{Xi, Xm}和{Xm, Xj}是相容的。

6.2.4 k-相容

对于任一个k-1个变量的相容赋值,第k个变量总能被赋予和前k-1个变量相容的值

1-相容:结点相容

2-相容:弧相容

3-相容:路径相容

6.2.5全局约束

Alldiff约束:每一个变量都不能相同

atmost约束:资源总和受限

6.2.6 数独游戏9*9

一共有27个Alldiff约束,行9列9方框9


6.3 CSP的回溯搜索

可交换性:对于行动的先后顺序对结果没有影响的问题,可以交换行动顺序。从排列变为组合。

回溯搜索:每次为一个变量赋值,当没有合法值时就回溯到上一个有合法值的变量。

6.3.1变量的取值顺序

var <- SELECT-UNASSIGNED-VARIABLE(csp)

选择下一个未安排的节点的顺序对效率有很大影响

最少剩余价值(MRV)启发式:选择合法取值最少的变量。----强有力的指引

也就是选择最少剩余值的变量,通过早期有效剪枝,降低搜索树结点数。

度启发式:选择与其他未赋值变量约束最多的变量来试图降低未来的分支引子。----打破僵局

最少约束值启发式:给邻居变量留下更多的选择。对于只需要找到一个解的问题有效。

6.3.2搜索与推理交错进行

向前检验:只要某个X赋值了,对于动过约束与X相关的未赋值的变量Y,从Y的值域中删除与X不相容的值。

维护弧相容(MAC):能够检测所有的不相容,当变量Xi被赋值后,INFERENCE调用AC-3。

6.3.3智能回溯:向后看

BACKTRACKING-SEARCH

时序回溯:当一个分支上的搜索失败时,退回前一个变量并尝试另一值。

回跳:回溯到冲突集中时间最近的赋值,跳过与当前节点没有冲突的节点。

冲突指导的回跳:先找出当前变量的冲突集,回跳到冲突集中最近的元素,并将新元素的冲突集与原冲突集取并集,在减去新元素,检验是否还有冲突,循环。可以知道要退回多远










你可能感兴趣的:(人工智能,读书笔记,人工智能,读书笔记)