人工智能导论--与或图搜索
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n1 17 n3 6
2
n26 2
n7 0
n0 18
2n5 2
0 n8
n07
n0 7
2 n4
2 n5 1 3 2 0 n8
解图的求法
n7
0 n7
n0
n2
n4
n5
n8
n0 5
2
n4 1
2 n5
2
1
n80
与或图搜索与状态空间图搜索的区别:
• 搜索目的不同:是证明起始节点是否可解, 而可解节点是递归定义的,取决于后继节 点是否可解,即搜索过程是能否找到可解 的叶节点.
小结:
• 问题归约法: 当问题复杂时,可把初始问题分解成若 干简单的子问题,若子问题仍复杂,可再进一步分解, 直到这些子问题的解可直接得到。这种问题的描述和 求解方法,称为~.
• 本原问题: 可直接解答的问题称为~ ,它是不必证明 的、自然成立的.
• 归约法的组成:
1)一个初始问题的描述;
2)一组把问题变成子问题的算子 (分解或转换);
• 在一个与或图 G 中,从节点 n 到节点集 N 的解图 记为 G, G 是 G 的子图. 1.若 n 是N的一个元素,则G由单个节点n组成; 2.若 n 有一个指向节点集 {n1…,nk} 的外向连接 符 K,使得从每一个节点 ni 到 N 有一个解图 (i=1,…,k),则 G由节点 n,连接符 K,以及 {n1 ,…,nk}中的每一个节点到 N 的解图所组成; 3.否则 n 到 N 不存在解图.
1.建立初始搜索图,G:=s,计算 q(s)=h(s),IF GOAL(s) THEN M(s,SOLVED);
2. Until s 已标记为 SOLVED, do: 3. Begin 4. G := FIND(G);根据连接符标记(指针)找出一
个待扩展的侯选局部解图G(连接符在11步标记) 5. n := G 中的任一非终节点; 选一个当前节点 6. EXPAND(n),生成子节点集{ni},如果 ni G,
P
P
Q
Q
R
R
(a)
(b)
• 与节点由与运算连接(超弧),如图(a).
• 或节点由或运算连接,如图(b).
• 定义:与或图就是包含与节点和或节点 的图,即存在超弧的图,也称为超图.
• 超图与状态空间图有什么区别? 与或图是一种更一般的图.
• 定义:一超弧所相关的边数(K)被称为 该超弧的度,实现的连接称为K-连接.
• 定义:不能解节点的递归定义为:
1.没有后裔的非终节点是不能解的节点;
2.若非终节点有 “或” 子节点时,当且仅 当所有子节点均不能解时,该非终节点才不 能解;
3.若非终节点有 “与” 子节点时,当至少 有一子节点不能解时,该非终节点才不能解.
解图的定义:
• 是由能解节点构成的一个子图,是包含一节点(n) 到目的(终)节点集合(N)的、连通的能解节点的子 图.
–自上而下的图生长过程(4-6步): 先通过有标 记的连接符,找到目前为止最好的一个局部解 图,然后对其中一个非终节点进行扩展,并对 其后继节点赋估计耗散值和加能解标记.
–自下而上的估价函数值的修正、连接符的标记 和SOLVED的标注过程(7-12): 耗散值的修正从 刚被扩展的节点n开始,其修正耗散值q(n)取所 有估计值中最小的一个,然后根据耗散值递归 计算公式逐级向上修正其先辈节点的耗散值.只 有下层节点耗散值修正后,才可能影响到上一 层节点的耗散值,如此一直修正到初始节点.
• 如果 n=s 为初始节点,则解图为所求解问题的解图.
解图耗散值的计算:
• 若解图的耗散值记为 k(n, N),则可递归计 算如下:
–若 n 是 N 的一个元素,则 k(n, N)=0; –若 n 有一个外向连接符指向其后继节点集合
{n1…,ni},并设该连接符的耗散值为 Cn(一般 k-连接符的耗散值=k ),则
n0 h(n0)=3 • 例: 各节点启发值如
n1 h(n1)=2 n3 h(n3)=4
n6 h(n6)=2
图,k-连接符的耗散值 = k, 求最佳解图.
n2
n4 • 应用 AO* 算法,经四
h(n2)=4
h(n4)=1 个循环,可找到解图.
n5 h(n5)=1
• 在第一次循环扩展节
点 n0;然后,依次扩展 节点 n1、n5、n4。
• 求解方法: 特殊的与或图搜索算法——博弈树搜索. 理由: 由于两人严格地轮流走步,使博弈状态图呈 现出严格的与或图的交替层次.
1) Grundy 博弈
例:假设桌上放有一堆(7个)钱币,由两人轮流进 行分堆,要求每人每次只把其中某堆钱币分成数目 不相等的两小堆,最后不能分下去的人被判负. • 综合数据库: (x1,x2,…,xn,M)表示某个选手 走步的状态. 其中, x1,x2,…,xn 表示 n 堆钱币 不同的个数,M 代表选手( MIN 或 MAX ).
• 问题: 假定我们已经会求矩形的面积,现在要求 如图所示的五边形的面积。
• 方法分析: 五边形的面积转化为矩形面积。
①I 1
III ③ 23 II
②
求解步骤:
求五边形面积
①I 1
III ③
3 2 II
求 1面积 求 2面积 求 3面积
②
求 I面积 求 ①面积
求 II面积 求 III面积 求 ②面积 求 ③面积
n4 1 1 n5
一次循环后
(5)n1
n3 4
(4) n0
4 n2 1 n5
n4 1
二次循环后
(5n)0
n1 (5)
n2
n3
4
4
(2)
n4 n5 1
(5) n0
n1
(5)
n2
n3
4
4
(2) n5
n4 (1)
n6
n6
2
0 n8
2
0 n8
n7 0 三次循环后
n7 0
四次循环后
不带括号的数是启发函数h(n)值,带括号数是估价函数q(n)的修正值; 短箭头用来标记连接符,标明侯选局部解图;已经标注SOLVED的节点 用黑心圆来表示。
G:= ADD({ni},G),计算 q(ni)=h(ni),IF GOAL(ni) THEN M(ni, SOLVED);
7 S:={n}; 建立含 n 的节点集合S.(已扩展待修正)
8 Until S为空, do:
9 Begin
(m为S中任一节点)
10 REMOVE(m, S),当 mc{S};(m→mc ,从底层开始修正) 11 • 修改 m 的耗散值 q(m): 对 m 指向节点集 (n1i,
k(n, N)= Cn+ k(n1, N)+…+ k(ni, N)
• 具有最小耗散值的解图称为最佳解图,其值 也用 h*(n) 标记。
• 例:从节点 n 开始,正确选择一个外
向连接符,一直进行下去直到产生的
n1
每一个后继节点成为集合N中的一个元 n3
素为止。下图给出了 n0 →{n7,n8}的 三个解图(耗散值分别为 8,7,5). n6
• 第5步(n) • (n0)
• (n1)
• (n5)
• (n4)
• 第6步
• (n1,n5,n4) • (n2,n3)
• (n6,n7,n8) • (n5,n8)
• 第7步(S) • (n0)
• (n1)
• (n5)
• (n4)
• 第11步
•
比较,选 • n0→n1; n1
1) 比较,选 n1→n3; n3
• K—连接符:从一个父节点指向一组含有 K个后继节点的节点集.
n1 n3
n0
n2 n5
• 在与或图中,节 点 n0 有两个连接
n4 符:1-连接符指 向节点 n1;2-连 接符指向节点集
合{n4、n5};
n6
• 对于节点 n0 来讲,
n8 n1 可称为或节点,
n4、n5 可称为与
n7
节点。
与或图
3) 一组本原问题的描述
• 不同的算子对应不同的关系,从而使问题归约的描述 可用一个与或图的结构来表示.
2 与或图
• 与节点:把单个问题分解为几个子问题来求解。只 有当所有子问题都有解,该父辈节点才有解。表示 一种 “与” 关系。
• 或节点:同一问题被转换为几种不同的后继问题。 只要有一个后继问题有解,则原问题有解。表示一 种 “或” 关系。
12 IF M(m, SOLVED) (q(m) q0(m)) THEN ADD(ma, S); m 能解或修正的耗散值与原先估算q0不同,则把m的所有先 辈节点ma添加到S中. (能解或修正向上传递)
13 end (与8匹配)
14 end (与2匹配)
AO*搜索算法过程分析
• 两个过程的重复:
3 与或图搜索
• 含义:在与或图上执行搜索的过程,其目的在于标明 起始节点是有解的,即,搜索不是去寻找到目标节点 的一条路径,而是寻找一个解图。
• 定义:一个节点被称为能解节点,其递归定义为: 1.终节点是能解节点(直接与本原问题相关联); 2.若非终节点 有 “或” 子节点时,当且仅当其子 节点至少有一个能解 ,该非终节点才能解; 3.若非终节点有 “与” 子节点时,当且仅当其子 节点均能解,该非终节点才能解。
n8 h(n8)=0
• 在节点 n4 被扩展之 后,节点 n0 便被标注 SOLVED,此时,通过向
n7 h(n7)=0
下跟踪有标记的连接符,
便获得了解图.
AO*搜索算法的过程
• 主要步骤 • 第1循环 • 第2循环
• 第3循环 • 第4循环
• 第4步(G’) • (n0)
• n0→n1
• n0→n5, n4 • n0→n5, n4;
讨论
• 当节点n无后继节点? 在第11步中对 m (n)赋 一个高的 q 值(会传递到s), 从而排除了含有 n的子图被当作候选局部解图的可能性.
• 在 G’ 中存在多个非终节点时,选择什么样的 节点先扩展? 一般选择最能导致该局部解图耗 散值发生较大变化的节点先进行扩展, 可促使 及时修改局部解图的标记.
•
1) 比较,选 n5→n7, n8;
•
1)比较,选 n4→ n8;
不可解;
不可解;
n7, n8可解, n8可解, n4
• 2)比较,改
n5可解;
n0→n5, n4; • 2) n0不可
n5, n4不可 解,值变;
可解; • 2) n4 , n5
可解; n0可
解; n0不可
解,值不变;
解,值变;
• 第12步
5 博弈树的搜索
• 问题: 二人完备博弈: 1.由二人对垒,轮流走步,自己的走步自己选择
2.信息完备: 任何一方都完全知道对方过去的走 步情况和今后可能的走步,不包括碰运气的情况
• 表示方法: 利用与或图表示来描述博弈问题. 理由: 由于在博弈中,决定自己走步时只需考虑对 自己有利的一步——或,而考察对方时,则应考 虑对方所有可能的走步——与.
第四章 与或图搜索
1 问题归约法 2 与或图 3 与或图搜索 4 AO*算法 5 博弈树的搜索
1 问题归约法
• 问题: 在边长为 2 的正方形内,任意放置 5 个 点,求证其中必存在两个点,它们之间的距离不 大于2。
• 问题可转化为:在四个单位正方形内,任意放置5 个点,至少有两个点在同一正方形内。
–不能优先扩展具有最小费用的节点: • 理由: K-连接符连接的有关子节点对父节点 的可解性及费用值的估计都会产生影响.
–仅适用于无环图,否则耗散值递归计算不收敛: • 方法: 当新生成的节点已在图中时,判断是 否为正被扩展节点的先辈节点.
–控制策略不同: • 没有 OPEN 表和 CLOSED 表, 只用生成的解 图结构 G, h(n) 是最佳解图的费用估计.
• 结果不同:若初始节点被标示为可解,则 搜索成功结束;若初始节点被标示为不可 解,则搜索失败.
• 节点处理不同:一旦发现不可解节点,应 把该节点从图中删去.
4 与或图启发式搜索算法 AO*
• 假设:G;G;h(n)是从节点 n 到一组终叶节点的 一个最优解图的一个代价估计,评价函数q(n)=h(n) AO*过程:
• 同A算法类似,若 s→N 存在解图,当 h(n) ≤ h*(n)且h(n)满足单调限制条件时(对n到其子 节点的每一连接符均需要满足),则 AO* 一定 能找到最佳解图.
与A*算法的区别
–评价函数只考虑 h(n): • 理由: 算法有自下而上的修正费用的的操作, 实际上局部解图费用值的估计是在起始节点 S 比较, 计算 g 既无必要也不可能.
n2i, … nki) 的每一个连接符 i 分别计算qi, qi(m)=Ci+q(n1i)+…+q(nki), 并取 q(m):= min qi (m); • 加(或修正)指针到 min qi (m) 的连接符上. IF M(nji, SOLVED) THEN M(m, SOLVED);(j=1,2,…, k)若该连接符的所有子节点都是能解的,则m也能解.
•无
• 1)加n0 → S;
• 2)无前辈;
• 1)加n0 → S;
• 2) 无;
• 1)加n0 → S;
• 2)无;
52n1
n1 2
n3 4
4
n3
n0 3
n2
n4
4
1
n51
2 n6
n6 2 n7 0பைடு நூலகம்
n8 0
★
0 n7
×
364 5 ★ n0
4
n2
12
n5 ★
n41 ★
★
n8
0
n1 2
(3) n0